From 8a2f125cfc50f6f48a30f797021fd3c198eeaeb7 Mon Sep 17 00:00:00 2001 From: Luca Date: Sun, 19 Dec 2021 18:26:16 +0100 Subject: [PATCH] Remove KEVIN from website repo (moved to share.franconian.net) --- static/kevin-master/README.md | 2 - .../assets/bootstrap/css/bootstrap.min.css | 12 - .../assets/bootstrap/js/bootstrap.min.js | 7 - static/kevin-master/assets/css/animate.css | 3340 --------- .../assets/css/getHTMLMediaElement.css | 163 - .../assets/css/getHTMLMediaElementFull.css | 160 - static/kevin-master/assets/css/stylesheet.css | 248 - .../kevin-master/assets/fonts/FontAwesome.otf | Bin 134808 -> 0 bytes static/kevin-master/assets/fonts/Lato.css | 36 - .../assets/fonts/MaterialIcons-Regular.eot | Bin 143258 -> 0 bytes .../assets/fonts/MaterialIcons-Regular.svg | 2373 ------- .../assets/fonts/MaterialIcons-Regular.ttf | Bin 128180 -> 0 bytes .../assets/fonts/MaterialIcons-Regular.woff | Bin 57620 -> 0 bytes .../assets/fonts/MaterialIcons-Regular.woff2 | Bin 44300 -> 0 bytes .../assets/fonts/S6u8w4BMUTPHjxsAXC-v.ttf | Bin 60936 -> 0 bytes .../assets/fonts/S6u9w4BMUTPHh6UVSwiPHA.ttf | Bin 59032 -> 0 bytes .../assets/fonts/S6u9w4BMUTPHh7USSwiPHA.ttf | Bin 63388 -> 0 bytes .../assets/fonts/S6u_w4BMUTPHjxsI5wq_Gwfo.ttf | Bin 62308 -> 0 bytes .../assets/fonts/S6u_w4BMUTPHjxsI9w2_Gwfo.ttf | Bin 39248 -> 0 bytes .../assets/fonts/S6uyw4BMUTPHjx4wWw.ttf | Bin 60524 -> 0 bytes .../assets/fonts/Simple-Line-Icons.eot | Bin 54266 -> 0 bytes .../assets/fonts/Simple-Line-Icons.svg | 200 - .../assets/fonts/Simple-Line-Icons.ttf | Bin 54056 -> 0 bytes .../assets/fonts/Simple-Line-Icons.woff | Bin 81332 -> 0 bytes .../assets/fonts/Simple-Line-Icons.woff2 | Bin 30064 -> 0 bytes .../assets/fonts/font-awesome.min.css | 4 - .../assets/fonts/fontawesome-webfont.eot | Bin 165742 -> 0 bytes .../assets/fonts/fontawesome-webfont.svg | 2671 ------- .../assets/fonts/fontawesome-webfont.ttf | Bin 165548 -> 0 bytes .../assets/fonts/fontawesome-webfont.woff | Bin 98024 -> 0 bytes .../assets/fonts/fontawesome-webfont.woff2 | Bin 77160 -> 0 bytes .../assets/fonts/material-icons.min.css | 1 - .../assets/fonts/simple-line-icons.min.css | 1 - .../assets/js/RTCMultiConnection.js | 5856 ---------------- static/kevin-master/assets/js/RecordRTC.js | 6208 ----------------- static/kevin-master/assets/js/adapter.js | 5623 --------------- .../assets/js/getHTMLMediaElement.js | 512 -- static/kevin-master/assets/js/jquery.min.js | 2 - static/kevin-master/assets/js/script.min.js | 1 - static/kevin-master/index.html | 808 --- static/kevin-master/video-conferencing.html | 470 -- static/kevin-master/view.html | 326 - 42 files changed, 29024 deletions(-) delete mode 100644 static/kevin-master/README.md delete mode 100644 static/kevin-master/assets/bootstrap/css/bootstrap.min.css delete mode 100644 static/kevin-master/assets/bootstrap/js/bootstrap.min.js delete mode 100644 static/kevin-master/assets/css/animate.css delete mode 100644 static/kevin-master/assets/css/getHTMLMediaElement.css delete mode 100644 static/kevin-master/assets/css/getHTMLMediaElementFull.css delete mode 100644 static/kevin-master/assets/css/stylesheet.css delete mode 100644 static/kevin-master/assets/fonts/FontAwesome.otf delete mode 100644 static/kevin-master/assets/fonts/Lato.css delete mode 100644 static/kevin-master/assets/fonts/MaterialIcons-Regular.eot delete mode 100644 static/kevin-master/assets/fonts/MaterialIcons-Regular.svg delete mode 100644 static/kevin-master/assets/fonts/MaterialIcons-Regular.ttf delete mode 100644 static/kevin-master/assets/fonts/MaterialIcons-Regular.woff delete mode 100644 static/kevin-master/assets/fonts/MaterialIcons-Regular.woff2 delete mode 100644 static/kevin-master/assets/fonts/S6u8w4BMUTPHjxsAXC-v.ttf delete mode 100644 static/kevin-master/assets/fonts/S6u9w4BMUTPHh6UVSwiPHA.ttf delete mode 100644 static/kevin-master/assets/fonts/S6u9w4BMUTPHh7USSwiPHA.ttf delete mode 100644 static/kevin-master/assets/fonts/S6u_w4BMUTPHjxsI5wq_Gwfo.ttf delete mode 100644 static/kevin-master/assets/fonts/S6u_w4BMUTPHjxsI9w2_Gwfo.ttf delete mode 100644 static/kevin-master/assets/fonts/S6uyw4BMUTPHjx4wWw.ttf delete mode 100644 static/kevin-master/assets/fonts/Simple-Line-Icons.eot delete mode 100644 static/kevin-master/assets/fonts/Simple-Line-Icons.svg delete mode 100644 static/kevin-master/assets/fonts/Simple-Line-Icons.ttf delete mode 100644 static/kevin-master/assets/fonts/Simple-Line-Icons.woff delete mode 100644 static/kevin-master/assets/fonts/Simple-Line-Icons.woff2 delete mode 100644 static/kevin-master/assets/fonts/font-awesome.min.css delete mode 100644 static/kevin-master/assets/fonts/fontawesome-webfont.eot delete mode 100644 static/kevin-master/assets/fonts/fontawesome-webfont.svg delete mode 100644 static/kevin-master/assets/fonts/fontawesome-webfont.ttf delete mode 100644 static/kevin-master/assets/fonts/fontawesome-webfont.woff delete mode 100644 static/kevin-master/assets/fonts/fontawesome-webfont.woff2 delete mode 100644 static/kevin-master/assets/fonts/material-icons.min.css delete mode 100644 static/kevin-master/assets/fonts/simple-line-icons.min.css delete mode 100644 static/kevin-master/assets/js/RTCMultiConnection.js delete mode 100644 static/kevin-master/assets/js/RecordRTC.js delete mode 100644 static/kevin-master/assets/js/adapter.js delete mode 100644 static/kevin-master/assets/js/getHTMLMediaElement.js delete mode 100644 static/kevin-master/assets/js/jquery.min.js delete mode 100644 static/kevin-master/assets/js/script.min.js delete mode 100644 static/kevin-master/index.html delete mode 100644 static/kevin-master/video-conferencing.html delete mode 100644 static/kevin-master/view.html diff --git a/static/kevin-master/README.md b/static/kevin-master/README.md deleted file mode 100644 index d9f5cd0..0000000 --- a/static/kevin-master/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Killer Experimental Video Internet Noise, KEVIN - diff --git a/static/kevin-master/assets/bootstrap/css/bootstrap.min.css b/static/kevin-master/assets/bootstrap/css/bootstrap.min.css deleted file mode 100644 index b919506..0000000 --- a/static/kevin-master/assets/bootstrap/css/bootstrap.min.css +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Start Bootstrap - Landing Page 4.1.1 (https://startbootstrap.com/template-overviews/landing-page) - * Copyright 2013-2020, Start Bootstrap - * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-landing-page/blob/master/LICENSE) - */ - -/*! - * Bootstrap v4.5.3 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors - * Copyright 2011-2020 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#868e96;--gray-dark:#343a40;--primary:#007bff;--secondary:#868e96;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#868e96}.blockquote-footer:before{content:"\2014\00A0"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#868e96}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-2{-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-5{-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-8{-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-11{-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#dddfe2}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#c0c4c8}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#cfd2d6}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#868e96;opacity:1}.form-control::-moz-placeholder{color:#868e96;opacity:1}.form-control:-ms-input-placeholder,.form-control::-ms-input-placeholder{color:#868e96;opacity:1}.form-control::placeholder{color:#868e96;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#868e96}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{-ms-flex-align:center;-ms-flex-pack:center;justify-content:center}.form-inline .form-group,.form-inline label{display:-ms-flexbox;display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#868e96;border-color:#868e96}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#727b84;border-color:#6c757d}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem hsla(210,7%,62%,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#868e96;border-color:#868e96}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#666e76}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem hsla(210,7%,62%,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem hsla(220,4%,85%,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem hsla(220,4%,85%,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#868e96;border-color:#868e96}.btn-outline-secondary:hover{color:#fff;background-color:#868e96;border-color:#868e96}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem hsla(210,7%,56%,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#868e96;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#868e96;border-color:#868e96}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem hsla(210,7%,56%,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#868e96;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#868e96;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#868e96;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#868e96}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#868e96;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#868e96;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#868e96;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb,.breadcrumb-item{display:-ms-flexbox;display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#868e96;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#868e96}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#868e96;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#868e96}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#6c757d}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem hsla(210,7%,56%,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#464a4e;background-color:#e7e8ea;border-color:#dddfe2}.alert-secondary hr{border-top-color:#cfd2d6}.alert-secondary .alert-link{color:#2e3133}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes a{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes a{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:-ms-flexbox;display:flex;overflow:hidden}.progress-bar{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:a 1s linear infinite;animation:a 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#868e96;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#464a4e;background-color:#dddfe2}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#464a4e;background-color:#cfd2d6}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#464a4e;border-color:#464a4e}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#868e96;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translateY(-50px);transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes b{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes b{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:b .75s linear infinite;animation:b .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes c{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes c{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:c .75s linear infinite;animation:c .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#868e96!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#6c757d!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#868e96!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;-ms-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:transparent}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#868e96!important}a.text-secondary:focus,a.text-secondary:hover{color:#60686f!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#868e96!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}body,h1,h2,h3,h4,h5,h6{font-family:Lato,Helvetica Neue,Helvetica,Arial,sans-serif}h1,h2,h3,h4,h5,h6{font-weight:700}header.masthead{position:relative;background-color:#343a40;background-size:cover;padding-top:8rem;padding-bottom:8rem}header.masthead .overlay{position:absolute;background-color:#212529;height:100%;width:100%;top:0;left:0;opacity:.3}header.masthead h1{font-size:2rem}@media (min-width:768px){header.masthead{padding-top:12rem;padding-bottom:12rem}header.masthead h1{font-size:3rem}}.showcase .showcase-text{padding:3rem}.showcase .showcase-img{min-height:30rem;background-size:cover}@media (min-width:768px){.showcase .showcase-text{padding:7rem}}.features-icons{padding-top:7rem;padding-bottom:7rem}.features-icons .features-icons-item{max-width:20rem}.features-icons .features-icons-item .features-icons-icon{height:7rem}.features-icons .features-icons-item .features-icons-icon i{font-size:4.5rem}.testimonials{padding-top:7rem;padding-bottom:7rem}.testimonials .testimonial-item{max-width:18rem}.testimonials .testimonial-item img{max-width:12rem;box-shadow:0 5px 5px 0 #adb5bd}.call-to-action{position:relative;background-color:#343a40;background-size:cover;padding-top:7rem;padding-bottom:7rem}.call-to-action .overlay{position:absolute;background-color:#212529;height:100%;width:100%;top:0;left:0;opacity:.3}footer.footer{padding-top:4rem;padding-bottom:4rem} \ No newline at end of file diff --git a/static/kevin-master/assets/bootstrap/js/bootstrap.min.js b/static/kevin-master/assets/bootstrap/js/bootstrap.min.js deleted file mode 100644 index ef603da..0000000 --- a/static/kevin-master/assets/bootstrap/js/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v4.5.3 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery)}(this,(function(t,e){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=n(e);function o(t,e){for(var n=0;n=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};l.jQueryDetection(),i.default.fn.emulateTransitionEnd=s,i.default.event.special[l.TRANSITION_END]={bindType:"transitionend",delegateType:"transitionend",handle:function(t){if(i.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var u="alert",f=i.default.fn[u],d=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){i.default.removeData(this._element,"bs.alert"),this._element=null},e._getRootElement=function(t){var e=l.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=i.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=i.default.Event("close.bs.alert");return i.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(i.default(t).removeClass("show"),i.default(t).hasClass("fade")){var n=l.getTransitionDurationFromElement(t);i.default(t).one(l.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){i.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.alert");o||(o=new t(this),n.data("bs.alert",o)),"close"===e&&o[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},r(t,null,[{key:"VERSION",get:function(){return"4.5.3"}}]),t}();i.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',d._handleDismiss(new d)),i.default.fn[u]=d._jQueryInterface,i.default.fn[u].Constructor=d,i.default.fn[u].noConflict=function(){return i.default.fn[u]=f,d._jQueryInterface};var c=i.default.fn.button,h=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=i.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var o=this._element.querySelector('input:not([type="hidden"])');if(o){if("radio"===o.type)if(o.checked&&this._element.classList.contains("active"))t=!1;else{var r=n.querySelector(".active");r&&i.default(r).removeClass("active")}t&&("checkbox"!==o.type&&"radio"!==o.type||(o.checked=!this._element.classList.contains("active")),this.shouldAvoidTriggerChange||i.default(o).trigger("change")),o.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains("active")),t&&i.default(this._element).toggleClass("active"))},e.dispose=function(){i.default.removeData(this._element,"bs.button"),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var o=i.default(this),r=o.data("bs.button");r||(r=new t(this),o.data("bs.button",r)),r.shouldAvoidTriggerChange=n,"toggle"===e&&r[e]()}))},r(t,null,[{key:"VERSION",get:function(){return"4.5.3"}}]),t}();i.default(document).on("click.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=t.target,n=e;if(i.default(e).hasClass("btn")||(e=i.default(e).closest(".btn")[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var o=e.querySelector('input:not([type="hidden"])');if(o&&(o.hasAttribute("disabled")||o.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||h._jQueryInterface.call(i.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=i.default(t.target).closest(".btn")[0];i.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),i.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide("next")},e.nextWhenVisible=function(){var t=i.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide("prev")},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(l.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(".active.carousel-item");var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)i.default(this._element).one("slid.bs.carousel",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var o=t>n?"next":"prev";this._slide(o,this._items[t])}},e.dispose=function(){i.default(this._element).off(m),i.default.removeData(this._element,"bs.carousel"),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=a({},v,t),l.typeCheckConfig(p,t,_),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&i.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&i.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&b[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&b[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};i.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(i.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(i.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){e.originalEvent.touches&&e.originalEvent.touches.length>1?t.touchDeltaX=0:t.touchDeltaX=e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),i.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n="next"===t,i="prev"===t,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+("prev"===t?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),o=this._getItemIndex(this._element.querySelector(".active.carousel-item")),r=i.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:o,to:n});return i.default(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));i.default(e).removeClass("active");var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&i.default(n).addClass("active")}},e._slide=function(t,e){var n,o,r,a=this,s=this._element.querySelector(".active.carousel-item"),u=this._getItemIndex(s),f=e||s&&this._getItemByDirection(t,s),d=this._getItemIndex(f),c=Boolean(this._interval);if("next"===t?(n="carousel-item-left",o="carousel-item-next",r="left"):(n="carousel-item-right",o="carousel-item-prev",r="right"),f&&i.default(f).hasClass("active"))this._isSliding=!1;else if(!this._triggerSlideEvent(f,r).isDefaultPrevented()&&s&&f){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(f);var h=i.default.Event("slid.bs.carousel",{relatedTarget:f,direction:r,from:u,to:d});if(i.default(this._element).hasClass("slide")){i.default(f).addClass(o),l.reflow(f),i.default(s).addClass(n),i.default(f).addClass(n);var p=parseInt(f.getAttribute("data-interval"),10);p?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=p):this._config.interval=this._config.defaultInterval||this._config.interval;var m=l.getTransitionDurationFromElement(s);i.default(s).one(l.TRANSITION_END,(function(){i.default(f).removeClass(n+" "+o).addClass("active"),i.default(s).removeClass("active "+o+" "+n),a._isSliding=!1,setTimeout((function(){return i.default(a._element).trigger(h)}),0)})).emulateTransitionEnd(m)}else i.default(s).removeClass("active"),i.default(f).addClass("active"),this._isSliding=!1,i.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data("bs.carousel"),o=a({},v,i.default(this).data());"object"==typeof e&&(o=a({},o,e));var r="string"==typeof e?e:o.slide;if(n||(n=new t(this,o),i.default(this).data("bs.carousel",n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if("undefined"==typeof n[r])throw new TypeError('No method named "'+r+'"');n[r]()}else o.interval&&o.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=l.getSelectorFromElement(this);if(n){var o=i.default(n)[0];if(o&&i.default(o).hasClass("carousel")){var r=a({},i.default(o).data(),i.default(this).data()),s=this.getAttribute("data-slide-to");s&&(r.interval=!1),t._jQueryInterface.call(i.default(o),r),s&&i.default(o).data("bs.carousel").to(s),e.preventDefault()}}},r(t,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"Default",get:function(){return v}}]),t}();i.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",y._dataApiClickHandler),i.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){i.default(this._element).hasClass("show")?this.hide():this.show()},e.show=function(){var e,n,o=this;if(!this._isTransitioning&&!i.default(this._element).hasClass("show")&&(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof o._config.parent?t.getAttribute("data-parent")===o._config.parent:t.classList.contains("collapse")}))).length&&(e=null),!(e&&(n=i.default(e).not(this._selector).data("bs.collapse"))&&n._isTransitioning))){var r=i.default.Event("show.bs.collapse");if(i.default(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call(i.default(e).not(this._selector),"hide"),n||i.default(e).data("bs.collapse",null));var a=this._getDimension();i.default(this._element).removeClass("collapse").addClass("collapsing"),this._element.style[a]=0,this._triggerArray.length&&i.default(this._triggerArray).removeClass("collapsed").attr("aria-expanded",!0),this.setTransitioning(!0);var s="scroll"+(a[0].toUpperCase()+a.slice(1)),u=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,(function(){i.default(o._element).removeClass("collapsing").addClass("collapse show"),o._element.style[a]="",o.setTransitioning(!1),i.default(o._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(u),this._element.style[a]=this._element[s]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&i.default(this._element).hasClass("show")){var e=i.default.Event("hide.bs.collapse");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",l.reflow(this._element),i.default(this._element).addClass("collapsing").removeClass("collapse show");var o=this._triggerArray.length;if(o>0)for(var r=0;r=0)return 1;return 0}();var k=D&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),N))}};function A(t){return t&&"[object Function]"==={}.toString.call(t)}function I(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function O(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function x(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=I(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:x(O(t))}function j(t){return t&&t.referenceNode?t.referenceNode:t}var L=D&&!(!window.MSInputMethodContext||!document.documentMode),P=D&&/MSIE 10/.test(navigator.userAgent);function F(t){return 11===t?L:10===t?P:L||P}function R(t){if(!t)return document.documentElement;for(var e=F(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===I(n,"position")?R(n):n:t?t.ownerDocument.documentElement:document.documentElement}function H(t){return null!==t.parentNode?H(t.parentNode):t}function M(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&R(a.firstElementChild)!==a?R(l):l;var u=H(t);return u.host?M(u.host,e):M(t,H(e).host)}function B(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===e?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"===i||"HTML"===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[n]}return t[n]}function q(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=B(e,"top"),o=B(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function Q(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function W(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],F(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function U(t){var e=t.body,n=t.documentElement,i=F(10)&&getComputedStyle(n);return{height:W("Height",e,n,i),width:W("Width",e,n,i)}}var V=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},Y=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=F(10),o="HTML"===e.nodeName,r=G(t),a=G(e),s=x(t),l=I(e),u=parseFloat(l.borderTopWidth),f=parseFloat(l.borderLeftWidth);n&&o&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var d=K({top:r.top-a.top-u,left:r.left-a.left-f,width:r.width,height:r.height});if(d.marginTop=0,d.marginLeft=0,!i&&o){var c=parseFloat(l.marginTop),h=parseFloat(l.marginLeft);d.top-=u-c,d.bottom-=u-c,d.left-=f-h,d.right-=f-h,d.marginTop=c,d.marginLeft=h}return(i&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(d=q(d,e)),d}function J(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=$(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:B(n),s=e?0:B(n,"left"),l={top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:r};return K(l)}function Z(t){var e=t.nodeName;if("BODY"===e||"HTML"===e)return!1;if("fixed"===I(t,"position"))return!0;var n=O(t);return!!n&&Z(n)}function tt(t){if(!t||!t.parentElement||F())return document.documentElement;for(var e=t.parentElement;e&&"none"===I(e,"transform");)e=e.parentElement;return e||document.documentElement}function et(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=o?tt(t):M(t,j(e));if("viewport"===i)r=J(a,o);else{var s=void 0;"scrollParent"===i?"BODY"===(s=x(O(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===i?t.ownerDocument.documentElement:i;var l=$(s,a,o);if("HTML"!==s.nodeName||Z(a))r=l;else{var u=U(t.ownerDocument),f=u.height,d=u.width;r.top+=l.top-l.marginTop,r.bottom=f+l.top,r.left+=l.left-l.marginLeft,r.right=d+l.left}}var c="number"==typeof(n=n||0);return r.left+=c?n:n.left||0,r.top+=c?n:n.top||0,r.right-=c?n:n.right||0,r.bottom-=c?n:n.bottom||0,r}function nt(t){return t.width*t.height}function it(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=et(n,i,r,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},l=Object.keys(s).map((function(t){return X({key:t},s[t],{area:nt(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),f=u.length>0?u[0].key:l[0].key,d=t.split("-")[1];return f+(d?"-"+d:"")}function ot(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=i?tt(e):M(e,j(n));return $(n,o,i)}function rt(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function at(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function st(t,e,n){n=n.split("-")[0];var i=rt(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[at(s)],o}function lt(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function ut(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var i=lt(t,(function(t){return t[e]===n}));return t.indexOf(i)}(t,"name",n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&A(n)&&(e.offsets.popper=K(e.offsets.popper),e.offsets.reference=K(e.offsets.reference),e=n(e,t))})),e}function ft(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=ot(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=it(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=st(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=ut(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function dt(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function ct(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=Tt.indexOf(t),i=Tt.slice(n+1).concat(Tt.slice(0,n));return e?i.reverse():i}var St="flip",Dt="clockwise",Nt="counterclockwise";function kt(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(lt(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return(u=u.map((function(t,i){var o=(1===i?!r:r)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];if(!r)return t;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return K(s)[e]/100*r}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r}return r}(t,o,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,i){_t(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))}))})),o}var At={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,a=o.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",u=s?"width":"height",f={start:z({},l,r[l]),end:z({},l,r[l]+r[u]-a[u])};t.offsets.popper=X({},a,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,a=o.reference,s=i.split("-")[0],l=void 0;return l=_t(+n)?[+n,0]:kt(n,r,a,s),"left"===s?(r.top+=l[0],r.left-=l[1]):"right"===s?(r.top+=l[0],r.left+=l[1]):"top"===s?(r.left+=l[0],r.top-=l[1]):"bottom"===s&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||R(t.instance.popper);t.instance.reference===n&&(n=R(n));var i=ct("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[i];o.top="",o.left="",o[i]="";var l=et(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=a,o[i]=s,e.boundaries=l;var u=e.priority,f=t.offsets.popper,d={primary:function(t){var n=f[t];return f[t]l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),z({},n,i)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=X({},f,d[e](t))})),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!wt(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,a=r.popper,s=r.reference,l=-1!==["left","right"].indexOf(o),u=l?"height":"width",f=l?"Top":"Left",d=f.toLowerCase(),c=l?"left":"top",h=l?"bottom":"right",p=rt(i)[u];s[h]-pa[h]&&(t.offsets.popper[d]+=s[d]+p-a[h]),t.offsets.popper=K(t.offsets.popper);var m=s[d]+s[u]/2-p/2,g=I(t.instance.popper),v=parseFloat(g["margin"+f]),_=parseFloat(g["border"+f+"Width"]),b=m-t.offsets.popper[d]-v-_;return b=Math.max(Math.min(a[u]-p,b),0),t.arrowElement=i,t.offsets.arrow=(z(n={},d,Math.round(b)),z(n,c,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(dt(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=et(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=at(i),r=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case St:a=[i,o];break;case Dt:a=Ct(i);break;case Nt:a=Ct(i,!0);break;default:a=e.behavior}return a.forEach((function(s,l){if(i!==s||a.length===l+1)return t;i=t.placement.split("-")[0],o=at(i);var u=t.offsets.popper,f=t.offsets.reference,d=Math.floor,c="left"===i&&d(u.right)>d(f.left)||"right"===i&&d(u.left)d(f.top)||"bottom"===i&&d(u.top)d(n.right),m=d(u.top)d(n.bottom),v="left"===i&&h||"right"===i&&p||"top"===i&&m||"bottom"===i&&g,_=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(_&&"start"===r&&h||_&&"end"===r&&p||!_&&"start"===r&&m||!_&&"end"===r&&g),y=!!e.flipVariationsByContent&&(_&&"start"===r&&p||_&&"end"===r&&h||!_&&"start"===r&&g||!_&&"end"===r&&m),w=b||y;(c||v||w)&&(t.flipped=!0,(c||v)&&(i=a[l+1]),w&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=X({},t.offsets.popper,st(t.instance.popper,t.offsets.reference,t.placement)),t=ut(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=at(e),t.offsets.popper=K(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!wt(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=lt(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};V(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=k(this.update.bind(this)),this.options=X({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(X({},t.Defaults.modifiers,o.modifiers)).forEach((function(e){i.options.modifiers[e]=X({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return X({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&A(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return Y(t,[{key:"update",value:function(){return ft.call(this)}},{key:"destroy",value:function(){return ht.call(this)}},{key:"enableEventListeners",value:function(){return gt.call(this)}},{key:"disableEventListeners",value:function(){return vt.call(this)}}]),t}();It.Utils=("undefined"!=typeof window?window:global).PopperUtils,It.placements=Et,It.Defaults=At;var Ot="dropdown",xt=i.default.fn[Ot],jt=new RegExp("38|40|27"),Lt={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},Pt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},Ft=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!i.default(this._element).hasClass("disabled")){var e=i.default(this._menu).hasClass("show");t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||i.default(this._element).hasClass("disabled")||i.default(this._menu).hasClass("show"))){var n={relatedTarget:this._element},o=i.default.Event("show.bs.dropdown",n),r=t._getParentFromElement(this._element);if(i.default(r).trigger(o),!o.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof It)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var a=this._element;"parent"===this._config.reference?a=r:l.isElement(this._config.reference)&&(a=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(a=this._config.reference[0])),"scrollParent"!==this._config.boundary&&i.default(r).addClass("position-static"),this._popper=new It(a,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===i.default(r).closest(".navbar-nav").length&&i.default(document.body).children().on("mouseover",null,i.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),i.default(this._menu).toggleClass("show"),i.default(r).toggleClass("show").trigger(i.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!i.default(this._element).hasClass("disabled")&&i.default(this._menu).hasClass("show")){var e={relatedTarget:this._element},n=i.default.Event("hide.bs.dropdown",e),o=t._getParentFromElement(this._element);i.default(o).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),i.default(this._menu).toggleClass("show"),i.default(o).toggleClass("show").trigger(i.default.Event("hidden.bs.dropdown",e)))}},e.dispose=function(){i.default.removeData(this._element,"bs.dropdown"),i.default(this._element).off(".bs.dropdown"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;i.default(this._element).on("click.bs.dropdown",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=a({},this.constructor.Default,i.default(this._element).data(),t),l.typeCheckConfig(Ot,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(".dropdown-menu"))}return this._menu},e._getPlacement=function(){var t=i.default(this._element.parentNode),e="bottom-start";return t.hasClass("dropup")?e=i.default(this._menu).hasClass("dropdown-menu-right")?"top-end":"top-start":t.hasClass("dropright")?e="right-start":t.hasClass("dropleft")?e="left-start":i.default(this._menu).hasClass("dropdown-menu-right")&&(e="bottom-end"),e},e._detectNavbar=function(){return i.default(this._element).closest(".navbar").length>0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t._config.offset(e.offsets,t._element)||{}),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),a({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data("bs.dropdown");if(n||(n=new t(this,"object"==typeof e?e:null),i.default(this).data("bs.dropdown",n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')),o=0,r=n.length;o0&&a--,40===e.which&&adocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var o=l.getTransitionDurationFromElement(this._dialog);i.default(this._element).off(l.TRANSITION_END),i.default(this._element).one(l.TRANSITION_END,(function(){t._element.classList.remove("modal-static"),n||i.default(t._element).one(l.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,o)})).emulateTransitionEnd(o),this._element.focus()}else this.hide()},e._showElement=function(t){var e=this,n=i.default(this._element).hasClass("fade"),o=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),i.default(this._dialog).hasClass("modal-dialog-scrollable")&&o?o.scrollTop=0:this._element.scrollTop=0,n&&l.reflow(this._element),i.default(this._element).addClass("show"),this._config.focus&&this._enforceFocus();var r=i.default.Event("shown.bs.modal",{relatedTarget:t}),a=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,i.default(e._element).trigger(r)};if(n){var s=l.getTransitionDurationFromElement(this._dialog);i.default(this._dialog).one(l.TRANSITION_END,a).emulateTransitionEnd(s)}else a()},e._enforceFocus=function(){var t=this;i.default(document).off("focusin.bs.modal").on("focusin.bs.modal",(function(e){document!==e.target&&t._element!==e.target&&0===i.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?i.default(this._element).on("keydown.dismiss.bs.modal",(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||i.default(this._element).off("keydown.dismiss.bs.modal")},e._setResizeEvent=function(){var t=this;this._isShown?i.default(window).on("resize.bs.modal",(function(e){return t.handleUpdate(e)})):i.default(window).off("resize.bs.modal")},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){i.default(document.body).removeClass("modal-open"),t._resetAdjustments(),t._resetScrollbar(),i.default(t._element).trigger("hidden.bs.modal")}))},e._removeBackdrop=function(){this._backdrop&&(i.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=i.default(this._element).hasClass("fade")?"fade":"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),i.default(this._backdrop).appendTo(document.body),i.default(this._element).on("click.dismiss.bs.modal",(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&e._triggerBackdropTransition()})),n&&l.reflow(this._backdrop),i.default(this._backdrop).addClass("show"),!t)return;if(!n)return void t();var o=l.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(l.TRANSITION_END,t).emulateTransitionEnd(o)}else if(!this._isShown&&this._backdrop){i.default(this._backdrop).removeClass("show");var r=function(){e._removeBackdrop(),t&&t()};if(i.default(this._element).hasClass("fade")){var a=l.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(l.TRANSITION_END,r).emulateTransitionEnd(a)}else r()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Qt,popperConfig:null},Zt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},te=function(){function t(t,e){if("undefined"==typeof It)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=i.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(i.default(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),i.default.removeData(this.element,this.constructor.DATA_KEY),i.default(this.element).off(this.constructor.EVENT_KEY),i.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&i.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===i.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=i.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){i.default(this.element).trigger(e);var n=l.findShadowRoot(this.element),o=i.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!o)return;var r=this.getTipElement(),a=l.getUID(this.constructor.NAME);r.setAttribute("id",a),this.element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&i.default(r).addClass("fade");var s="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,u=this._getAttachment(s);this.addAttachmentClass(u);var f=this._getContainer();i.default(r).data(this.constructor.DATA_KEY,this),i.default.contains(this.element.ownerDocument.documentElement,this.tip)||i.default(r).appendTo(f),i.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new It(this.element,r,this._getPopperConfig(u)),i.default(r).addClass("show"),"ontouchstart"in document.documentElement&&i.default(document.body).children().on("mouseover",null,i.default.noop);var d=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,i.default(t.element).trigger(t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(i.default(this.tip).hasClass("fade")){var c=l.getTransitionDurationFromElement(this.tip);i.default(this.tip).one(l.TRANSITION_END,d).emulateTransitionEnd(c)}else d()}},e.hide=function(t){var e=this,n=this.getTipElement(),o=i.default.Event(this.constructor.Event.HIDE),r=function(){"show"!==e._hoverState&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),i.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(i.default(this.element).trigger(o),!o.isDefaultPrevented()){if(i.default(n).removeClass("show"),"ontouchstart"in document.documentElement&&i.default(document.body).children().off("mouseover",null,i.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,i.default(this.tip).hasClass("fade")){var a=l.getTransitionDurationFromElement(n);i.default(n).one(l.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(i.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),i.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Vt(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?i.default(e).parent().is(t)||t.empty().append(e):t.text(i.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return a({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:l.isElement(this.config.container)?i.default(this.config.container):i.default(document).find(this.config.container)},e._getAttachment=function(t){return $t[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)i.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;i.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},i.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=a({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),i.default(e.getTipElement()).hasClass("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=i.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Kt.indexOf(t)&&delete e[t]})),"number"==typeof(t=a({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),l.typeCheckConfig(Yt,t,this.constructor.DefaultType),t.sanitize&&(t.template=Vt(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(Xt);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(i.default(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.tooltip"),r="object"==typeof e&&e;if((o||!/dispose|hide/.test(e))&&(o||(o=new t(this,r),n.data("bs.tooltip",o)),"string"==typeof e)){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"Default",get:function(){return Jt}},{key:"NAME",get:function(){return Yt}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return Zt}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Gt}}]),t}();i.default.fn[Yt]=te._jQueryInterface,i.default.fn[Yt].Constructor=te,i.default.fn[Yt].noConflict=function(){return i.default.fn[Yt]=zt,te._jQueryInterface};var ee="popover",ne=i.default.fn[ee],ie=new RegExp("(^|\\s)bs-popover\\S+","g"),oe=a({},te.Default,{placement:"right",trigger:"click",content:"",template:''}),re=a({},te.DefaultType,{content:"(string|element|function)"}),ae={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},se=function(t){var e,n;function o(){return t.apply(this,arguments)||this}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var a=o.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},a.setContent=function(){var t=i.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(ie);null!==e&&e.length>0&&t.removeClass(e.join(""))},o._jQueryInterface=function(t){return this.each((function(){var e=i.default(this).data("bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n),i.default(this).data("bs.popover",e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},r(o,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"Default",get:function(){return oe}},{key:"NAME",get:function(){return ee}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return ae}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return re}}]),o}(te);i.default.fn[ee]=se._jQueryInterface,i.default.fn[ee].Constructor=se,i.default.fn[ee].noConflict=function(){return i.default.fn[ee]=ne,se._jQueryInterface};var le="scrollspy",ue=i.default.fn[le],fe={offset:10,method:"auto",target:""},de={offset:"number",method:"string",target:"(string|element)"},ce=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,i.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,o="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=l.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[i.default(e)[n]().top+o,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){i.default.removeData(this._element,"bs.scrollspy"),i.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=a({},fe,"object"==typeof t&&t?t:{})).target&&l.isElement(t.target)){var e=i.default(t.target).attr("id");e||(e=l.getUID(le),i.default(t.target).attr("id",e)),t.target="#"+e}return l.typeCheckConfig(le,t,de),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active":".active";n=(n=i.default.makeArray(i.default(o).find(a)))[n.length-1]}var s=i.default.Event("hide.bs.tab",{relatedTarget:this._element}),u=i.default.Event("show.bs.tab",{relatedTarget:n});if(n&&i.default(n).trigger(s),i.default(this._element).trigger(u),!u.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,o);var f=function(){var e=i.default.Event("hidden.bs.tab",{relatedTarget:t._element}),o=i.default.Event("shown.bs.tab",{relatedTarget:n});i.default(n).trigger(e),i.default(t._element).trigger(o)};e?this._activate(e,e.parentNode,f):f()}}},e.dispose=function(){i.default.removeData(this._element,"bs.tab"),this._element=null},e._activate=function(t,e,n){var o=this,r=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?i.default(e).children(".active"):i.default(e).find("> li > .active"))[0],a=n&&r&&i.default(r).hasClass("fade"),s=function(){return o._transitionComplete(t,r,n)};if(r&&a){var u=l.getTransitionDurationFromElement(r);i.default(r).removeClass("show").one(l.TRANSITION_END,s).emulateTransitionEnd(u)}else s()},e._transitionComplete=function(t,e,n){if(e){i.default(e).removeClass("active");var o=i.default(e.parentNode).find("> .dropdown-menu .active")[0];o&&i.default(o).removeClass("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(i.default(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),l.reflow(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&i.default(t.parentNode).hasClass("dropdown-menu")){var r=i.default(t).closest(".dropdown")[0];if(r){var a=[].slice.call(r.querySelectorAll(".dropdown-toggle"));i.default(a).addClass("active")}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.tab");if(o||(o=new t(this),n.data("bs.tab",o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.5.3"}}]),t}();i.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),pe._jQueryInterface.call(i.default(this),"show")})),i.default.fn.tab=pe._jQueryInterface,i.default.fn.tab.Constructor=pe,i.default.fn.tab.noConflict=function(){return i.default.fn.tab=he,pe._jQueryInterface};var me=i.default.fn.toast,ge={animation:"boolean",autohide:"boolean",delay:"number"},ve={animation:!0,autohide:!0,delay:500},_e=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=i.default.Event("show.bs.toast");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),i.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),l.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var o=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,n).emulateTransitionEnd(o)}else n()}},e.hide=function(){if(this._element.classList.contains("show")){var t=i.default.Event("hide.bs.toast");i.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),i.default(this._element).off("click.dismiss.bs.toast"),i.default.removeData(this._element,"bs.toast"),this._element=null,this._config=null},e._getConfig=function(t){return t=a({},ve,i.default(this._element).data(),"object"==typeof t&&t?t:{}),l.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;i.default(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add("hide"),i.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.toast");if(o||(o=new t(this,"object"==typeof e&&e),n.data("bs.toast",o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e](this)}}))},r(t,null,[{key:"VERSION",get:function(){return"4.5.3"}},{key:"DefaultType",get:function(){return ge}},{key:"Default",get:function(){return ve}}]),t}();i.default.fn.toast=_e._jQueryInterface,i.default.fn.toast.Constructor=_e,i.default.fn.toast.noConflict=function(){return i.default.fn.toast=me,_e._jQueryInterface},t.Alert=d,t.Button=h,t.Carousel=y,t.Collapse=S,t.Dropdown=Ft,t.Modal=Bt,t.Popover=se,t.Scrollspy=ce,t.Tab=pe,t.Toast=_e,t.Tooltip=te,t.Util=l,Object.defineProperty(t,"__esModule",{value:!0})})); -//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/static/kevin-master/assets/css/animate.css b/static/kevin-master/assets/css/animate.css deleted file mode 100644 index 7148b57..0000000 --- a/static/kevin-master/assets/css/animate.css +++ /dev/null @@ -1,3340 +0,0 @@ -@charset "UTF-8"; - -/*! - * animate.css -http://daneden.me/animate - * Version - 3.5.1 - * Licensed under the MIT license - http://opensource.org/licenses/MIT - * - * Copyright (c) 2016 Daniel Eden - */ - -.animated { - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.animated.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -.animated.hinge { - -webkit-animation-duration: 2s; - animation-duration: 2s; -} - -.animated.flipOutX, -.animated.flipOutY, -.animated.bounceIn, -.animated.bounceOut { - -webkit-animation-duration: .75s; - animation-duration: .75s; -} - -@-webkit-keyframes bounce { - from, 20%, 53%, 80%, to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - -webkit-transform: translate3d(0,0,0); - transform: translate3d(0,0,0); - } - - 40%, 43% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - -webkit-transform: translate3d(0, -30px, 0); - transform: translate3d(0, -30px, 0); - } - - 70% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - -webkit-transform: translate3d(0, -15px, 0); - transform: translate3d(0, -15px, 0); - } - - 90% { - -webkit-transform: translate3d(0,-4px,0); - transform: translate3d(0,-4px,0); - } -} - -@keyframes bounce { - from, 20%, 53%, 80%, to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - -webkit-transform: translate3d(0,0,0); - transform: translate3d(0,0,0); - } - - 40%, 43% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - -webkit-transform: translate3d(0, -30px, 0); - transform: translate3d(0, -30px, 0); - } - - 70% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - -webkit-transform: translate3d(0, -15px, 0); - transform: translate3d(0, -15px, 0); - } - - 90% { - -webkit-transform: translate3d(0,-4px,0); - transform: translate3d(0,-4px,0); - } -} - -.bounce { - -webkit-animation-name: bounce; - animation-name: bounce; - -webkit-transform-origin: center bottom; - transform-origin: center bottom; -} - -@-webkit-keyframes flash { - from, 50%, to { - opacity: 1; - } - - 25%, 75% { - opacity: 0; - } -} - -@keyframes flash { - from, 50%, to { - opacity: 1; - } - - 25%, 75% { - opacity: 0; - } -} - -.flash { - -webkit-animation-name: flash; - animation-name: flash; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes pulse { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 50% { - -webkit-transform: scale3d(1.05, 1.05, 1.05); - transform: scale3d(1.05, 1.05, 1.05); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes pulse { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 50% { - -webkit-transform: scale3d(1.05, 1.05, 1.05); - transform: scale3d(1.05, 1.05, 1.05); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.pulse { - -webkit-animation-name: pulse; - animation-name: pulse; -} - -@-webkit-keyframes rubberBand { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 30% { - -webkit-transform: scale3d(1.25, 0.75, 1); - transform: scale3d(1.25, 0.75, 1); - } - - 40% { - -webkit-transform: scale3d(0.75, 1.25, 1); - transform: scale3d(0.75, 1.25, 1); - } - - 50% { - -webkit-transform: scale3d(1.15, 0.85, 1); - transform: scale3d(1.15, 0.85, 1); - } - - 65% { - -webkit-transform: scale3d(.95, 1.05, 1); - transform: scale3d(.95, 1.05, 1); - } - - 75% { - -webkit-transform: scale3d(1.05, .95, 1); - transform: scale3d(1.05, .95, 1); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes rubberBand { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 30% { - -webkit-transform: scale3d(1.25, 0.75, 1); - transform: scale3d(1.25, 0.75, 1); - } - - 40% { - -webkit-transform: scale3d(0.75, 1.25, 1); - transform: scale3d(0.75, 1.25, 1); - } - - 50% { - -webkit-transform: scale3d(1.15, 0.85, 1); - transform: scale3d(1.15, 0.85, 1); - } - - 65% { - -webkit-transform: scale3d(.95, 1.05, 1); - transform: scale3d(.95, 1.05, 1); - } - - 75% { - -webkit-transform: scale3d(1.05, .95, 1); - transform: scale3d(1.05, .95, 1); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.rubberBand { - -webkit-animation-name: rubberBand; - animation-name: rubberBand; -} - -@-webkit-keyframes shake { - from, to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, 40%, 60%, 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -@keyframes shake { - from, to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, 40%, 60%, 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -.shake { - -webkit-animation-name: shake; - animation-name: shake; -} - -@-webkit-keyframes headShake { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 6.5% { - -webkit-transform: translateX(-6px) rotateY(-9deg); - transform: translateX(-6px) rotateY(-9deg); - } - - 18.5% { - -webkit-transform: translateX(5px) rotateY(7deg); - transform: translateX(5px) rotateY(7deg); - } - - 31.5% { - -webkit-transform: translateX(-3px) rotateY(-5deg); - transform: translateX(-3px) rotateY(-5deg); - } - - 43.5% { - -webkit-transform: translateX(2px) rotateY(3deg); - transform: translateX(2px) rotateY(3deg); - } - - 50% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes headShake { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 6.5% { - -webkit-transform: translateX(-6px) rotateY(-9deg); - transform: translateX(-6px) rotateY(-9deg); - } - - 18.5% { - -webkit-transform: translateX(5px) rotateY(7deg); - transform: translateX(5px) rotateY(7deg); - } - - 31.5% { - -webkit-transform: translateX(-3px) rotateY(-5deg); - transform: translateX(-3px) rotateY(-5deg); - } - - 43.5% { - -webkit-transform: translateX(2px) rotateY(3deg); - transform: translateX(2px) rotateY(3deg); - } - - 50% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -.headShake { - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-name: headShake; - animation-name: headShake; -} - -@-webkit-keyframes swing { - 20% { - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - } - - 40% { - -webkit-transform: rotate3d(0, 0, 1, -10deg); - transform: rotate3d(0, 0, 1, -10deg); - } - - 60% { - -webkit-transform: rotate3d(0, 0, 1, 5deg); - transform: rotate3d(0, 0, 1, 5deg); - } - - 80% { - -webkit-transform: rotate3d(0, 0, 1, -5deg); - transform: rotate3d(0, 0, 1, -5deg); - } - - to { - -webkit-transform: rotate3d(0, 0, 1, 0deg); - transform: rotate3d(0, 0, 1, 0deg); - } -} - -@keyframes swing { - 20% { - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - } - - 40% { - -webkit-transform: rotate3d(0, 0, 1, -10deg); - transform: rotate3d(0, 0, 1, -10deg); - } - - 60% { - -webkit-transform: rotate3d(0, 0, 1, 5deg); - transform: rotate3d(0, 0, 1, 5deg); - } - - 80% { - -webkit-transform: rotate3d(0, 0, 1, -5deg); - transform: rotate3d(0, 0, 1, -5deg); - } - - to { - -webkit-transform: rotate3d(0, 0, 1, 0deg); - transform: rotate3d(0, 0, 1, 0deg); - } -} - -.swing { - -webkit-transform-origin: top center; - transform-origin: top center; - -webkit-animation-name: swing; - animation-name: swing; -} - -@-webkit-keyframes tada { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 10%, 20% { - -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); - transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); - } - - 30%, 50%, 70%, 90% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - } - - 40%, 60%, 80% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes tada { - from { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 10%, 20% { - -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); - transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); - } - - 30%, 50%, 70%, 90% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - } - - 40%, 60%, 80% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - } - - to { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.tada { - -webkit-animation-name: tada; - animation-name: tada; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes wobble { - from { - -webkit-transform: none; - transform: none; - } - - 15% { - -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - - 30% { - -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - - 45% { - -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - } - - 60% { - -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - } - - 75% { - -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - } - - to { - -webkit-transform: none; - transform: none; - } -} - -@keyframes wobble { - from { - -webkit-transform: none; - transform: none; - } - - 15% { - -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - - 30% { - -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - - 45% { - -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - } - - 60% { - -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - } - - 75% { - -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - } - - to { - -webkit-transform: none; - transform: none; - } -} - -.wobble { - -webkit-animation-name: wobble; - animation-name: wobble; -} - -@-webkit-keyframes jello { - from, 11.1%, to { - -webkit-transform: none; - transform: none; - } - - 22.2% { - -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); - transform: skewX(-12.5deg) skewY(-12.5deg); - } - - 33.3% { - -webkit-transform: skewX(6.25deg) skewY(6.25deg); - transform: skewX(6.25deg) skewY(6.25deg); - } - - 44.4% { - -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); - transform: skewX(-3.125deg) skewY(-3.125deg); - } - - 55.5% { - -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); - transform: skewX(1.5625deg) skewY(1.5625deg); - } - - 66.6% { - -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); - transform: skewX(-0.78125deg) skewY(-0.78125deg); - } - - 77.7% { - -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); - transform: skewX(0.390625deg) skewY(0.390625deg); - } - - 88.8% { - -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - } -} - -@keyframes jello { - from, 11.1%, to { - -webkit-transform: none; - transform: none; - } - - 22.2% { - -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); - transform: skewX(-12.5deg) skewY(-12.5deg); - } - - 33.3% { - -webkit-transform: skewX(6.25deg) skewY(6.25deg); - transform: skewX(6.25deg) skewY(6.25deg); - } - - 44.4% { - -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); - transform: skewX(-3.125deg) skewY(-3.125deg); - } - - 55.5% { - -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); - transform: skewX(1.5625deg) skewY(1.5625deg); - } - - 66.6% { - -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); - transform: skewX(-0.78125deg) skewY(-0.78125deg); - } - - 77.7% { - -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); - transform: skewX(0.390625deg) skewY(0.390625deg); - } - - 88.8% { - -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - } -} - -.jello { - -webkit-animation-name: jello; - animation-name: jello; - -webkit-transform-origin: center; - transform-origin: center; -} - -@-webkit-keyframes bounceIn { - from, 20%, 40%, 60%, 80%, to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } - - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 40% { - -webkit-transform: scale3d(.9, .9, .9); - transform: scale3d(.9, .9, .9); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - - 80% { - -webkit-transform: scale3d(.97, .97, .97); - transform: scale3d(.97, .97, .97); - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes bounceIn { - from, 20%, 40%, 60%, 80%, to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } - - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 40% { - -webkit-transform: scale3d(.9, .9, .9); - transform: scale3d(.9, .9, .9); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - - 80% { - -webkit-transform: scale3d(.97, .97, .97); - transform: scale3d(.97, .97, .97); - } - - to { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.bounceIn { - -webkit-animation-name: bounceIn; - animation-name: bounceIn; -} - -@-webkit-keyframes bounceInDown { - from, 60%, 75%, 90%, to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -3000px, 0); - transform: translate3d(0, -3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, 25px, 0); - transform: translate3d(0, 25px, 0); - } - - 75% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); - } - - to { - -webkit-transform: none; - transform: none; - } -} - -@keyframes bounceInDown { - from, 60%, 75%, 90%, to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -3000px, 0); - transform: translate3d(0, -3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, 25px, 0); - transform: translate3d(0, 25px, 0); - } - - 75% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); - } - - to { - -webkit-transform: none; - transform: none; - } -} - -.bounceInDown { - -webkit-animation-name: bounceInDown; - animation-name: bounceInDown; -} - -@-webkit-keyframes bounceInLeft { - from, 60%, 75%, 90%, to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(-3000px, 0, 0); - transform: translate3d(-3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(25px, 0, 0); - transform: translate3d(25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(5px, 0, 0); - transform: translate3d(5px, 0, 0); - } - - to { - -webkit-transform: none; - transform: none; - } -} - -@keyframes bounceInLeft { - from, 60%, 75%, 90%, to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(-3000px, 0, 0); - transform: translate3d(-3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(25px, 0, 0); - transform: translate3d(25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(5px, 0, 0); - transform: translate3d(5px, 0, 0); - } - - to { - -webkit-transform: none; - transform: none; - } -} - -.bounceInLeft { - -webkit-animation-name: bounceInLeft; - animation-name: bounceInLeft; -} - -@-webkit-keyframes bounceInRight { - from, 60%, 75%, 90%, to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - from { - opacity: 0; - -webkit-transform: translate3d(3000px, 0, 0); - transform: translate3d(3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(-25px, 0, 0); - transform: translate3d(-25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); - } - - to { - -webkit-transform: none; - transform: none; - } -} - -@keyframes bounceInRight { - from, 60%, 75%, 90%, to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - from { - opacity: 0; - -webkit-transform: translate3d(3000px, 0, 0); - transform: translate3d(3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(-25px, 0, 0); - transform: translate3d(-25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); - } - - to { - -webkit-transform: none; - transform: none; - } -} - -.bounceInRight { - -webkit-animation-name: bounceInRight; - animation-name: bounceInRight; -} - -@-webkit-keyframes bounceInUp { - from, 60%, 75%, 90%, to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - from { - opacity: 0; - -webkit-transform: translate3d(0, 3000px, 0); - transform: translate3d(0, 3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 75% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -5px, 0); - transform: translate3d(0, -5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInUp { - from, 60%, 75%, 90%, to { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - from { - opacity: 0; - -webkit-transform: translate3d(0, 3000px, 0); - transform: translate3d(0, 3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 75% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -5px, 0); - transform: translate3d(0, -5px, 0); - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInUp { - -webkit-animation-name: bounceInUp; - animation-name: bounceInUp; -} - -@-webkit-keyframes bounceOut { - 20% { - -webkit-transform: scale3d(.9, .9, .9); - transform: scale3d(.9, .9, .9); - } - - 50%, 55% { - opacity: 1; - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - to { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } -} - -@keyframes bounceOut { - 20% { - -webkit-transform: scale3d(.9, .9, .9); - transform: scale3d(.9, .9, .9); - } - - 50%, 55% { - opacity: 1; - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - to { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } -} - -.bounceOut { - -webkit-animation-name: bounceOut; - animation-name: bounceOut; -} - -@-webkit-keyframes bounceOutDown { - 20% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 40%, 45% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -@keyframes bounceOutDown { - 20% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 40%, 45% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -.bounceOutDown { - -webkit-animation-name: bounceOutDown; - animation-name: bounceOutDown; -} - -@-webkit-keyframes bounceOutLeft { - 20% { - opacity: 1; - -webkit-transform: translate3d(20px, 0, 0); - transform: translate3d(20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -@keyframes bounceOutLeft { - 20% { - opacity: 1; - -webkit-transform: translate3d(20px, 0, 0); - transform: translate3d(20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -.bounceOutLeft { - -webkit-animation-name: bounceOutLeft; - animation-name: bounceOutLeft; -} - -@-webkit-keyframes bounceOutRight { - 20% { - opacity: 1; - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -@keyframes bounceOutRight { - 20% { - opacity: 1; - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -.bounceOutRight { - -webkit-animation-name: bounceOutRight; - animation-name: bounceOutRight; -} - -@-webkit-keyframes bounceOutUp { - 20% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 40%, 45% { - opacity: 1; - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -@keyframes bounceOutUp { - 20% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 40%, 45% { - opacity: 1; - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -.bounceOutUp { - -webkit-animation-name: bounceOutUp; - animation-name: bounceOutUp; -} - -@-webkit-keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -@keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -.fadeIn { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} - -@-webkit-keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown; -} - -@-webkit-keyframes fadeInDownBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInDownBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInDownBig { - -webkit-animation-name: fadeInDownBig; - animation-name: fadeInDownBig; -} - -@-webkit-keyframes fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInLeft { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInLeft { - -webkit-animation-name: fadeInLeft; - animation-name: fadeInLeft; -} - -@-webkit-keyframes fadeInLeftBig { - from { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInLeftBig { - from { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInLeftBig { - -webkit-animation-name: fadeInLeftBig; - animation-name: fadeInLeftBig; -} - -@-webkit-keyframes fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInRight { - from { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInRight { - -webkit-animation-name: fadeInRight; - animation-name: fadeInRight; -} - -@-webkit-keyframes fadeInRightBig { - from { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInRightBig { - from { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInRightBig { - -webkit-animation-name: fadeInRightBig; - animation-name: fadeInRightBig; -} - -@-webkit-keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInUp { - from { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInUp { - -webkit-animation-name: fadeInUp; - animation-name: fadeInUp; -} - -@-webkit-keyframes fadeInUpBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInUpBig { - from { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInUpBig { - -webkit-animation-name: fadeInUpBig; - animation-name: fadeInUpBig; -} - -@-webkit-keyframes fadeOut { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -@keyframes fadeOut { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -.fadeOut { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} - -@-webkit-keyframes fadeOutDown { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes fadeOutDown { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.fadeOutDown { - -webkit-animation-name: fadeOutDown; - animation-name: fadeOutDown; -} - -@-webkit-keyframes fadeOutDownBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -@keyframes fadeOutDownBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -.fadeOutDownBig { - -webkit-animation-name: fadeOutDownBig; - animation-name: fadeOutDownBig; -} - -@-webkit-keyframes fadeOutLeft { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes fadeOutLeft { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.fadeOutLeft { - -webkit-animation-name: fadeOutLeft; - animation-name: fadeOutLeft; -} - -@-webkit-keyframes fadeOutLeftBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -@keyframes fadeOutLeftBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -.fadeOutLeftBig { - -webkit-animation-name: fadeOutLeftBig; - animation-name: fadeOutLeftBig; -} - -@-webkit-keyframes fadeOutRight { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@keyframes fadeOutRight { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.fadeOutRight { - -webkit-animation-name: fadeOutRight; - animation-name: fadeOutRight; -} - -@-webkit-keyframes fadeOutRightBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -@keyframes fadeOutRightBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -.fadeOutRightBig { - -webkit-animation-name: fadeOutRightBig; - animation-name: fadeOutRightBig; -} - -@-webkit-keyframes fadeOutUp { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes fadeOutUp { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.fadeOutUp { - -webkit-animation-name: fadeOutUp; - animation-name: fadeOutUp; -} - -@-webkit-keyframes fadeOutUpBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -@keyframes fadeOutUpBig { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -.fadeOutUpBig { - -webkit-animation-name: fadeOutUpBig; - animation-name: fadeOutUpBig; -} - -@-webkit-keyframes flip { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) scale3d(.95, .95, .95); - transform: perspective(400px) scale3d(.95, .95, .95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -@keyframes flip { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) scale3d(.95, .95, .95); - transform: perspective(400px) scale3d(.95, .95, .95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -.animated.flip { - -webkit-backface-visibility: visible; - backface-visibility: visible; - -webkit-animation-name: flip; - animation-name: flip; -} - -@-webkit-keyframes flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes flipInX { - from { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -.flipInX { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInX; - animation-name: flipInX; -} - -@-webkit-keyframes flipInY { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes flipInY { - from { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - } - - to { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -.flipInY { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInY; - animation-name: flipInY; -} - -@-webkit-keyframes flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -@keyframes flipOutX { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -.flipOutX { - -webkit-animation-name: flipOutX; - animation-name: flipOutX; - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; -} - -@-webkit-keyframes flipOutY { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - opacity: 0; - } -} - -@keyframes flipOutY { - from { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - opacity: 1; - } - - to { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - opacity: 0; - } -} - -.flipOutY { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipOutY; - animation-name: flipOutY; -} - -@-webkit-keyframes lightSpeedIn { - from { - -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: skewX(20deg); - transform: skewX(20deg); - opacity: 1; - } - - 80% { - -webkit-transform: skewX(-5deg); - transform: skewX(-5deg); - opacity: 1; - } - - to { - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -@keyframes lightSpeedIn { - from { - -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: skewX(20deg); - transform: skewX(20deg); - opacity: 1; - } - - 80% { - -webkit-transform: skewX(-5deg); - transform: skewX(-5deg); - opacity: 1; - } - - to { - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -.lightSpeedIn { - -webkit-animation-name: lightSpeedIn; - animation-name: lightSpeedIn; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; -} - -@-webkit-keyframes lightSpeedOut { - from { - opacity: 1; - } - - to { - -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); - transform: translate3d(100%, 0, 0) skewX(30deg); - opacity: 0; - } -} - -@keyframes lightSpeedOut { - from { - opacity: 1; - } - - to { - -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); - transform: translate3d(100%, 0, 0) skewX(30deg); - opacity: 0; - } -} - -.lightSpeedOut { - -webkit-animation-name: lightSpeedOut; - animation-name: lightSpeedOut; - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; -} - -@-webkit-keyframes rotateIn { - from { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, -200deg); - transform: rotate3d(0, 0, 1, -200deg); - opacity: 0; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -@keyframes rotateIn { - from { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, -200deg); - transform: rotate3d(0, 0, 1, -200deg); - opacity: 0; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -.rotateIn { - -webkit-animation-name: rotateIn; - animation-name: rotateIn; -} - -@-webkit-keyframes rotateInDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -@keyframes rotateInDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -.rotateInDownLeft { - -webkit-animation-name: rotateInDownLeft; - animation-name: rotateInDownLeft; -} - -@-webkit-keyframes rotateInDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -@keyframes rotateInDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -.rotateInDownRight { - -webkit-animation-name: rotateInDownRight; - animation-name: rotateInDownRight; -} - -@-webkit-keyframes rotateInUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -@keyframes rotateInUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -.rotateInUpLeft { - -webkit-animation-name: rotateInUpLeft; - animation-name: rotateInUpLeft; -} - -@-webkit-keyframes rotateInUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -90deg); - transform: rotate3d(0, 0, 1, -90deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -@keyframes rotateInUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -90deg); - transform: rotate3d(0, 0, 1, -90deg); - opacity: 0; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -.rotateInUpRight { - -webkit-animation-name: rotateInUpRight; - animation-name: rotateInUpRight; -} - -@-webkit-keyframes rotateOut { - from { - -webkit-transform-origin: center; - transform-origin: center; - opacity: 1; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, 200deg); - transform: rotate3d(0, 0, 1, 200deg); - opacity: 0; - } -} - -@keyframes rotateOut { - from { - -webkit-transform-origin: center; - transform-origin: center; - opacity: 1; - } - - to { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, 200deg); - transform: rotate3d(0, 0, 1, 200deg); - opacity: 0; - } -} - -.rotateOut { - -webkit-animation-name: rotateOut; - animation-name: rotateOut; -} - -@-webkit-keyframes rotateOutDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } -} - -@keyframes rotateOutDownLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } -} - -.rotateOutDownLeft { - -webkit-animation-name: rotateOutDownLeft; - animation-name: rotateOutDownLeft; -} - -@-webkit-keyframes rotateOutDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -@keyframes rotateOutDownRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -.rotateOutDownRight { - -webkit-animation-name: rotateOutDownRight; - animation-name: rotateOutDownRight; -} - -@-webkit-keyframes rotateOutUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -@keyframes rotateOutUpLeft { - from { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -.rotateOutUpLeft { - -webkit-animation-name: rotateOutUpLeft; - animation-name: rotateOutUpLeft; -} - -@-webkit-keyframes rotateOutUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 90deg); - transform: rotate3d(0, 0, 1, 90deg); - opacity: 0; - } -} - -@keyframes rotateOutUpRight { - from { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - to { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 90deg); - transform: rotate3d(0, 0, 1, 90deg); - opacity: 0; - } -} - -.rotateOutUpRight { - -webkit-animation-name: rotateOutUpRight; - animation-name: rotateOutUpRight; -} - -@-webkit-keyframes hinge { - 0% { - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, 60% { - -webkit-transform: rotate3d(0, 0, 1, 80deg); - transform: rotate3d(0, 0, 1, 80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40%, 80% { - -webkit-transform: rotate3d(0, 0, 1, 60deg); - transform: rotate3d(0, 0, 1, 60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 700px, 0); - transform: translate3d(0, 700px, 0); - opacity: 0; - } -} - -@keyframes hinge { - 0% { - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, 60% { - -webkit-transform: rotate3d(0, 0, 1, 80deg); - transform: rotate3d(0, 0, 1, 80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40%, 80% { - -webkit-transform: rotate3d(0, 0, 1, 60deg); - transform: rotate3d(0, 0, 1, 60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - to { - -webkit-transform: translate3d(0, 700px, 0); - transform: translate3d(0, 700px, 0); - opacity: 0; - } -} - -.hinge { - -webkit-animation-name: hinge; - animation-name: hinge; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollIn { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes rollIn { - from { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.rollIn { - -webkit-animation-name: rollIn; - animation-name: rollIn; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollOut { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - } -} - -@keyframes rollOut { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - } -} - -.rollOut { - -webkit-animation-name: rollOut; - animation-name: rollOut; -} - -@-webkit-keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } - - 50% { - opacity: 1; - } -} - -@keyframes zoomIn { - from { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } - - 50% { - opacity: 1; - } -} - -.zoomIn { - -webkit-animation-name: zoomIn; - animation-name: zoomIn; -} - -@-webkit-keyframes zoomInDown { - from { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -@keyframes zoomInDown { - from { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -.zoomInDown { - -webkit-animation-name: zoomInDown; - animation-name: zoomInDown; -} - -@-webkit-keyframes zoomInLeft { - from { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); - transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -@keyframes zoomInLeft { - from { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); - transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -.zoomInLeft { - -webkit-animation-name: zoomInLeft; - animation-name: zoomInLeft; -} - -@-webkit-keyframes zoomInRight { - from { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); - transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -@keyframes zoomInRight { - from { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); - transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -.zoomInRight { - -webkit-animation-name: zoomInRight; - animation-name: zoomInRight; -} - -@-webkit-keyframes zoomInUp { - from { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -@keyframes zoomInUp { - from { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -.zoomInUp { - -webkit-animation-name: zoomInUp; - animation-name: zoomInUp; -} - -@-webkit-keyframes zoomOut { - from { - opacity: 1; - } - - 50% { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } - - to { - opacity: 0; - } -} - -@keyframes zoomOut { - from { - opacity: 1; - } - - 50% { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } - - to { - opacity: 0; - } -} - -.zoomOut { - -webkit-animation-name: zoomOut; - animation-name: zoomOut; -} - -@-webkit-keyframes zoomOutDown { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - to { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -@keyframes zoomOutDown { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - to { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -.zoomOutDown { - -webkit-animation-name: zoomOutDown; - animation-name: zoomOutDown; -} - -@-webkit-keyframes zoomOutLeft { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); - transform: scale(.1) translate3d(-2000px, 0, 0); - -webkit-transform-origin: left center; - transform-origin: left center; - } -} - -@keyframes zoomOutLeft { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); - transform: scale(.1) translate3d(-2000px, 0, 0); - -webkit-transform-origin: left center; - transform-origin: left center; - } -} - -.zoomOutLeft { - -webkit-animation-name: zoomOutLeft; - animation-name: zoomOutLeft; -} - -@-webkit-keyframes zoomOutRight { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(.1) translate3d(2000px, 0, 0); - transform: scale(.1) translate3d(2000px, 0, 0); - -webkit-transform-origin: right center; - transform-origin: right center; - } -} - -@keyframes zoomOutRight { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); - } - - to { - opacity: 0; - -webkit-transform: scale(.1) translate3d(2000px, 0, 0); - transform: scale(.1) translate3d(2000px, 0, 0); - -webkit-transform-origin: right center; - transform-origin: right center; - } -} - -.zoomOutRight { - -webkit-animation-name: zoomOutRight; - animation-name: zoomOutRight; -} - -@-webkit-keyframes zoomOutUp { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - to { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -@keyframes zoomOutUp { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - to { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -.zoomOutUp { - -webkit-animation-name: zoomOutUp; - animation-name: zoomOutUp; -} - -@-webkit-keyframes slideInDown { - from { - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInDown { - from { - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInDown { - -webkit-animation-name: slideInDown; - animation-name: slideInDown; -} - -@-webkit-keyframes slideInLeft { - from { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInLeft { - from { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInLeft { - -webkit-animation-name: slideInLeft; - animation-name: slideInLeft; -} - -@-webkit-keyframes slideInRight { - from { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInRight { - from { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInRight { - -webkit-animation-name: slideInRight; - animation-name: slideInRight; -} - -@-webkit-keyframes slideInUp { - from { - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInUp { - from { - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - visibility: visible; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInUp { - -webkit-animation-name: slideInUp; - animation-name: slideInUp; -} - -@-webkit-keyframes slideOutDown { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes slideOutDown { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.slideOutDown { - -webkit-animation-name: slideOutDown; - animation-name: slideOutDown; -} - -@-webkit-keyframes slideOutLeft { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes slideOutLeft { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.slideOutLeft { - -webkit-animation-name: slideOutLeft; - animation-name: slideOutLeft; -} - -@-webkit-keyframes slideOutRight { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@keyframes slideOutRight { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.slideOutRight { - -webkit-animation-name: slideOutRight; - animation-name: slideOutRight; -} - -@-webkit-keyframes slideOutUp { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes slideOutUp { - from { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - to { - visibility: hidden; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.slideOutUp { - -webkit-animation-name: slideOutUp; - animation-name: slideOutUp; -} diff --git a/static/kevin-master/assets/css/getHTMLMediaElement.css b/static/kevin-master/assets/css/getHTMLMediaElement.css deleted file mode 100644 index d678453..0000000 --- a/static/kevin-master/assets/css/getHTMLMediaElement.css +++ /dev/null @@ -1,163 +0,0 @@ -/* -Muaz Khan - www.MuazKhan.com -MIT License - www.WebRTC-Experiment.com/licence -Documentation - github.com/muaz-khan/WebRTC-Experiment/tree/master/getMediaElement -*/ - -.media-container, .media-container * { - margin: 0; - padding: 0; - -webkit-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; -} - -.media-container, .media-container * { - -moz-transition: all .5s ease-in-out; - -ms-transition: all .5s ease-in-out; - -o-transition: all .5s ease-in-out; - -webkit-transition: all .5s ease-in-out; - transition: all .5s ease-in-out; -} - -.media-container { - width: 33%; - display: inline-block; - border: 1px solid rgb(0, 0, 0); - border-radius: 4px; - overflow: hidden; - vertical-align: top; - background: white; -} - -.media-box { - background: black; - border: 1px solid rgb(107, 107, 107); - margin: 1px; -} - -.media-controls, .volume-control { - margin-top: 2px; - position: absolute; - margin-left: 5px; - z-index: 100; - opacity: 0; -} - -.media-controls .control, .volume-control .control { - width: 35px; - height: 35px; - background-position: center center; - background-repeat: no-repeat; - float: left; - background-color: rgba(255, 255, 255, 0.84); -} - -.media-controls .control:first-child { - border-bottom-left-radius: 5px; -} - -.volume-control .control:first-child { - border-top-left-radius: 5px; -} - -.media-controls .control:hover, .media-controls .selected, .volume-control .control:hover { - background-color: rgba(255, 255, 255, 0.74); -} - -.media-controls .control:active, .media-container .selected, .volume-control .control:active { - background-color: rgba(255, 255, 255, 0.44)!important; -} - -.mute-audio { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACsUlEQVRYR92Xu2siURTGp0hnJRgVGVNtEcHOiI2taWIa3Vgpgu4qiKBoCpOgxgdofD8QTFYUXMRSRLstt9xyy/0Tttxyi9kz17mXq7majFED+8EH+p2Zub+5j4NygiC8q/8PDQaDn9LHw6rf739Sq9UCthQfRk9PT2Rg7Ha7/U0q71erA2OXy+X9AgQ/B3KsgbFZADc3N25clyL5SiaTKnqgdW40Gs8A4vE4ARD9+Pj4XSq9Ts1m8xf9gE0uFosIYDwezyaTCXnjVqvVpq+T4oWur6/5UChEiuFweOkinL/GeAnoDD0ENJ1Of7ByTqFQ8HQB+/7+vi3WWbV1fnh4eAYgWsxEQb8gWSQS+YjCk5MTJkA2m5UNUK1WyR4olUq/cW6z2cJidn5+foSz09PTBYBer2cCpNNp2QC1Wm1pE9I1WIIz8BGAoe+xWEwYjUY8p9PpmAB3d3dbLwEWvOUHXHO73WdiZjAYrDiDE8JzWq2WCZBKpWQDwNstAXg8HgJgtVoRgN1uJwAul2v9DGwDsDoD0D8IALw5AnA6nQTg8vKS5zQazc72QKVSWQIIBAIEwGw2IwCHw0EALi4ueE6lUjEB8vn8m2fAYrEQgKurKwRgMpkIgN/v58UBmAC5XE42wOopgGeQGswOAlAqlQggGAwKnU6H546Pj5kA8DZvApjP56QPGI1G1Aeg65I+AHtv0QfWnQLo67IBYNkQQK/Xm9H5bDZDANBzCACs/wIApoIJgIogVm2dWa0Yms1X9CAQnUvRy6JvesmFQoEsgfhd+ohEXxeNRstS/DrRN29yt9td2oRY9DVer1fe7wEsn89npx/Ecr1e3wiQSCT+StH2ogdcdSaTYQLsXMPh8A8LgPWTbG+CM29cBZBKh9Xt7e0XOPfvM/hOxPrHekgzw8NZ4P4BtGizy4jmqy8AAAAASUVORK5CYII='); -} - -.unmute-audio { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACY0lEQVRYR9WXS2/aQBDHfa9POaDGhKTpgTNIfICohfI4wC0HDuWdOCWQBKy24hmUBqduAjgVhx4Q50oIPk0/TQ/urhlbNplFEcWu+pd+EjszO7OyZweZ0zTtn4Ia3QQ1uslWNJ1OVVmWtU6n8xpM7ikSiVQ8Ho9mAGbnlcvlDq2FXT1AvV7/jRWnQIgzGg2GC6yoFQjdvsJv3ipYwVUgfHuKRt4dYYVYwLbnKxaL7WCJsu8zvHzbF8ST0ye+dUDa56vdbqOJvLsCrw5HwtXFJepnAWl1kdkgEU5gaUpRlGPCjb4gwwNNdHjwir9XvgnV8wrqZ6EnJQoGgynDlkgkjsDMpVKpgGEPBAIZTpIkWwID+gS+yndC+ewD6mcBdWhe8wCUeDzuTSaTL6y2QqGQ4brdrmmw4vPu8cOHgXBRqaJ+FlBfV7lclrAYSj6fX76CRqOBBhz49vnv6qNQu7xC/Sz0pBaRofVjNUYUxZ/g5rher2dzGuzv+XgyeDbuAavWxjSbTZvTgB6ANmGlfI76WUBaU1gMBdwc12q10ADh5S5/15eFs1MR9bOAtLpI99t6oFarmb+j0eiyB1gHoE04uH/YuAnT6bTtFhSLRS9pStstIFcywxxE9Ak8jtSNB1E4HDYPUCqVzDlQrVbNORAKhTLMJ0B74G9vwWKxkAhPJuF8Pj8mLF9BNpvdIdiSfP74SbvudPnbmy/O/xes02w2E/r9PlqIBWzdrsjgKGHFMGCLM8IKrgKhzmkymfzCChtAmPNi3R5wuyNyp6PW4n6/3/0PE6rxeKwSYrD8z4R9MLqHxv0BTZnWtpv+sYEAAAAASUVORK5CYII='); -} - -.mute-video { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAABoElEQVRYR2NgGAWDNARSge4qJxL7UN0PfHx8O5iZmW8CDSYGd1HdAXJycns4ODjuAQ3Ghz8D5f8D8SKqO0BfXz+Ll5e3FmgwPnyelg7gADqAE2gBPryEZg4gMkgXUtsBTEAD2UjAi6EOAIUEsj5GZA8A0xOTpKQkNnOZ0T0qCRRIJAEfhTrgGJoeQTQHSAMdgM1cY3QH2AAFXpOAf0AdAKKR9WmCDO7q6hIPCgrSEhISShQREcFmbg26AxyhBoKyFiVYF2RwW1tbrr+//zEWFpZrQIzNvDaaOsDGxqZdWVn5GyMj408cHqKNA9jY2EqApWg4Dw/PZk5OTnwhSTMHnGZiYjoA9PVjAlFJGweA4hsY7MSkIdo4gIQEPOqAYRoCwBxATAIEqaFNCADLgcdAR9wFWvBhQLIhOzt7K7AgygE6Yi+B0KBNCAAttQA6gNfAwGASsCqmf0kIDHZwZZSTk1Po4OBwBlgw3SK2MiK1OsZVdcOqYwNgdRzOzc3dyM/PT1R1rAJ0eB8VMKhhAwfAaNAANkiwmeuNXh2P8kdmCAAAkSPyEJegDaEAAAAASUVORK5CYII='); -} - -.unmute-video { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACFUlEQVRYR2NgGIFgPtDPGQPlb5Dl/4H4PRBL4HNEKlCynEjsQ6RvYJZ/B6p3wKuHj49vBzMz802gImJwFxEOaID6HGS5B0H1cnJyezg4OO4BFeLDn6GGLiJgIGmWgwzT19fP4uXlrQUy8eHzRDigAKoGFO8RBH0OUwB0AAfQAZxAPj68hIADEpAsB7GpDhbicQCy5RXE2swEVMhGAl4MdQAoJJD1JSL5vAGYnpgkJSWxmcuM7jBJoABIM7H4KNSiY0h6+oDsH1DxBpAFQAdIAx2AzUxjdAfYAAVek4BhFoFokL6PQPwPZnlXV5d4UFCQlpCQUKKIiAg2c2vQHeCIFHSgVEsungMyuK2tLdff3/8YCwvLNSDGZlYbrRygCzLYxsamXVlZ+RsjI+NPHJ6hjQPY2NhKgKVoOA8Pz2ZOTk58oUgzB5xmYmI6APT1YwLRSBsHgOIbGOzEpB/aOICExDvqgGEaAsAcQEwCBKmhTQgAy4HHQEfcBVrwYUCyITs7eyuwIMoBOmIvgdCgTQgALbUAOoDXwMBgErAmpH9JCAx2cF2Qk5NT6ODgcAZYMN0itjKCVceglivI5aCqFdR+J6WKBqnVBDkAWB0bAKvjcG5u7kZ+fn6iqmMVoL4rUMt/A2lQiwfUwCAVgxo2cACMBg1ggwSbGd7o1fF0qOXEtd3RdVPIbxixloMCDpZViO84UBjcyNoBhLMZ3JbarLEAAAAASUVORK5CYII='); -} - -.record-audio { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACuUlEQVRYR72WTW8SURiFm9jquiGFhXahdWWl9bMWozQhIUaBahA/0spGKli1VC0EaqpSUIpWksoELcwaQrBCWLl073/xN4z3JXfIncuBIUZ8krOYM/e9z2SGCTOiaRqMGc1m81CtVsuUSqWMqqpTvO4L9KCS0o9qtXpgtVo1Ofx0T6AHlZReZDKZXSTX4/f7J/nSLqAHlRREOByeRlI5fHkX0INKCsLn891EQjnFYvEaHzEAPaikmCFL8/m86RD0oJKCmJubs8tiOewuKfF4fIaPGIAeVFIQTDDQIwiFQrf4iAHoQSWlH+y9V2RpIpHoP8SAHlRSEOwtOBOJRFRZricQCKjJZFItl8tn+YgB6EElBWGz2QZ6BMFgcDiPYNY+cwkJ5axGHs/zEQPQg0qKGbK0sPfZdAh6UElBeK7f8MlilHRqe5GPGIAeVFIQk0ePDfQbeLC0PJzfwMkTUwNdwNPVJ//mAjwez7K+Kfv//22fPj3QBWwmkovicaVSWfqrC0ilUpfFje7fvXdOPO6V798OFsTj9mYM6EElRUfcqNVqbd25Hej7PXDx/IVT0WdrTf34xfrzfb4V9qCSopNOp/dEQfbd+7H4Ruyn2Omh9QtXnWNypwM9qKSIiBsyeZ3d4olXyc3R2MsN9VFoRf2wk1O/Fr+MrjwMTYhr19eiab5FG+hBJUVEUZR5ceM3W69/8VMGxDXbb1PGTRjQg0qKjNPpHBcFlJ1sVivvlzR2Jww95dPH3XE+2gF6UElBsNfS9IPE6/UqhUJhOB8kRC6XO+5yua6wV7RL7na7Z/kyCPSgkmKGw+E4LMotFssRfqon0INKigz76Iyxr55OotFoQrwAFD7aAXpQSZFBArM0Go06H28DPaikyCCBWer1+g8+3gZ6UEmRQQKz8NEO0INKyjCAHlT+v2gjfwDNQh1izdJWJQAAAABJRU5ErkJggg=='); -} - -.record-video { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwAAADsABataJCQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACEElEQVRYR+2XvUscQRiHT89vSJEgWgSDBARTJIUELBQ8LZNaLCyCmCqICKZJ5T8QBSsr4UBE7QQFIW3wE2KKgEjiB1goCFEEEfxIzucnMzIst3vnMbjNLTzs7Ozs+/7mnXc+NpHJZBJxEqtzdfxeQOIRLzfiRQHFCLgRmCAPn2fJxVfUrfkkLAkvcbIEzQERb3lmvvgjTIB18hNnHVBmhDy6AAk5gn54CrEIkIgLGIVPPsMvW7mGIDjeh3EL8JqAhUSgKCCfCPwntCeQhm5ohw8wD+eg9/d2HpqEuQT8w/gmvAwsYPbxPYXfrgjfAjYw/ibEua2uMtP6rjMPFRA1DU8xWAslOQTodSVIbN4CtBCNQdRCtML7UiNgins23L1lOF8BWoo/Qq6leNrp+R830Zxyn9NmIR8B2oxSUG4+jNoL0rSpMRFo4L4bEDHLs8ZfVxLWowQUsh1/w2CT08NWysr4K5gDDY+9XlPYjhKgA8kz5wNb1IFEyl1+8KwEVIK+MxGw7bWVfwUbQdv7zxTO4NjHqfgJhsbhBmagMYtwW6XQKzLf4RqGfAjQtJNR5YvCPQkvQkS0UL9onGvI6nwIkK9q6IV9I0LHuUFoAw1bJ3yBZeNc58oUJH0JkAjNgB44AK33f2EHtmAPNOZaqlehCyr0kU8Bsqezo6bgCASn4S/qBqBePVfjUAFx/SHH/nd8C3srt2KeTS1mAAAAAElFTkSuQmCC'); -} - -.stop-recording-audio { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAADAUlEQVRYR7WWS08TURiGhxTULSGUhZKouBILXhGMFkNCjJaiwXoJlI1FKiqlSpteglpahSqSYJsq7awhTUUaVizd+xtcuDQmxkTdeRnP15xpzhzedhoiT/IkzDvnO+9kphNG0TQNakaxWLTk8/lENptNqKraxuOqwB4UktVYXV1ds1qtmiw/XRHYg0KyEolEYgGV6w4NDbXypVuAPSgkEePj4+2oVJYv3wLsQSGJcDqdl1GhbCaTucBHDMAeFJJmyKWLi4umQ7AHhSSiq6vLJhfLsruUDgaDHXzEAOxBIYlgBTU9Ao/Hc4WPGIA9KCSrwd77tFwaCoWqDzFgDwpJBHsLjnq9XlUu13W5XGo4HFZzudwxPmIA9qCQRLS0tNT0CEZHR3fmEXTaOk6jQtkJ751uPmIA9qCQNEMuTS29Mh2CPSgkEY6Ll5xyMTIemx3kIwZgDwpJROvefTX9BtzDIzvzGzh0sK2mC7g3cff/XIDD4RjRN2X//7/a2o/UdAGRUHhQPF5ZWRne1gXEYrEz4kY3r984Lh5X8t3btV7xuLQZA/agkNQRN9rY2Ji5dtVV9Xvg1ImTh333J4v68YMp/zLfCvegkNSJx+NLYsHc02cNwenAezHTpfW95+wNcqYDe1BIiogbsvICu8XN0XCkPvBwWr3tGVOfzyfVN5nX9WO3PM3i2qlJX5xvUQL2oJAUSafT3eLGj2cefeCnDIhrZp/EjJswYA8KSRm73d4oFpDzc3NabjmrsTthyMmXLxYa+WgZ2INCEsFeS9MPkoGBgXQqldqZDxIimUwe6OvrO8teUUNxNBrV+vv7O/kyCOxBIWlGT0/PLvECmpqadvNTFYE9KCRl2EdngH31lPX5fCHxAtxudygSiQT8fn/pPHt9A3y0DOxBISkjltXq+vp6gY+XgD0oJGVQgZmFQmGTj5eAPSgkZb7X1f0oLTfxo8XySZePloE9KCRF2NH+P4rymfnrt6L8/Kso39jfX/TSSvLxMrAHhdtWUfYwz5dFawxqyj+MRz2Y+XGHbwAAAABJRU5ErkJggg=='); -} - -.stop-recording-video { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwAAADsABataJCQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACAElEQVRYR+2XvUscQRiHT42aBCwU0SIoQRBioUUQLBROLWMtKSxEtBKRQGys/AsUrKwC14itoCDYip+gFoJIiAoWCoKKIIJfOZ+fzBzDcbv3weA2d/DA7M7uO8+887FzsWQyGYuSSBtXx1MCsXf8uRkvChQz4GZgjnn4JcNcbOHelk+CJuEDjazAtzSJdq5ZL/4IErCN7NNYHD4YkXcXkMgFDEM1RCIgiXuYhlGf6VesbEOQPt7nUQt4nYCFZKAokEsG/pPaa0hAP3TBICzCHag+FSffSZhN4IXge9CUtoHZyz4Kf10J3wI7BG8LaNze/miW9Vtn8hUIW4Y3BKyFkiwCqq4EyeYsoI1oBsI2og3qSyXwdrjKAHXut+V3rgLaikcg21Y8b3seIjDkZGcpFwF9jLqh3LwY9i1I8MxnMwQNARnQ+OtXBtthAoV8jlcJ2Oz0sMOVMMNjq1spHIUJ6EBS4wSzRR1IZO6yy7UmoCboD5MB+3xcEk4Gbe8nKNzCpY9TcRWBZuEZFuBrBnF7S6nvgDV4gl8+BLTsFFTz5RH+QGOAxHfuL5vGNWR1PgTU1icYgFMjoePcOHSChq0HJmHdNK5zZTeU+RKQhFbATzgD7fdX8A8O4QQ05tqqN6EXKvSSTwHF09mxAabgWPEdDiiPQb16rocDBaL6hxz5v+NXmoPQBeoNXQgAAAAASUVORK5CYII='); -} - -.stop { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAAEzUlEQVRYR8VXWUhtZRS+Hud5xAk9TsccUBHRFNFMQUUCLRUjwUBxDpQjCE744AReE3FMSQ3SNBNyfOmpxx6CiKCX6EKjdIsLNyoiClbr+9n78J999j57Sxfa8HHYe69/rW+v/1vrX+cBET34PyGCW7x82M6X4c8IZARpgGcBDD8GbE0vEdsCAQQNYxQxRhkfMh4x/mSAPfA34zHjY8Y8o4YRqZA1JGKFAAK/wNiy2Wx3YWFhlJycTFlZWZSbm0t5eXkuZGdnU2pqKkVHR5O/v/8Thegr/BujZM6DiDcCNraOZ7zh4+PzNZyWl5fT+Pg4r/GumZWVFWpqaqKkpCQQuWMfa0r2sHVulxEBBM9kPAwMDPyloKCAZmZmTANrie3u7lJtbS2Fh4dji64YFdot0SMA8djBOiQk5Pf6+nq6uLi4d3CZTE9PD8XExKgknpdJ6BGAcGaCg4N/RRrN0m31/fDwsNAG+z5nZDFElWgJoITa/fz8vsd+W3Vu1a6zs5M4q39xjFlGiB6BWH74EcSD/dNzPDk5Sefn56bk1tbWdG1KSkqIq+k7jvMiwyZnAMLrZNH91tbWpru4q6uLoqKiKD8/n05PT3Vtbm9vqbKyUlTA2NiYh83CwoLwwbH2oAWZAErkg4SEBDo5OfFYCGeKmkXjycnJocvLSze76+trKi4uJl9fX2ETFxdHi4uLHr6KioqIS/tntkmRCdg5NU+N9v7s7Ew0HDhWgcajbtPNzY1oTOzY9T4zM5MODg48CAwMDBBnGnavygRa8XBwcNBwf4+OjsjhcLiRQBCkNS0tzS14RkYG7ezs6PqCn4iICPh5SyawiDa7tbXlVWCHh4eUkpLiRiI0NNTtPj09nfb39736iY2NxZpPZALHkZGRlpoO0pqYmOgWVN0WnAV6addWVHx8PNZ/KxN4H+qEkKzUdW9vr7qPLiJYv7S0ZGm9QuAHmcB7yIBW2Xpk9vb2xKknCw4ZgPqrq6vvQ+AbmcBDlBmce8vA9va2OI7lauDu5rrnLko1NTWmJFCi7ONTmcBrQUFBNDIyYrgY3Q1fLgdHPxgaGiJFVOIdH8HU2Nho6AcljWyzLWrUNRE5uA8YpnBjY0OUmhy8sLDQFWR+fp7QxNT3KOnm5mZdEqOjo4SPZdvXZQKY7x6hhV5dXek2D7XcQLSsrMzDRksCQtM7E7CWffzE8RwyAcx9TjBDz9fTQUtLC6FXeBPa7OysyATO/76+Pg8/6+vr6na9qz0LcDpmML5Eqo+Pj3VJTExMmApseXmZjOyqqqqIhfojx2nQnoYggLG6KyAg4HFdXZ1pICv9Qrbp7+9XDzTMiBh2PQYSPItmvIn97ujoeGYkpqamSGk+n7H/Uny9EQG8eI7xDvpCa2vrfybhdDpF6+bG9QX7fZkBwYtLFqH6DL8QZB7jkGfDfyoqKggN6L4pR1uHcJUB5HP2h/8IwXIgIwIqCYhyjkVzh0bT0NBAm5ubpkTQaDD/2e12nBd/sA8MotXyl5tlQH2PyTWU8RLjmok8RRmi+7W3t9P09DStrq4KzM3NUXd3N5WWlorpl4WMRvMVY5iRyMD/RY/LWwZkY+gCFVLHeJvxBM0Ihw96vwo8Uw4oDJ1OJTC20/ByEbjv/j5L+38BGxuYOLu/9/8AAAAASUVORK5CYII='); -} - -.take-snapshot { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA8dJREFUWEftVktIW0EU1aq0BUGrYuL/WxF/UasmSm0SBbVqVCrGX0T8VFBpLSrBLxIjKkb8oAtR9xWhIAgtLXRfWorgqqtC/XTTLnTTRW2dnnnOG98zkdTfosULh7w3c+ee827u3BmXa/svbXp62rWrq+tmSkrKncbGxqTm5uZ7paWl3jExMa7M5fJtYWHBY3R09K7BYNCB6JFOp7PExsZu+vv7EwqFQjETGBioYO4Xs9XVVW98oSIxMVHZ3d1dAQJzWFjYEEjfpqam7iclJZGWlhbS09ND9Hq9IIDhPgtxdltfX88YGxurioqKmgsPD18D4UulUvkqOTn5q4SAJCQkkKmpKQJzoaivr+dzJSUlQxaLxYuFdG4TExO38aWtWVlZ70G4FRER8Q2kP2kwKYlIwEj4+OzsLIFYPhcSErKH91gW/tjm5+fd5ubmnthstscoliCkcZkuAJkA/H88CEVvby8nWVxclM2VlZUJc0tLSyQvL4+OHQK/GQ6AOEZ7bDU1NW7FxcV9mPwcHBxsQvHsNDU1cZKKigoZiThOIR2nwPrD6Ojo73jegPANfIAtLS3NaDabjZOTk36MUm61tbVuqF4qgAbYlRJQpKeny0hGRkbI+Pg4qaqqEt5BcoCC/IjnZZAtDgwMNMfFxXli+3larVYPRnO6SQVQYP+C94icVrM4LkVkZOQaauM5is4SFBTU2tfXl8HCnd3q6urcUDxcAAVNOxVAf3NzcwlqYwZF9BCFmI/9rNdoNMGoaOXKysotFub8JgpQqVT8ywMCAghSSNra2gh9Rpp/QNg+w94FoWTUR1ZdXS0UoVQAnHg2sPdJaGgof6cQ/U765ufn87nh4WG69WTrGAIZ9ZHRDKAGnjlwFGAymYTOhhbLx0QSCqkvtrBsrry8nM9JIBdQWVnpWlhYmIzKfYEtSCCGO2dnZxP832TEaiUdTzto8QnjDQ0NBE2KdHZ2cl8RarVamGtvbycatcZuHpALoIY0+6JLfUCRkczMTO6sQl+Pj48XRDyAmFNSelbYCzAajT4FBQXvHDhfBewFoNJR6MpfopNWq5X9lxeBTqtzLqCoqMgXR+eG6GQoNmCt44BnBWI7F4DBgBNOV4l/SEBOTg6y6Di1zoAbkl08hr8XIAbb+rJFtoGdrW2n2N3e4escxQSua8BeAA4jP2xDfo2+KqBNb6LH2N+McIdz7+/v16L3v3a08DxA297EDeuT+I7b0htc9XS4MbkzWrkNDg7eQEv2grPyMoBzxQe3aV/xHUe1F07VG4zu2mAuLn8AJ5n+SnkR0KgAAAAASUVORK5CYII='); -} - -.zoom-in { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAAe1JREFUWEftl8tqwkAUhn2DPoV3vEaNikENaHAruhLUbUC87FwIbly5cKGbgNBdu3GbF+kTTf2HOSVTx7SL0Aj1wE+mkzP/+RzN5DQSZjDGxCikkACi0SjLZrO+isfjvsj7/f4ln8+zTCajXE9CLeRLAJqmsWKxyIUxyft3qVTyBdjtdma5XGaFQkHygMgbSiQS/gAQimEOVxLMRboyDoeDqeu6tI7G5I8dGgwGagBKzOVyH4vFYrNarSRdt3gj0u/Ger3eLJdLaR28KpUK9x4OhyydTqsBCMJxnDcxHVgYhuH2+32+C6lU6u8BRqORC+/QAEzT5ACoEQpAq9VyqcZjAuC7wWOGx+hyuThiOrCYz+fv8IdisdgtQBjxBHgCPAEeCwAHBL2vT6dT4Cdhr9fjJyFO2uvrnleWAOgmII7HY+AAjUbDhTeUTCbVAATxP19GuIHtAcD5fA4coNls/twPAAA/xmtzGThAu93+3Q5AaKun0ymbzWZsMpnwMVSr1V5F+t0Yj8df+SR4UPG7ALT9SEAHa1kWfyS9PT7ui3Rl0P8F8KI1JJrDVQmAhSiGK4p7F5EAJtKVsd1uTW8+BA+vD8bKthxFq9Uq63a7/JOiGAlQUKfT8QVA1Ot13lXRmu+Ct23btwBhxAMAsMgnlwgSabRVBN4AAAAASUVORK5CYII='); -} - -.zoom-out { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAAglJREFUWEftV8lqAkEQzYd4EuK47ytueHA5OPgFjoIHEVzwYOIl4NWf8JKDl/xXPqPSr+nSUceZEYfEgA8Kpal686yqqWpf/gWCwSAlEgmKxWK02+3e1LEl4BsOh6W/OrofmqZRKpUiXdepXq9/qGNLpNNpgmWzWRoMBpo6vg+RSIS63a4krVQqtgKSySRlMhlvBdRqNcrn85K0XC7/vgCQ5nI5mVqnEsAX5YKAfr/vjQA0Hwjxy9wI4B7wTABn4BYB8C+VSu4FiDrrSB0eIuosDWR4nXAGUjcCuFnhz0IQZzbRyJev6Hg8lrUrFAqEpuNaMhEHu3kNO52O9OVYsyAYZoVyPwIC0OmNRkMGczbMRG4EcAO2Wq1DDMezRaPRSwGr1cq32WxoOp3SbDaztPl87jjdDMP4WiwWtFwuEfN9zgETz/pU7k888cQDYb1e+8SEMuwsFAoZyv0qxCS1jDVbr9e75JlMJofJd82wF5zuAzz97AwXHOV+BEaxlTOPT/5erVZtBZzHmj/ZLEex2ANyG55bPB4/IXCzjhGHfcCrGXFmzmKx6DjST4DUM5FbAfAX5fLmQoKa3ZIB+CEDYjE9BXgjQLy7khR1bbfbtgLQL7jYwH84HHojIBAIHDq72Ww6ZgB+EDAajbwR4Pf7pQCQbrfbd3VsCfwv5Gzt9/tXdfzAIKI/NHr5AU4kDfWD0WSsAAAAAElFTkSuQmCC'); -} - -.media-box video { - width: 100%; - vertical-align: top; - object-fit: fill; -} - -.media-box audio { - height: 5em; -} - -.volume-control .volume-slider, .media-controls .volume-slider { - width: auto; - background: rgba(255, 255, 255, 0.09)!important; - border: 1px solid white; - height: 33px; -} - -.volume-control .volume-slider input[type=range] , .media-controls .volume-slider input[type=range] { - margin-top: 9px; - height: 15px; - outline: none; -} - -input[type=range] { - -webkit-appearance: none; - -moz-appearance: none; - -o-appearance: none; - appearance: none; - background-color: rgb(83, 77, 77); - width: 200px; - height: 20px; -} - -input[type="range"]::-webkit-slider-thumb { - -webkit-appearance: none; - -moz-appearance: none; - -o-appearance: none; - appearance: none; - background-color: black; - opacity: 0.5; - width: 10px; - height: 26px; -} diff --git a/static/kevin-master/assets/css/getHTMLMediaElementFull.css b/static/kevin-master/assets/css/getHTMLMediaElementFull.css deleted file mode 100644 index 108668e..0000000 --- a/static/kevin-master/assets/css/getHTMLMediaElementFull.css +++ /dev/null @@ -1,160 +0,0 @@ -/* -Muaz Khan - www.MuazKhan.com -MIT License - www.WebRTC-Experiment.com/licence -Documentation - github.com/muaz-khan/WebRTC-Experiment/tree/master/getMediaElement -*/ - -.media-container, .media-container * { - margin: 0; - padding: 0; - -webkit-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; -} - -.media-container, .media-container * { - -moz-transition: all .5s ease-in-out; - -ms-transition: all .5s ease-in-out; - -o-transition: all .5s ease-in-out; - -webkit-transition: all .5s ease-in-out; - transition: all .5s ease-in-out; -} - -.media-container { - max-width: 100%; - max-height: 100%; - display: inline-block; - overflow: hidden; - vertical-align: top; - background: white; -} - -.media-box { - background: black; -} - -.media-controls, .volume-control { - margin-top: 2px; - position: absolute; - margin-left: 5px; - z-index: 100; - opacity: 0; -} - -.media-controls .control, .volume-control .control { - width: 35px; - height: 35px; - background-position: center center; - background-repeat: no-repeat; - float: left; - background-color: rgba(255, 255, 255, 0.84); -} - -.media-controls .control:first-child { - border-bottom-left-radius: 5px; -} - -.volume-control .control:first-child { - border-top-left-radius: 5px; -} - -.media-controls .control:hover, .media-controls .selected, .volume-control .control:hover { - background-color: rgba(255, 255, 255, 0.74); -} - -.media-controls .control:active, .media-container .selected, .volume-control .control:active { - background-color: rgba(255, 255, 255, 0.44)!important; -} - -.mute-audio { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACsUlEQVRYR92Xu2siURTGp0hnJRgVGVNtEcHOiI2taWIa3Vgpgu4qiKBoCpOgxgdofD8QTFYUXMRSRLstt9xyy/0Tttxyi9kz17mXq7majFED+8EH+p2Zub+5j4NygiC8q/8PDQaDn9LHw6rf739Sq9UCthQfRk9PT2Rg7Ha7/U0q71erA2OXy+X9AgQ/B3KsgbFZADc3N25clyL5SiaTKnqgdW40Gs8A4vE4ARD9+Pj4XSq9Ts1m8xf9gE0uFosIYDwezyaTCXnjVqvVpq+T4oWur6/5UChEiuFweOkinL/GeAnoDD0ENJ1Of7ByTqFQ8HQB+/7+vi3WWbV1fnh4eAYgWsxEQb8gWSQS+YjCk5MTJkA2m5UNUK1WyR4olUq/cW6z2cJidn5+foSz09PTBYBer2cCpNNp2QC1Wm1pE9I1WIIz8BGAoe+xWEwYjUY8p9PpmAB3d3dbLwEWvOUHXHO73WdiZjAYrDiDE8JzWq2WCZBKpWQDwNstAXg8HgJgtVoRgN1uJwAul2v9DGwDsDoD0D8IALw5AnA6nQTg8vKS5zQazc72QKVSWQIIBAIEwGw2IwCHw0EALi4ueE6lUjEB8vn8m2fAYrEQgKurKwRgMpkIgN/v58UBmAC5XE42wOopgGeQGswOAlAqlQggGAwKnU6H546Pj5kA8DZvApjP56QPGI1G1Aeg65I+AHtv0QfWnQLo67IBYNkQQK/Xm9H5bDZDANBzCACs/wIApoIJgIogVm2dWa0Yms1X9CAQnUvRy6JvesmFQoEsgfhd+ohEXxeNRstS/DrRN29yt9td2oRY9DVer1fe7wEsn89npx/Ecr1e3wiQSCT+StH2ogdcdSaTYQLsXMPh8A8LgPWTbG+CM29cBZBKh9Xt7e0XOPfvM/hOxPrHekgzw8NZ4P4BtGizy4jmqy8AAAAASUVORK5CYII='); -} - -.unmute-audio { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACY0lEQVRYR9WXS2/aQBDHfa9POaDGhKTpgTNIfICohfI4wC0HDuWdOCWQBKy24hmUBqduAjgVhx4Q50oIPk0/TQ/urhlbNplFEcWu+pd+EjszO7OyZweZ0zTtn4Ia3QQ1uslWNJ1OVVmWtU6n8xpM7ikSiVQ8Ho9mAGbnlcvlDq2FXT1AvV7/jRWnQIgzGg2GC6yoFQjdvsJv3ipYwVUgfHuKRt4dYYVYwLbnKxaL7WCJsu8zvHzbF8ST0ye+dUDa56vdbqOJvLsCrw5HwtXFJepnAWl1kdkgEU5gaUpRlGPCjb4gwwNNdHjwir9XvgnV8wrqZ6EnJQoGgynDlkgkjsDMpVKpgGEPBAIZTpIkWwID+gS+yndC+ewD6mcBdWhe8wCUeDzuTSaTL6y2QqGQ4brdrmmw4vPu8cOHgXBRqaJ+FlBfV7lclrAYSj6fX76CRqOBBhz49vnv6qNQu7xC/Sz0pBaRofVjNUYUxZ/g5rher2dzGuzv+XgyeDbuAavWxjSbTZvTgB6ANmGlfI76WUBaU1gMBdwc12q10ADh5S5/15eFs1MR9bOAtLpI99t6oFarmb+j0eiyB1gHoE04uH/YuAnT6bTtFhSLRS9pStstIFcywxxE9Ak8jtSNB1E4HDYPUCqVzDlQrVbNORAKhTLMJ0B74G9vwWKxkAhPJuF8Pj8mLF9BNpvdIdiSfP74SbvudPnbmy/O/xes02w2E/r9PlqIBWzdrsjgKGHFMGCLM8IKrgKhzmkymfzCChtAmPNi3R5wuyNyp6PW4n6/3/0PE6rxeKwSYrD8z4R9MLqHxv0BTZnWtpv+sYEAAAAASUVORK5CYII='); -} - -.mute-video { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAABoElEQVRYR2NgGAWDNARSge4qJxL7UN0PfHx8O5iZmW8CDSYGd1HdAXJycns4ODjuAQ3Ghz8D5f8D8SKqO0BfXz+Ll5e3FmgwPnyelg7gADqAE2gBPryEZg4gMkgXUtsBTEAD2UjAi6EOAIUEsj5GZA8A0xOTpKQkNnOZ0T0qCRRIJAEfhTrgGJoeQTQHSAMdgM1cY3QH2AAFXpOAf0AdAKKR9WmCDO7q6hIPCgrSEhISShQREcFmbg26AxyhBoKyFiVYF2RwW1tbrr+//zEWFpZrQIzNvDaaOsDGxqZdWVn5GyMj408cHqKNA9jY2EqApWg4Dw/PZk5OTnwhSTMHnGZiYjoA9PVjAlFJGweA4hsY7MSkIdo4gIQEPOqAYRoCwBxATAIEqaFNCADLgcdAR9wFWvBhQLIhOzt7K7AgygE6Yi+B0KBNCAAttQA6gNfAwGASsCqmf0kIDHZwZZSTk1Po4OBwBlgw3SK2MiK1OsZVdcOqYwNgdRzOzc3dyM/PT1R1rAJ0eB8VMKhhAwfAaNAANkiwmeuNXh2P8kdmCAAAkSPyEJegDaEAAAAASUVORK5CYII='); -} - -.unmute-video { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACFUlEQVRYR2NgGIFgPtDPGQPlb5Dl/4H4PRBL4HNEKlCynEjsQ6RvYJZ/B6p3wKuHj49vBzMz802gImJwFxEOaID6HGS5B0H1cnJyezg4OO4BFeLDn6GGLiJgIGmWgwzT19fP4uXlrQUy8eHzRDigAKoGFO8RBH0OUwB0AAfQAZxAPj68hIADEpAsB7GpDhbicQCy5RXE2swEVMhGAl4MdQAoJJD1JSL5vAGYnpgkJSWxmcuM7jBJoABIM7H4KNSiY0h6+oDsH1DxBpAFQAdIAx2AzUxjdAfYAAVek4BhFoFokL6PQPwPZnlXV5d4UFCQlpCQUKKIiAg2c2vQHeCIFHSgVEsungMyuK2tLdff3/8YCwvLNSDGZlYbrRygCzLYxsamXVlZ+RsjI+NPHJ6hjQPY2NhKgKVoOA8Pz2ZOTk58oUgzB5xmYmI6APT1YwLRSBsHgOIbGOzEpB/aOICExDvqgGEaAsAcQEwCBKmhTQgAy4HHQEfcBVrwYUCyITs7eyuwIMoBOmIvgdCgTQgALbUAOoDXwMBgErAmpH9JCAx2cF2Qk5NT6ODgcAZYMN0itjKCVceglivI5aCqFdR+J6WKBqnVBDkAWB0bAKvjcG5u7kZ+fn6iqmMVoL4rUMt/A2lQiwfUwCAVgxo2cACMBg1ggwSbGd7o1fF0qOXEtd3RdVPIbxixloMCDpZViO84UBjcyNoBhLMZ3JbarLEAAAAASUVORK5CYII='); -} - -.record-audio { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACuUlEQVRYR72WTW8SURiFm9jquiGFhXahdWWl9bMWozQhIUaBahA/0spGKli1VC0EaqpSUIpWksoELcwaQrBCWLl073/xN4z3JXfIncuBIUZ8krOYM/e9z2SGCTOiaRqMGc1m81CtVsuUSqWMqqpTvO4L9KCS0o9qtXpgtVo1Ofx0T6AHlZReZDKZXSTX4/f7J/nSLqAHlRREOByeRlI5fHkX0INKCsLn891EQjnFYvEaHzEAPaikmCFL8/m86RD0oJKCmJubs8tiOewuKfF4fIaPGIAeVFIQTDDQIwiFQrf4iAHoQSWlH+y9V2RpIpHoP8SAHlRSEOwtOBOJRFRZricQCKjJZFItl8tn+YgB6EElBWGz2QZ6BMFgcDiPYNY+cwkJ5axGHs/zEQPQg0qKGbK0sPfZdAh6UElBeK7f8MlilHRqe5GPGIAeVFIQk0ePDfQbeLC0PJzfwMkTUwNdwNPVJ//mAjwez7K+Kfv//22fPj3QBWwmkovicaVSWfqrC0ilUpfFje7fvXdOPO6V798OFsTj9mYM6EElRUfcqNVqbd25Hej7PXDx/IVT0WdrTf34xfrzfb4V9qCSopNOp/dEQfbd+7H4Ruyn2Omh9QtXnWNypwM9qKSIiBsyeZ3d4olXyc3R2MsN9VFoRf2wk1O/Fr+MrjwMTYhr19eiab5FG+hBJUVEUZR5ceM3W69/8VMGxDXbb1PGTRjQg0qKjNPpHBcFlJ1sVivvlzR2Jww95dPH3XE+2gF6UElBsNfS9IPE6/UqhUJhOB8kRC6XO+5yua6wV7RL7na7Z/kyCPSgkmKGw+E4LMotFssRfqon0INKigz76Iyxr55OotFoQrwAFD7aAXpQSZFBArM0Go06H28DPaikyCCBWer1+g8+3gZ6UEmRQQKz8NEO0INKyjCAHlT+v2gjfwDNQh1izdJWJQAAAABJRU5ErkJggg=='); -} - -.record-video { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwAAADsABataJCQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACEElEQVRYR+2XvUscQRiHT89vSJEgWgSDBARTJIUELBQ8LZNaLCyCmCqICKZJ5T8QBSsr4UBE7QQFIW3wE2KKgEjiB1goCFEEEfxIzucnMzIst3vnMbjNLTzs7Ozs+/7mnXc+NpHJZBJxEqtzdfxeQOIRLzfiRQHFCLgRmCAPn2fJxVfUrfkkLAkvcbIEzQERb3lmvvgjTIB18hNnHVBmhDy6AAk5gn54CrEIkIgLGIVPPsMvW7mGIDjeh3EL8JqAhUSgKCCfCPwntCeQhm5ohw8wD+eg9/d2HpqEuQT8w/gmvAwsYPbxPYXfrgjfAjYw/ibEua2uMtP6rjMPFRA1DU8xWAslOQTodSVIbN4CtBCNQdRCtML7UiNgins23L1lOF8BWoo/Qq6leNrp+R830Zxyn9NmIR8B2oxSUG4+jNoL0rSpMRFo4L4bEDHLs8ZfVxLWowQUsh1/w2CT08NWysr4K5gDDY+9XlPYjhKgA8kz5wNb1IFEyl1+8KwEVIK+MxGw7bWVfwUbQdv7zxTO4NjHqfgJhsbhBmagMYtwW6XQKzLf4RqGfAjQtJNR5YvCPQkvQkS0UL9onGvI6nwIkK9q6IV9I0LHuUFoAw1bJ3yBZeNc58oUJH0JkAjNgB44AK33f2EHtmAPNOZaqlehCyr0kU8Bsqezo6bgCASn4S/qBqBePVfjUAFx/SHH/nd8C3srt2KeTS1mAAAAAElFTkSuQmCC'); -} - -.stop-recording-audio { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAADAUlEQVRYR7WWS08TURiGhxTULSGUhZKouBILXhGMFkNCjJaiwXoJlI1FKiqlSpteglpahSqSYJsq7awhTUUaVizd+xtcuDQmxkTdeRnP15xpzhzedhoiT/IkzDvnO+9kphNG0TQNakaxWLTk8/lENptNqKraxuOqwB4UktVYXV1ds1qtmiw/XRHYg0KyEolEYgGV6w4NDbXypVuAPSgkEePj4+2oVJYv3wLsQSGJcDqdl1GhbCaTucBHDMAeFJJmyKWLi4umQ7AHhSSiq6vLJhfLsruUDgaDHXzEAOxBIYlgBTU9Ao/Hc4WPGIA9KCSrwd77tFwaCoWqDzFgDwpJBHsLjnq9XlUu13W5XGo4HFZzudwxPmIA9qCQRLS0tNT0CEZHR3fmEXTaOk6jQtkJ751uPmIA9qCQNEMuTS29Mh2CPSgkEY6Ll5xyMTIemx3kIwZgDwpJROvefTX9BtzDIzvzGzh0sK2mC7g3cff/XIDD4RjRN2X//7/a2o/UdAGRUHhQPF5ZWRne1gXEYrEz4kY3r984Lh5X8t3btV7xuLQZA/agkNQRN9rY2Ji5dtVV9Xvg1ImTh333J4v68YMp/zLfCvegkNSJx+NLYsHc02cNwenAezHTpfW95+wNcqYDe1BIiogbsvICu8XN0XCkPvBwWr3tGVOfzyfVN5nX9WO3PM3i2qlJX5xvUQL2oJAUSafT3eLGj2cefeCnDIhrZp/EjJswYA8KSRm73d4oFpDzc3NabjmrsTthyMmXLxYa+WgZ2INCEsFeS9MPkoGBgXQqldqZDxIimUwe6OvrO8teUUNxNBrV+vv7O/kyCOxBIWlGT0/PLvECmpqadvNTFYE9KCRl2EdngH31lPX5fCHxAtxudygSiQT8fn/pPHt9A3y0DOxBISkjltXq+vp6gY+XgD0oJGVQgZmFQmGTj5eAPSgkZb7X1f0oLTfxo8XySZePloE9KCRF2NH+P4rymfnrt6L8/Kso39jfX/TSSvLxMrAHhdtWUfYwz5dFawxqyj+MRz2Y+XGHbwAAAABJRU5ErkJggg=='); -} - -.stop-recording-video { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwAAADsABataJCQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAACAElEQVRYR+2XvUscQRiHT42aBCwU0SIoQRBioUUQLBROLWMtKSxEtBKRQGys/AsUrKwC14itoCDYip+gFoJIiAoWCoKKIIJfOZ+fzBzDcbv3weA2d/DA7M7uO8+887FzsWQyGYuSSBtXx1MCsXf8uRkvChQz4GZgjnn4JcNcbOHelk+CJuEDjazAtzSJdq5ZL/4IErCN7NNYHD4YkXcXkMgFDEM1RCIgiXuYhlGf6VesbEOQPt7nUQt4nYCFZKAokEsG/pPaa0hAP3TBICzCHag+FSffSZhN4IXge9CUtoHZyz4Kf10J3wI7BG8LaNze/miW9Vtn8hUIW4Y3BKyFkiwCqq4EyeYsoI1oBsI2og3qSyXwdrjKAHXut+V3rgLaikcg21Y8b3seIjDkZGcpFwF9jLqh3LwY9i1I8MxnMwQNARnQ+OtXBtthAoV8jlcJ2Oz0sMOVMMNjq1spHIUJ6EBS4wSzRR1IZO6yy7UmoCboD5MB+3xcEk4Gbe8nKNzCpY9TcRWBZuEZFuBrBnF7S6nvgDV4gl8+BLTsFFTz5RH+QGOAxHfuL5vGNWR1PgTU1icYgFMjoePcOHSChq0HJmHdNK5zZTeU+RKQhFbATzgD7fdX8A8O4QQ05tqqN6EXKvSSTwHF09mxAabgWPEdDiiPQb16rocDBaL6hxz5v+NXmoPQBeoNXQgAAAAASUVORK5CYII='); -} - -.stop { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTFH80I3AAAEzUlEQVRYR8VXWUhtZRS+Hud5xAk9TsccUBHRFNFMQUUCLRUjwUBxDpQjCE744AReE3FMSQ3SNBNyfOmpxx6CiKCX6EKjdIsLNyoiClbr+9n78J999j57Sxfa8HHYe69/rW+v/1vrX+cBET34PyGCW7x82M6X4c8IZARpgGcBDD8GbE0vEdsCAQQNYxQxRhkfMh4x/mSAPfA34zHjY8Y8o4YRqZA1JGKFAAK/wNiy2Wx3YWFhlJycTFlZWZSbm0t5eXkuZGdnU2pqKkVHR5O/v/8Thegr/BujZM6DiDcCNraOZ7zh4+PzNZyWl5fT+Pg4r/GumZWVFWpqaqKkpCQQuWMfa0r2sHVulxEBBM9kPAwMDPyloKCAZmZmTANrie3u7lJtbS2Fh4dji64YFdot0SMA8djBOiQk5Pf6+nq6uLi4d3CZTE9PD8XExKgknpdJ6BGAcGaCg4N/RRrN0m31/fDwsNAG+z5nZDFElWgJoITa/fz8vsd+W3Vu1a6zs5M4q39xjFlGiB6BWH74EcSD/dNzPDk5Sefn56bk1tbWdG1KSkqIq+k7jvMiwyZnAMLrZNH91tbWpru4q6uLoqKiKD8/n05PT3Vtbm9vqbKyUlTA2NiYh83CwoLwwbH2oAWZAErkg4SEBDo5OfFYCGeKmkXjycnJocvLSze76+trKi4uJl9fX2ETFxdHi4uLHr6KioqIS/tntkmRCdg5NU+N9v7s7Ew0HDhWgcajbtPNzY1oTOzY9T4zM5MODg48CAwMDBBnGnavygRa8XBwcNBwf4+OjsjhcLiRQBCkNS0tzS14RkYG7ezs6PqCn4iICPh5SyawiDa7tbXlVWCHh4eUkpLiRiI0NNTtPj09nfb39736iY2NxZpPZALHkZGRlpoO0pqYmOgWVN0WnAV6addWVHx8PNZ/KxN4H+qEkKzUdW9vr7qPLiJYv7S0ZGm9QuAHmcB7yIBW2Xpk9vb2xKknCw4ZgPqrq6vvQ+AbmcBDlBmce8vA9va2OI7lauDu5rrnLko1NTWmJFCi7ONTmcBrQUFBNDIyYrgY3Q1fLgdHPxgaGiJFVOIdH8HU2Nho6AcljWyzLWrUNRE5uA8YpnBjY0OUmhy8sLDQFWR+fp7QxNT3KOnm5mZdEqOjo4SPZdvXZQKY7x6hhV5dXek2D7XcQLSsrMzDRksCQtM7E7CWffzE8RwyAcx9TjBDz9fTQUtLC6FXeBPa7OysyATO/76+Pg8/6+vr6na9qz0LcDpmML5Eqo+Pj3VJTExMmApseXmZjOyqqqqIhfojx2nQnoYggLG6KyAg4HFdXZ1pICv9Qrbp7+9XDzTMiBh2PQYSPItmvIn97ujoeGYkpqamSGk+n7H/Uny9EQG8eI7xDvpCa2vrfybhdDpF6+bG9QX7fZkBwYtLFqH6DL8QZB7jkGfDfyoqKggN6L4pR1uHcJUB5HP2h/8IwXIgIwIqCYhyjkVzh0bT0NBAm5ubpkTQaDD/2e12nBd/sA8MotXyl5tlQH2PyTWU8RLjmok8RRmi+7W3t9P09DStrq4KzM3NUXd3N5WWlorpl4WMRvMVY5iRyMD/RY/LWwZkY+gCFVLHeJvxBM0Ihw96vwo8Uw4oDJ1OJTC20/ByEbjv/j5L+38BGxuYOLu/9/8AAAAASUVORK5CYII='); -} - -.take-snapshot { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAA8dJREFUWEftVktIW0EU1aq0BUGrYuL/WxF/UasmSm0SBbVqVCrGX0T8VFBpLSrBLxIjKkb8oAtR9xWhIAgtLXRfWorgqqtC/XTTLnTTRW2dnnnOG98zkdTfosULh7w3c+ee827u3BmXa/svbXp62rWrq+tmSkrKncbGxqTm5uZ7paWl3jExMa7M5fJtYWHBY3R09K7BYNCB6JFOp7PExsZu+vv7EwqFQjETGBioYO4Xs9XVVW98oSIxMVHZ3d1dAQJzWFjYEEjfpqam7iclJZGWlhbS09ND9Hq9IIDhPgtxdltfX88YGxurioqKmgsPD18D4UulUvkqOTn5q4SAJCQkkKmpKQJzoaivr+dzJSUlQxaLxYuFdG4TExO38aWtWVlZ70G4FRER8Q2kP2kwKYlIwEj4+OzsLIFYPhcSErKH91gW/tjm5+fd5ubmnthstscoliCkcZkuAJkA/H88CEVvby8nWVxclM2VlZUJc0tLSyQvL4+OHQK/GQ6AOEZ7bDU1NW7FxcV9mPwcHBxsQvHsNDU1cZKKigoZiThOIR2nwPrD6Ojo73jegPANfIAtLS3NaDabjZOTk36MUm61tbVuqF4qgAbYlRJQpKeny0hGRkbI+Pg4qaqqEt5BcoCC/IjnZZAtDgwMNMfFxXli+3larVYPRnO6SQVQYP+C94icVrM4LkVkZOQaauM5is4SFBTU2tfXl8HCnd3q6urcUDxcAAVNOxVAf3NzcwlqYwZF9BCFmI/9rNdoNMGoaOXKysotFub8JgpQqVT8ywMCAghSSNra2gh9Rpp/QNg+w94FoWTUR1ZdXS0UoVQAnHg2sPdJaGgof6cQ/U765ufn87nh4WG69WTrGAIZ9ZHRDKAGnjlwFGAymYTOhhbLx0QSCqkvtrBsrry8nM9JIBdQWVnpWlhYmIzKfYEtSCCGO2dnZxP832TEaiUdTzto8QnjDQ0NBE2KdHZ2cl8RarVamGtvbycatcZuHpALoIY0+6JLfUCRkczMTO6sQl+Pj48XRDyAmFNSelbYCzAajT4FBQXvHDhfBewFoNJR6MpfopNWq5X9lxeBTqtzLqCoqMgXR+eG6GQoNmCt44BnBWI7F4DBgBNOV4l/SEBOTg6y6Di1zoAbkl08hr8XIAbb+rJFtoGdrW2n2N3e4escxQSua8BeAA4jP2xDfo2+KqBNb6LH2N+McIdz7+/v16L3v3a08DxA297EDeuT+I7b0htc9XS4MbkzWrkNDg7eQEv2grPyMoBzxQe3aV/xHUe1F07VG4zu2mAuLn8AJ5n+SnkR0KgAAAAASUVORK5CYII='); -} - -.zoom-in { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAAe1JREFUWEftl8tqwkAUhn2DPoV3vEaNikENaHAruhLUbUC87FwIbly5cKGbgNBdu3GbF+kTTf2HOSVTx7SL0Aj1wE+mkzP/+RzN5DQSZjDGxCikkACi0SjLZrO+isfjvsj7/f4ln8+zTCajXE9CLeRLAJqmsWKxyIUxyft3qVTyBdjtdma5XGaFQkHygMgbSiQS/gAQimEOVxLMRboyDoeDqeu6tI7G5I8dGgwGagBKzOVyH4vFYrNarSRdt3gj0u/Ger3eLJdLaR28KpUK9x4OhyydTqsBCMJxnDcxHVgYhuH2+32+C6lU6u8BRqORC+/QAEzT5ACoEQpAq9VyqcZjAuC7wWOGx+hyuThiOrCYz+fv8IdisdgtQBjxBHgCPAEeCwAHBL2vT6dT4Cdhr9fjJyFO2uvrnleWAOgmII7HY+AAjUbDhTeUTCbVAATxP19GuIHtAcD5fA4coNls/twPAAA/xmtzGThAu93+3Q5AaKun0ymbzWZsMpnwMVSr1V5F+t0Yj8df+SR4UPG7ALT9SEAHa1kWfyS9PT7ui3Rl0P8F8KI1JJrDVQmAhSiGK4p7F5EAJtKVsd1uTW8+BA+vD8bKthxFq9Uq63a7/JOiGAlQUKfT8QVA1Ot13lXRmu+Ct23btwBhxAMAsMgnlwgSabRVBN4AAAAASUVORK5CYII='); -} - -.zoom-out { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAAglJREFUWEftV8lqAkEQzYd4EuK47ytueHA5OPgFjoIHEVzwYOIl4NWf8JKDl/xXPqPSr+nSUceZEYfEgA8Kpal686yqqWpf/gWCwSAlEgmKxWK02+3e1LEl4BsOh6W/OrofmqZRKpUiXdepXq9/qGNLpNNpgmWzWRoMBpo6vg+RSIS63a4krVQqtgKSySRlMhlvBdRqNcrn85K0XC7/vgCQ5nI5mVqnEsAX5YKAfr/vjQA0Hwjxy9wI4B7wTABn4BYB8C+VSu4FiDrrSB0eIuosDWR4nXAGUjcCuFnhz0IQZzbRyJev6Hg8lrUrFAqEpuNaMhEHu3kNO52O9OVYsyAYZoVyPwIC0OmNRkMGczbMRG4EcAO2Wq1DDMezRaPRSwGr1cq32WxoOp3SbDaztPl87jjdDMP4WiwWtFwuEfN9zgETz/pU7k888cQDYb1e+8SEMuwsFAoZyv0qxCS1jDVbr9e75JlMJofJd82wF5zuAzz97AwXHOV+BEaxlTOPT/5erVZtBZzHmj/ZLEex2ANyG55bPB4/IXCzjhGHfcCrGXFmzmKx6DjST4DUM5FbAfAX5fLmQoKa3ZIB+CEDYjE9BXgjQLy7khR1bbfbtgLQL7jYwH84HHojIBAIHDq72Ww6ZgB+EDAajbwR4Pf7pQCQbrfbd3VsCfwv5Gzt9/tXdfzAIKI/NHr5AU4kDfWD0WSsAAAAAElFTkSuQmCC'); -} - -.media-box video { - width: 100%; - vertical-align: top; - object-fit: fill; -} - -.media-box audio { - height: 5em; -} - -.volume-control .volume-slider, .media-controls .volume-slider { - width: auto; - background: rgba(255, 255, 255, 0.09)!important; - border: 1px solid white; - height: 33px; -} - -.volume-control .volume-slider input[type=range] , .media-controls .volume-slider input[type=range] { - margin-top: 9px; - height: 15px; - outline: none; -} - -input[type=range] { - -webkit-appearance: none; - -moz-appearance: none; - -o-appearance: none; - appearance: none; - background-color: rgb(83, 77, 77); - width: 200px; - height: 20px; -} - -input[type="range"]::-webkit-slider-thumb { - -webkit-appearance: none; - -moz-appearance: none; - -o-appearance: none; - appearance: none; - background-color: black; - opacity: 0.5; - width: 10px; - height: 26px; -} diff --git a/static/kevin-master/assets/css/stylesheet.css b/static/kevin-master/assets/css/stylesheet.css deleted file mode 100644 index 3b2f07b..0000000 --- a/static/kevin-master/assets/css/stylesheet.css +++ /dev/null @@ -1,248 +0,0 @@ -/* Fonts Copyright (C) 2011-2017 Hoefler & Co.*/ -@font-face { - font-family: "Whitney SSm A"; - src: url(data:application/x-font-woff2;base64,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); - font-weight: 400; - font-style: normal; -} - -html, body, section, ul, li, nav, a, h1, h2 { - padding: 0; - margin: 0; - outline: none; - text-shadow: none; - box-shadow: none; - border-radius: 0; - text-decoration: none; -} - -body { - font-family: "Whitney SSm A", "Whitney SSm B", "Lato", "Lucida Grande", "Lucida Sans Unicode", Tahoma, Sans-Serif; - font-size: 17px; - line-height: 1.5em; -} - -::-webkit-input-placeholder { /* Chrome/Opera/Safari */ - color: inherit; -} -::-moz-placeholder { /* Firefox 19+ */ - color: inherit; -} -:-ms-input-placeholder { /* IE 10+ */ - color: inherit; -} -:-moz-placeholder { /* Firefox 18- */ - color: inherit; -} - -h1 { - font-size: 25px; - text-align: center; - color: #38a8e0; - padding: 20px; -} - -h1 p { - font-size: 17px; - font-weight: normal; -} - -h2 { - font-size: 22px; -} - -.logo { - float: left; - margin-right: 20px; - display: block; -} - -.logo img { - height: 55px; -} - -nav { - margin-top: 17px; - text-align: right; -} - -header { - height: 50px; -} - -section, header { - border-bottom: 1px solid #95d4e7; -} - -section, header, footer { - padding: 5px 20px; -} - -ul li, nav li { - list-style: none; - display: inline-block; -} - -a { - margin: 0 10px; -} - -a, h2 { - color: #EC008C; -} - -a:hover { - color: #671345; -} - -.highlighted { - color: #EC008C; -} - -.make-center { - text-align: center; -} - -button { - -moz-box-shadow:inset 0px 39px 0px -24px #e67a73; - -webkit-box-shadow:inset 0px 39px 0px -24px #e67a73; - box-shadow:inset 0px 39px 0px -24px #e67a73; - background-color:#e4685d; - -moz-border-radius:4px; - -webkit-border-radius:4px; - border-radius:4px; - border:1px solid #ffffff; - display:inline-block; - cursor:pointer; - color:#ffffff; - padding:6px 15px; - text-decoration:none; - text-shadow:0px 1px 0px #b23e35; -} -button:hover { - background-color:#eb675e; -} -button:active { - position:relative; - top:1px; -} - -button[disabled], input[disabled] { - background: transparent!important; - box-shadow: none!important; - text-shadow: none!important; - color: #dcd7d7!important; - border: 1px solid #dcd7d7!important; - cursor: not-allowed!important; -} - -.menu-explorer { - color: transparent!important; - display: block; - display: none; - text-align: center; - position: absolute; - margin-right: 12px; - margin-top: 12px; - right: 0; -} - -.menu-explorer img { - vertical-align: middle; - width: 25px; -} - -@media all and (max-width: 900px) { - tr, td, .logo { - display: block; - } - - .logo { - text-align: center; - } - - nav li { - border: 0; - display: block; - text-align: right; - } - - nav li img { - float: right; - margin-right: 0; - margin-left: 12px; - } - - nav { - height: auto; - margin: 0; - display: none; - - position: fixed; - left: auto; - right: 0; - top: 0; - z-index: 9; - background: white; - width: auto; - height: 100%; - box-shadow: rgb(84, 145, 208) 0px 0 0px 2px; - } - - nav li { - border-bottom: 1px solid rgb(84, 145, 208); - text-align: center; - line-height: 2; - } - - nav li a { - padding-right: 3px; - } - - .menu-explorer { - display: block; - } - - .header { - position: static; - border: 0; - box-shadow: rgb(84, 145, 208) 0px 2px 0px 0px; - } - - .no-mobile { - display: none!important; - opacity: 0!important; - visibility: hidden!important; - z-index: -1!important; - width: 0!important; - height: 0!important; - overflow: hidden!important; - border: 0!important; - box-shadow: none!important; - } - - nav a, .menu-explorer { - font-size: 15px; - } -} - -@media all and (max-width: 620px) { - button, input { - display: block; - margin: 5px 10px; - } -} - -@media all and (max-width: 500px) { - h1 { - font-size: 18px; - } -} - -@media screen and (orientation:portrait) and (min-width: 350px) { - .header { - position: fixed!important; - border-bottom: 1px solid white!important; - box-shadow: rgb(84, 145, 208) 0px 1px 0px 0px!important; - } -} diff --git a/static/kevin-master/assets/fonts/FontAwesome.otf b/static/kevin-master/assets/fonts/FontAwesome.otf deleted file mode 100644 index 401ec0f36e4f73b8efa40bd6f604fe80d286db70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134808 zcmbTed0Z368#p`*x!BDCB%zS7iCT}g-at@1S{090>rJgUas+}vf=M{#z9E1d;RZp( zTk)*csx3XW+FN?rySCrfT6=x96PQ4M&nDV$`+NU*-_Pr^*_qjA=9!u2oM&cT84zXq}B5k!$BD4Vu&?bM+1pscNs?|}TanB=Gw z>T*v6IVvN? z<7If|L2rZi0%KIN{&DZI4@2I75Kod~vRI*C@Lrk$zoRI`^F$Oyi5HuU*7@mriz!*p z<-;A`Xy{#P=sl02_dFc|Je%0lCgxR=#y~GBP(blD-RPP8(7$Z9zY}6%V9+^PV9-}S zeJrBBmiT&{^*|I7AO`uM0Hi@<&?Gbsg`hd;akL06LCaAD+KeKR9vM(F+JQ1r4k|#^ zs1dcJZgd2lM9-ss^cuQ?K0u$NAJA{;Pc%#+ibshkZ%Rq2DJ}Id^(YlWJx)DIMNpAc z5|u*jq{^s9s)OpGj#8(nv(yXJOVn%B73xFkTk0q37wW$hrbawy4?hpJ#{`cMkGUR8 zJl1$@@QCv;d1QK&dhGIO_1Npt2c7Ttc++FR<7`t1o^76cJ&$`{^t|GE>K)k3GNh{I92zC*(@N#&?yeeKjuZ6dlx1V>2carxUub+37cb#{GcawLQFW@Wryy^!4biE!Rvyz z1Ro2&68s>zBluk~A`}Rv!iR*c@Dbr8VURFXxJ0-?Xb@%!i-a}8CSkYmfbf{`wD2Y2 zHQ|TCuZ2Gd?+E`8Iz?iUS~N~HT@)&sEqYwENVHt^j3`EwC^CsML}j8zQLCs&bWn6u zbWZe&=$hzV(PyIXMgJ8IdI`P!y)<59y>wnnyw-WednI|Lc%^yedzE{&dmZ&U;dS2Y zC9k)=KJoh6>nE?fUc)p+Gqf+QqQ}#Z(Ua+EbTA!ChtYHBC+G$AVtOSVNypHsw2f|| z57Ecylk_F}HTnwuKK%v#9sN5!#306#5i&|f&5UPs%mQXL6UD?a$&8iBWb&C3W*5`Q zv@>1IKIR~ElsV0uWu9j)F|RV0nGcyynO~Sc#7N8&dy5s~(c*F9N5zxH)5SV*n0T&u zzW7P;)8bX)2=RLHX7M(0tk@t<5~ql*;tX-NIA2^QwuyI%8^q1xc5#<@ulRuYi1@hp zwD_F(g7_uz8{)Uc?~6Yae=7b${Ehf~@h$Nk@$ce$;z9ASgp!CPGKrr=CDBO6NhV2x zB{L+mB~M7gB}*jBBr7HBBpW4LCDD>N$##iRVwR*yvLv~ZLP@ElQc@#nl(b4ZC3__M zB!?u&Bqt@$NzO|yNnVz`E_qY(w&Z=uhmubvUr4@@d@s2rxg+^qa!)cS8J1E~zSK)9 zk@`rL(f}zd9W5OveN;MGI$f%hhDqm2=Svq!mr7Si*GSh%H%hlkqor}u?NX!EEKQSU zNpq!z(o$)qv_@JlZIZT0cT0Pu`=y7aebQ6Xv(gu&FG^pLz9GFTeMkC%^dspF>6g-P zrT>xsB>hGDhxAYBkaR@mArr`GnN;R0^OLD$8rc}xc-dpJDY770sBD((aoGadV%bvJ z3fUUjI@w0qR#~(xPPScUl$m8|vMgDytWZ`etCZEq>Sax`HrZ}jk8Ho}u&ht^oa~~k zU-p{pitJt4N3t8TFJ<4#{v-QI_KWNf*`Kl@*@(A?x4@hBmU{bo`+2LpHQr;q$9q5K zJ;gi7JIs5Y_Y&_F-p_b%_Kxx1?!Ci1!#mHr)Vtc-?%nR)<9*2cg!eh`7rkHie#`s1 z_YLoFynpom)%#EHVIQ6kPx>cKQ_h zRQS~TH2duK+2?cA=d{lYJ}>)R@p;$hBcCsPzVo^5^M}u%FY*=oN_~BO1AIsMPVk-L ztMi@Xo9LSspA==WB&S*uVl4V7bBsZ6Ow%WsQuJUl%vOsv%FNx7`s5UAW~xPRj!Q^N zwi+UnqRjDntAR@;SgfW*vp(6Brq42&k|Pt0u7@erYKn`qB*Yt|l44BpR&$iaU;sM- z4d^4IlC0K*WWCuG6&q_xHzvW8D|?VmP2oxsjM1iyl%%N4$e09kOp@NLPtiwN&H6aA z-eTa;a#fN{F^O?WQSqF~OEH*?dP|xqDK%Li3CQoKxK{5cQ&V=BV@$F7Xc#FxtWojs zXNfkM61h7$%AA;DPB2qoM4Ov7+011Nf%sPRE(aRk;t@!SiLC) z(4}(2HO9bnN2Nq^J%e^*xrU$#s~$RKF+`d5K(ClYZt5*oeM)3>R7_%elsPso3MS`4 z=E0Mj$&@IdAbalxm6OD4U#Myq|K@ z-&JTzbUk*Y0-^+{&H*ME<4mrECC04R8!ZMC(2?u*ebPc5H;tpCU=m%_jxw7~>F%j@ zrQFl$N~Wf`Uvh+X%>u^=z!V8t`pCG{q@?>vOLA0Fl0G9QDJnVY@1Ddb#95Q{QE_nz z(2-1F6PRS~8IxqP=wV8rtMRU$!gLw+F;Pi+V=Q2cGRB&cV@%1(K)mFrc%%OB*-1@# zFgILx%zA6OUJtY}rKE5z#efjS0T1cTZVdO+9M=22Ow*gK34rH*)?hLxWC7zvB>|5{ z#sH12*7O8mIkT%*9G`Hk>dLs;G!k%{O^NzUkTT2tE?TUH)Z}POWNL~_)Z7`ae_Ylj z(7?KJE)jQ&Hb*3o*rWtwBJh@*Xep@{0}KNAUT+2=21z$2x`_$+QVf~#34kTq)f2bC zy5teaYIF&ri#6S?KM*c=&h^$+?f%Ff49eYLDyV~)MBo$Pac=%%%@&IxHZ~dv3zK7v z)+Z&!aB~(1vu4#BfHILT-f*QjQFJ9zQ(O;j%x->){2xR8tH4$FUnM|M7YE+2!8H+| zWQx|On?W8yq%DaSP+~AC(dGnwTuhWj&oP~wvyCRJen%=uy)iDqm|)FJ(pxO9f_SqD zCJAN`7%eq6S|0`S9FuB|F{OY|rnuN6A;l5}g3RfWXkb3jsU|ZpPHK`V$znApB!a$$ zM&b>rphC>h6sWK0Bt38=XbW>{Od`+XNK_^W~`uM1%SkU{?CLrT| z*5rU5a4DAt4QsU|SYaF~z_MnbZd3}WFFoi`11Pc7q-YRfpk=(?HFGY!oON*L+>FN= zrpV-2sAV;nKn7Cumed63yhYD(iyLEHoL(PiGR3;=k4uAd$Ws$QzZ>JBRtl%)qmlt( zlrcu1tdC7hu*PwHfTp+Wtez}SISAlE3{#BBi@~MV=s9VU~oa*A29jU;4uHLv)t`=cj zMkBD=0}Gn;Kx|?3|5QxeB>h7H-63>M1rORUPw)_81!IgVnE33zbVFL~|4d{TmH>B{(ST?=mZBvFKDQ zs6e71u%5ZNZgM&lh)@6d3N{!aL268{00aWAef0lv1i^_}z`hyP% zyasc1UyCFdAscUwN{$1kE)jexW8Cx^)1woB65NEk+OUEqN;12DT?I)dX#Iaq$3L>1 z0{Z(M#~c61xyK|v7Q!EnR;&(y&k3ik}S zXTlwpYD`!>eg3q#=~2@ogTnwcEEv)N8U~)gNue|5Zu9Vhq$UQ zm=4KMxM#pU6K(*VJ`HXtpAMkY0d#r@+&Z`cZaTnC2e|2O?BUZ~t%L(~5I_e3bPzxX z0dx>R2LW^tKnFpq!O&_jzy$+bFu(=7JFw8*!oumUh8A)!p+c~``Gq=nX{h@Ft%X3% z5Wo-u7(xI;2v-IbLfjP=0TLY`(Lp;p0M!Ag4nTDPssm6Rfa;(#p#T>OaG?Mf3UHzB z&MfAN0W@?*-1IoE7(i!0*$e=k0iZLWYz8zr1Dc!>3NSJ7geGSI+)RL*32;EO5TIEI z&@2RK76LR20h)yX%|d1ZTo}NG0UQu4Bn;rfLgIqB84nAECszh=Krr33X>d=6I|%Mz zxI^I9!5s?s47g{)9hRo&)&V*omkuiHfLuBtmk!9K19ItrTsk0^ZaOp=1PulO91uze zgwg?_bU-K_5K0Gx(gC4#Kqws$N(Y3}0ikq2C>;pDE*Ri~0WKKefIhllfC~Y*5P%B- zI3SA-$f5(X=zuIbAd3#jq6+~y9l!xibU+gw&_o9`(E&|#KocF%L`hz;)DWmLP3;5fv}-Kn^2%lD9|PpXcG#w z2?g4O0&PNpHlaY9P@qjH&?XdU6AH8m1=@rHZ9;)Ip+K8ZpiO9yi^YTHyZbQTB``tr zgIpb(AMAd(*f?muyEF4$ViPofhWp)2_v3ym^WC`x?nk)$vC#ck*h}=pfDBO)G+>I#QjVRoW zDBO)G+>I#QjVRoWDBO)G+>I#QjVRoWDBO)G+>OYsYl7UmCTO7>(Ly((g>FP{jT5xc zjcB18(Ly((g>FO(-G~;t5iN8hTIfc!(2Z!3d+HXsN3_U|XptMyA~&K%?h!3=BU%JB z4s&B!kI%_aQR>IrR=x#+$+m z;mzdD<1ON?aK+rWLd3m{XXDlKF7tlj5kBJc_#(bPKaf9_AIz`iH}m)K`}oiCFYx>M zm-%n=-{;@vV?KeH`Llwpf*3)(AW4u1G4l#RpWvL}qTr5jrf`mMv2dxdS=b@mD?BVb zC463ZN%*qxvhY3O_rhO=4pE>e9OBP801EGXWnOSFyAwG zTv6*$;wj=_@l5eN@nZ2Zh*qaSY`R=r4N>V1@qY0M@g?y!@q6OWAO?L){EI{=882BR ziIpTnM7d02lhi{L`JCic$vcvdC7(mg_&<_gB)>zHn1$%@bchNskS>9k@H5g)QoS@! z+A2K_vEG-ZuS?&8IPWLY-yx#=u>zUPB{q&{POCP9RCmd^r+u&(rp@QL@y@~QS|_v!Z8?{m!OIiHIVSH0@lOL9!ke`vC zm%k`~TmGs1M>&>{C?twN#iNRuig}8ainWUMip`2>g+Y;`$W@dm8Wf$1Ud1uRDa8fF z%Zkg2w-oOyK2dzBxT(0M_(gG7NhzgDwQ`Jdsxm}5Tls`?vGQr%R{`icA`e!hMW`33q-@SEfp919`B@V$_Hqg<(g&v8BX9I=vHqtmmC?CQiTI)~<@i|)VblQ3H8$=5wV+lKpUN(tkX3=CokeSoksl^f7X+{TA zIF)6dh2AY2%Q6!H89e$99_(Y*(NEJ_CXL1~&@gHZ!{tKhI3Nu-(Ha=IyBUSBv$eHT zgB60#)|^Z&R`8NoCM!ETi&2iFnc+MaF`j>W($I9M|{Fdn9I0?i2Fo&$U{Z$8c3Z@s||tuw%~3Wi@-Qn;%~T~t_BQle$H z(%4@xz~aD7*k|q?4X(!xeC$IzBLc~&skAbfW@1}K{oBs2(=e?$os8k2kr~4h zJ2O0>T)++~{L*NRd_Vq^9U6!SiC8JPP*C~V5;d_4fTOkv@S@>s{2b%v$CGe8J!BW$ zWJe|m8oOG%dsIDzy=8keLkF>xe{|R014mR+Y`{OWCs<;@^T<4GVD_^hV!}nQuYO;{ z5XCB*xT4s7O{^guzsd)gfXJQqzy2L25&H1IC#;IT7k4stQAl`4B!EN5{B z%pdSc|Jk$sj4=3m_)QJ7aLt;9j9?+l;Lq7qmdS+Ivq3g^vuWr9Ori3g?wip|f$O8$ zKoRc7K@j_H<&QM^hJ3>(Z90(msVr_2V938oGun{|A+`@ijA8@%`OHKb zX4RUNno+1Fsm@K#$_0FLSyEoIDzhc4IalLA zb%1SMvT*GQkdEyv6C56npQmv*NZ^3*=Jo3^6G|OS!ffJ!A0cyp)U<7ESpTewESXBe z$ZR6j5FVLIBA1gywK2K6+Nce~K6us!{FM628+DDZYQJ1{Yuj%-_7@*4Jyh0S(blr7 zQ-nqAuHCuK`7N>MB2OiJDPqjMF*dWAQ9BcC&ID(IiorKn=&gOoj_sZd&SY^p4GIN6 z$ujr8`Q{!onZ=4VG(+JDv?mkDM~vf;4L=7e7Nj%+!^8^nu>vGj-o{J^t(iXu^z1a6 z0mZ>6lSYiTBz1Onc}b2oGRqXbRTVgdgMEsSh7)?(We#mOJJ+mOJP0 z(|Qi(A6B=uRoAs@&vhI)^SmmM?4jyV%qZQ#(?JiOp< zO{!&p^j-9@LQu~-JXr0BLP+N0wPX}7F42$#vX!5n)@nGY9y%j9*xJ{XrX>k@D<2ov z;k9@ap064LgRzKg!4DG~FhVD&S$f$cv~yq~%`67qSK?$420t)W6Gjt0(Gb6%U_j&E zc%%E!0Zp~w;f&=Ih*)jhQCFX?&9BMdRk$mb@co-hTT9zZMTPrL6hE)Vh1dg|@K!K* zTZoNO{z3a$X(ofl(}7b#UtVCzXvSV&Z`U&KzyA9B4F4p{ELy#Kk(SYcNpULjSf-&I zC$NOGes#q~y9(8uDPS^NbFd%F(Htv)nK+TfCuw38tlM_BUwZ`qLE~4!4&lS}a0Gsy z)i@LaJOb1^3B(c{rnOE5SBkCp2Rcz0O>36T0c(Z(aF&Ay)hz3moP-^ynaT#zZENX=Dem$rBj#FkIX-f$24$w)OS~yvH)( z;A7l3ngKsZp>)h9ckmtOY_fr@okIf1XkZJh%-n6NwH5?e3U*p|sN8HWU{vQg zCL+RkEEHe`i*@)@mf6%Uu+exiEpRDX8aihIL)OnReaLhgw+fiIp;iYz59ArZ1N^$W z8he9^5ti4N)s@r@Zyem{Z|+Sm1c_1NM_Js=uBDk{aG(Y}0$W-k%aA^j1y>(PYAw(T z+zKnO1%98!@D$>A;fbvRM)^KWHGP|@VZn;bpoa!(Sl4WS1|n(q!%|jb6E0=7PP@Zy zghoFgO>licKEUwAAHdZF*9VMpB6Jp?IRcHAdma(6LTQ!$uG!tPgz^r867LH@VA>{RgLukD%WQ6OsZCj^x4qz~8LrOebNhkr? zhA-l$aTnNsJcl$2$S9Iwjw&rKE3POGC>Jna&>Jp23*GpIQ^=f)f@R}>BQhZ34VuY? zuC(OB3vdOMU^W>c_GFn)xdG!Q_8Z-3M%jIh-&wc2wL|T=E9h*@$t=;PE#qgFWaMP2 zop%M91+ATRTE++?hk@I073jMNb_UCs&9<0cGt&Zt&uwAA!5GR1s|QvN61bM;yqFCe zz`4P-q;?feYH=;olG|l#X$fGIj>qtqNu8Y&vpO-(hm zc5O#vb9>EhY+ptD@9Hhso7N_RG2mP_3t9*N6mMs3^hANHvM2Ut83!nEPIqgioI}Ap z1!jzd;1ZSz)l6Zhy;JQJHyHgbL5aKZA zb(hGdvC@4#?Ry)wjXk9YGCG;OyqzUk>a3l0&3WL4tcPibPCGDuVP>#WUrwqV58>0~87#&v_za1|68Z4FK;8kSI~i6PbuJ&@4!#2{Vqkt@6*CBW zq^@pPT}^!eGrVzlV@XL_NqKPqQ_g}FCW-|#)7xu1ZSDo{#df;4m&vN%*__AV_vnc< ztWQ9f&-r{KOo>#5r5CZsjn6eVW?h8olB$@4yBkiYA0i8Ii+|h6)AqA!ybzBiW646s z&sK&@$s>5K20Z3KVyGY+Z7N$isbziwvcf!l0qZni2*D?ux8bmZ{_kk7Z*FE>ejwv4 zbdHCs&{^n!r=t+A@o*I~+Qz*6`kiWWejWLhq>&kaPQ)SF!4UxyB<#v;-jSl>Gy!K9 z_c!nB>ePHEWR}vf9AoeXS}I(AX~Ua%53qTT!;@|Wis8qh2iyWg3#%=of#GLn7MRT{ zbECO46BI#;)taIiFG#WW?AHQuh+RiB*5cfVZ=^pjXXMwjsOc zkew0cLXVfj0@@R=uF#&k)P3!ms3YH}Sa6as z-+zA+GXolCB%%>8a~>xQfqOv4<#Gf8qw+ZQUkE=Sl(6)xtKZdNR{`&U2{nTY%Z=Gy zQU@?kaW+rLjjCYpK2>ky-cG170gvZ*bTZ5S3j(38Pj8ECkL-!*sp+ZT(;%wrtK`(y z01g4q*A56nU{!-dJel_Py5?r>pr_+!zTJ*f@D^OGV%D(a3?88IT_J;)u-qaoyN@E#8N z^ERHLWduYvems$BhX*iN))}m0fC1Zjm{SewU=_fC!sS8&%w(Ed<}e?+tO*DVTnibc zjb?5OCxLy>IcnXjVQj0odcrtYOZ@ACHWTkB^Kz9)IrK@#E)UG?-_@ zyb8?I6c$t!s-r5ImuYEjb4^RDid!giOzq+bATcBw*$R$JIHO+5-eYcF4-aNs#yc&Z9}$OTab3Op!K zsi#?r5kN3(ctA*k8KJ|2W*Y1@b#+WBhy@XXJaSCQxr>XI5JASqMq`;Kld-bAz#$00 ztpcFt_QsBe-J-5)tZZ$AWh9Fys_?{Bn4R>8<~U#wLVSWzwKg=i)@Xj{dgtn?uS85y zNkc=G_ASRGep6Lr12>{F&gJADOr+tAHu+dj#*69~_v}8z2!d$r2jgt0YpT~ab=W(b zJ47G74Bb=05~M-RRIo}0>@4_3J@h$l%(1K^1eme4Lj_D}-_=l8r>SE?z=CZ86S8e& zIUj#3z}tqF^W95v5&=;zj_qMSouCH^rw1L}n$iK99dvpj=Sq}-Dj0CFsFSua$FYND zPO;olnE~&00?SOH$8oJ(gUJSmPspUu-~}@~tUIj*+5$_hX?G^01!GoJsIuU3WGsOG zeQ|v1iw{E-Ah;}8oko^b*A#PdasuQbgi|n#U^C0)=GoF(@|bS?1w>+UwkN0(S{Y$D zjA$O7#}Jli^7AV*8gm0cg@;4M8|<=lUq&}-bjUY<-uw33dw(+NiCU5+%q}j@)-ak$ zV^=|)i7GM?C@UchsS@NB+89kuQDJqV8u;ga?>H6f4(GwZl=v*SS`x%#fq>y#dXDBC zQ-e)v&&jOPGW^b}cJMHP-VQ#;_zG|&m|oztI3heD0H^c?uuv@gfh7oFhvfqi-60R*koEXQCOtVrdnj{zmqE>_i9bPb`GX62 z%G49LQ6IZ8mJvQn#{n`8INIQ-m3v0MgE_nfH^4OB@{rAN`_R8NF9v=C!@fh5W57ik%-Mi>^{T} zAofqh{)IFXkmhluc?M}pk>(20Qb_wa(#9a|5E``xjrtsoo`yz$h{jApW459(SJ1=L z(8JwmtQd{mfyRE0#@D3Q85wBC1vJxu!iLbSwP*{{<~*LE-IaVGUYz04?rEOYWd2m!c<6qo?@jsR*<}jaD?G6O-_{*1Urv_MvB%pml+0-2t@jI9m56dX`1&r=tz)(Z<)&rip0N z%V={r+TxA2^rJ0KwAGFxC!)wO6uAUNnowi|iu?dYeupA|N0EP_ZFMNhA4M%e(V-~% zB^3P~idltXE~D59DE0=@uRw82P+SL!yMy8%NAaH_Lpd_MixMWIgnX3n9ojw$ZNGsM z(^1kml+=onXQ1RRl>7!t{uLR=BI9giT#1Y^$XJYwmyq!-Wc&=7#voHYGQEaUSd=mz zr96&O)}tL1+CifoImrAJGS?%^Ok|mbEOU^h8d<(XmLX)VM5&c1Z4OF*3Z)xR`T)vU zf->GgnWIo<5y~2mc7~#zsc7f(C|irN3sLq*DCb3#%SX9wDEBv%>qL3aq5N=^-+}T! zK?OdjU^yx%K?S!^VHhg%Mn&PMC>s^EqoT8@I0zNjppu!WWF0Emg-U)!rK?bBIV$r) zWihDiYgDd4V8{4#1uMy)hzZ9r`lYF~xgO{l#ab@ZdokJ0YwXm=&r zeFJqphPpCP*Bhw27InXa_PmAmhoA#-=-?D|$P*oU5*_*o9af{m&!8il(UITK(dp>u zPw3bW==d&l!UvtWicU^IC&SUnbae7CI{7?0wF#XXM5mucr@PUa{ph)JbXJ7UJ%Y}) zq32oj{2g>Y8l8U^z3?`=a2#EnjV^wUE-BEZqv*w@sDCGV`8;}c3VPiez21r5SdHE| zhAzjU%YEp|W9Z5!=*=tWYCF2tjNYn1Z&#tWucCJX&^y`a-EHXIBj|&T=z~r)@CX`s z1%0>_efSdkh(aIzfK(Dxss|NMo1u%aJ6M?c1+A06nYN$97~(e0z?XMgl_8M?Cr z-T4;%`ULv*F8b{&^t%cDu?78CgYHg8gHebqrBFBpTm7Eh6pu&oj!^t*6#son@FgXT zr-U~tQ3WOHr9@v*USlbUQ`6s4%nFKWqQotfWHBY3LU{*JJ_5=olk(j``F=<#Kc)Oa zD8KKhhlVKsbCjxyQct7;HB{hoDzJ@W=TMpwO1q01b(R|aI5qkkYRqhEjDZ^SCH1hJ zdbo-j8%>Rir^YX&#@A631k{9TYQkx1!e`WkFQ^G$QI7;tk6fZ2y+l1WhI(u-HL;PJ z_$4*z32IUbHR&uhc`-Hl87ky)D&!!g%cXR`QK3RAl%+z0snEx%&{}GS7d3MX71lz9 zy-m%UOwC?Q&Hj;^6GqJ;)Z7Ww+|AV7R%-4`)Z>2C6C0>`YpD6}Q420m3l-F&`PAYo z)RIc-$w#Osd#I=Q)KkgSvL)2hfz;EVP|LScD>hOqFHx&9sMYhRHBxHrIBIPYwe~M+ z-4W{9)71J|)cQ5l`hC>;@2CwTYQq+4!w1yHd}`y%)TW8lCL^`!3bi?w+FVC%iKn)1 zptk-%MFvrkH>qtpYTGp`Y7Z6l3l+0~iuI&oXH&7yQn6`NY&)eNO~v_BaX(P;CMy1I z%CLemyh0@;QrqWI+drieuTx21P|1aqv5PWwQz=erhk-KJQr7cSY9f`kfl7~~GJdAA z)=@jnRCXbiGnL8}P`S@jc|}ydlPWkt6+c52S5w6!RB0+zrlraiRK=TAivl7{e^0k;pVIJl=A~4Sr zmb^S=Ab*r20=5#I5klDC;VB10R?)*D;Aab@fkPikN5!xh;yZTFK>k%nmXhqoQ!w0D z`nqozt^_Q@9)>G(x>pzi$Zj&3k1q>vKz!ymnp_qFm9B;FD#iR^J1oBn=phB{wUU8ByI>H$ zx8!$q^&C71XwoQrfyNoM=PID%C?&UCEhwxkFVqYV5Ia96*Ay3}8rg(L(}Np?fUSV< zJO&x*C>!j`DNaJG(1B7|a?Yb+Ls8lddmB)K6#yE|o@S4?6&lz_NK%B zkq5-McvwqBqNhLl@$vtvtKdW3|Ni*N)sM7Ti$$=S=i!I3M{ifpp6J)(lYyQ1kItoa2CREud1?qW}t zM4Dkg^u(WZ_eR(ZM4m(7XDhLZ?W2K;DP&7Sv38K>`~~8??IrDMDYinNha}2FiOrT> z8fWDINp)=E?=H;RV^ycIj%P?dzqq-zv{ikudG9{VMbCj6I~)g<*PUTb3Et$Cl1&4S zF!BbzGapVPj0g@yT%AR8J2pNGeYam|7_VzY*!nqQF95f6X_??}N zy}c^XE;S%19?&dkI$yl~L4z+~*L5H4Us%Ws+y(Fdhs9L_Wq|Ns$Xsne`9HBgz|0BS zI@STA#{FWu!U-$<>onnZrtTk~;dZTr?qf9E#+Bd{t+{3f-o#en+%_)cTwCLKgmtMA7k=EzdSd(S4Zx%j-keF30X!bM3MnU- z8j66_NCc!Hx&=wlHNVnQJ)A2URP3aIH7R9BUVB!JhAcZ!a5U#=){%f?FPu1c?7XP9 zzNX%;g3X%JI!)9Yi{4y!QB+r42wTR5h2^k^M8=FVwk0x#IF2}DiCZ?|Z$P`9YMsJ2-1-0Jt2 z_iqvv*W1hNYCD9#;9S?}KM!Uf$~#;TaDY6`&#G?E?Nnnk?C&(U@6xtku6wKg%HhVt zEeG4Mh9EFTT+L%xjVB!0tF3bl7)na&HF3|!pG&ydez5sa(-FM{#m`cG+2uf29T+j|ZIiwhQQaBtkbmc4h zV*1L{>(re1uZ-E4u3bcC^U0g_kh{yHmH{o!S;O6yP*aK?eR8GlIrLf!WX=NQ} zl-0KC%4&`Cy2I$a?lkf%Dk~~fPAeR#xB?(fU;`Fg9OsoyEfw9lO~izk`a33NvE*4H zDaYHQ`j*(D3<1M2&fB^96=_Ym0dLN)Eomrgs0^@IHq_MD4nFDl(0}kr=ZE~#y84O+ z*T#55Rl}~@x;H=cmzD$PU^(bJoKBC1kexsZf?x%YLg6^$J~snT1>~(@NrtTWEt=dV zRujbWz^k~ed>8_3pfCq;1O%)v1quT_hi*GgD0fz6=Vhx&xga~cxxGreOSl(62#Z(X zA$BiBT+4)mHfOx@bpGk=;~J-K=pethAZ1UAn*0C&Z6t!9S(Tdu{5MOGncLb~rEP=Q zA4JN25TvA}nhUf}-N-?Hc6@$JjLO&$c~UbNA;^NWaaGzbFvNhS7h358Tb@~!1DmVx z_GH7kgD!P2M1wlDgH!Yx?Ti(0x{x0qw<&$Sdi|!Z<8fM|#({jN9*5Fk5_<})?K|KU zmm@-em$A+WVi)4C;e?7a!XImBM}#9{cW3Q^g1rIK4463J7MLW(%%QuEyEkF00SI&# ztib=vkwqK_V2*(>_Fql>G5CnGwz<5euo0wxz#mR_)WCtYqVkerExAsv^Gk}k5axK; zxQifne+6VXLfF#W&|Iq}e>l3s*zU9;pvZUhPy=xAB$!U%%Sjj>?+L1FtLmz2vB6R7 zKe%3i4bI}~(yEf`(g3_6S$RCaKj)Z+6gn>QkLJYeGpK>p4KX{m=V(cx^CCYdA%9)G z%9#ec&S$|3=!WwSJ$c>fO&aGJJdn|Bwx#C>r03)dc5? zAQ0>a{PHX8IojnXR?+w>n0uP|5v4zdlM-a@4YEOv+h{nRk@Oqv3y#+|w%B&(H3302 zFb9P-psFeh%SwwyME)q55Ke;Ccr1+{!rmJ~ZfWK3!4VwLFF=?C4hb%2TVh3I(i9Rll`K}nIa8lYHz#W$V$QxpPX|K7v9$=H{JrZm zcO;b$JTV5ZejGomcJT4@usihU*V?LTTTQj97t{otb%O!$v5Jf#YdC#@z-MFdPg<_)c3024Z7yxZ zX{0cYR~4RM2kwqx@c?f$?fNN&-YH+?3Lg9@h7}K-&Vd2f-t!U`HWFZyYv51X39AI~ zBX9(T6FB=2;R#CsyAn7C`_jOmcwiy~)DvNo8CR06cq{ZBo^VydlqG%zmI)R-aLjT5 z$dyKK>5V>R)dUhLoL@E5fxJJ2r+RwNoQHE^{mbI%NHP~hYPvefSlepSzD2Y|_7Y@a zY9_B;Mtrq9a*a8bouZ7Kyex}qI7>K%ZEmcoYtnoOJ5IB&!x3QPO*ozPv>IsY^U4*> z*B)%^X+5Emg1U4M0T>=S!tD|Oe|w&02Q^B^RHqOA)%h%3KIB*DR6=!)KK+QMYa?F1 zolmHPzs$mnI&mQlCiH1I%`|c5y19|sCC&VdHw&)4qr$J?mv9HZ1=mZYgS_%&!Lp3y znk9MsPa|jcPgEZfcCbf;nEB;%OdZtXwv~GsC3X${ug9SJyOXFjR#4I8w#6b(t)~he;onKx4+XoqKb%twrsn zZAAyN4`l6wgH|(%)(tK@K4CK-GAA#%E)mvA&e}}LB zbPKXq<#~VgU-fe&x{oiW!Qm^{3D50t!n3=}wnu%nO4-cj7ufO(*=D<~Nqwt`5sRB&PuCXhsj@dTi<<52H7)AFK>?QUJBFvcpvC)#G_5a`ys+bV zK%Y6Pd$W4DT9B1hT9&1)sv+{@MTCu79+c&8kM9}+SLzF>e;nb^MU4(oR}p)R0Md691%r!J&2P;SdP_oLMFu6B05;>kLWc4)lfKS#W5?wI%|hoq`hu zfx>*xp@_k|@M(qn0}BG5U2uozAAEj+p&UwrwSy6k5G4?GJvc;fo9Di~NbR%>7R`O; zDYJGxI8E>dA7Mun!eUxuWd+Mv?U2Gj!*NnrXHTVJbU#n}+OZll+_5Y9iNS;+y;7d? z0U39NOnr$=5>;koRA#6jd8DT55v}v3;fIx1->hl6s;zGAs%wRSh*vrmsjKW&cDt&} zw!3n-W=#W`Q1glEkfXx}Qs8t(5j3uAvN51y4j&X3@w_#tyW_a0#W72@XmpdFU zwJ9yH+wscx?pEEqr)oTK)^?2gpr4CX53 zcPo2r+|^&z-!C2~cl=iL+i$A+vuEqhsqt()|4CRs?j#ddlj!)ks=9cs^W=y`S&tXv zr`qw7n>R~ts_}XJHWt7kx;Qcy=3~uSSTJ3~f$!iYD%?V7I(K0-txXmcqySZXyRjTUA+J_CRG|P7^tz5RVVzNI33P*p{0cvi@F5gCc zd9^pcZTn6w?|%2a%F6e&m9M>#@!Fp5nmy`T)iJ zi=lMC;hb$h#99HCFYoKypK~Bm9XMDJ$omVwLyP3QFYmJ9%@>Y}x)1)@aYEgJAF9c2 z)i&ppg=eaWmym3&;~XW`(=}vo>PGl*;8;06R*8>kPqf&4t^!sXg3 zyyb<%qV~NwZ_jfNI?$F?O!A_$YqN7y!S&8$^IAY1T7g3=@eIwg!b&{JjXj_hEbf?M zEK@gLs48#JHgOB#!m5g1=*G$8(2d;8w4Btc06Xa<-6fg9;ABVdud~@CVJga}S!k|L*VRApay+;r@@byUz821q4~J zRS758;d>ePZy(nsI9jUgbCvnt|COeLwHvZ3H`A^ILubet?!ZuCk*cVsu&zYI9sA)v zGJ-=ekJDBN!^g7eup%3bP`Z!i!?_^tiz8UTLA=U2kV(7FZo5idXSW0S-A-#P3w{Nj z#x1Ip`*!wN8(l|0ir~;uNp7CjIl(!ekHdtIfqrddhhbmhzSf3??|2r^5;`V0C-8G2 zp!+swo#B{R1cZqcz)f(j2>j7O#ZZKi9kN3h(-{K00(PezY(t3a>=TKwvclWo?6?j! zLbP4j$>Kxc+4nnyU_25bKx%^sscYZxnb-e+vHdADl<>_>P5x zpDIf#N=i#L&Qs1){L)g$sB;VLEp^p(wY6HuDaR>(Z7pQfE%w4(?KAKd+3>*d0H5oW zaByI7fRDQ{d__>kl02Nt-)q_4nxIbDo@23U$t)7a?PuUwaDneIoL36}2_&4tfiFUa zAn?UGti?3u(<|zq-WQ>9P{VEf$gcA#7t|Nd??2bAb)dmE{=Qf0uU=8XY8@)wR>FsN zBLfiN2Ty$z&FzfXNgk*?ya#4VzDi!pZ9pg?WGC|4Kv;H%(9q*lmdqijRqPr8-i7{#0a<#Ka z5A34sT|ZkS-?m|P(&X__ha89P75E+j!zU9`_u}vNP>7p&4*P8`_~JPv#&?x#Z%=$x z0Jaepk7N=bf8zK}X)mnIE-WN}kU#tj3$rT=?S=NLHaPY82mZs~Zf~oy7m7Y}{zutT z)Rb4N$*aw+C@5IA%paJys7M9+aXkw`skXL?vNq5S%{6xW#f$#%HDzN(Q$=I3y>OSP zBQB;P24VoK*@;6T%HfdV5IzCM6%K|BhVbz;JWYAxgze3^6Pz33A9rH8EiP{ARDVt& ze)xgU1z#1V^kEjq555e8fJoOlWlN#ED>-F_g*&q|bJGh&`6b2qc`BH$^(^KI>T0X2 zYqckPp6|K@8%Z@yE$yn#?AHIo*qgvNRqXBKAkAX*;*td0q&cU`A_^i%0XJ5GB4sD+ zTiIy~rL^h3rEQvKY11T4_kE*4Tb5E4WZwiS2x8q)@hYHl-79m_N%8kgTD;!(zVGM% zH_{|0=ggTi=giD^d7ftyIjhwQxcS3R(fs)ulJ3q{k{2{UIQbT(B{>tpbN^YU_X^7vwhtHfNgl_b`YXRm)J{q|E5@CJ!g zqd#cHJIZvm>6|Iw1xR~&nWMOfhfi_;Qix(^97Aj)aHo)eB0q#H`mMKdbF;H^vRQ=2 zVBmv;+4#Vk*eU5@l*vE&JE!cgMz`2(7MnVsF%yp-?P++w|7v-X+Z(?wB z-|(ho*6{Fdb+_7=mXWfauYL@R9v*I8))ek1Oz})<3O{CTYVvcRcApmYC*Nz_E(~^$ zU|>Zo0g)MC>L1gzAaWu@9)-GGxE>E)aEz{EsPn)r19p)FYIyX81`QdH4=8}eMqssG zKt5B9(1>>n`XOm!@tl5Ln;C+#%^Q^l^1Zruv%mNQQm=6@C$X9~_U5k%z%Qh~zgP@= zf8qV#7|8q=jh`EDqWY*R*It!(U)Wpz{^Cbrw~Eq`h1eqeq1;n$ZQNS!-*wd;>$|l) zDtU{Fe5u(|pS-7>Llm54^d@bVd0by(#215ydrtv#`~HSdS??add23-sB}j>^dpU_i z)o{WWG=7XhBkEz$V7tGJT?ZmnuKWA7vEBVKTwptE)qaPlMA^oo@F=7|O%asHB0bQr zL^!34igLy6RU;+0*Hu*?#j}#raf#{v^dHJka0F;f@C*j~i)ZyEBf6^L8sz)?e83)T zib2jdUDKV|o#^|E#?9V(Xh&@H^TiIHMxoJHz#q~55^kb^uG{XX+2P%Z?nE4pA@gM% zE;M=?eLeVt_9fWVAamn)*s==J0r#r|L%H`I=RZmGGWI}-BQ?155^{-Q_FUpE>~WER zfyj83q@x|f<#GgI*ulLAbz`R<9ws@3$D?FhQzcqZqz7IT3RC6rJ=8r z*C}53n#6Fmi40de>LwDBhH?;3oQ!xvy!#OBQ)FOl6lXa$-n`ectPr*v zko3-Sb$L14c5{@dD9xFes7f>>;gswwY&W(sDNzLyL@esgShSB@J2moZf02*-O+qxD zgPwz|a;Qy`w>C(P-NUJSh%oHbw{DWzG7?K;h2g?5e7wa@XvpnGEm>>I`mp3k^LRWDvH1T?jtan@DV9 z6B+cTl=jWjkiHT!D1_j!H|Zd3c@Rl)q{aGS>LAfbOpv zKRSdAA!3;yTFATI`*{c*atr;zyNPPpM{M~62e22_;1iA#k#G`>6bB1-=eswvzBTw) z*0UOEqc44$JdOT5crfc%NOLyGgqMYvMdZmBaRfS-uIp2wzYL>Rfcpt0Jq_p242pl> z!OdsJaBibJOLTf{(-7KMbuWpYP%ivB>{rrHMNWZcWd?(%-)~{_zvhH3o)t=AJSeU| zGO{a3uRnUmdnSPN`XeK~{wPe~py3c4*S8(vSD+aXGq|$){A*k{V!4OOVNqRONpp(| z^nmC(ZqkRar^0*fsc62N@8(205-SU<)p2gVJAho4ee|)YuJ-;BwH!T6-WDNu^1-3= zSNNXuU>rV)D>{j+LQ86MbS>A-yZQTeT6juyG(TyQC|XB;(1g|LIC7Z2Eka#hTRk_3 z4IM#;=6=9ZHS{n&EQ)65u8ZbAnk3TIHG!*zz>wQpT3syr-n-TJnUZu9im%`Y_HcdF}k_D~uF=<@})!5YYhonVs3Y zQyu@&N21!gk|uVpN&cetzs?2A9p{>aU+>$WI@q7M!)T0NG!HYuk--+#>Uu3yT{J%# zSMI&0p7s>!*lBt$Du7w6z=;4~fYCOrUlNOZ?b9&!&kH?^7D+El_0vhPdbHBfaiYJY$^ zPrx*ddC;9L=n6IN8h2-ztUs0bi*EHT#vj~fim4&Iq$)n`ar+=o8&X~P@`35|dVDcl=B09QZcH;~+ee~(4 z5nb2_2K20<$h;5I++h%^t_}vFLfRHi8t&XzCWgrnWXO{|Ka-B5uX8I_uUWBtjWjJa z#gKqd|E|3i&XS^Hp5&7x5>JMbyJ|Lj3NEr-d1Dj0g=k#l%B5Nk`4L~wjL+!WASvDd z9Cgq*dQG*(w#5<3<;68D&X`Y^zdTSC>&$W`a;tV$ZoT-=^CaY$`rw^eNk{mtw|+{x zqb9@2u!C2Knnz@vBP+@3cG4~_Zg*a4XJK||cz9_&G!VKYj5^r^nLyWy!bIQIsU)`m zi+PRiB62RrV#*QinX`AqG@9?xhI-^GdW-1kYh)LdbC#SuizxiUmhavt`GU4ZkOM}A zd)Vbe2K5!RWDrs@7!!~{nMilhS@c6S{SbxDBG|zH03z1_gjhy?E?plKJN{Mhp2<#G z?5FF|HAlVz0{!DZ(5I!{8{lp2h>6)j#m_y5nPipB{Vn{}`b=aPIdU3>-Xv=&QBy*1 z(zO^*XYpyVnL1GK@FSGC`>P}yi|G&XXy*<%rr$(M-)Cg2>Eprs0B zgP}ULhGSvB$H-&!(JyCFA73IG|HF_EF@TJuMo2JBqi;n`roO(IS86e_#gL_Z>!H@8 zdyY$sYn;^$Xc;yJ5QPaYFB!wScmle3N^ci0DTRmtx;I@QF$*$fswFwSw}%%L^NGSL zk;7Ktw6h-W=rA2rxJ}JsEo2(`^;xzoQXOSe&z+O2(s^lACr_J|8YRvA) z%+D^c_~lq34}eGvf9DQ(R-k73G1^!WUQHf5JHTc3v)BO4P&=Kud3GS`?iA$Pi%ms- zG|)W@f!#58?zEG@;C8?M0VWw~YlmG73RocNJRxgpZ-V6&h@XKj@_t5Wzb_I|&6@TB zWWTH%dnqyEwE?7v4INC$2q+Rf|JXy&cI%XEC#~E2-t)a#bN`^8eKD?Ug7r9WhpZip zMi9^3y6(RU?I~-&423siei3y4bLanCkf|CqXB26Z#yz6zpprZ_gg)^lOOorrLq^Ph zSUXE#p5qUG-}c>^uccjG-3OI0>0J^!EEwU&f6V9CKeuj#c8ru3gN_=!mmE`L;D$iW zIm~%JJ$rtN@NYH9eEs<71yS=O7D{QKg|kLdzrRlMDaMOx2nh7!>(17n+jT}t`kc9V zi}frZ-*&i-+9x3?{8imB}-hQDf;E;tR8X9et2nNnd$w?yRZF35m(} zC@De+7L`4^I;keN)!ypdS3oAeMMi#sRDo1#eEX>BsG12nkydh-_j;1d4j2rpnucbC zgwRkI35F>l!6wgeME#En^O4{9m>d;`bN5_s@N~h%_Nv`g*#t*Jyg4e%GfZP8J@j4Q0){MqSXa@p0GkwiYhWH)s^sI;KZ@h78Ke` zfyH86edNLZBI?T{-HHMCp>j+B2{1WmE&Y89C*K7KF2gz8*IhDyj#>Qgx=Tr0S5NwH z-KDzBT4QaG?vi{QPAALhcANgend4zG<$b1djlMPRjCH?SE zxUM|3v~V+buR}bV$`%F9=jpee08vsxGU&dmkL&kwU4VNL*{Lh%c=D|fAS$aUt*cYf zJIK_e$vkau$TD*fK(;%`P5gN0I(hyYc}(r@5Cc>|cyDY4;B0o{eVYFY)!cJI9_Igu z&R`fve7qW#2C#(wl0FFfV0VS&Dttg#;D3c}$nKsPE^(zGf~r6_qAm{(f~Z@U3!ib2 zOUw>Y`U`plwG}KfF6|@k?)e$nakeX>#?-}twJtAejD-@~@U(Tkpxhp^dDFTGX-N;Znm8HfPX%B!iC5$rRL&dbFsRz#AdJHhgD9v z@v92*Emp26xjB8WMY`ZXXnTk1K;iz1J>2gw*Pefoyp|!&F13`GsfhIZ?}_yM>8N!F zxFfDZ6>W7%%fr^L+3}|1VBvvsDQ36D0UGyQ2p?=C$$kArkC9CButwN*Mn>k5*EH21 zYTgyz{GKQ-lP@&wEUb;7E1m#miedm5tYJnax$ad{m<52fjtf| zT~nr^mE8ld2@W_mx!{Gv!1a~16NShPT#}f|fW{#%B?RculHx7UDuNcpL4=kN(gjep znsr8`gSDuE_r0IH12xC zmAhyYDT7*HkF=TY`R8>zzJIwomdEr7b4c`Q=SiI2S4AS|F!C(jMz8n2w&B|_5&<0? z#mP@QIrr%9(SYQhX>UK{1@`hZl0@FQBZ{rQ{#=8)_V(>s9{pgOCOh_UEL!#!dr}pT zGa#dULKmK*BsdZtmvY*I`BSIOKYNX=$7AR7*SC8bx%2&VP%lET@g-$RdT|O+s>5qD z8q;>B?(}PH-Mw#Ds}!OW4yURSLqVS%b(}p5BMJf^W+MQqvKOL@q6&B9`{_W9C@~|E ztEO|rDQW2`*?j79qt>`AG9xNIDwRrZ`sR5Li~#udACYl95)tq^3^qev7T2_K_ol}6 zsZsi<%pLUkXkSFdlT%f6wj`w>wZzPk;nA+`MUf?uei0kCZHm|^h4KaD$0CRz+bt9ZLT*XdN{n;aOE!w+oRzx`lwePMlm19`sAw>Y<;v{;4A|1U~%Oco*| z-^k<>D%Sp-QN@uH2t?%gV6%Kmh)kY=pL%|f&%sX&P!0w^9K&uISa(RK(GL;7O1y1+V&ot2&<_2$EwcT0N3d7Hq*F&H4SI1QWS1z&0=&prF=_Fd6?qV`D7tp=xI;;ZU#v3%}Hw36h^ z?R}M}_yf>Q5$`23HNqD1xz(iKhs)4H^11eSGjJ>18@k#Bt5i61bXIg)EY}iVxqhW8 zJY{8UG>3iOwlt2~1em2oi9^pNo((_3IcjWmwJMzASn9E;x47JroYE3idu;oLW1L+g zf9oWfn*(+?XnktxBc>yuUa^c0;?pBu-nLy$(R6c9{?(8>#jQK8jM}}SWzF7@1MAp|nb3H6p8|Kf2UJp_-Dkw z^nUo-U+JDnlDcO~O1lD-uPYdJVIj&?m%7sCx(hY_9TdsY{mLAHD+IHS#fb$E_Ymr6A6=HRA6qzDZfUJTj*pk@D7$h z)P`!hwex{oLgt#KS*G;lji%D6-2vSJK{6KZU8HdbxC02bk@En1!Gu71Q^yk1ILNJN zX87e!$kGC&yt+7O`=(YqfK<3OMd-m=NhA~L@cz&WaUn>2_78y5+M`n;bTEuQQ7B#% zR=b~6(q(M`9QgmJx{H=gIZE|Ny&Ge9x;(`D=~3N-mX>M6!vI+DOgC@5vdnIW<*h42wveq+9)&bonRy7rn^5h8L%v`Y@9B zOl0u?mC7F3E{|5w`WB}pI+BnZ@`5q69xYJjAZ8$)0(TvcT93>Z8x|Orj-!3a6aGH? z;qnu16y^}bXB1B&i0X5gC;&5+I|Jk|AiSOCUamy6Y&m1Njo>0)q&|ihkW%Tlhl-c2 zj9IRh&kxv^RNKhERrAJSmE2x^J?gXTDw6d+X(p@5bKE;`ebjVir?lnkn|r@g%Z&k; zU_~p)L#?f@R&}1;YRTi}&PlGMoVfVa>8n?%78OQTuHeenyXYe;F+=1k+x5gxcaB4C z(wZ_#_8lrXd`R{Cy6aTTZP=K;kv>R8N9aRpxn&aVH)zwk!6+@@)vaSU1uc?nerdP!rjde;9Q??q^o2Mluhw;l}!xu)amWI!Z zpF2Y};=s5)W4W3+JLk1%JLv>O5Z96kPn`~ZC-Op!bnA_;Hh!mm?|fy`JN%*gGfmY; zrKQbf@9$%g)BA&6S0`gBu#w0++;xZ%wF$&nW$o^e4E-P4!^p)FWYxXn8wjE}(4P*G zcwP~nec{FnV?D2Uo)!7~eAeZX0JD~>$z(y~JIWntOVgvd*SFEfS4>yWn6tBXHcz*I zPBTcxD`dM=_ip5c_f%JpkjF3Y<_hYL7d5Eu4y)PDS7d!ihm>uX7RJ};bZh7nGdHN> zDxwM!xDToCt&zlcvNXM-KB21h5_#e+b!}~ozLIZDB10xS5~R5pS&SF}-4*By;32)` zFCK~Jpj> z9NuWMRJwgdl6J0&`kWp5&-vWq+-0R9byADfY*Eosq#v{|hi>BxkrCMu>e#qkTO8kp zPV&$Q@{~y$Nc&MhNr$N;qjGFJ_~*fZov@e$tA$(SQ$a6GEU}hYO8AS1PoI6OT?(9m z`yr?^eoc1u1-#{*eq9UwMV-pL$PxLpj~au|^I%Xocp5?T=~0s3Z6)uxt;8v5B}YZb zW6c-esC@^nJQ*eKKgwV9nSa;QWHO)}dx*Z>{VLfbKZI<=zY`$5JRU@(NZLlu4dz-6 zC3RJmmheKR8mGfv-OHGxOPOPLs zm&x0zuXbNKdWy@e+VSZde@NS_$kRius`3k$U6<6CE@vcO;H~88pW5TNH=f)vJ~K{w zbkXjhaVoG!X3V4$c_Yvb-3jiYtk3b#mm~uh27VBezxZL(tXq?6~(0hH^F} zXW2}4%ndeBd&~}#&1lY+?g_<^4Qh|w=&(5RY;A2*9Ms~LJY?RWRm4PEOaXJV?eI2{gG zE`GvPC;d0C1I@2R&_atmLYG!a25FH0=??q~Nd?JD%`nDI0awNKyrv!0o@ej~;RQ)H zyt%v-8GkX8iv&zJAsKpiKPDH$liXG*a3aQ{SD-+0X zn54b{OgD$-kX-r&d7A!KA+=bn7FKFn8lReGNJ6OtC1DNQTg;sBX{fN?v%cB$sWddV zaYu_9Iq`}zCs0botkiNT%d26i4a7eH%kjl+Ac1$h-x1KLXV^NV%>k9eUmqF>(hvnx zoiNf6S`4k!A@Qd#2s$MhCB%x#?Ult9YIm);qB1oR{_ZGGtcXm<@V7IwHnX0i%Y@%V z@9Sn9oviMz6;GbAd>YcE%RIk{GNUqekt*8Z)myzNtL{>hfAl3Uu+SPv7z&m{4TP=G zL3JL5+M`>AIO1kNg2dBk%-3}KIXeCJSW=k#F6sZ|m!qz~PbA|%Zv##Kp@Zb-2&f;f zK^2Bd5%xn#h@D(paCR!vc%EOBw1ljr4y^FuY?P8(32`xxa)na6~2q< z9D{ckzl!*shI%KNbJF(+o#%+EjB7CX)o1N=R#YPS#`z*g$B9ykD>EzA4rfk|gRgg1 zRXOU9ka@mj&SF#_JNmIpGt@68b9~9XBlV7|Drdc)!+UAc{$#kby;(tD>j^{r zaqVVDJKuKrz~SbT#nnYMMK#je!sA5Rs78S|J_;X(=V;i>St_C9-*Je)f)E~=xU|jr z=36QtP?Z0qqdC-sszT_*5%c+ND?`_9UMCHU2pY43InD5xQIqc8=)=XIHpN`vH~#*| zR^p>Z#G!hB@j=@gQZil)m2q$#NC1Lrxa4C*jsQ#$QLab7#kI4SJmN(>4j7;0dzaGJ z=mg}eafW_VjuII!k2qABQ)#Q<*4FCI9#+*k>WZp4`Suq>o8k|?t!gTHySk1w&h&Zj zT)lGP{ChkuOCI~;#bK9-LUre(rW-qtQIW2QE7BF|N@AK9A6V74N;;+e+NeL&O>h!{ zW%`k|FWL{a`2b!|#Jhif^o zxH+~srYNRJswi(81B157>**V` z-|{Jx#qV~-$LH7*__ewPx>f4vXh%^j9~!VfdiO}}z67dHKLQH3jE&s5PaJY?u7xY8A4g2Ey=^q|m{ z+oU7r(}^KerJ|$1fiLyy8*e+xT3NG!+KVQ{s2G4ABP9VG&Wsjr%{yGuQYl4k%q69k z5_Nlf^}%Dj-6E3j+fNo+ekUq23--LCQv-7^ud4)+>KQN@^fHe{jCAmPk^B&Vd;kZ^ zXFyhQtH~t|N~HMKbJ{sxd5&8n8ORWI zBY6YlhZwAnox=-Vv@__U(t92TqhzSco}wg?C`m$5M^Yz4VeATU9m8cz@8f=Pb_*bj z-vP1+OUm0O-ZJO0GUX_f)f_ER=WU6e3IY7sbJ;sI9*YFkoZr(d-rCu7{#_hLOsAoy zFE_i0rj$HhT2WbE3j3P|lD;EKtPOX|b81@15ZsF+WLooQUu4w0-PqtdQk8!qwu(qy z@-Lol(f@}j{y&#^kbi|e$WBj%ve1bPVs@d)m7SU)mH&v%S=mtUHoMHl+1VKl$)O2} zxzc<~RC10g!vYDv4&Z4_}n!6me}HSdsd^V&{SlxW)`I;n+x?$ski2O zN0K?qk*wF-Oy${``DqrDF+C$U(~(-RJu%rS&B@C)+jvu&!I_oaQ)7b>_z`1qR7!MC zq%^L0OQoK38F!mqc_j{Wp}ojn>~NIkyqO!e#h73M{KA|jHQVhuc6FZ3Zc{nZt4xj} zXIe={Zi+M|w>UXool>^ln9CQ&Rb*BbNHa|_dNY@9j<3!uv}Bu1CUbgGq9dcoY>RAj zP9dzilg$TFurRRbG+d-Lf3L#kA7~7p62h$Bg_>K4h8m_3%4P zx$7G&mOQ7$nPr#8Cl~BWw;||-Xx6#g*FU*)Qkvt)x8|!W%mvBC8M*fCe3RXlUzF>F ze^H#9pPl70)wa)zd?0h528FpM> zm{p`tPIp?GGmNQH2gLC6)hQ`{U0V&7YFoLr%Ft6niLn|_ zTb`rRuj2@_buvO+lsu`#iB%pXtn~$S=q*thCunr1`bsrgBw5vCUG% z6(m;`Ik^JIk#tv1a$@piC$gEKiL+m+jpo{)uWF+1{{@E~2rTuWh%!-DHd z&CANmC^Y3|NS%qMq}nW}xw6obEX{)xnxo1|aU_-J0&fv-HgQ=Q$+;OulO;OVW=buM zwIeIO4Izs;eD(9 z#i0;iXpfM&eT5g5^obKsbuJ-KbdT>I?|UEV`3JJNmu2n=?g=7ye<4U&l~x)TN0aH0 z_%Mzxx+?a-}=DwmHLVrl?oQ0E3%PCPMaq`bEC5si>{F2UFK$ z`2F?Q1GkA~qg~8NMT!;q<$Er;${7Hg0Epe2awdxI4&`Aa|9pD?AcRE~2(+~VQI+KH z^J%Y`37lUs(=bW*r2BdjB|s5yK>GJm$J~h$AzetnFKWUNHb_}2KutSA9;2P4uZDJlKju*+X(T|_ z_>1~=#lgp?gD@AC87|8NZM@6_?u{-f8Y;~?rqaxQ^##-qFZ>6+b8n?;{p!4uEIkSx zBvQtHA>O^P-(lJRw#*9Au;qk&Sux%{QLtAdWF$^2Ve%tAXF`&^SA7l%CLWYG5T%8i z@WYmT6mj#GswTI_R>LKStjSzO)dO$Ds;S&Y>t6;Nc*V~=QHkIC{QE<{+oWA*x*t=L z*u~^$dYB7EW`(CK@p_c-p?@tvF!t`VJqr*(1pZ%SEO?gwKHVFUNdel?D`+M_f=zkd zM(TmPj2$?Zs@1F31-WkjjLSE&Hl zZyj0BWcVQgw!5gdx{3>HZrpHOJzFM!tk3ZcjbY7PbyaQQE_HorypyftR*!Zw}*Q<8B_ zDZ3}A<^KAKQz8~E;+fpEXwl-WlP9Vs?0W6Amh;we(Wwu&eXRcM!=^K*`EN#x7HY#M zy{eMe^qIJ8%Be*h&|>RF+EX3dK2f8mdJA2@Y#&xao)iPMAq(F6OVXE42) zRE{9fgo9ke!P2*nlSWzaeBFjM9GN?T29qafm>NXHl$_)o=;jQc`XqvrK_@jp1pQMM zz`|91?=V^b`9|rnx?4oTz;?+uz=C6~xOUG#vB%ooBBBpXI{7SlQf&l07pAy zZTnt*=6GS%Tf74+M!K>{|0%xm%s#aLl#DEcAuGeLYR%HZh3e;qZd){#r+ueQADS`P zFn-s>vx}um&wLztQ!Ss{=ldUbpSr=52j0K>qw6(C3P@^}_pA z7u1K_(xMyq3kx?6p?!j+WV+y1LewNTH^*l4%Xd2R^Ya@Td_P;6k|~NyONIK89$+8( zvXTZ4+tHAjpOv4P?`O(2=a_97`M!w9VHH|NJB8a6+^zF;h=fjbea~m)b34SDY+V3x}2Jp%gDBiFvQMZ97*WtL%Tgf&op1gI_ zCf+j~hi=-mb@F0WH`F6=gwTdi_RGMIoJ2I$(?&y;@}I8K6ZC|He(#>B^nMaD0XXS7 zib25`zz>R{LLm5nSU~e9ID7Xxl}wfbkUu#Y+4GZxO*4-Yc^B5WA~y19-#paTf@!LV z$nl6LlVQqlHr<%@E{9b9r=o)!7S%3P(+9?kp$}+lwFfuw!U)d@aHk^y(T_>#oKFH8mN@We9wFK84Oj{SvKe?5tU17cH(ou#xL7cUOp39NB*9 zii$i5)P#gQb>-5wl}9+?H_z|hQeEomGiQ2A{S~pw52ifRHdqZT+AH7{Z5i^$GuK|@ z-4)&CqS^1>*a$6!kw~FEL`L!~k*7d=vxdj}2^pqah{7ob2yk$rGy{YI8fT@ZyMrmN zQU&YN9<;RJr3px?T9Z;rc+x^!M8&D)>*7`S7$mF<(N>BzELpG>VMlMQ6%MqrSIDE8 zH1`U5+{1mu$cfdRunemgh}zW|ps`{_tRXVR4R8^)puST$T8$ z`04ScKPtiJ2W0<2A|KQ#pQ#rf8>hUw=ERIL?gt_feS>8mhyNjwp9(lBk=Fz?HRm>| zEs~H8VM{l!YFOyoW@|SsRIT5XxMkzIs`^N7!Dtb7U45uM_M-atuiu3>UaniBd`c{T zAYd+)OKhK#ZOvq;>ZeyukC+&=VR{&MW1gt7eAn*1>gMW%P<|YZ-A-q#5^Q*Je2d^3CNzyBE}~D4|cajd*j-A?cb!F^7+;&ea?})XKFUx={78`txhs=DfqV zY~CBxGNi=p`&CwvO=K&}1v2MN@B&=xV&NJC7G&Ji9XMe zm(3Mq)@HQoNx*vF*bgt8PpiLt&slPkKUsXN_So*Dd-mKgXNwRaBEhKNAue_m@#ugiCkZPb|V#;zZ zeM{no9qZHLVq&-Iwnm2~ZP82P=LKg3sprotZJNuks|nwuYu$P(>AmdhDWuugLJ~x! zmdZNSr+II=3b^v(hWvx-H`{EEgS<;(ZqF$ZS&}0xYtp0Zsl33fU1(XLPFk32 ze~!0p*qF0Losw#`r1Ca&jzvYLQfq}p>My$L-<1XiCuqiEd2XOAhKal_@JbRZNQgJn zgYoKDHc$noVWjeDgh7E|Tn`1c<30tocg5e1o)v%bh_f{$cLKHJcI`y6%V!J*GMI#r z#O-1$D6<5Ph$-R@@fUCGyAyu^*xA`NR~c}Z(F^Yeh{%Wm@`70YGdKzm@^!s~><@#B-^0>eNJ0flHm`__ibB{HK#b)g zt+wFRsVcHpGx^hkV|=^#Z@C%8-@Y9CH2p*GG|}!JMP31efZ@P$;W<1*>$O_c)w-wtZA#C(ml() z6o3Bp&(&nek7O>{frJCnpL88fK?Z&bT|A>|<(^G^Nn&o6F)lkLGc-HZ7zZM?QyTEr zGJx$E$`@RyQlSr6kc+T>WgN&-uhJN5eR2Gu<2$(3bXrEJRh2X^Y+l4FY3%zS=s!kO zn}q^DaX*8lFb4ptG!(BK96kp#;KLdcEY3Qeaku6+tMiwnlZ!rT{Q!0Lx%AcbtIbPh zPhT@oH;j83b;e3#gZ>5H$9624>q8!eV0a?@tBF)QqiWS|)Hx~FV2o#VHl-Tly>)&P zb%va-ifkn_LB8oGZ(@PgO{nd0&>Ett>7@y89gpPJ(AQX{$So?#VJJLdX;MB0~bq;IOJ z4U0ssN2|DiOA|m!^iNcF#LqK3AWFk^g`X*>Xq|%vmCe|oS#ThoiL`o$y0R_Zl z0qri}_QkbW`qd?Yco!TE2zdbyi203iDcpU=AW^P=9_#&uGO>dWp@S>|;w^(IuXr(c zOP~OtOqJdHli^+ZwhKUYD!Mu#hw0IJwCMK+7Pm%tfyt!;_Sd_g75fPt=(b?LY6a~D z4QwOOR`C(ERp`O7+^jcmtpGw9V5z_Xb+WEbHwdVDn9Pt?_jE#eU2(4y;5|&uJwp|e z{%n})PQzOqswrqQ*l3oDEy3P;vkjlZ#Ybdj*Qf}-&1Z23ys(u1*1@eZXyPs zQzo4~Zs0`P*DJP8`wsm0-Elk}M;@ZDBDwrB5pAju-LYULk`XuOwf(ejGn3GwMzGj~;E z%eMu2238FJh5jPSKx98vg)F-(gWJ6=rg4>ehYs?6{N~UVn-}#i$|%4c z0;l2Bz9aiu_=?Jc+6L9(?KRtWa~ZB8W3jrp$nJs@iTbfXSY%|<){R)x%S&JX)6?fK z7WZA;Ek@$@KBDWGGIJ1AmIQ5(MwsM@QC?cz@>1-}k%OO_J!t3PowGZ4{#JAS>gmrM zzX*@}x?1*Dw`2e)*^*JUB{NhioT0x$pH<;j;9xC95uinBmE=Rs{WUD_VvYSfSD*Jo^h> z)_v3%TO3#<5k%ms%5K^Q|&OxjhJF!6tXXJZl+9IyZ!>?R9DwnsvjN%!w9VJBNzeM zy+`9foyTh&x?R9FfyJTl`l^9QzhXH8QFR#r+Ds zS3mm1(Gk-%t+JDMBd52@*kTod1A=$VSi78ykBLEqaO&8(Pp4Cnl*WtGiD>T6Q*Xr8 z##G1GNY@_S@m{+M-1aqCm-KaH@Ih5sLm#Fq5&9W`C}|Opgjn`~Yc0VnTSBD%zzhOXQLgGj!3au<~t<30!81F)>Lczcust)^ptahI1P)sxO{9 zaIS$rcYMz!Bn&c3_{NIz-OZ}HjM}7fuB_ZuTc>JHXo@K3^6%cdd-Y@K)sI`g{SEyP zP5hk<6A2LPUZE=gu4+7b_(Mu zjzI?o4Qp6$c%c(t@4!N)x*TBU@DSWD&>g5u1ksxV5UEpK(G!&Dq&i6g6x7)|jS$`c zo&1iK#R2bAyYfw04xV(s=6piTX1^)ef&(7jgXnHV<3tRDP_F{GQ$nGX_ekBuz8!IS)^gU^Pp~ww*BL z5jI!BBpR*BGFmJ~t~F-u&K2q`+1UlxYHOT@mAq#N_7;Xn^p!P+TF3-=@nVWmuY_&^cyLm?hAkz}3A_aL_-NCxL3E> z@)d2cqS!dC@FrQhI|l@l6ivIhi=mLw;>e`H6zbFEl7Oe#1}bSVzO^%UYW3eBZ0@sw zu>D`yw7-C9+`oZo{|hYbZ;lT@X-qtp-BnK%bWASS9ZIU zup-S~IoNi%pK$*FrJ-9O7p@;8>(*h7TZ}RDHBIf3f8q&ZX%=W*!?+WjWTP13jO4N= zV%L@}SlpcZ&u`rd$;&6Ed>qMjS7AjYca`MhohLf3tC%t~Xvi)xStR4T+nDGrQ>g{F z1#{L%8bq;PVlM69mp8cQ0@M%W4KHzJD0(2(DZ90!P_t0%?{ohn3vBit%^vfYyf7qu zU~xdAyD!J?YM&!RNKmURPcBX5g2jo+SQt8((cR0rb}SQ(u8vYVUf2Bp*y;bHjIo;O zOsx&;Qjyi5jT#w`6xKS>t&IB2%yl=+bu-L$Z_U}@Z)SayQP_TBji8W|MgLj%u^PE_ z>I5`jcN@xNrgu1knA*uQxk1!K7_k@ZR#0@j>H&9vjRRVii4Guw$wUW+!Aa?m$z@uv z0zrpFo;^))HQ{zZ*+49h+=EcF7E^8;ylKXE?Wr6*WUt%K>h}$*)#}xsU}FeID7m{D zeteLo*N@L}*s-cS^W%NxcTd{$3c)&&VrgG6lNBBp%qE39@DfC%WK`!J>k!buRM)0N zF-#m3&m8T5gTH0D*TKJg((BmeB!7>7n z$AIyK%ArF(DuZVRkIc#twWulv5&@@|-_`%S2H1*9U=yr69m~yP%9UW_J;i`GbyGaC~d(;h9^TFqXQ)@jnocO^>r&q`Vn_fX1_0n`m1*M?0IS zu3Z!iDJ4t+SA~DbhJl_h4i0Ze7C?R-AE}n;M8m}4;UcPS3MYz83Dri!vV)XPv?!A* z!oyL~rf`wG`HmQ8(}^H59f;#W=NI2WdDEGKRHq2vb?v0HNd$!pYm?PWlE*{z9dg3B zgFVdgZuFPUgM$Bh?WAi0QhOBjcSz`va}+1o1`68(2DM9#o<&T^61!GdoUKI zVB_K>#9Oy;g?~T<9sV=csL+zPHT}Kp2(1!AbR8ZSc8tV$vjc-Xth|mL%xgpxCorIg zL;=yd4%)#)>+t4Pt?K|`Zwq@6@zp64+5$A)X;_!J@1d^c{oKfUE5DF=G=le4Aj7O2 z4y$Oue{F+R!wxFOLBee`zMbu5hiKoQ=X<0#oTFPa;+t~U# zS=_N@ySz215k6xz=tK?J$xnH|y4!Gam=9z_4{9JuBeazuhnc^HDLWZgh;hr2tKus*svFgAdV_^LL1oe9v4<)!|`}_yfvd*_qPn~&EdoVR+inw z9>2)$xx8yJAt3UR=1p{abk&y_KZfbdGT}Se@*Pch3I#QU z+l+}A&#!A4+RBKr=vLh0?Qkm(!p38vG`0!9%5{B&TJn^VLD#3vUoe%;SJ%#-d!G}G zbe(bv8qcl8o4-%1$EdtE|Ln9anrUa}UxWO`y`^38%5Pr#V05Hx^arnf!y%cz9_bw? z_QPSQfRfw*=5u!+a!)4gL}BESA-~W^AZvwH<{@i^pn#q{@(V<;dL>R2z%TX+llhCE z^-7Zofl7ik(qNJ)4r?bGxl~xxv71l}-%6cD5Km=eEp^6{im*_B{!gvnE+Cpvx!bxNe z>{Tpc0d{-=Ei64bt;poUAGe*#d_?nT!3!YOC9H@^T z!hcU69&(kwpbia6oHR+bz%{=@%MGJG>w(xEqN4o@=|jhda0uLL1f`CYt05!tX9Glv zefeX*79!Z%57&Z0uM5mSB;UOK1d(5i3(U;okbPr9Wqg;GtY&@XHu?$cecJy+U<4(3 z3vu<7HeCZPK#*j`e+a)SlQU8?^c-a9{uHeZoffuO4egPbt6l|+xbz|8)zEBw8Ud9t$9PYM z5cHyKn+E+NROT&^oL7=D%Rr3jL&pOq4LC<1I%XNK53StNqHoskt1N7h-fjNr0|ut| z`RTQQX1*|VUwlhpb7AFPeTx(Ye*K~hHN2+z1U8MJ-7JHrn+`J*LgVOuFM6FJZ7^xW zD5gc=7p~Yz^vOdQBDF}dASa*|%j4lb;DaPk2AHp61uR}TbqH4cHZ9y zGjAaFkw4j|Pj~0v_H%dMLR0*EzkeS?9?{67CiQv!Z^f`pBkj$St(@22Vv;fqjyxpSR25^PuzM2`o8C-Mqr~?`-IdH1t^iw zGF0S4P6XHZ1;Z+^nFg|QY09wK^x=85pL#=RK2{alULraf@bqyyLM{IitnOEr%)uJ; z!X0R>z&5-{lwiIP>C(k_`ItA4rk^Cg$UGhi@>%ZPO8M$o+?CXo4eJiXuqBM9%H&_N z6^w{VM$XFQt4X3p{$)JYuZmG&Z6bLpRt%7myic8 zkfHC8#~o6N;Jmm&~1*wNS@4-q~@jCQytQ?&~$( zu05n>#}1^kJYouvk4-s0^a`6 z96KfwzUexlw3nw>B-&?}`zF~F(v69p2mQPL@Wrw$3FXFj6Mf5!6$SQk;X!}VL%#08 z-TYy1iXO%Vn^^osGclO~tg>9`c~W?ij7Hf{3QviyUV`V;1n^-3*#sir^BnlakPYad zyDFum^pcF^K~gr6a7%9t|AqRr&>0c5!IJDsDK$!=)@`+^iwYfucHUWx@clbv1CU{C zIn-L=W99OdMX#R+Uhx`vb>1FP*AfYo$3NOV_i{QBmWarbBIR3ero1uNg#}i9y(_Hl zOi3(BP+KJl2`Q1OJdN?J@K~nI%}81MW{98Ahu$6IF^Sd~%69Bg7nbDZm-50QqW7-G znpq0eyLwMq!&?S^j9?;vlDpo8N$#UP6a0PZl*RSN-Eo!DVsAz^J>3jM7yOHE#g5dJ zZO#b42xooVZl=xEA>LLMwadV<_^Mr9S5sV5h^0!+8c3c)J&aj5!YPb#Fi&rbJhvs? zibLMd65&*L-~tRo?%QHwC6=OMYgJmYUusdDH8l;gm{#BJ+fa+s$`E7HNhZQj?(QTo zsyZ=n?Z&tNN7#FSH*sxU!#1|0xeg%-@(^3HM)ZUddJQEeK!DJ}1TdJ6ZQOA0MY83h z<|?^Y+%edI4Vd10CqPJmgc2YLNeBt#jC5q)e~q1c-}`+3^L(F+Mw*#(&dg}$oU`{{ zdo4^D#t9J_>ihx^`irI)J@qfp6YF7Ey@1D7`U2(#TZ*sBu@oIQdeqM0R7!-=^!Pr$ zrxWloh&A*;rrnF}PBZq*KkcW~(#?I=(glk=p~sSe+765LFmm8taP6$z%HDA6(+yum1x| zJb9w=>$@^rhsBqbcDGBaNGy*nrH{!Imo6ma)an0$L3%6;oIX`HwQ>3hz#xC5KbFRp zCsrg0HJ1?$@)+v?!>l&f%4@4T!JM^Nl~N|MygMF;Z)<}o{hxE#B zpbfV;3$r$iuL!bE_7%aCS3W$93-}pri znC75zY!Fl~dpRi^VHGzUwl??*3YxxKgM1Cj`VN!G*U%UQ3iV%|8XKCi#$plyUowdg zBt3n=`tkyaByOUmc+e0Zm!6i^JXADgS9CU<(@AQMRY65i}8Fi087pn&=$&yPUEx zc-Rh;7*uiK3xitqM9UoZK%`g0N;%eg`^Iez!;tyb&3rP2}h+KgTIjb22@ptD}%PD z?%ykWkpH0YK4&!Np3Tf+j1uXtRD?gpAygutF|Gaq0GPx9WGOOYKlbc^K7%0~hdO@s z_(J9z5fB#61qG~4T`!+FF~9IrrP{a%#J-F)7)F#%h<9*>+Omvt{JSRJf1r9G-@8Aj zVY{+=Th;dF>w`}csf4CY`Y$EVt@A0pGw$@0)O2u#Cs49hT-5K%*j?ck)^=1JO3(P8*=d8T+U(WNl4LSI-&a!Ibsjdk~e9wsy2W0KZc zc$L$%ndMCjIPj+>?cAl=Ek~0GSx86+=@8l8CoV`WUPGOJq?}xEUn2N!u?KB3SR{nW zkB7bW7W}N%TW~x8_u))G>^+{FG;iYS6~T-k!0pk2nmh#F$xcsKhe=|a$UmaxH7X7c z4Xp_P)x7TgYx4O=q@14!Ger=3)uBsw>W2ueV8_FK*ORopfL9CMuyhx1LVP^P$?Dw1 zg19jyN8nyFYUEn2UYDV?c?=OHWT+CMp_zXO|i3Zw@LB<)lARuP;BMU!|$z z{0ld4k7LqIW~~{#6T*06G=KwsEAf@%8x+%C8$ZDp-cQ!ih7JO*A%w`gVF(`B$h`uS zN_>7|Q3fyrLqz`}U(L=z1UoM$%VZYp#&E#c?Sa);2Y6{E@CK!wUURlAt|$f(;iZ$P zk!EsB7B8B!aE9%@C>OO(jfe>iw>i6Ll8kX?)up*EU0OXD%?+7K((q6KYL24~8LG^r zyku9nrHELO0~{{&YMe>9DJRElFuPXp@7+9i_t{^~5EJxK8?w`E4?N?-cO+ZlKm8pU`{cIubI(!s`@qOJh=Gsj@6G z+dsvZe$jEug*+A`#6H22)hW%8i7-+o_&fWMJ}mKevU&2JE||seol76Zs{t-#rV~9! z&$&RS@f_Z}@>P7F&TK^TPg%?QuCk!4M@e#yoO8jR=Y+Y?t5?JaGa^r$XJ<+Kb`*r9 zLuWx?yo{&`jS73C2o~N>t^;0mPNLBMe-|ZHXyd=iLg_{Q-^cq3ZTq0@&f`SeX!X?q zp-ob?LO9s};Z;urJu@;L7A*1`-&#LoJI0BNq1j+@5wEnhQTnk+moA}iUq+DaA~IcE zh}7a0Uy+r^t4OrS#*0_;m~Am)H=0Hc!sF^@-N4_Zw03>TEIbvVn zCjQBR)PpHv5j_GbmUi)Gx>V#wXNed8^LZA1Zi}U3ZJ&~{4df#cJtCe#dCLM?VQGia zU+yLvi~2Atg0(7`jvwUMXu|SBK)r|H$w!RDiG1gT{3MI>X2HlyLeKJ#6w`kUUq~Ba<$5QwOz55w zC;uPbgojIrDZyj8R&dOD{O_WNo7D`eRo+=pz7;k@?*5+_P}W<+$X+3&Ei4`2frAzP z*C(tYIXyX*TyrWc)hXk_@-vZ4r0a{BSVJPYs>m^AnRMi0Ec9)4rSu}hgCEa;FscRx zii86EXi%L$vyB!CB%nZUZl+nsm&WoFZ4*mvAQ9bbUD_MW3^?2WC5ibzGgEozj!P_V zSOj|2stgtKC^ECv%BX@Q^pzH8$+m*ZiUO`8zXpoNh??JWsZbRlRUkYmGD-#EC%V>6 zY^Hn3-kv7}{iJ_BNVBab>vh(4-FBT^r`LJ>ifq*#aG7$*(nW5sVAs6m-&R-e)mMkP z3OT-=4_9?Ld-$;af#(sJHy^mTyVD+e_dD))^rXj~J5baU2*Xz%nW*<%=_>Vot9;9? zT&bUU#M2dQ7CrCWAwBeW++FXu>uC>ncK{E2x*Ya=pg(fhs49#-WQE@YJg>;2 z7Cao6;rbN+<7P)xFT4|uDhx2r4>350L$>V}!fUt4O(&Z(o2am0ve?O|)a8eUrWy35 zU<>@?QFX9pS|_skRq1tc<#6{qyM#5Y)Q1JpTj;{$qBDZc5y;g>zG{48g+`vOtQ&qGrAMArk!a)lzTg+)LDw2{?RB6gIl_4Q7 zSzs%6>C&7hw@{~tI5Z+YLWNAU%;1t}fwI`8i)&CID|RU<&#F^xW2#gU#i4MTS^g52 z3F^|qbqPXjF37<$t*Z;9R$>)8-haA4AL`@6`|v*h)di|a70AJy5#%|AJFC=Q|L=DW z{KvdIyL`Dw(EO4d0}P{>-@|J160}hJ+E4dG?Ms`09Lqsc_}ll@TpG8U!eg7&iG z3zoJa{>Hb#2EmOax^$^?#q;O8c3sf#@^%%}!*+S==X>LAJ82gVfHYfUJ7IU7OMJ0# z_k_fSheHSp!dij|T~1+=5|b#~cH8#<8Vj}q4u8NYx-6~UT8ZgCcOS=?YuDG-WVZy~3k zQe7Tf00u`WsuzVABUP>us>BGWWjjm43L~miT&1ekSYCt?=$1=qfw{aA)HAklI4<9M z3{_Y?R^h)B-W`UJmmWZzTr%@DMpzArwEvxCIaoK57*?B?mY0&9f+X&g3`RF2Y>XWI z4gG&3BcLGkp}4p(zc^D_O&pCTtvNN%H8&NB-g4Vov38GcXJ!+_$BRq;*+pzLWtdZQ zUGq|tv#^V=m<+l~`aC0(Z(fTv$V<~o%~_@U$Y>X1p3amGx+zUgijgs-kFDw_N79jr zE}%O`DF;DmL)>3+Rjl>ZZ#MWdbA%yh$2LkLjmK_h;B_D$E>+Mo z#9#dCn`=b$$D>&~1DBHq^+w3e3NWlciPXhhsDtc0lbs3%3gC?7G#By{6KS-Ph7FaV z!Vmi^ez8dh3&%OQzrwl*ZZ4o=l}^`4?(byPYv^}cy~$rJNu`_a(|I>J+V>>waqx}o z*^`R^M-3+L_C}+5sknAVvmq}h+jO4{bjdByf`~mm3l8#bbnP~V%)o)l0Vzm8Qs!(4 z-MkS{>Y;R=jAoJWk!1D^5CknFPOFE=sHo5KLC|{WO=Jcw2aV6nWF3Cf(=`1-=98Rc zh&3l=ry?b-H%atk=yVAf^h;5Cyn;-Z5Z`84xMRsWS&xnmOlT(nU)Y~~3LsxE2Wv0u zQC!B)#Hy2#hy2?Zk}zKJYAO12d}FR%Ul17p7MrJ=-FGW(BR_T;&|krSCZ_g5wA&&I zO=w5q5=kZhfS?vrFY+;+NygG;OiGR^-7F`|#fAB~aH!?vYl~7$@W{;vjgki)1UcfU zI>ZP**iJkcnEJTD@c=WvC6gYK$@a*AM0W1WUZuqb1^J%r!`J#JF4n$>WZ!tjUy@Rx zL#F;>a)tjU+pI^{wW~Q*ouiV|rD6b+lYlu~YMT(fHe!A3I@h?}ajjtosXsr(B|lY_ znmt=Ry@`7)%gw>yhz7FuNQKg~Pz^HB36!%`waB%*JBd$n(?_6TWOZOd?%M zwUUh+bh-^nq8C2TrP&glpPxPeZd>YW5J~6L2@)bQ!bFx`tnl#%|6nVUPxQJR5RU89 zhAll(=#1B0k?1|Q5KL9C`? z3`fpM9+R3nItTeFCfpB#`kNIV+yHTMQF4LWEWkKj)aE2pf{6ibnt|opI{sn3MU>t{ zVQsSs9}%_e(K&c_-d18e=ZBDJx3;rF@vhRYwg5gr(p4#A3#Jp`q(!O!Uvvad z#&UBQAbw^;SsiYpvKOM{`2WpXZ?dwmS==mx|rV* zMM9h)FYbrFv#XZm>*b0-%lbQ@p2iN=zQUd%X!8f`<3`n8J8h!LcbppCM78AtK4Ck8 z=nev7norPHU!Se@EzR`}Eg)sWv{iGj98^w7|W^;ZO zQ+KT4%mdk7J*e)&p%cojTc0#vwJ2$^YT>3$0Rdaq`FO2eJcPdEox%8JY~AW7>tH3m zjazr>xMtnC$cqt-H^RH})uf-iRQwI*Bl;})6T_9-eMfhZ&mM#-Vs`zb0_xv=Js_*=hTiiFzE^U z82M-7STXHK<*U7^opN5p!bo2ovqcxU)mJzXzxu79aNL#gg1)nVaf{c^b=w2>Y|39) zusDBF!Tf#ence83abfO02s{&VOsT3;n^T$?(kTAx@sqy{%Hxq|w(N#$(U~}q-scH( z^5MCoH;D69KJ^#441&m*+fT2oc~)>W=~DL9w37u_RA;lUT)Fyy1W8+N?XnIb39O$w zE?T9^&Q~F{i`zawJ6~RIj`dU0k-*sX%|>!p4|b};F*YKtVeYFolKd0kmieV#JA*jTdztW>4! zEOCe~K3x`@u1=1VhpS3=DlZe)ZzOv(^$F!%O-yj1pL|PjVraB7Av$&ICK+WVn{tDS zVz|)qy2NJr&icZ-GG!ikj*P{OA=gk;C9^HJ+-7&G$|57wFR#oPg?&SDJ z+X+P0Z?7At9}zX4OI*Ba-4YEGPZbo&1PY8ISQb--a!Ky0eTiq7s2}vt9ztC6k>OeS z_gvxGL;KF;FvU=sLjsHfG=*5k6F24Q)I;lv7BS@$^drV%?~ZhflBHhLh?hju5`Qf0 zM*M-;1Mvr#Z^g&y@}o#7ydx&7Z11w0G=T{?i|CL{O^h<3T+;x*aW9Z%Hx%LA z%W4aE%6HTzhL$UfqH}|A?!6??BJIw$N&QYWC{6+e9U@j{WOuB zk190USMDEBwkuG%YLsQjj}obPupJGQv@~ol+aYhRiT2J{=0+L)ykv-klV@f&NFSw5 z=Cn~MF{(JmH_ST*YGS^nJ42Mw)#^RR0VJ0kH|;L3;da(GmmZL}H^*+NRhEUCHh(4S z4~A-qS8@3Es=|WmY|fBvsA!QrOBCB)TL-XSiD7|33DpNU;w?E)w5_4BFx-oy-V)2k zjue(K@REcOM=s{OFV9RhF%_8lFVNHZkT%3J3L>jhlIJdtp3H<&M;$!b4DK2#(bM;8 z!8chp`SRksDNH0D(FJ-kUyfAB1^P+|(cR6vbf)|}riM5gFw{w8Z)4pYZR{*sGJ}+e z`iLv%SIw)M-!!aZrU}xf)h|i4guKi56Ol^#h&`UXCmQD%>Rak1U*j9QB~%$5n!M>N z87A^ynKqS&a9e7cW838inoD=qD9dY1t++Bz$WwNN?E`U8RCEGl>NI&pTA>FhsFd*z zBW#?+Co?QNo(nZqCN;=+?5x<^q6BPJWLNnNkuN~|-NccCckXA4h1Kf}$bH+*RVKw$ z`^aeu^j6X^Io7BR3Au@w$~U>_AQhmK(;SSdOLkjOEosq9}%9YwB^6;9~-Ebp$782!=8)GFAr-GiWcQ(n{$;pW_^*S zkp9S17oFZ#8L5EV6lAQ+^ zPoB=4W5!eSy9*9e&%yN-kY?89XTz?|Hf0sa$vkm=QA`|A9zAJ@UWdbU}g9=81z6%1e-kR?LS(EJ3C(+{X8{e8rWS3rg$c zWT7}eFFggMxl#1v-ik`Io8zyLR9nRlWqG}XkH*!CrkNr#-|{DPFl_JA%ox4WH+`yp z)^tYiu`G_h&qdP#20B15qizztjt(fN1Gp0U-boL=?AnZ{##RmP(|!rOx4_R2;lRvt zy|Ov$uKwChMt|~T3AnDy$p9Ted4lo=G9a1^;Nr;p9w+p&Szk}p`(`nEnptLhSMWXJ z`*yOw)QVvLKntk+pV4YQk$z2nA-hGqie|F(qapMK*@a1%PNy@7v=aIY-9g+%Po}3?TQUsq7j!qDK)x2)5-gzX z6+U4Tx}a^M9+$~zd(7-cBee6cAuJDcAQF_U8!*g|5qwHB_)6ANO(*OiBRZ;~jCO+r zvX(9M*;O*2V+(mM0@b58%Uf;cSL8jLl{bq3Tgw9kc?ciUfylrMc>0%h++;0C59?^_ z6s*b=NFg&7(wFXn`(N#`(5P2vt;ZiWwb9tQs7XXKYw`21U3CQnhrJ4kIN^T zN0{cG+jHth{sl8xxPy4;$il!Ysypiai<#4JD_FzM=F_W-;I~?78>^>B$;y~ym(;kD zK_!D~hPa*{M0)uB6-`$9lE8d2>-WD-#}SwM-xxB-x{S?k&f62V{j00vo2G1|TQAYL zJQ^9%N8LO2BX9Su12-j&tf3oQ>H22yQY_NXJidV;qA{eeHxWV^5hSRDEd2Rc-G!F? zOS?(X9ul+@!T`ejat=v*M#T5X_b;b_JJq2Z!Z1w&z#){54yL&OMy7bJ z4cQz;<+JEW75%v6qx}ALpI+G9s6UdjHM>Q7WMU)SC(yqinLm5@oP zWR%zG*mL2#SCvMj1*L~Er1YhL^SAs#vhA-~7dcpGkd16W{G!CQI)=(JLVmp=8q~ z*daO^e1{F+(s$D*T81{I^#u<=KN&v`N(U1q=h?iX>xVo|+IuBoM?#G9mGGGUa9E;4uH>o%75_!~|U-Aqd0&-}PDR+3W&s zVTzd&1TO@6xMZPJGRPNGIr^u~IYq4%q9#e%`Ii+xhWB!!y*q^`cq_XP7q5M{P+fjAIS!Lw81FD_!hmRn#@kn{* zaqAB?-!ZoCZjNR)R|gS0U5++aYobi>c+Zv7S56NZtNr+3*3O)5xh(}P)h#W1_ijH> zafB&9Y(CHilQ&gRpR`Qn>sWoqRND!OW$Gs)H&Li#2bQ)AmZ=h}-+1<|vSX0gs-z!? zS{06Og=NP`t5TrhvO1ATc>dR;uUrr7W&>Q3>m7KtbvGLsTUJ?FT2@(A8WR~A8xx`A zKkXIKwXUkNYh9$W<2aqiF7fhOsA!7R)N1E}uRtK6rt0I&n$QO*U#WTs7%h@b})NAG**!(}x0pKU!uTDJG+bqWa!n zb9{&`o;~f=zGSJ_nk8J5HP-)?T(vitI*x??*_n$NUUp%)#WTueTwl$L*a;aAHLtA+J9YQxP2 zCSOx#tWfGDj}usPmbxM+5h?s-*@kFyCPV+Sea7a2Coe5FH31W112!cX%gnijrXp>b zDTA@Rpp@OP1EX%nBqkzG8<(h*er#tqV&$R()G2K)Bkg5(-Y$JL;(R>F(-|v{Q%nup=QSzxj4|RepVe)+{vW z=$_m@Y~c8e&AJ3re9_u{hkdRTG-R8zw-+`QG?zDHpA5!+M@^2lT%8RSXuU=iA2K68 zLKBo6kh0!5*I3->RhyWbRZ&`IHr3=5Rx-xSlF~v`R;K>jO<=|CX4m`uEe3UnA%qDr z7DXUe+7KJ1&WKNox|rE$Y$`d`s%z2JuF*|l63>)ZL~=z5^C64I<+o^>lZwWtr4%iW z&;%#PnoDZUwdyM#=}R;6J}%Z4Yj+3Nr7@3V=dR3Oz)0V>%eE_=)n3*{zsytZRPUg@ z8|VichTq65F;r)pTWX(gBn}(zgzt}NNHQM?K0BspE>kwHz$bVlQ=-`eiH{D(a*fRZ zD2kK1J7(A=>p(cHG#S%!(%}_O)oRNM1UBB7^iYN$Pgk;;(4$H+MrEx&RJo0jGWK?M z_?nn*c6PbBSyAOlCF-KwtZ0UQLAJ0N>U5(_Tbxpa7#XTErsovGZmmqxg)t}K6-rZu zL)j%-lNytptIjJnW#wb9OtZSO0yNionv^`HNmB?l7>2*#hUac;*{t$Z(kmo9lfL_P z*uCH*Yv`aAIDH(!pe?cLDPK;WL!D|XartiLoQ=7d+?d{)Q9&nP1N4OBsxG zk)xg6%k+vrnzAc1tIo&$7V~;OnK=0eMyj&2bDVQy!}*ZM5x0|WW?j#D;z{0{a>lb| zYQ+~iW|Mbn{8lAp=EaRP_BRg6q}}rSC9aw^V%^fkOM?=bfS7;`-Os<$w`g#7w{Loyr5QVI3*==YtHYJv-YE`uv6{dV9 z$5fQLP1}&soKs$~y}Wo&!XajLT-H<3WCVJh4muqA*j!mrU-!+W(+#-iRd(*T zc9AI;>3iRF&bb`B(Ouzr)rMvo8#5eA(8iHenaQ)*5c z2M}o;4@o+xlYtLg{+w!d)79q144u#a#inFH6$f%}^l#uUXVI@YjE4OPBLo4!P5Lnu zvJAOgKDnFn2YIF}_b&4;@n(7xfPU{!px0zEnRP z5xWf_bR4fPWD1TP%RMfaA{I!7&L4mT0}^J7VN(n=>@bZCVx%k5^3w~_@)Mfko8q^V zf;X?pP^0lVbv#M?8R>9_IBGD9pG!2>DMDx#jCodfa@n$*90N?w(aZ<3bS+)+30(xP zr$sNxdndOaxxxKyro-Sid2)Ks(MulYQB_JhutkIb2z5M%OM;X2x;x{qMzrsYMuRocxkbW*B|3d@WCxQ1@Ugpe)a*iIA@vflZ zx@L1-u_9HyiaYY1-gEijzn2k&ijtG1v^;`Fl@_Kk1 z>goc65Z4OYN(W}dF>x8uTm9tvU_JF+o0RGs$mxT;X)(RVft%fsDYHHTSf!!KGObQ1 zSsm)HQIaL~fcn(?-lo0e9k9wUW2HTOhA&2@?P51;yKGK#SVam~k#a(_V>kL6J~lT` zFUvO@borHJoF0^x;<5(^3zX(I;=o_oMP@U4M{hctI@qqLH+0_4ZPr`lnF3G|XZ(+G zo?rp64OjwOIIsk!RSG_Qi4!2bLKNelwH72p32WhUCu1z8KM`I7cEx0`*D3_yNH|-b zTCOhU5X^8Eo!vP9&@{QtSv+n2szn=-geEA8$EQLrcDYkiV@X|^Fm?D@)J|Q*RBsy& z+*F1tsZ(v7)`;gHU3ng{3NfjI9bN+f-|WT_i?;)1JBEK3S+kek0s^eyH(j!A!qVFR5`B&J zw9WDwmB3alB8e=0#RmrO@+a^7an<$lsR!%!tz=?K>LQNGkJVR|l_>Wed9d%%(pR(n z={v#R3_o%evhwvlIZ7YPS2&g+(gIWTA(+fcb|_}EFo-v6Tkmi3hO!2 zKpR=0&Jaqavx&h4aa}`>$zaYfyJna{;+{#{U$~I75_1};-8r!C8`bHw{Sy~q=cJOY z`lL8le6a@F{X${fk(dApSLsiU{&p(TuET_k528tag z!!8P$`hO`QCDfp*QCEkTY}GNgQStO!`qVaBM!r^%qsVZWj%2M5;N`-N;nC^j0?Njt zGlXP9szO6EP?)A-Auke{44@7j3n0yKkfe@qy5uHO39IZfofbK5aY8CEZ~7KF<^ufK z9rnvQ{uam%!oftQe|ZJYX#9>+xT+Nh#7=YRcqpb=qgJ^7p&-JFIr@*NGprhRz>mGzrS)dr&*TG`SIBM*2UMKQ1(`|v@!cQ}4k0r#s4CK`Z%E1Q=_c7) zEWPd~Nw6ANeM0LPQ5 zlcC$VfZXuxPYwMIV|1P%!VL8()|O}NOWqd1=xa7)jpXvFaYcY$wkdK}^G9R@qhI`L z4czD{m2vr~J*FrmivxRDomR9yK3cDjk1O(1f(}Wb3(dxM5=Ik9P6>iD5=k?pcCf0X zOt*v6l3`zO)5~sDJ*A($n8WCAtvs0z9nUNgksIa`N4+e~ezU)@50c^1g}26QsAO(P9N(Ub4}D_N0$n=IkIiPIaxNy$UYc#_Qq zdCiaVs$5fglT4Tj1`yJ?>mI(p`O`u=<>JqLb?eqNaO0Uf-Ge17{Jaf3E2_y@}Aa->Gh zp+^E4X|_8(5`@T(ESfCGA0C}KaDZZ`SVn_;*?|0D_2-$bfo?^w}wcFtr#iqeuAn>1>|i zU3o-YP2ThU zVb~ADtEkk6I$*QPr($zUQcKeAih>qU#43)E5djc$b0WQjvB*vI=Z}a*2X0{j5ptyc z$dpyYb2T_S`r#~QQb%SXNb^3}LR{r=^nS4O9I;p0Qrtu)mcCs88P#jH_hoePHIPY& zsEi|(NZwhD@%k5;wHK{saq#?NHwx1^Y!qEGa)rYAMOl)Pm0ynbLYpTN;an0!p6-|A(?X8nC_ z4m|R4{A}AQGLl0Y!eicrR_SFKsr19t1-SJAr{!1KX3^NXfhL z-JSS*!i&<8IF5cs?YNG|Vrn;f1a(x-Mm?Yd9E&hJ3wfc};HUz`@*j#SBOrj#eZlrl+U?a|B*G zHc1^7C5tpimnI?g11nPU3)2hbLdQ(UECd-t7q}dAiZ(DZfZdE26677MdE^yK&1E37 z3#P!5Eme>&05T=xzgEVQ4@ER;0^o81G)+ctkOHuT-2h!@C>c+Z?{fT-zgX(|F^%R| zi7M6MMPYK=DsdcOO-OTdwoMXylf9zn>U-Zl>&$YQF?Y=u(HzXP2!r}XM}>=jR()ub z9Eci{Vha&PnztoXV|47~q6gfxGkv4Y>OtBt0M51kOfuk{>Td1Drc=AmApJLxE@D7# zJA^t9>L>ql**Wsg8f75q7D(*z%8+;be9mo_rv$}pS*cup_2i-Bhff@I{rb|Wrk1S7 zdB+!3(4JLPQ9M2m>GY!7+NF*1ZOtvW4=NAbsyUUpo4J%5+O$+29IQ#&sysnv{q>j( zOC#d+6Q67700uWts307!ClPdAqyT{m2aY9N8Z6xfpf->xbc}d_0$@i^T++-~CHjhg zIsJrxG6(3oF+ikclI~8#|B7fBmf)wvI~yS$3Nh~jHr4CA3ou8W0C0f7oo!vZQ z$$Z>D^z~NZ26`<{>D2q~gtGl#0O6Q#-?~=BdO`;5`L#tpW!$B?-~xL6b9L)=rS&fi1NR$6Z9#QwJ!PK3Yc~XO zpEin`sw#KvlI@Dz;a|l`3*Y`uE7=Xx28R!j2Z?{OZ4&Lch^hI-%S}y9%BCjVgJWL2 zVDw0>a^^_NUJ|%l4}xPJNB-*9@C~<>R=rqH19#Juy&S?*FZ9YGFEDnE@o!?9{6Xt2 z*MF%G;D({v9=%C3m|SoJy|ftE__&O;cqN^%v@fpq$P=Pd<%f=4klmYoW=ed5HXZ%Z zIFGN$Skc+2rLFVilfRrZIW99UJ6?GL;P{Jumm%14F3MxiJo%)#|K4&O*6PTwM2n&} zE}bu%bYa20l9J5q5{`^G@tR(tBmTYR)AI}OmzHJ;TRu5{l8zTGtT?&pqWs>atKXJn zl%y3aJ;(%d@y$s(5nE1S%XgQqd{?3swk$;krTbaYxyl{wmt+s-otwyYG}B_XFS$Z4 z{{0%H6g~LxOL$I90y^Iz%&F;ZTUV}c$1Skn3vja8l5MeN5!>Q_n)}<5pXM@t2haGN zm6LCs&Yo%6aZvfwrC-nde4)Cyvb?;KAqvNpixzGQ;YKYQwPe&{CUo;WFE6>*yaP3x zm7~v$I63+(v%Y@m*%LBvOpI=cPqnUDCJ>mK+K4YwUtZ#QZR0ckK& zwEms}aWCw+z2oXP#3X9^yY8DSGFv7D?qfSfi6XDxQr(e1eOOX|PpQq+BG-rECtI(v zS)s;|t+FXmV>b!Pmq{I;ibxD`g)>1HeOKfw#qTkbGx(AaE@;BA;>oy=p4I2)*ts|`qSlW9s?e!h~^c0<6P^2oE7D+Y-AoqA~tKyQRIiO)Px5xsJe}_pBCj38_;2xj!)&ukuPU6l& zn1D!BM5_>r_23&l6>k4Rut)s6Wf5z;iFCBIICya(%WKSzQ`&BlIWhFQi1tY#hY&J; zBPVajp>n4bB`?I0fwN4^=H8;?6Qvt6^sw&r>D~LkMc*e%OiNBmkR_Os3gH`i)NlS6 z=zgctf4Ods2;Q(twr1O==5TJYZKe(o?i`J)rYp$fAvT$^a&we9xtS)NX)!<3rFq-7 zJ?*lCp{<*%xI7|nCEZT9TYA$CE?LOF%|vQrR`>o^q5Z;aQ$Z0}3ic{2Bgjez%S$j7 zfSGh1{@0Rs$lB}VUsp)?dl-21_(GGtH>GWs`}ky=kiabi*Y!x6iV-UfWGoqwK2AmG z$H1icY}RQJLmbWygrS8N~0G4O+11aU-AuV{s z+rgk@NoHv&9%(9yfy*n1o|eP^;YR{7U8^L*vX~5dIoIQ~l58ekB0Nem`uR6>que$H zNP!o&DYhxV54_-~@Cz}uyUc%iG;OzLkFsM61aL^heyD)V0{7Ksd;SgH1dv${)_c5& zP035pr=&36-cyr2irFWYWExPV9Z|FLkY|YAo6*zjETMIZ9#;WV4(`Adi{c z--X0JsK?^GfpNywK8I-QFu;(8VR_EM`WZh2`9n}aOkn~7W~+dsnw`HrK-slQqtPej zY8cPMKd0Br>wnHVd{~*At1r+XpQwb4fUt`bdDcsK_5YLI81CyA%VotGLGKM`?L6ut z*czC?x{&cD#?s7UZcAxcbDQiGB0&wcNm1q8^+P{x|1;|xsdPcIQm#3JEMD(YTUcA# zDBs)cyMDbd{Fu$WsT)-va2uF8FdXF00o7#_lOzb&0H_5v)2zGZDhg3w? z)>c;5a->D_=IIY_-aH-GhXXH5It^v9_ZUzN*^PSqH%H!+oZI@eRz%;Egj7b>bQS4I z221F>ohYEEgoBrd3>xMpI*5yW9}m)Z|NP%~upYErX32*O$nrBHfNn?}U5<2y1gOES zz;%k@I_xA%yw)sT>eY^zSuyyJX^B1qh$OYZGz1525-iunB$4BJ39jC$Q#g4JBwjzU zv|fUkmr(E&2VrZvd@=p-yogpxXc7qimk<>Sd*D}%Q_dtMFlC%Cg)1mHrA5y4*;DPkqP<-@NcgNSZy6X z3Cr~laHd#DUmlmPu_O209G|gt553I%2Arn}#zGFUJFShzS zlJ#Qga%`jPC8TvC+c94veR7=KpGfc1@qDB8b1_|SYZQvLqF4v=sVCBV*wSGAT=LHr zoX?Mz_se;n%*I7OKzwks`H)q}DX(_0Zs!ZxM`X3)p%NW~JNpoCA1V2>w&^VFUOAjj zpRU`KQ|Jq|FbVb9AhNtKxtDdP<<$9Iduk69A7zY%g$BgEKSc`G06I&k1A0hZ1t+cF zlw0t>1@Dsul5P7A7ao>lPSdqFZzZ#F)hco$_mzOty%$N?pLr1(SG{`j2VrRZ(V`(A zN^jV?Ii7{LUssuakT@;QBk#Db3>A^lU+igwRKSY$sp=KV%xIzGSevvVz@NJoElO3T ztCD2W_f?;hK^J?==E5B_VBS__#(dsv;0z_?%T`fERzYbwsI*HW5~;#JErKi4L~oBk z(kW6;mD0f~|K!hfI~Lkv`?y4>C&fg|BFked>-lNF7oOrws$5lm3bXPC+!e+%@*jxP zx7Q9R^O5#dt~IWrjx*BynDjt{Z-6XbkLR4zY^%wzEyQAv(mEDvvaas%tjG8PaQj?g6JFwn2r%eJF&Yu@W+WaW`a5234W{oNY^SR@^D#$9$%Vly+phT6MwfgjIWysE>;lxf( z?7rDvvr{R(RZ;+_u!h-0By4W1MxCHZO4Vg1RWVgb>Z(QZMbVMrLCURRsuYBFq&4cI z%);{0^3uk-24s;p6l?3`bq(6Y3Z?XLMM6PfZY%?}#GUL{v7c;Q$Zc2@8nG&CK^Bt8 zmrluKG6z9aWD}h%9~e-yZHrP`v!Xfdq~W#^Pvv`<;Epg5Pb1(np1&j2?;&P|pWc&8 zcRbuSdbv{Qh`?d=kgQ#{gBx{fT-CT!%bP!cxZoC!NJanUyK24PxLM00-8VAx{OC_~ zjcvBfHivhhxA~zk%>O2bc@M5f74fq)6MuWSLHsN`!SZB1iEK`!jt!+_Vd)H^Ljwan zJtyfs54(CE(cL?8I6vP-*qW3ydUPOtzk!NeM?}t^I9Nu-&xaGyZx60LujGg$aBhuH z9yd0+5bP^ha3W}5siT^ znBJmYpkc=dr3G6KpN0lCcplc@KYZBr@Zo#*j&3B zO2Q$cg@S@-&l(8pM=WpzBu=M5Eu*N*qfmCCv zk-l>zHZLJ}OHo{I`;GeJS$Vm|hki!%I>%52E!XT=byx}$ma--=CL=a|X=IQ(NWCmB zA~hm4N|%(*7-F+h^|H*gg2cj%qV#PBb7sD=405~1tc-%JtgOtFg%vrKx!={9bs0(X zXwS&aOw?w;`#uc~iVF8y5|@;vZGax~j>;3)$|{eYKXAF_BxbX@8K+kltBciV{RCpP z!{J8EX4dnuY+(lSUgc_CU`l*iLV7@QVn$*{P*ysAO}+(*RS{(wCLL2z1L0+5aZXL4 zx!jnQotsh0fCYkOKcn-Bay@{gfwmj0wM1h1k|c=UmP+{j4_R*v3O<+D&~5{^lK_6l z%K$Q`V}Qu^${NA)H^>SwzDQ`X8#S`~J`acuiuQ|l^`zo)ar6WEK-#mdeWWrcadkto zT%D4l(jfMqrd;p?SvK#D{0DKvj+~qZB|ML<_m8#CaXEo|lkBtJ1uXZVh#w~@OwLm! zcXXrvS`BAA2^}Vzvt(S*f~X8#Dzt-BHCnAMO_#yEy(rNcbUJwGa?|qUX0U^#<(4P` zUA7caoqz&{J4i6Qgg?AH)G7N49xh=;8=^RPIj^A3UF@sG+0zN3LnXu!)`3WpjF%h_ zxb3}*6YgTsF7IjEzmj*1xg-Qnd=!?~Vkpd5Op>3MfB)Hjt|R^-YplWSuHE``-n%#NTBzUb4Txd1 zi_K9?qe*nv8dvYl`h~kTlXlwf(s5acNIHW;3rovogw#m8h~6a=5RvTd2@Y8YOQrQN zOL`9`xa5>w4Dv%q+WR*M5{)D58Cd$T`hT%Sv19-=C|05?v|m18FdYC%iWPX+yB+=G zSB~fESgNHzz#9jtg-3qBDiIYC{|JY=GqD>`Y*bY4j6oNAR;YeU|Oyq1AblpirOoIMMPTk zC4ni-!>U34J>2>=UC}A{5lnRTWBMWKv5H&MaY5v(trNJuJjBg)4b58R8p{O{>2c^W z!d|OEwbLaoLg0Cc71WTOhp`q7M2PYDb-XXZjJA;NSU_?uo&Pi!UVSZlV#}eGWn6~` zJSf=-@tN`R`1p*p1Z9T@^8Q!GY+1ET2GXR}wd>jTw)%b)NyC^p<7ATI`*bEJv3a|o1t0M!vfI{dm zv3)@o{QJ`w$*Q_F`y&P4c({lZI%NV&Vl=uMwMJd0PFU%Jm7@KXb?t{>>Njf1B7_qB zfC(OzOO|NK;=hSMrWuX=R|M!|()fU6Nt^B5Boo{mcfu~P<&pO#q`)?nB|R@rqwnT} z@>fi{=iR$Qy30#!575m_eMAN-Ed#}dVnay@a>$?|9D%9-cDfketvb33NrKDKJp_?H zzmd)0*$oj-2^+NGGr61f!Vy;bm5RJ1CnYcfNRPWKa0^L?Z=@n6JwWaV7zuiPcX_IH}UZON+LRO_5sMlq&wZg39#@y4S=i0 zg#^;+H-9HR3}jx`U7V;h0pulM#IvH6bIWI^HkGqe$=7!!LPEw!GMN9H4DRVB z_9KI(?QY^>aGqh1=|=3~7m-7e%pR{`M8j-Vh>2l6k;AXuk>3%^LV4N&zseyKPJFi> zRJ3hzZLw`}uhtXhNZYHnS1XBRKwH1PE?H$|#xj91wR2~sxBXYAz zuY(X&1i2$3D~(`87(-Udp*k}b(B9-)}y#>O0yJzIx5G8eo zH}De)Of(jp5u-V)$3O+u3+g;F@Hq&wbgqJrL0ICG9Xe|n5@fN&z^jei4fpeksGcQm z;)l{;%U#}qwaqA*TA-H&j#^H;wGJy^yU+7jIzJ)E#aLC$JBn-{^53(znWd!nSkYwq zf$u!{jD6?rSso-bc$e}da)T}ufobDk2QMH&svkYa zMyn7Z0I_MD&3@+$z3gcX>0WW-huXa*7lXk&OZZ2uH2d@akFocFi{fhAhgZYQZZ^gk zmm#pj&Zw~)V=S>p(b!F5Lu1E=Ac7#hvvgP%SlFfa-ocK&ml!ogi6$l*O;6OACzdnI zS$zK2pn2Z+`G4Q{`+ctLPC4hynRd#3U-xwpZp$Yq-~GbuM8P%;0rP%o;85%dPK|2< z9r3O-A%yrzFUuBRytGiSmEBQc>NZ$12w>1^sjY3k9RFF$B~jY6O%1Xz@G=o4tQoPLH-Xdc zq~s>&8x-On9iN#UBYY;mxova^KXH;i;yp1XCL$@0_X(}4ZYnLTG>PSZ{GR`Smsv5~ zr=br9Rf*nLdyj1AymtC+i_m9h>4mT8>vYC3x|AP2Au4pXm>e0O9L0P2)iyU5RWw<| zs=Ggy$V|!W$ck0(kdb0_WKO7`{6reLjoWN1R7Jk5hSij+7iashS zlHcUrv~Pb+6@q}9(A@Mcl-=>cBzEm!GDED2Dhl1Ig-v)EjASyot23*I9G|n@mmE2R znA6l$KVJk24xlw|K8!8XHkLH8RX+5L?OTSPA*Yn->9uu69-y9@_67zDCJ9MN2>5_}Qf79dn2ecxmbN=8P)}my7``0ohB1rDFs8fU}aav$ITQqfkjw zn5)38nGIlu;^Pw%;>8deT}BNIXu{3r>}-osC?^I6EMbYykGkL5gUg9G$HgXqI}66c zv@lyAp#&LXjoI-z(0(%K0RJxM>5#T^xpC%LJ!U7}DI;v22uDm|^hR?$ED{!TE>f1F z1~(-WmuHB}iQ)CJu`yzVEu)AgF)>C~(OiK( zH!4c6j}oG6*#$J7i8AKs3;2TE+yZ1NB=OAmxJX3?eI7<~F)w@XYwkcuHrm7XSuZ&Vsio+*lA* z%oi6F6eF{oJ%Z`HU&;Y0q#+vm&X%q5QQHJ!4umOxEiK>|ei#$vDh9Y{ftKUK7zlE4}-D2Hvcv!eBv|4sqXm#)fLSvgO2&<(1!H|n@f@QKt z4e1$~7_>jVPn5Q)f;|7RKjjrns!!H^Dh2+omWnTA9r0;Hb7xPy_sTz-HcNkP%FMngI{ijvH+8SzQ9&w}OCV%MdFWa>>x z-8%M$su;&43xL`Dg`0QDtiQ#lyU5^1A{MILzQ4cY5`VI=tRw>-S$bob5n6dhLu!fv)HW)Ool9y=N>pliYIJHOkhLfz{!H4DoH}5cRJ2dmFs`t+ zu&xlReN=5%>n@jm(lWDs(a{aqZD)zkNyv$p6AlX-<~!C?Wz`mO#_p-H0q-gr+Vwdl zt3}eICNv2H5}7s?0#efCZ1O7!QTNy3iaWyqhQ8)xztQZUwgqs8fM?JtJ($U4Gs`pb zjm4QoPGq38A55Yw8ED%tC&-9)GA5+QCu%d<^m1c8!z0m{%(NO~x`a zo|2}1^H_k=TH%bSVLtEAYA9`ga)a$h-c86!%t|&p!PT4rS926QiC=cI=@;$&tIo+n%Q;&>mXaW7*rI zy@hBz4;y6uhAF@Gry#F*A~|qifN88T<&=y2%gYX&(Vh(1=TR=?1^Z=zAi5VV?>;D$ zuBHcf+W)SGI1SGJMEB8fkvcex96IE#*+<7{zDHEJD@27lEy}JA$-+Ikd-n-MQsf)k z{W^uJP4TX;bgXqT$>->0a`}a| zePdUl7W=h7Xs}RqM}SWF`{op z^4`ii)#YznA3V}N@_ex1TOqJ6b8lT`ZNEmNKK2ME*e_C1_AzoM6X`6O zm4_Z>-M7n#;twq`Bc63AFdV5sUoHli z(Ey~Q2U#*gm`cYEqW$~#r^`qrok>2OCH$65sB`tfr|UBp4j_|y3-z3)^~K7cu%1F>p))fT1pfmLYP-DB`aKW7V}G%#fGiG2C{-V zi#fw<%>>aYlb>~QNaqC~kOShoo5^d~ClEPT*os)!#o8q~%Su)VQmE|#htq$p`7D^1 z&`DwU$uqI%`17Z8N={+}(l5nC`86+uykN`(fw=oR;#q>p>L=wxkYV+3}*Up#a&S9Y_LuG?BnmL?Zyna|hEyX%4yuY8!V^prJ6Z zE+&3ZjlHOq0}}9g@=svGMdAl7`h({M5~{R~`;c}}YMZ0A?UdfY%zGz3Z{V{Nhj3=* zhg5|0EhWLALXE^Tq8R1;pMgv9PA9gvB&PTa}!0kDY%!Pa``Iq#% zw7k4bWy(lQ#YC)x&IB5@IF{}KPM%uY+W`fFC1Pzz^Og4YzG>|T$VfT9ZRCM=4LNCj zHi+9~++^C4U3}M(4z8#6H%2~Pu+-77(Z4yk6%Lmr+X!S#z?AnEX^nTX{UQCv1zw51 z_LcUlyla(Lgh_Szdy03LwmL0sW2Y@4@R-WZLUZkvWwmGydVpr52r`vTP=KhJ! z=7K%_z5KivoOK)tv9RfMFe1)gRusRxC1F$2CW8}P$Mcn>)eLOgTd-aQsi?bjhYR|2 z+u03ALDVze5s>?>2Ua#N&O1U99J9T>GPd#CyiyXp#UnIfam-5Zts9)+%Nf66^|qx! zA2^YyDNLMSlCO`}$K-2)Vr%4-@()^;9sngW67AY>+~<6Z(;Aw{BsMlDOE0N2vl_)U zB=LOS@rGRokcN&waJ1!Y`KL}a@>|AIYpQF|HYC->L8&(CTgH}#KzGdXTH~n!{yUKd zpY?LAXsv3lZMeM5@%N|1{stLb7k<}qk9l9_KBLNd4fZ=C0_E@_VTGk$rJlv^`CFVO z`7)LB^WLAKoe}+h;C$h>Z`78Et)U)HXT6wHd|8Ww0pk z65Aaz)mVQAitn(mEPRT&P6wI!_z$$-sj`2jFJ?!J;QO3>kvLu;pFvNn>kbqNL%CCn zvNyUdk8@piDdB)DSJ!?t@093)+2rBC{VSJ-xPSa{#rD$}!YEFawH_16`~LLRHlq3J;DOI8gbd}5 z;+WcIZBy2srUI;eSib4*MGzAF{5@g!?2Zj>77iWCFFJsbdF6TA1TLdG4UM_vtgK9{ zPN@{2UKU){jlvmcDJ9_Az~#4GT{X<39$~=2r9igH=`81!V$#RS6pT72GT?9-Kp0!jKrqyLDFHaT>12N2&tX+v4zxs1peo-)K;{s#9__3b z{Bk~;-|k4iR&e9q3!6D-VD8U9{ZM%I^ZPMlfpkpfCU0LhZmh?N+ut{R^6Txkxh?|w z*RMIhIWt0B_{QZQ7Ikx24Z=Ws(cmjo{A-(-to%4o|G`S_@^ZIBz5-bGdw9&8LwjlI zCi3x8n6bBzQP)YBpt0AJR@=}w$w=*~`toBiEKY8GL^$%Ewmz{gwpOUks>!agsL0i> zDO~cwwDyBq$%^N0ziFR9{aMpS!-fr7+Y{ybG`HmS&|GAt2k4%Iw!7=M@H3*XofkE6 z3aQ5(WnF!8Jr4`!bfqRme>(NF8JamEtZ9eQ$49Ffpr1ZM3FA3ks>~=Y%P7kOsRfU8 z$*J^_QnP#momoxaBVHFi$*Dgn*gBl;Lb&V8u1%e?WcIY_=jYrMG#mPTeeTQaV(-K1 zpMZgnk(7UTE`8MZ?4y;BI(3gUUu%A|-tJtOXuq{%BxfBeaJUoko~~=r0zMl_h{Q5RZ!FJ=zRzoee%N( zPekc;Jx8w70#ZP))2{$^#P6tzQTrzg`8yk9Yx3b@6(xIL|`(=q!`i+2EmY& zY)IlgQUk-i6IEM0Vj`BIFC~YQZrmlqNS<##e zijUmzKSm`jJ$?CN>o-leO_`2}D>fL#odpNp+QXkICB0k8nD>bAF42I3EYX}^RZ?54 zJ+<@1j&{gSts*fi$Okm$Pp6hiBg)4DU_lk(s|Sj7$`lMeqv(g)kZ}D9Fam@JhpqS3 zh8e@N!-02fFb7-vlLOC(VA9u}7r5mf9+fJQ6jlVVzSHT)#%jC9VtA|J1t~UI` zRu6&drA#^Pa@XZZcd8Bl<+QKKX}5Y{$MdwOcFAc=WgU!zAJQvuF`+kqlis9NZ~&}< z%Vi>ZV2$`b=%BKQh6(%STG%gqWrZ=lQj9zje;f>KUtp-3L+)2q8qmB*KiST4pU2K7-MD54`My$OH^E7lCr--x$06?Z9 z&37l@P|~S1_u*g?n9tSZfll)sc(w);@4+ODCyRArmrUD!Sxp~<6j^hB8uk-ckjH@Y z4eDfY1X(R$@rRzoMm3NHUG~>>P$5&3SJ9Z-BOt90>4QIw^eq`H)so(QaVIjYuv<*>vJ%o4PO?Y?g z*zB>qN7QDY@elVN^ATHv(*|wT8W5$VhhtAKq(n!j#qeE=SWPLGGNMI8Zdy*RR_mX~*cNM~-=m2mKQ0+iSF4r#~-tQ{OPBJA9H2Jr6`U z1e@UU2<+@2f%bRg&|nTg1bgzB#j<5TkROsg*M%)Wj6lp5djqjI5J>%g&#(h4)CznoZp1{9|r$uDqn}9IP{{HLclK`p9`weAo^( z8IPTRAbwSS?+^0wnd3p8yG0`JG~hipYst$9DpKS7d47B^TUpWOj{LM2W5nPjEj}&Y zkPwe^l()3)K3;JKPH!ZarAe)27;SW7UJ03HL@B}IHOblT2pMI%WP%J6Jg=G#>GRIH zT!B}_R<9^(w|?~K^$5K5*9S)KiQdy$uy{Uu(y zR9&66&%fG9<39Iu#Hl4S?*HQQ^U}(r^G5&T7~QQa7!#cqk{A8UXmDRa;fgn#$y_K@ z(s1s%`rtc1JI3S(r^Q5*-*i8};#Ch-^^bIGf z&HI4ffQnz>zkXum9$ZVOxzcw=QhUrx5m1G?%6}`!NOA}x^o6oY(f`YTO=mrvu7Rt7 zo02+Ksih9;x(d|mI!%INyc%&Xk2y)hw$<0SiG;J|g1^_Je#b5Wh*jIZRcg&e#s8h{ z2bb|^Ynu~M$mCfd2;&`Qlo zQ-e-AU?(4f#Ua`R$)45t4edTMT;#xu$-t_POT==CblCe@UGaud8i zvyKDk%}>|+0J_|75lyw~*yOZTt89a81050M6fF&u1|2(^c5Br!r&UL>XSHphZIB}! zPKEp6vO zhgbd$x}}0LrimHep2@Bug&{@3Wyu*S_=J`ESk@ZoOUcwN2=N7dRMvOl2yfhtyq)*i zC%e{DrPwt}NhX-MrX!xmS8Pp4l0Pcz0_DB;zZnB@+&9=U@4q)f>{_5qFvXh^Oe=PI zu54O!X)5VGoP0E$uId_Vo!n1P?yC}w@FKsdElDm+E=*C;0YFW<&fhGMesSru8J#emS8!Tlt>8&d3XY?4CSrcC#R-m_l*rVb{6;`J@&i1$}=l%XU4YY7i1Qi+VhhhsjS1Pg6nQ);;#dA z_wjtQDhRLvL+P9SYqfWfQOr_`qq{`JUG}UGw%_Zl)%FE0% zm*!i_Q>(#-2+)N+KB;h-OosafLpu%qt6OS7_PijN5b{o4=(X+9YumG(_I7DqShv~( zv?rVCE%0<%SQz;Jzm`}HqeluLNV_^XvIVj>@Q~sV&s>#zbq-*Fm+yaeS!P9rwzFfg z`dJ5#C$|aCRt2j`G|3(tr6zR4vkr1l2RZ;9d4}O*gJciiY>)lU%4YjJotAvA1}5r$ zwMVIat-Cw5_gn2p0PCp{NhPV`s_<|Qtg?_U^^<;d=6O1l$FyqZ;{N@}U0sz>`1B#X zFhfX>Aq70CA=O+Z`ow`%W+Vq3ZZ56-lV(EGfmRO1%3Klri1G2-00QmFN+B0xE>Cir zM~s>{9sTYkF&UA5F#J~Gu$BKgEbvuXwjQvmJ>}_BTMu+6*nopqn$4Lea6Y<`2$BxJ z8>DeAlXT3Sut7{h=V<18lT6$c^jMKH;ALs|DH649oN>@Lv5a!*utlQ+0)ETy5H6 zHweRXtNqX5deZ+TgMXjBS*hVNl#Z!YGF_i5LC38s|v z)R_47F>aA=UL#jem^pXy^kHsP5imJyV)FY&m2u@}!)87pB03;N45M~o^rh}^yKs5g zPUV|i5?IHROtz)2x+PmoFFZ~D%q(SEvargxvjl{x=&EmD77MOtd=Y&C#!Apcv~uLF z_dql;;IvRPZ)oWT-u4H(W!nySh>1lycg|pTBvozoRN`j6pJ37CQl1)s4nI0 zYr4!|xL`0|5bqlA20%Xx3Q{ENz!h>jvHmnD+2B~ zXXU?T%$>3wu9>uiCT}uQh&de}5b16-I(O(TVwPlvv`gkVGxt}FNm**E|7|mW}kx1xyubs3w(V2d|HFg?GXQ1chGgFHWi3EW*nVqRJqJ5 zD%m39^{db`{wLewKjROdC_PXYT)v=D{Gf5-apSLO!Hop6C=>ZhC!(U8Md`gF0Q2Mn zz0F2`l?0ZK0Qz29D4&)P?mJbWGg)Gg?lAj{8}jz@2roudYR49})POgYPcF!B_P#yw zu6I){fX-`ktVg;%$G3>`)A~;vY8t+)Yx!kQXl3Z(hHH&qHZ(L`PTliGedBj^d+IMY zd|TfhotsfuMs8^m?u}U9`N-L>iKC@-N2+ZU*hqG$Tqh3m8NzFNo>C}ii;NP-liQ4M z{EFRK9zO7Ky)8Bez)?osj5Yz@i}hf(SZ|aBklwhdnya|ew;wbhAf$x=Y)+eDTT?wR z3~Mbzhc=v^C|d=6lBIWO3E82thIMV_!c&S9AU*)Lzl`D(Wkonws7#6m_#iQ#iA*Uo zDYK%p@)=VI8)N%`>&A4T_cZV+DH&`xft>uMjk8NOF@~g+{47=z*V9Fj4nzfS#JKeN z$IxpKmQwl5Bt|o!r(WSqU;CU3C=9I;G4R+999_y!qWFRu!ZC zaJl?`ilGYs2)X=z;M*i)-sfP=Ga4aMi+?gB9)475SOazi2pA*kot`G6LvSvsMpgF@ z`pMK@17!+5gF%HK17wrr^8_g*&Jj7})B-Z&5*Xy-@q(Pl_l{Vv3ich~ILC?=;RCu;|@0jA=(QoIOAm|vJ> z$rTHNn5c-*q!78zihi4S)EyAzy?yrA)$b9=SOW$u_fOBf>|Ap(-!O~YSJ%)ECeI!{dzKX>=?lcD0LHA>!_KDB<9!GS z58t`7IJ`>ChhjjkS%wcO6a@h|0DfblqLNXe1Vtacn=kGHNuA5#8Y=X-H*wwf#;0N5 zzJ}*_#UkRapaS}adF)(ecc#CI$jO`fWLXR;S#rIfS2;8mRhA3tGkpi)>z~)S&+{5% zcp`Go%ManVJ}-Y)8Sc78yo&PsC=~UyHx6*Lj7x|17v4ZT#0D^S4pjisWdwpsB?GCt zAJtU(QN_cHhgj1CjGo<#1{Gw$(z^e84McK$y7%_Pa=NiwQcQj`($dp=4FWzZ-6(YD zmEWFpqYCQ)aN3;hetzCwUXp&iavXE?ATY@X4!%F*tG;PZE|USDHC*0Lww05dQtRM) z^1*@2mblww#3jvF|8^l)tZBH4ClyW6je%uCS@6#6jeI!uD`xlCnoAI$h%}Yu`Hf9l zXZEklNcobYDX4gp5Hh%w-Ct3HcG7O5i?emv0&aECTKDaOrk|t2Z~IpLDqi047PB}m16jnzzB8x&_UtU&QkeC;3 z786X-CVz|Sql)0FL)udZ_nmKRiSe%!wz)C5S^CoO2y+PU8xj#5mK(b#O8m;NB4CA< zG>+z?b_68(@+kIjC zt9x{1{T@0`WV&<#_S10>RkkW+*RR%8Zph@xL*zD7KVha+iFtl)f^9D3?*?X!6Q3CE4sSnm93W)M){^%gW{5 zXRjad_+X`<*Xmdi%(jZhv>(D#t?zMPExs^QaF$f;%*Bglh|aW^a>n^Z9fGq`Vmr=X zfcHUaAXRN1=bBHiJ-zPq$ET0LlD+!OsUOFZVF_oJ5fxP-U}P)VN?p#lo!~yjOAR@}bg8mmFZbL zUVa1750{CqvhuS<@QuyC{8@F#=jJO*KR^7`^|WU8EYWM_FXgE1A6z?89Ha_Hs<%~g zbnGcI;4~UReNQ`;st+A-6jIAyPGvNT1V=^B0p;HtxIdpV5THTW{b&v>$O<%33jZ*D zprBEt^hA@QnE1u_Y(+_2fJpXda(=;xv!2W%A>K2E;*(p-vWjGXkv77exwCuUgMDwoqB@E>v!VGP|qt$=_K9FeZHm~JY$MJE^xI$QUUCf}%>t00UeQ)wF_SlkBU{8qtPlnn9 zsUhWJ1#wr_wI-no zq?dIv+p+kQe;(wIW{Ngm`3-^E#CvQ7Uf}-yT}Gp%cARBT7nL5DXf=Ca_<{S3RmIlS zCWn=Y71*UxbnkKr!sY3yP`M}+CCz&>ckv{htwbT%FW*x--H0Tz8#L$h4!!aeZEKL!(xzu{}XVwvqYg=^1ebL~K>W zTWOnS4d&+4sw*sJC$DqFflht*ytbk=qgWuXoTU!zs*O7ljL(rN-!9Pxhb2b{wC@tq zmp#{BaS7pwh$h1Wjei?9oubU@Bif3R47lIbXJIv5wc$n1n@iy{OhV4rmyp-lrd`=} zr6QeVU5eu_W+_V+GefBbrX$1!4rfQvZOjh#V|~-1-!4XeZV=CZpd7Vn?K|W4uKP*6 z-u=#L*_!Tm&JCd_6nEK0FF#X@e`V#kgneXaA$b{wbbHC2yw&LqGzumJnn-JuRW0?> z)duf6x@Xr>0r2o)2#7i0p1w^8V-u2+6A(JkugS=qXv@1Gl1FqH64wRqIwB`_?yQIJ z{g{sSWb}sEcs<1G$Qd07?#2JWNOL~^*>%Tt2gMV-J@o)aPe)qxdmc(t9 zA~~m)hNp8WX{o6Q$1>aOm_%q?B=FPNgv6}uysN+E7K#bw?~!1WHajajTe!~VSQ6qg z#CAIT33-Rf%FNEp=D%jMvl0?Ssn1cl8Y(6sH8C-spTuhBp(42u;6z0hYCuV1h#`Me5I3~-OWy<2e!qF1r z;nGx5o;zjPmbIP_WnnMrzDCVProAQWxLI^ohD!PJs6vXli%_{S4}Lp@dfdaM*OEWJ zB+*An?k+O?Jg8wHLfi<`Oi$1O*=tTbc4ptRzRGk=oIqo?@i)Up!H;t}hx8+CF7nGaQEdo_5lfwfOw(zSwa?1S09aWKg z&T5J8hsxr=51C7FZd^G-`FnEUnlqOk3vUna;TInWY2x#AI7qzSQ06RS_U5-#?B^{O zLn`Q!MddDpFk;tm+jgboP13p1A#*pm3F|hx#%|?<12VG%MLI%Bhx;>DCnYWzab(SF zncZ!>OAhddcZGY_iVg0CA5GEPJjq|2o2Q2x#>@6@o^9>zt*!X;bQ3|bY31~WZH5Ga z8rckQOHfg?3MEAslqJ^lM-Jqc?GlRyGX7f^M=s=NFE81(Rn(NLHtr3+^u3n6b@O*( zfAMJ0#%7^uW6@$4#3Eb8Er{x(mT$?*;ELeBR?D~F5?4?uvkq1lPV+@qW7iCDZyCXM z&XWGTW*5TCC0Ag5U)HH?ja`3n57b1d>x>3XFE`0twr+XekJc81T@E@1t6w30`CezYOESE;Fuu!J)6s+O7x}Sju0ET4qV(z^mSEN zDocj};`%@Je^L9p&Ws=Tys~m#9kbQXtLX$z#XYdw!PFM7>q{oV6{0zz`ChVsOk=Xn z>beHd_e&t;h7;v`VsV&^RjccCdA)n>#jb5+cDz7eVG(~6C(c%WK%M>GN7$@0Or?l61Dq7vXt&6#J3bI* zD*=tiW$n@v^)G7DLy6eHyw;%rM{K~S3WTkjs5=Op`;(v(1hJldJI4ays}pgkjcVb4 zy#AtG!mBz|a1j`7dJ)b#2#~Igu0dQ^<+ZSa{5T#1mqe=wv^;IUhS%HGz)%b7_t;Q_6ue!g>4#Z3{prwWXP znWgXxNS#KL!JLxel$ny0oy1c$n~)F-MI!yO)KKQms*%U&%RH^5J7MU#MkC2<2p`>! zE2y~f%|$W8E7!L)NafjhH0)x5NoFxxng!_a%jA+AFK-XFYqCuZ@JOXIgR$`IU{iB5 z0*2g|2GAhKHy;sJ?F2aZ)?ai^j|bQu+8#0i0nyvHX{no1HlBkL6aGVnxUnrw`BhaS zfYuKm4|oD$T(b3FIw#~00yeuZ>0=;na^X(SbiH#YWJnR$&Pp9Xe7GX+;yKRb8EUZz zpyJi*g0_2#U43mgn8nMz-kYMOQ*p-zlK1XhYdH(HcZ5U|5bJ(JhN`L#mjgxf$Ar({ z5uWvbhGK(asnh21)L#`C7aZl!LvHHt>a8MZ+J?|dMCR-vt3f-kJ5exPr9JE4y7BQ} z@U6jAZRtTas_p$EfEnQ=R=0|Ls>aVseq~Uo&o<4U(-{Lq!{t((LK&!Ezk*ln|q z&?&91cBHpXSSY!IwH|-}{ku?Rl84vwcx7ori`csFc>ACHgA?SO4lDbQw?E+jJdTyt zfA$=A^V}!;v{r;3=V3JO+{fL}Nfw6}U%iPF4hd=vn?3EY;kwyeZ5@oQW3LW@;9&oh zwUS^A)pFJh8R4>xtoQ+MgeX!f?c${UwgZg3`U76AZCV6&T+?+~K(!&4iug-r1H^~t zvc8eqg3Cn+M7(O-V%q`?a+G}YZMST<eKbYMH`QJ@9{KFOM8x*_a20e2yEhDGl@)BCf%YTUmV{v&=Rc^J@1oBqU1|N5CPmtfZEF2p077vizC_p1O zgF1UA8sF6<;5$s2R(~zhgx?<81ah6n#hDC8&l<9lj`@jBIV`%Ae^BgqOO=`(UzgP_ zT{pm)Q9r_|ARoZaXEL(Ii`gEj<^x8()g|xr+k+lz6zXlQn>SQuU_Y$ah?K$A3 z2C7M`44I&$B z>{hfO5=$Oa!|gvur@5iGW&ju@v1&lX4yn=eBlPrZ^@fH<-ul0VMwZ>>bF{+vb8W+WtAI zKMo6U?Lww?;mk5{I^58&QMcUB~-ZgaMe$7Wvh^x0u{ zvrpUJZ1EaMOB%9jDjNCD;cR0~kWZF)4a6oiSdw782=)`8fuXVP3@Wd!tthV%;g_u~ z5B3wKfnD3UTS=dUeJc!*Rx@NA90&L4?>zmTHjkj=LdAi$)lArwgpVd^Z4YsKPRXN@ zQ)p4q%rv0Gbs?9?^zVtw_n5X^A}&2}Cexi6Co&x`RJ+xcJM6w^jnK7}UE{uG?b_X2 zj)>N!?2+Aj4uk*S0T`=8^dO})2B70UWD!*go&B(P_mRWyyVr=%yx7Ro@n_C!0oghP z*OZM!%K|mPnk$88{ZOL&nzg&#kBFUKY@w@p*;?7Q9p1La z#@JZf>LpoAb1}hml(Vi~BWEQ`Sh^eIlD%{_xywtdB}QVU)#nn=>Q9S^fg z3uM6=zQOG6KacV@#%Gd9U&bK*Lnwr`=vz}-6Ly9M1_t@ZHpJBH>s9n%r#)Ah*HnAr z99`g^FQ7es#H0uKWdy(+sR|EEjgJ!D{{pz?>c6y8yVAJY_QSQe{-B%Z)d-fL%B6wY zu<#%_8Tz`+1no~n2mB~{=m7o5ooKoJDHs;1$NF%;n5gBeF7MePgw_OChg7RVLZZWc z&>{odrXh+iFQ4py^iXQHkY8lT$P+W)szY!X8?Va9t}uSG_2fnEpEvG(eMYD&Z_01Z zYsqgbtf@&YOD>HrQsJBnV&Y7p{BU|B3IO4>(ma!xlUrqki<}|5eP?_xwr@6!0kU|k z8+_>s+Do8zgQ)!yidK9JM6g)$@l-LoIi|Hut7#ZVS5dc+$sr!KMVu6Xf{Y0x#yZq+*4I-YXVB1K0x(N@r(Xk*}?#FA!rO+NL zrwqoKyh?xEPhSzuK>^tT{G`EyCV3aTOqyWGTA8 z6_C{14w_B3v-r`2tYkECeaTuQRdZA0w=bFlGL{g4c9mqz!EdjBzJK-jY!Tl10RW`p zb@3<_rF4g>@m}5OLjRNQvjeNgLr`UdoUYgNbO39;g0Qw|`tk>pgqV<^`0!}e+7IZV zu;*{%h0;SGieUx8=BQHDN4KL;#|kYe&nGWmgu;1oMNUb+>d-}Up_u&6li$gq@O7Vx z#WCgj{BYI92?gjA%eBN6<6mb<0pC1=*I2YRft`SV;S2*YtpCs7OPzt8136NQ5H){V zE7-OSg*X4?LmlQw)k+MldqenoxM)jw2sA)vH*x$>^)oxnA+a5M1X^vifP+KkjDO}j z5IQ^XQ)6iAPikQ$C0oN2-wjHV{?Dmk5?ILBB z+si_l1hSrODlKagZP8T4MJ6Of39f8pLUy4@!j;__h9f=smu@*5nfPLB2#OiWdWB-E zD;w3FHbZ&!$l)&q;=mqk4)rP#n@gHY5Awu`y?S`oaRL2iB29 zFi+%X<>ZK@nYA595Z_X=mg&6VOlNV^+2Wg*=BB2A{4?39zk_Wv`@to06wJ&fgdNkK zHXkm@kerGDmb>JhqcojeKtE-kO>*NBvl24nGLo|#$&b>@vefod#v9`wvQvpxXEM1+ zzgjq-vHj{`$V|lt4b*H$x%jq@}WbFYjlI<-U0$Dx< zFYi%$fnEY(lY0gSiYN%w?@~(PHgFocG2>aOx8%%8J*C$ec+As;j3nyVWyd_RikwYh z>rFpJ#K3%Mvs`PF!HIa=0BQ!1KnoEnQ#{~AuA~p>|GPUp@~xr;k5 zhkq7_a0Q-x3TAUH85j3i*cHEvHXl0Lrn0H&+csZS=kX=ncJjJA>9d}^dg5;DgMx>k z(Hla8Fyk0ZYyK|$bJvfjNw4+fH6+>IZQrsd6C#PO(;b>ea=5a_&spj2Y!}LXhgr_d zLv#`d#Hi@|9{AY40f0=bqdX5uo0;n-(>F!PHH~tH`Pan$bgR7WJ5l3z7E^SG79z+b zJ#VZX{FnIGUj)ot19)6lhiyyA>&WB&{kNgN@fyD_f$Zim9)8txCRK?Y=zd;pr8*w$ z=ngAqQ5U2neLAz4<4{R=swJ=Sn4rDkHvDh#{@>({cG8bWyXE8u$#0Cgo@FstsS9;D z4niZ1-`*B(vynPxpvR`nY^N_#Z?1_t@`!hK+VUYCArcnwtpkrpuS#OaqqllxO~1$D zUw;$!C>fX`UzK;rCTF|fLVA#$ux70L<;DNy#Ef3(J2Hv$3k>uV-e&y*D{DpTPGwzX zWv%cVTU!|jS<78rJIMl_R7XBi(}T7;d3nb3>*LN9e&t1?P2>a z55gWM${NJ+Yl!kNVJDDv7-0b?g&{lEhlk)tSzrXSr|Mz_Fv;#R5^Ul#{e^ zlw~!`H?IByR|QB>OkQ;4^{L!05~}m~hNU57w+>|Y|Bo-*uTwY#X96UOZx_t^`{UMu zWCI@;=)3jD78f{|q}RD0{;K%m-2RZ@6N1kYCWUPY`XF~J?>#GVy*LAas~&Wc7A*52 z^FCai)3j1({FKRHH3cnaq4#PA3pI>>qV10x{!@Cm=lYg;$IFkM67kh@m5Mn*XonLcgkzjkDUA%hD zVv)Yvl|`MeJ}#%Bi&%I zG>SGr7_4=+pLxv*S_6OLdRj;8U?y4u>n#jFw=k}GLo6xU-&U}CQPM0 z>8PdDnWvlSIGE_YL`@7#MMJQ-UXV&3bnTUZ9NmImbQCJF8esiFbOlb?5wv9|VduK3 z1KS+n$5IcqvQn*C`753rKmrqWQ0^f^bWj_yb!^Zfd8!Vn!xJK6VjzAAhEXt7k$Ro< zx{is-ODHPVy6B3F5@PZM%}Q7-K}c~(DVK3biK+~i`s%Wac`{E9dqZIjm|p93GPwlt zL>L3P!IG0*BN?)!A2cbg`Hb}=w(Eu*JoP6__F>9T3R!8pGX+)aNh^}wz^fS}n?g3o z`)XOT0X6_K$bojR7b1^r6Og%(i(^79A+Sm6*^tn<@EDoS&Jr4s?pYq_)ai;5Xmnn2 zLWvykm!Btgx^`O1E7My;tDNLvrUj354>H6ZC)0!AamD}cC1|$5R3ZCO@be9#^6WK+ zvzqL)&H!U`ngM4gPMmlfqKN-LevnB{HF`8IeYO8ygljt;2A|J@v$w%qD5$af_U+pf zfBxA=hw?OOvz)CrcXNkz&-ebXT@xowyoD5@Ve&Ocd;eKwYs8VwplX>7puq{HCT$+> zu*PtZ*rx!+{2Vu)HW2Jwn#5UHJHgV~OEyPEtf};L0*K`^2KQ{?!tNq*W^&=(HDpkO z=e1NxL!e^EY0?JbInfyE;Ti@KT|NrFXW?X6n0sL}g7FAKnLS9y1L^ATFG(E^c%Y`K z7v95mG7cuH5t8dY`B}TfG)XLH0C5>)J>!!yl4De}cE-4lrd%6&Wg{QMZft`YiQ`Ad zoW8nKgd}fDqB#{hF$POFO>8TbGjAx^ zB%suvsUJf>8oeDf74u1??z!Pl=3Kj{-h)>T&YS1PzdF5UyWUyVC8cmdm?sQFOvJL* zA*CZDCT{^fjEf_{#b?xm+3@g$m>5hL!RV%`)6ahVkEJe)_4Wz!P7*gKG@2$1J*OeYgXp0;Q!lv_XR9*Y+GGJ8=3Vj z2I74mi&y(G8V~)TQH!Xqh`yylMJqrPHwU9{uP7C&L7Kuq9I4+u%0@!38Qo}C-r$u^)Df^ zYJ}ASLh5qpBPkWK;;)4Z2r4MoL+Q(o4z`6ce)0aHzC7_%@9;0Jg(q;Sb<}Ly!uTfa z3;{ZbVRK{53F!u_o$XJ@n7pFIBEG07D=$y9z9ijGPd8`h%P#x-L7RkykaEnSavui4fYcrgx(`%w~1L0lW=_oPm$#0K6CQ2<# zcDPV@i0ozV<`7Wtb-HroH#iom=wDj|TIqu>Bp`@Z`$HZu5>!HGyi@>51^Pms6)LR| zsS6~5%2_%ZNb=bZ-7|~BZ1oy7LTGwGd;H0*d;5q=Rc?-`2;x6tgZ1$-m^X_{ zsBSn#4E$KCyHCU=VqTKo9L>*RgCc^0&Eh_)x;5hQM=H8>B*;@%{vW#D10ag4Z5sw< zcGpcF+p-3B*%?jj-H2Ud?_IHCK|rNT?;REvmbS3;4uT4(s9?i_(ZqsX)WpQZ5>2AU z_!#4vIp@Bw`?_eLip-I3kt1B+3NJIXV%O7Ezp^y5 zWBn*ZYq3v3jx#qvJ_|_~kDh3#r{J963=*aYHOVrP8R#l)$`b>!z)F(WNQ4y>Cd@vul}YL+oiUJbO3=>=<{-#^Peo zH)uI<$lElEw>FZFwm7`CF|&oyx{Q~#S7YfBkeMEGD};5^-#RU9p)6TNVWWK;LfY$ zt>!DLdD)-cxoBqKR5gNgV(Jneh+ngx?7w&V-i9ZxzsAT~FmRnZv+N*HTyI~#{fabe zuHGfcpBO^3h(f&gI6d*xI|V7}mbfDyX3;eM*t|mC_U?&h^c~8apgj%N0hc{4IGsip zKg){rlD`I6;cPRNcHXyf!L-T)*t_5mS{+EgMZ(W+ax?4+O(h0coWnMi(YzGDNCRdue3FKaJw1HfAk!_Jn6lWe0D=F?q-M!N?R751x z$!9yr@Cu?mhz!` zQ_Tz9^2IZ7%R3*3A0D-dL8GZN$__5(UcCJpcev#q?(lgHh#*}>f~wEt7#+-*Htqjm z6ux}`&~`tvPm`OgFOABx#*m>e!nkh#x1rF%Nd0ZDOqOjum2ltLiYCaGOcJ$9{#(Ts zvKd_(^nf>$Jk8HPGq}IDFkH5xlKOc!C{C5{rnk!RfZ#1B6`nHk#u-fOmE;!{IYs>; z=GIWlF7C(xn}Qf`!!!9Ak!5<(#$!LC zTDDEw9U(?ElF-`z%SL*OmYV1h=aUOOOersI)qo+?PFzb*Efl zEjcL$d5|kAMbK%JsHh7+&Lq=+IwRjpO@EN^u5HsT=qG0}j`_?1tR`SK6tzVt3ccmM5co6Fow>ZLm$!5iE}PKW=Zd-zyK3&sed`_ZzFmT5Q)Ao6;XJ8@QIao7}12p%J~Mo zu|?qIe1xazpIP2$Q6zr}`-L=7^lt$43DbzlshzX``=>a{0SU=VVto11+#jebXjmYM zUM}CJ!C;7@i}a3Y(Y=z)({S)5zLQS)Aa8pZ&!e612aQ{@NZ!#({gnh@tPTzFleDaw zQ9E88799_2V?MMqCj*nOQoKbfL4bbB8#BEEQl-ID+;lzzW5j zcgC+WvTnbssjRB5mQ4>v^YYipP9HX8Gwr3Oy@s5)KMW^ZP>_NeJJ@-gg{k`C>e>+iu71e_ZvYbDd}Dw$lt*(9*W&@JD6>|t_2#} zD$2(68~6Cnml^AJGj;cR4g8RglZ-C`(MJFJ#K-1n})As11 z29J1yQfS~YI61>NNce`12C&n27Pj(6z7;Z;6yC*GIt~A8+waO05b~z5LKY4wGa@1@ zOzj=z?~4qL6sc$V&OH$TZ4us4-2vNQfDtT3Vcjib7pKtmu zT?IBR{$I$%7vqU5aFP&kP1}9?%=*jz#BEb^%^61oI|m(gKIYb#e&q1En@4uuBlbsr zJWrN<|HG5sPn+*I+=qAaUv;rHX%kqB>Qdkcg^+5_Szd;CTk+*%D|%szx^^^_LY|O8oN;Cu+nQ; z5xXUKPIJgXnN8caKIKPuerp#mTdAd;i@)-^RKy<7z13WNP-gOi+SZ?srwkrEZc4v? zf+0#Dkq})RUKC!KQIuSONRS~sDJ(8DH!wFaTUM;ikIP`A4FQQE zA%SUu`e1MuM8!wN%2F!zmAh3LnJFn5+|``hCyMT6>`tkQ-xqy)+g_(aUAb?Kx53*G z?57QqB_P929h&5o5D^B1xGq^2l!~fSvoo^|Iq9YQ_h*5C5HiMTDgf<~JaH%WN$HW} zC(mR)iMtlt;(gEVut)jE;Kc1oA-Yvzv9e?_b!fDi*{<+)poZN3bnQ0_F3=p}L;n*% z4=$HM6s513S!?Kn@S9#kV~4oeZe8uQZ2RV|n>Jg0nRPbj%Y>al?!KO2c5KG&lX)e3 zrH2^9jJmIqiV_cREcOVrbM~GQw+JNO;^NqaS+*zE%RW2;N47i*ZcUOQ*#;RG$%)X| zRUJvHjVp1>NzB$7q8J5jAI3#r@{?;G#! zsSDU1=HL|taY6H*$R^Qx>AelUg)?q%xf%tGSccx9_SO6OsiKULnUQJ18G-shT}W|Y zdX!ccmyi$Qp-}EKn`1W7EG#Q5HD0UL>ci7R!^0xNqJkqbBK3*dgm^

zA)4ApBHI0o=#zcPGS z;Z&!ro%w+kGBS6KGCVvbHIxgznSHPNtSni2yrej@II|?(+Ig1ml-NnKwsp?RQ^}|F zO}gZTzErxxGax!XBe5dpTEex+YhsT70Ytaq)>Q!VItrMO57SX_GJ&RFEXQ;dM}pfG z%CwLi`bm)1A@Wn5V`+F!62yc`u*X{|xAnJ@ft#TAO8dxuN%m!a+1X@J=KkBMxAk|B z4J=Lf$f9FIV`YFDu2ddRJCS-E*~8M4S`u4+j2P+A0(Gu7q4udQ#fn z^u1|&(+vJuc&TN$IOfr2^-D&yG(}gH)xhW z1L^au(#*n~q+;2Gc9}9_;exFT(~!+7W-QG~8+dWkofw3VW)O=Xe8sm7IW}L0H4P~n zhbobRk`&9Pk?G3V@~Ena-FRLs@H!=()}Kx}4Jab)24o^C4V8IW1(^j=xuMx9kf2UU z!=~BkIq6v$I7M?iv$9Uv8}otWv+2}k8?{3C82S@sR zM>JQ-kfTR~8^ex8Wa;$!thDBWvn6LL$Vdmm&LlQdgI4yf z(Y|p3)=_SeTXfrGyp6wd)9iuE=jayd795MXCW9vxY;I+bPyKeT@W$=+QH0jvjq?*7N7BtP1uUhKU2ONN>MIOxt0$MRYHGsf88a>kP!SoAn0w;bdwSIKH&eZG5rSRI(%=iaN$FRYKKv!9f7%q7{0*GQM%&{vh!d@VV zfPI*uB6wDn;`W|UNT_mMf#qd-8TLXi>r&5rp$as=jAj*)>4}|Z^ry}IR|v<(n+<1OR4D61r~_$K1@K4claWM_vn`DTi;Z|G_zd%>R1miu|hQ@}*$BTX^tN3{Q*2+i8MoIJCn)-T9+yPTxUvsxvq{HDiA^NnC^nE~-7`%bt?wo1x zU9tnAP5RJ8DzA7 z&bYa>r;7G`JeTy(VILZ zF(rjSW!xvizH`Ir&!d8=|gyfYv4Y};Bl%7xBm^uJ|jQY@+M|JV$E zSU}!Ivmkmn5$P@@7QOW?CQuUMQAXp8Uy9$Ok+FlidCPV?2I&qRmL|J@W^61PVTkxB zS2Q4!d){-KC#WaPT|2{@6Qah*`6x-rnqynf1!Ls-r|=H`+y!!scE-yU6=pl+!aE!0 zBgwgvW5-I)$>_o`CHYalb>~hbU$%Bwh(cOka+0iJv3~&Q4m~7}a0Hn3!S+}n7NVj1 zP|kMmFGrT-dZlk{sGqmWyOSoEY?%&Tg;K#>1)I&A!<|`5w%li5$@?RXsLxiNgVvGl zh?Qs?bVrY=5Kn3|Lz^cd6cLAFV*edWLM6n03h)!fl&Y`;Y(xjTQRO;n&bGghtRv=b z@COc5wb{dyqwM$;bOUQ3f~XTMfbz(_ zHHg|su{o=_<1bbL#Yt(cC&NQp^RGHbcJBJ3KYBZGh+8aL>bGSRhqd!P+%jF^W$ZVE zD&n}5gao~o|44%r=!JV1pWGrI0l5SWCGGOm1eT`Pjj|DH>b1|19wd{O`U?nUwVHi@y z)32?C$v{5(skX1+JHB!ys{o1rKR-fd#h&l}P2?)mXkIQC21wdvP`b+7B!?FNAe{JF?#Q4#O=aIHBWfx#3o2xvRn$>*WhQ&2 zopiy;6;~rzc-TiW@eyIVF!j<6r!OC?I&!3#BNOg2{4N@=-0I`x6vD!LZObIYgn_nc z!RDrG_b*jmtmYs{V8vwS7p4`eJMR+>H^nP&N@&*sjF)$)vy+N$l+uWPj8H3?v+BZa z4yncBlV?KrRHy(3dSi)OQ?u&!R~K#-7U&Yd`t)Ns56FT{Ia&gQYd_{pMcvu+IE7QU z)?b>NgOuA-2dc{(kE@8YJ9U;W+hDhJ+4>WgS#nBRlee#;jD-?yZ-!iwkblX!_R-Q6 zPU~0U?0z24L~dBCU5Cd`#3Z4I@S^i^vpkD&2I7n8pGUy~+_75B*mRdJtXR|t8Vsu( z(scl_R-0x?wuw1h6SFn$B26TJR6-5|)lBDh&Y>IBAtx9Z_i-e>zW9R`Zko!OYxdI) zPga|Cq!}&2d%k?l(XXSq#FCWK5*6Int+nl~l5IP7IYx3WN0aNDQP#Fv(r_rq z9qG5X+RK@Xlj;Tz>;wsl0|gU$W%lCGi9w$dKu4rFBVif-@D0^zDPJ=t zk~fUvH8JxUcAs`tQ`yidl)=ETN92eB=t;n}pAn4B1Ro|NKp)_*+L^H<%Y}U-3}6&L z4BGwE+_!3z^%0Ho>WQ^WVnrVUM~4CpUL~SA0-4jf#}A%Wx13zNG$u)07UMvbLUo)9 zyeI(3hcZRw)y6&Qn_t<@bqH{D_2Hlv+JgxV@Q(FXw=a@x-M;T=G&hJJ5dKy6R}o)X zQyK5eBxNNVjjGFMPG3HI+<9Xz`&t-|y-_Rv7$d@=Ac*+-a?_cXGskys$Ysd@;Wa}P z62%Y5aQ&k5aL)W~x?o4`iRBbr(|4lrGS<3xS}$tXX~pbtou3sco_UxoVZvI!TsoT* zuGeDRE9;zL$JDm`W0JvocCDyZvP1J_gZ)|-L_>?>7KJTlM}d{&10JT`@h?-RxLX8k zruez&=J~I0H696c+s#72WedYwN_nGLw`jjetwuN|t#ICwyID*|l>k!RSF~7;lBeHX zd{oB$3~68-Sjk=E{d>qNED{-Udk%R=dk2Sz7W>OB3udS6=zWGBV_xqVcC8<* z9c&&Fu}ECIj1dM%<6%r-E9C$F4knU&M1E!pE@oZ1q9Sua1MC0CmIuR*vW0FtGIyvI z2#$JWDn&B|I~N~;#2osZxf-$J~mrP)e6d$QNriN=;t-RK>c|lZSSV9a( zZRtD4Da6TVYo~RDvCGUy;F=s|E>>4wx({fiAE8RIk!fyn+X!sKCZU3XoIM_5E5T;eMy=TI+iZUF7d+?3K36U!tN=n4u|ZS^*^ud;pg2Qx`7A!i8Tx{9)W zc{PZZOD>;Szig@9hGiUe#>GZV(OGi5vHUcRsGuYj#i1kh@@XT&03p70<3(Uzwvaze_H{=Wzhv$c~?fVDIX*X%;X0YF$Zf_<> zHDHe_%1_aln#mbyQ2_)`+mOo$LDh)7P&Mr*iHwem1_;SVD2fl$hQxx?l}L1tPrL%QHGrOTs8Svl9!W- z6hN|)pLRlc#Dt~fM;1b=Tw)Zt+YOm%cx5}Krx4?M3xxZAVBG!5b2OvqS2jaW0+iWZ z+p0}>m18!n8_U9rxu5iq+}sl%UCJE^D0N(^It$(_ok5qO%aFZly7UL>p&~YO0X$+F z*#hUy#!uDsxlxV+;Qp4om#D?aKd~oLBN6$pPFQKsFF-jotZ)#6zB)l&wvVJwC}QGdd|e zE=HD^`1v3@QEig<5!W4zb=PCvHRmT_-JB$&HbY$3@b|i72Z^Z|Kev7L9`U{pemb;h z?&#l|x4===)#PvTR}LFS8j*UvhOQC(p_Pr#o!Kv6feac{Xfm!AWEmXpNu6XkFh!g2tgVdrrJGvTcj2(+FaXXR4nBRz$VN#fg>o^*S z41V8E(sgAZDS7moEPwsz0txvH!Tl~TdS_rV=kX)piX@MKps>(me(|G65F=+Elf}eB zvHwA{iQ^9{&unX4zi!*M_3Ik9ojudocou09u_?;4+Zxub+vd1VEIlihcI-}uI{Y|j z_&k39=i?{u{}ff?kt~p+>^lyc@sBar(VVO#BY;Qh1v4=cAhcc>s*l86FESDzl#`Jk zYDbr{7o4>tv0T*e!`fJ@CrEG=UE!0$3|1b=DYVgM9qV;Ungxit6U_oUj#)Io?oRLx zWZ@%Dfjk1OFBWp>=G{`#%dtSO7-)-%+(JN`-b!I_lZnLPFxe*ZNzOnT+cM|bWD>{w z30OM|geBNk+<{mp2sCvw{;F8qLFYmgT9`qw=86*XC+lhHL;AHElt70jfh2xCCzwkv z&OJ6FXOV2)a7Q#7y;bO{WaG)ci8pTCL(=D6XQf9s+#ZGVBpXp^XEG{ z>K8UR0V>oRw$p&xjlC5oH=91-k$UH>FwK3S!i?pM_Idgr^n>A z^R|u%U8+61&I%cHtM+>7H+gwk$HsbjZPI(~wcgk?_txxIx|*)G`cM*UwDQ`kKe>1B zsis@E?%X+Z)@qqySkb&=lbd(e)V35KJX3RhtxW%XHaKerKEI=9uQ#9ZDBdaCNdBV) zjrah3L~ii`uqN~I`DZGYv-}D&v9D%5wOk?M3x1|Q+enT>iRULpnc}961Ux+$AxBBZ z&zUox6AGn*AFqJkn=kLpD}Y<|WBEeq<~*Q%XZ{Fb7r94x_y=&pV8MzB4DgKdRO5xWVQf#?pGMMI zH#3EU$o74&zfylnuV=|}emXf|>i>*5AAWl2+?%wNV^#`>EShfr-Enlq-oYvGT-$c`PZ?V>8S3s@SQX~#TVl&hhI~OhK_C+My3gU$y~t(Q%;uL zjC>asgcCs+=*A)D6hfNX7h8!^iZ4w;q`T?Upm#6L^)F4k@H^^d*S3Yw0X*PQ;qKz+ z;pST7S9hSIrj9LGsf-R577If*JHU_ija6@4YTU9iL#x%&I+^na$lsxA2ogRHfESw`@s>+sYLz zgpND{z7UO1%}V0JuhThBbX4B~bcl6sT(ftC3S#o{arSkF7QqK{ z6Bl-a$w*Gm&Qxa^l4HT0zJSbvm?SZKO@>-WWp1j>1Nj_|xY08qo4rB09>fLwMD?hT zu#C3RHes1KC2jmNei`{^DweY^Awwv(Cr9ONy+mA3Q8LY;a-?Fpk-frHtDERHY$9^9 zBgz!&Y&9M1R3E__j(JW$eMmKA2(-<(=_78_8v%k^HN7Ten(1;5S9R!n+NeB1(8( zmHaAxh89AhGr)ULMqj^yqiV=oni)j>x4)Tv;1_H2lB_wP9{VEv z-IotYFWE1#`RDX1MSae3*QRk9wi#O|)1HCUBAA-JIgZ>YZh=)eS&2bU#mTFB)xpzg zmqM~vq*IHOSrySgq0c+}LK7XTqsu3*q+LTR`U2OGL-t#Nhdh(^7VaPq9qq<_bVM(L zPNWaK9cVq^c>4~ZZMhCzqq{bY4IH~jiF1BTgAp4C7q(i6gMi8ad0GFI! z0MGzll^u_fNcK55_fy)#iGHF6kah*|#1O3IhLMjKkS`Jl457YJ&t{Od*U1+z$;UD@ zkyhv#fYwS4d7K_jbKh~~Z2M>>$pv>s1X3m@vW@emS4>uq8t1uoIv5yc0D_%Ozg8h> zc_@Btoyo4b|HSiW^@Drm4L3MYeoe$<8%gp-zO48wCR^fd>JjwpcQM1lMl$(W*DwwL zQb}xFh_!QG- zC0Ub6rXg~$0_1Gu3j`+CWOD65xphJyE#X#?i2@(^Z)pQ2t%gG6sL9*xFp4NBV!^UU zd^B)}h@sb=8k0YgrrwQ_n_7_!@D9Ex|10t`Cr$Y?8;R9#U6Cg|RK9rKy2XIt{vus` zc3lfgc1s|sHO7&6Z6qPf$$=&C^^YQP_2(N;pFApSOYGA+>(a0jR4%v-vReOo+7EPu z`-G6y_P*;p7l)&5eR+qzIJ*2CfUdWK9u+K4x9yAt<|DM)7MYfDcdo2WbknHu#qM8w%quG z)6XorI{(J{`)&{2AH-ZtER}Wg$g_zRfvFw|kx9yPg2wx1 zW6}~6Qxnv&F|qx$W}0;9P6_&H%YxK zD{6aUWcbF4n2aP@(bo{k?w#AX6lcHY%C=jcGLJjogg;O}_@v@P z^kINJoWx!aBALi}UJ72X@L5RCi-9^~c7 zYTv+;liti#w8F!o8$^c3&>r5Pf0NR6@j{TDFdXh)VG(~i1VjCUY-V&;RCbI^e|_#x z6Ik@2{K0^td_%gZ+HC`spikR!h^W&s=7+8febz*_!tZG-2jayNf41b^*?+QV;Hdjk z1Dx*_1ejk+d=STbDfK}FO6sWb*MuO%D}5lADM^)PfQHSJ=NE&93?b(KF`ocHv8X5o z@T0(XcO(Q~&=vA?&}0k&Ju|9%PvE4x`}z83yhMT_?-iUXo$T54j#_(pHEq z){0Jrx?JncC!#u)?5x2of)AD;Z)7EY;tz=&m|saSgG3Le!=2XtQ>6{_34im0PF?Qi z6ILH85mpE*tf)7n%27!JZODr%)#v3}11D?*eTHlMiqAAh#p_inCvkwmM~~9jNTNpr zG968d<$Mo(we<*=19t+JKsYyWzQ(TD*iO0CAtT$7YyT`=WBN=Q#*AQnyk%o?Ux~O%Kc+au zH``Y&7+WM`G-Qm1TP(C9+Qm`hC=KGAyLV?7BQAjz!7bUby<-^CtkRKOCI*Zid233&AOfa?zja72g$abf2%fH$yI-X2Bu zHj>xo`Zn<)BflwypWxU=Y?FT~6^sxG!kIN8ijDJb!hB~rZ)^jFiZ~-Y{qM?8EwIji zw-W{QW(1i(w2^GWyoO_@zxrec^fC4&ZL!gHgTLJMR?jYo`!)ejGD9vRCetll|k zJ~fk3vw7>+x~jK2|3D`1;G&xRNiPqw$&)Po0=X|yYZ4}J>NjHQys5LN%=u=B)tT1D z-MQ-X&9-!Q6S%U+b^f=N(b-qO8~Z{HU(ho2&yIkg1O4&6=r(v}lFwzLRC+g&i)Q&x za&kr^tn2t)NpH~$@V#6hKBkY5+IX5VAt%9yo@T_A{Y{pyhQbEq5`T=~8}RwpVbRu+ z2E|!a&@Q8`$`_L6mrSjsc^LCTlIu2OBBS`RhT^s8d!g?t-`zDtGUEpZo}xa=B}uN! zxhc}PsCWo=he@`JNe-)pPb5L{y5c0342fXI33g9G_}rSw6sKkwN>qGrX%@6&+3ARO z-;t0np5FqmLbrFj=m=;c1u`uuVFiwA{*QLJq~1N2+%jUbtaNN9k>(>&;Af`GHj>h=EHA+K!nD_wMvZZ`bEdsvYt zGnq-(7d-so`t=_kF1S8%<$70pKUQGA4@nP>N(@1WM<}M7;^~5AR6WA_@Q(GBtJJg$ z`Uzd8o|u2#jf?k8baz)Fo7Due*2Vl1V#0HJvo5hVu7P|CQe##{Rh@`h7#rQ;dF8Q8uc2wIP=ADF1$crQIMaXU!l*BkS)6i>Cc~`cdabD zbdmc|SP-rc2oIO($TsCf)PXwj*IDNzye+(z+=hL9(HmZuK$|vu(yDl*xOvkQ0=FY5 z&?<-*FVBgrmP|49F_8Yej?M~ z%J_dt6_3D`=+HhXEP;2HwVB8Y2^qVK44h8j{09ifrB}=ik{7Gf43v#KT*P(6mlc0wv_gU=$@bQU|oAHvEjuXaV8CLEFG- z#1Y?H(|*uX{`S^f{}u#~FY(5WCdo?pGW!9rGo03|g+-JQ0uRO_OfUuYNh-#}fn*Q| zn$}(n=|7N8d_-rf=^5x(YVmy3Iaqo`hJ&b0lo;zCgJuGeN*nqPB|ecH7vQR~eWNlT1*rDdJmYo5Noo`HEmC9y0tDk67f z1Y)ELF;GoA>c*I5p}ajFcE45n68s^prcOi>vZkIv?XMG!EPG?xrKD&vV-1lhFw ztu`h~1&rZqY3=FiuPe{Xh*{Gq()E`5y<|r9t+g01=4i$}?)L$R)K@}B%%fu{yOis@ z35n73)gVgi;x*_YV#9wU5XeWrW1O@X`p1$Rr)ZbHCppSqzKML`5o)C6A<$$eC#|cI z4mDUlY?yTJM%Y6$d(Q8?_t);HWv17F6h;|hvbC%(12k@G10?AYBEkVP*%=sxsB*M9 zF&W6>#7UOJvtSWvDp1~AesKoia0aBF8uZe87oj^t=Jx>?59Au@tPe}*f;LNjE5!*Xt{Cm+qo(^ZW15Mi)XCJGk=PTjOYWh8yTERBY^C?=t=YN2Ha57 zd^~4Uscs@iH+bP)nnt&&XaKwoi%B4hyj3&{BVj*4GnUqeNZd%5#lNzC2kf(5{9OEE zH&wdGPR^^GJW(~lZ_1{5te=a~{(!$MHV>k#@C5Fz%qcJ6T3*zN#D6N#!jrL^$%wI} z59@bulMyxe$JnEWTb~|+A07iS%k8x1+*eeX?J{~$0-yfkd`xuh7ui!kP5oEuTEDa@_1t-K;=$F5H z|9C@ny#+@!fYp=!`nnw~tszT`PM;x~BV-&I2VYW@FhQ7ri;@M-taQ?4AURH17GEHB zSOYb3Q2R(`(qXv!!}Ns@nBNQUTlalU&)C3*sHRf@ zBf>%0hYT-eyE`FcP~tEG%ZYnnNSfP_}v#m8>LmRL)-%27it2F}N z7ooL33@x%vJ6S74{EFlu5UVz(c@h^2bqYgBZiIDYZgE_(8sPZi;w&)pX&D+;KksH@u2-haq3f&MV1d{xfrXGd_AOk0y zI)c-<5aMsq_k;68XVr+~!{Oja#Z!hHWHfNiHjr7>$}gg_JU6=!J&-V5PWfC;<)NZ?~>U5ktZ>u{{U2`DK`aoKZcbZGB zU~84;;_cz0lkuZk$a*=@(YBb7cfus4n{JnnTj$0uY2Gzy2Wok&e4wTpyn z|4Fo)4>wT2Vk?+khG<;|{+WdHAeP&9KbHR{I37(Y{WvUqK&5~tmV>4pZphHwc z)KmQWP7)4LJ{`B3`s-rSVhnNC@djf8gj-rb%8jg3ERTwTS~ZrFJ(|CkOruvZlMTlV z36SLHW#^}J-;?jfef_-z75M+pCErO3uv!{-p7^I_>u@C2e;>(*qr~!Du^KE#uhNM8 za0wEr&EMNFL%W(D@<3mI2dptcI!+fLb14*7grPe&gF0cbQnc|KE9yjq3F=0_03OkUI8_fU_5g9>tB8ddl-Pwg;!D{f= zFj+YndHHZtpf|n^h+7-8C-O47)JEc~)BIt&jdRmW2hvNiyRtnhL#$1FyPTmvwCR=P zhYmf?04It$bT~lD9bL0kAMHUm3cQt`ca*lh?;|d6uj|m8c$2)cIJ+ixkM%%uNl7>I z{D+mT#kCpU5l<@r1*yS%`4S4hz!>AXwFRovG>JY^dd!;?0>XOdWIE+rYW_O;r4^Bl zA=9UjH7So%Zf8E;CmSUdz9o;ak;xJp@y1#uKNaJ)SAPv0k>*1c2kFOGK4n)gcAGj* z1tpG+^b3*%$9Dg3iS#~Ol3b!MDZ$^z{i*am=|7E3R%7u-P;_p8?Dk-F3wPz+L70Dq zN<`;tVLCp16nuY?=mB$Tl7USBUoo}p%IBIGC9J$9$&m003;a^xmnj+jQ~IkOyt?F9 zJ|#WnCtfnP-3?xT!`j5qj02TP)3Ar)z3@r^XcXv|@2K}d?ne+QWk-md9T z7c(;YS}cl<1~huGwEbn<3nhkNLm7Ukge1|SN^n$sn0XYWe7Nx1q|Q1gEnGOMbNxxz z7Cr%KxB+c}TxZ4;W&-K4 z6m7f(&Bxy=@Kp3B+M#6WM3AH`MASwP+Urk{54 zes}>UztKfxKRsmi2Qt{ncMMiupTw`QvG~)5PXd2k`>r7Rg0$1aptrO|=8&z)SPL5Y z7UBr+$daSJ$|HzJmjXM5oi|^&=XonK95R&nSR^a}u16lj`mmP?cxnjiEXBV-=%_V*I>?fabSQ41!Dx+`70EkGp;?DBc^ai;h zSVJ1+2JM^@OnGa-eo)R^BNUC626U>w(cgqA!W8CO$72sj8#C!Y?R0lVE?Y%(0 zp17LdAnQyk$XawtN=!SI0TrG(9!Y{U$O_1c@V)ypkHs9ej;{`{@+pu(vsDO#JJP9g zLxQUZjiats4$g@S4sSiY^?Ks5BXCuYvm!%mX%TIv<{?8id@&2Kb;>dqt~@;OTn%W= z81$Ccj&Yf|dMSqm8s_I$=W#>(s~!hEbh!iZh%6UjX5z}D>%LC3PEJE=r25MfjpsAC zV|-KEzUX~{<#?g_&C1u`J$U`wlWO>6m$L+8N| zML1^GNC!mX6e`*b9v2-shrmU*qpd%)oeQ_Gp6@?fExvL6(RR0h$NaCi4XoQD3Y+Z4 z%LefEPpdSDpi2kA=KT)4Xad>yEDU%0(220x=zT)BM+vWWL|SlO3^AKzl?cicLOU~|NTN_@VC!eYW z3%Kwg+_O#2{a3UHf<5#Q;T9zU9QYuvcG zbH|UnHTN;cH$fvB4R3-GNt?Q~#LPs4Hr-m7$``|?RtCEku2C=B8RI94Ye9sUibLxY z^emHd>@gC34$#{*9ota!t^SgXYTsO;M(wg2@PfY3qjt0lBi_* zd&KE6Nn?}AdkQvTCOR)OORv)B<`(*}d{y{fL=L7zCp+8iVeh^p8~F;nL!) zQ}mKT*RM9-X>4uW@Tb>ZnSLBuGYpU&(^cUorT$Ygn_lAeY+Q7#p4CUkYExNqMTi72 zce-9x=4x;$$<4_OsSKqiHX89dCs+80(fvv@0jv20=qfcmW8U9!a8O5@NNS(A=KH1cVlP zfcUahM8Fvh+?VKa99t?0E(kAXL2pr9P*B2|uJb*VNWif}fH9AyWs>0V@L;YTsX%pR zSh0i^IaewqP=B%m+h`$2Mkg!vi6jAR%hOoJ!Dt60Hd2=)x)B#o2a9e)$FpZ7P{=dM zk(M!0^LN1rv0$NCp#JX~5WS*C8_8R9laXwd^X+tm(sj%RuV_{q9-b7gc5^ctK@dOj zl=JV4NI%(JGAtBN`Xm*ZR7CpUBE#6Lq~GD+$;4AKV{M(WPF+xtq%Gj~MnBu&s`6V) zzle5XwZ2J?!6CA!$iSq~O`CEysUrfD!O9XA8Mg&I34RkJ$J?rG^Tt}ErfU>X<1a@3gQ}xvwsvF){?VH#b zjjwOAQEWFa^RYKZJ=9zZ&3JB$oGs&^ddk zfm+Ki#L`_XN6%mwv3w0=^?y8(bYpiAE(C(_R!8R{cF-+Ta`0g8sv56_ZD0`g7f_2XS>Rrv;n&UcNv`a1iqR6 z?SSL7o6N_!JAAhoC`ilX>hg-}BkN>j$M?#4@Y~7BXg~#}GKFd=woC~03fz_9v^S8b z2EL^>7wKr3Pj+Q^l{zakB`piv7S%};4S2@0scx2Z*#YXlYg>zdGXk=WH z-GahgWm^Ka?%JUC@X9F-;9{~Ezw#)M?O=>``q-{57v=NbPL1@Tc*q*4Capa`gD2hW&<%t_^Mt%M6Za z)yGro0d%E5kcxw8sTCvuKJp5U-cjHI1TSr60&*%ME6{wTW@K{;XMm+XW)yYgsCPkf zesVz)gp*RCD2?3zk3U7gow-B0HggqCffwv6WQM57v1cuZg;chdi>(u$Lyhk!s{d9;6?zd9y1Nd$Yx;Wao` zjnto%h*axjNs=goE$$Qe3}!a%x|Z{|FI&~*FVp7c>GIVPkveS@XYU`ls={7IyEYSM zHtAu=OfjgVJ>0Y|>P=g+%eHZwDpm&hZ}PJ*UDf0#bGvaj^uBt3U0P->w`td!pq24! zwL9!H*UA)j_J)R?O={$dAsbZT{5tp9!Ec-0H#s?M+3x77UB2H@=3i1BwMSi6o>_o6 z*mz?7Z?dw2IAT;*YNfCv+sQ|Ji*oA2YoKb@*6`At|Kt~w-RrJx4PwW?=fK}ZM8*n>^i^Sn&@V*ZFO+Z~q+-J?AWOQM-nSW)`xEy$ zhJr|R|ACwBiYDL zBf-(ck1r+Lde?)Ua|{gRy)v+ znUV3A0RtNL1D9V}ZLC(eWNco`nG)LjEBC-RxzHz@&4}6sW>7fmB`cRvGfwe9m&R0* z2^ZiagojZNGEjylu!^HQU36L(j()Y4E~EdZhgI}EnFGN1IYVuF92+a8-NRdG_ZpMwxMoLO!Xj1%zxX2dW$h}p3L#B9; zo}XsO&y<~qk5^hxdZ}+-42ikH8IqaoJcwd+@9Pd3LL25NS<}^Y$MlEN%PZ11gmc@P zv-E@qw8nZ_g;a+-dM1HHbx7m4}jfjo6`o>nq%9}vYmZy z@~)PzJbyG}e{EKy^&Ngp=Ar1rzI(0dK=Orq{f;`vYHR8X|3_{}kReb#mu^vdl?K&l z_iGPi9VpwImX?;9mIiV4K~^sHtFoOu9NglU*EoVAOP87izP19ZgWEHbh}RCrw35HC zJgeJwY@OOJ*XJ!{S><#G&$oLp7$a56c(nk5cT;I1D;hp_qZQ&-!_nLpFd*Bs_Ezve2TP@ z=|B@r10uLDT|QkVbTO?_R+X1m0jUR8JUZ1UAi&2bpuFnKfM(~z>|y7%<#uXup5wb* zRf6>+lK~w5Q_{c9$-;j>$~^>)0nNaVF=7Pdr-0Wc5K9;u_f3= zBVtzs6r_vvp*QJ6laAOGjbe$45@U+dSV_^um~Nsb0o1I4HR^rWz!=Z@<(~h2p8tKW z<7TbB_Ue6o>-*lXW5{{HaFAa2Ejk z-y}#pgn^%9GI%K>&Yn%&c8bqCS$3lOsI+F`+@iTE`aV3TL4Ql%CTjPnkA_;b5``xj zr~)a^{v0s}v)Gd+90&U#;#LSCWw?XRT8|v<*TvzH{>&FxR02$c!A#uovjt@?bUC@^*#`aq*U3=of zrb{ZTqf9RL8~y4ZGKzPf1scO$`E^uEk^)yJBj|X#j+g(6?ZXHxerxf=L`K%1IG!AP zOcNWF5Re`qE%o1&4?*UU;KOyIL$JdVgOoB#BfkzbCt!Dz;YU-BMjr;&!rqcy<}Gh-*8CG>gX*|zw> zU5^WNaNb}k`SFRuKXq|@06#b6owui{)_B+L-J+4Ve0YEidX)dQRQ~JwQT=BO4VT8$ zCGOs>{O!h(JGK0U9j8w0JSRQ8Y{%SrN^%#vL5irOY!QtsJbUeDK5#?-0u^0KmXH5u=wzx%GTA^XgZ{m`j?;lX>D zm5KP*d411lcKBy|`6|8By)(S|%v`83s;w-qQ|&w$6{K;ewz^fy#9SO=`FF=(pYuzE zv@E?aAyx^|k38IYIImal=p|lf(eV=)IH^|#9W-+cT_g=#o;GEP(miiZ?i@ZfL7So7 z;J?dX<-0OugJw8cRX$!BlM#aIg3mUd@q^bToX0* zgTp6woKn@)WTw?x@LRL$;P-wRdYCZiiPLBa=*(g*VZ&NtUjIx{e@chPVNxuncwz_wv=UzH6xS zA}sFF;3WmxNwhOf-{vRHitw8VY0g=|oGb<>9(bR%bcP|DR%&Rh2j$_EmXVPLrK*{k z$~yo1Lr8p%G#8Rv(LazQD(rpCV-nA3s?w@-x(duizdII|rB=iiO1Gz{XQ!z~mr&nY zIw6Sq`Ofg775$}Io*}(`dE!It?l*(&ZxQs41-?&$6VLwkF)=&7=foZ|?CSCFj^C>! zQ+J-MKd~S9$0rGp9`x6U#w_dOb1nK3qSlwTockE`y1`&(+LgI0t)8a|u_WwvT+_BQ z!6%%kUtg$T9^>EWb9nuJCmh^nwv$b3cCD!PEOmOFhL@29QAln`c5p~=MraS0QmUOo z!aU0Ys7q{tg$eM^1ah^^j+?6JliPA$dg0t|;4hiYe zk0g}QFxOJg>J{~?oyexgfKnU1f8F7YjR8&|#m#h~n@@ZJzQc*@*TRZsqA#siCs=E*ussXGaL6GKD@6H>LzgWxXGpdMD^*?b2#zPu-il% zE6T0kUcXDZ&jDa3JHSKn1)xvL0Cn;exlNe)CHVq?DCP7v-=dc*p7qnqpY=1yMb8Q( z9WXoaE`q}x#j|Dlk)n>vl8$Bi5gp46BSgCbw?XgbvtUuFUxAO0(kIzB&X4zY znLdwNL`vy95^}Z>9Q-*ylVm;MJFFZ@gyDjM^c@9Mg&8(CA_R?2y5K1K75_8Pwo0+N9&Fq=IMl9oi&Q}{(kG%2Q(bz0d*!% zcwc*T-=SkX3w3P2-v(fy0Ta(*Lx3*{l{$24M-GAs9i-vtBHBeliKt0Fcbb(o2dN9hj&RgZXDIy?Jvu_(t=&VY2l)P|(61$=>dKQ4lNzhs|6nwk_o(|rt2ucY~ z4(8X)n;PV%!h+fZoArf{_C0F;MiVtVZq`gC9dd018QpYNSJcGk>|m%4O|>DO8pFJf z0SfokZ_S*!`m@WQp8V|k^^vKsEhG!uR&_9m;FI$7V)GrKd;o2`g44 zdO`kt=~u+*$GS)L-)g?R`A73pmD~nZvl{9(-=+&RsGw$uj0PxvjUqj#UEy~I`P6Sz zg>H?HjM0RWzH^|H&HRxxzo4kFNLjhQDkhKD6&*fQs)TB|^c?=M&(fM@DvzaM>!3m? zV(a#;D$HNv28v%Q-(gakp_YY4tU4(`)N$z%Hc@WBdh9@Pi_ z((Em)uG`N5tsqfiKL(Vyaz=f_PiLgTfjox+rNC}Vp?8PyMl7S)8DHfm^M1Dq(*>JSz`0-nXF7O8 zY^5w+TjKolu&?^uad9GJ7AjKChn?|1w)|7CE1s7&o?Lgr`((|P@n=>p!(GW1#|3Zo z*}mwS&&jMyM^1ujlID2)@cZ>pBsE!l`O`qJ;~LD!vqka<{jUZcFrXb!8kDNVM@F%Q zbfgkj99N)Y?xY@^0dLQV@L8%kymU_W+c*k~>9onXhn7N@onhiQ*|V_{!~#ZxPBAnG zHxO$m-I_OvO#Id9r<9+LU%2sk`DbTNe0sn1&WDG8km_fOQR1=SshBS#>wAgTk@b)* z>J%$#Fp^hqu_JUgW!Rs3ESc<6Goyi}^7Nu7gm%V%5vAC={r%ZciArZKO7%7sj zxBX_{zT;RNn;sFHFnK;TbHxT*WV}UWT>{9~ z>;~~dhlN607LgOHowa0;8`Rc_q~4wbhtE*q_6*3KprOqe`0Kl#8XTg`hI~G&IkseL zx;AFxJC0i1AeCuzf}I6_O}2uy#zV?+JFp2h7t;)p z;jVsy;w@0jGU%E!^lMR_RZrnaED$GwSD^$vx z+g-D1lIU4uM~h-4SR@b7sn-nNqK<0AdIiMbrepxiC5lWCJu3lWcBbARSDoXlz?}jS z{tpzhPZtnwdrn4fdbSgFd64}Cw52{G^2RU)4z9{-TpG;+WI5epa8l%^Lse-GSxkmG zW^V@pLzz=|kc4LxWHNN`Y??t-j`AvO=(3=K6z4w2bZiOJmFd)c{0HgTsafe6PPFIL zRAMb+sX-yE-FHOxi3nmyxw*;+{d!SOIx@j9Z-$AmF$8CiVFp#DW~8TXPjPx^*q9Sf zq~puuo#ZvcR;8wAKs%??E!>kOd^5d7>m+ZUw=tc0O>@c%IZLzhQXxi?>IlH*tei|~ zcJ}t|*%~PPjuYi%Z%59P$++Jq6*O2y6S!gvl-+3_))$W zNDkzjV&L1;C-a6D@#ME}{y}D(09?aN&E^YVc-&Rp{o=v_==Yv^f_hSPh^hKt6wrui ziSgZ+nNY3V7lgPjvoB}}K+xkmYz#*hsc}>B5Lgl(i`7HKxQ4eUOEHB=Dr3tczg1V3 zLAb=q831uzO!AD+fvF&}=q&AoIu92XaaRH?LWsQ~Vk88UCCGcxAjO8aW_!7+TxXv- z`j#dYI_(2!EbTqMdE9;A$&2qde}9h*2p|!3v8Drv_)M`tMa+((?I(fo;E5EE=|LZNwH( zPq6f(wwlgShJ0|=8Cv$q7#p0sgp>*+qN5{t!xeEvba}Pr14(sxc{Q)UBCalvj?gTY zkUXJ$5(@#e*L&fnP&&e}`g(P^`GX(qp?E4&LiO+s6!?i`y^JxcVFAMx)(@y@R^v;7 z@d}Mk#?p`x-T>_#%?B=j%WIly+FNJ#EZ5M{-mC;;FV4NG0oMM_i9Dls%>AEm+P0mwR#{94FO*>n4HHDg4c zs~+-9_YlHFL+BI9PSy@+3^8jAG!Eu1IG73t=TE_FBm++mN}yw6wU3FX0(cG@8VNa@ z5*00h0FDBho-~?WWd4^}-KW$^hx|z7^N2Ikpeq05;g1?JCG1N&X&0R@rD+}W74b4X zq)EUg!Nf6)(zuCWpzaR_>SVo(etQ%ZoIwKNCx@F3Cg7Gk1R0kmU&=b<%4}+G_|Xf0j)13&!pSbR9Nkb!5MSjNAae zv{C%ZY-RXf&!1^>;qJgM%;4)LB z$oe(1Ki0fRHUv3;`0pK-<#i&v;?=QShA~?a>q}oj1I%WeBOUqm>peo}spfg?Jhom# z9XGSQO*^yTBaMEF_@gr)wHWic1<9`uUT87*XsBIwuhOAi-8JB)WB6AtUYf_7Z<2ckLy- z-;n^J{cx&UHGr3|0HJvBeY#jBccoTC*DqV3IXhS+uPCYCoeSL!eOhqKW_1Y+Ch_an zq~ZwF36oRrHqL<;D$Nw=iqj} zBKn=?5LHSV5U@jzEnlS!h}i1y760U53Li?Gx3p5tXVUUb>q>o8@mtcP5{i=x(=?UZ z-M+<<(klP_;Ee!ENdj~|M!hRmMkN`(7*&yxSC^Ql(&_Swixame=4gD&!Ya4!m-;m& zHGK>+zWYw%bZ+yGGNmpjOLy=+kDxMMw{3gM)-CA)Ta;_6Hl5ymwEO^HA5*tenUj^B zQ&zt@p@84Hv3U7v3b@XhTa<}A5({-jd3l9=^X{vk9y}{ObF&JFc^y7m6g8Q(nKgV2 z30VX+SV}TmdfIm=v3g4t5*!rb)3mBCRC9Cc>A9yyNL%QjY7nI-D5=*1pzqtzk^Gj8 z*iD%EDYw=K*Zcyp_hmPZ^S_WGr*Y1ku7va-E>B6MLc4rR{JJ^{g=_$o>??|oPe=$; zm6L5Ea$BY!qvtBi!*!w2PKF}Tg@Uhp?Z`a%QJquA6Y~AB9Sxyz^PKc6XhXM%!)$dY z#?f<4AK7em2W-!bHa%3-Yhj5jNGz43=}e!*U)L-&VTexRtAsH~SrqL>J+zcQ!QtEu@9w0{+~Tjum|ICc1# zx~Ry0$n-*655#}n)z>Zst$vT6N}WpRwB?6DI`r&Jv}@u?GqWyds-MU^*S7eI;SQpxR`O|6jnVA$%< zJ@ijv)p8qq!R5y?xfJvof0T_OwL5G=X#g6|-i1cPTq@{nG3XZIEauz=c*o0yW`aZe z+67o}yuXW5%Day*vCs)Z;$Nc=PqLlo##~oAh6S7iLpozy^ z5FYMvVybR#h|`%BZ|{3k1th~~3@cnH7&3}&hQ_O(+k>x&&Gu{^iY$w*WLs(8{qjpU zz;gnkTzg7AL^c$>K4!o{XSoK0o(yUgG5tDpFsxNOws3DHj}$;#F*}H3vV@v#qN=wF z-YR;V-_du6bA3PQw90EypQ%2(R?$+asc+ly*N(^1qALZTeWuhO)w?S6a|{ylmtj#L zZ+I<~UZFR(8D5K`zX8ANENPblG9VO)3o=%D=-vVwQ3u8kMmsJ?o*Yu+8#?JoNWZZ4zmrJ^ zdf?Pd_5s6;t^RD!%1#q^F|~l-OD6vd9i8b=kjOg?ED|&^4#yfCq2Txo1Q=b%6GZjg z12H`@Jdw!%T8tOA16q!azTUXIN228Wj!yDD69p?Fn-y_!5m|AikSB_D#L+0W>y_Q) z_m3;hsxB>cVyq|Zv*{IIN=q@&aQ@or-6D#N;FWC!&r%V*S{clY1SuFsnh08%;-)KWNT*e;ols z+-vV2yb?Yz*F20}Byqb&}{B9jteD6c~o(?x4hIgJ)d^~$}XwbpHgXcdv z;3G9S(@aHCQC3AlkyI`gXtl*rSqWNgLRM69LXoy2tGHN7CQbz-W7h8Ia_^&#QRP8d z(b2xXj?q!z0*ZoK;|{lXy(^-2XO&ktH8gv^w#aR_v#Fy&UoPhWc9pWp}7AI6> z6%|1r_V0?5_vV~k(>U|W%ssDa<+qgaYqp0Z3<#AT&8~^eQig6^wqjB6gbkrzooFg5DJm)|OesjyWul-` zb?9RZlzweTrCB)Zx!-Q!%gT0E=LxEM@pwzp*=q*G#(QeLnS#cSjS8d!*mHS8gBqI*|zDzUdc7g-Ns4 zEn4g^%_{YYU4_jRP|L!kS!)W`Zs8x*om+W!Y~`kJGZGg{ zsZfCPSbyWGElCd(r#6^+m>Mf^e_M87ym!1!EX^R;SY@H#(M$A}qCUHq`ws|wi_YO45sJh4b*p)LNpdPP`QTwCx&FPPI(K(ac^Mx=k3`*;T#TSvy7ApNhMsZGC_ay;q$ z#`LuTkW2ZVCK}$Z1{#3FCeng?U02Ylra+VDmhHQW?+wjGJT|95uY8Lyx>|O=rcsI! zq#q0)EhDA7CK#S-CYTJkoFN>!DL) z=8o$-m)ZnU^_ppGhbB@hX;!*Fxcq3}N;>J6Eai~}#P`ilFk}i0eISOW;#b~CDnU1; zP9&|4%m#;7W{!%IM@XeqZ>y@`xjlQQ=3>f)+;f$CbbBgxRYFC?802o+&!oEcO7We7 zYYbCoI{`n`Cl`Jyg|x;9vm?hIp6DeE23!GTUergQMSMD*Y@+6yr=(L!&~sHUAq6bi z;f^^{nxtQ%AcyHTkU0+Fw~a>8!vIu)368o$pxZ`42!$MjlxX@zFCtuf*-+9^->Wm% zkWGGh{yiPvd9Rn~9OUHn&(2Ec(g%ttdY{$;-fH(79e2wDdkJqoE8QhcTUU#-61hGW zTZZT;`U~jz_PE!9JkUS?wYzL2@!QMy9|5faf{sFHdvUIj$!nZ%%H%f8Hjvqb%qC+t zGiEcdflaUmHn$^ZqQ!{?$vWsL5qGv=(=$f)tmQJ>9k|LmTBfocbTUa%%e6Ka)ba&3 zJJsc9Bs;;0EzFY1otc~czq?79o9N%&%$b|nf`1Du$b*}}3 z2(g_IO+TIMNOyuN#hy>+ig23E%2jCJDH-?L96J{?`X{ zoX7@n0?^MSNN;36(j0V$TCLkN+35lhrsq8ksN9ec>F*R7P`rL$6q)DjNGER+#kdty z;g>4p2`s_n(@RjGJPPTJqMu%xP#!{Uzm0MtlQ+?M&H+){^_2lml>tY!`zp!2r;Z*_ z_6(Wkb-V9?OSl=O8)-}#IaoaB(Z4QSc0w=49l$1|NH6{(#~0imeYf~iC+M6^G?oYD zYNO4&T`}bbe(l5nmFD%{7kRX}a-UP>KJBr93OesEN5J@iEWNUqFqy2xn0R0R7`^T$ zz=4zKwJLhE3Reh~m87K-$gl^{%Gb7$8{2RdQW;5Gq~uoTI0gNFHT_{V{u+dyP}$NH zX0VK-A>UDdG6pPPf6_l4$@eF_{_8E805;Q9tCyCMka4(f83V4sHqvT@(DLYsn|9GTvEfuFu0$N@MRE~T8V7Pw zbj(B1k0z6(e(g}O(6~Y|3Bq`bCfy~AMCAR|3d3~z1bfiw%*57nI-9~wCUZysb|9at z$s0hQ1gfB}HHJ*kKPG{1>c~{$c$LWRkr80@9acheT!3)j=MP4dn?}X~H$+|?(+h%t z7Zhc~=&XkI)$Rv2w3Oc}eIKh^P~JglLvCb_Ru!{dn;a7!7lFIA^Kl{TTzi+6e4VrN zH?k@BP)>DPZA5WIQD}5>d_oj1lOM+hOG8$L#BRtKnL6vMeZQ6-|B+lj_4U5@ziqr2 zvM=uV){>Mxar+udiuUiWDm#%Z-J4bsQM{ zu+Wt_eo*|T^tn6rSEN-(lx$1emKGn8yDc}OD!vL>s5aW_+>$C_*y*q0kQ`IzpC1+- z9-ZR9Bdk1Ze@b0>ZF&Cw=sM}M3MfU`c{uTmZ@uqMuf$Lv;1Dct2yF;CquY5{YODv@ zvxy2s7ktFCXk)NXaN@H1jqF4H#-_w0^+$H;&V?M2LbDeU>RVaG5$PZ6$Rg@;vI+>o zDUf{8zD}2cqzFF7F;H_pH@H9b{ew<`jzJ-qH^+WYPm)OQ>_rue4tYL+K-@e(qJEH@ zo0o%oFk6h)m7g3Z6R&4nulnQ!3MFJaKjH;IQ|WVk$3R8o?v44ukwM#1HdY2z1|3P+ zRk^z=|41a%Bq1YXfM1YS7hV>g8lD;(o*SMQRvTNJSDRN>n_3GcgmuqnD^hm_R|Ka9 zr$hzk2jvCtirSUGE3aZ#%5Leip`Er0`Mee3M^=>hg!_cYd)02N@i`rTxb{eG@tLjA zB^w9c?zHM{sQ3t0@u>Q$xa!=hywa-FYAIbzQWO#U))j8q8n88aU3EZpKx6X0>b*4u zjS>5>l>L`q&~CsZ?S|?s5Og@U7WC+0{M!@iZh&$5P|+Yadt@#!6Z90Q1V;qTW=>{( z%?6kaF&kkv+RW9=&1{C*+h+64)|>g5Z8i%ui!zHhOEOC{%Qf3&_MzD&vm0ign>{f5 z!>rwWn)yugx6S97FEaNuUuEuZ9%-ItUTEH6e$4!&`8o3s%s)22W`4{3OY`r|e>MNz zyxm-H!C6>a*jqSRs4a$DOtfgW_|oD#i(f4Muy|_GVew2T6iS3v!v4bH!imDyg;Rwy zg>!`qh0BHOgd2qc!cbv^Fk09wyej-f_)ugaau6v+ylA3mn&@rOJkcVNr)ZTZT$Ccp z5`84PCi+5jPb?M>6Gw@Y#M$B^agBJFc)z$o+$g>+ejxrs{8-{DnJZZ$@sg~S_(%dJ zp_2C`7bG7`u1H!WMDjw~M><+MQR*h0A)O~(B@L2plg3F;OYd3QTPiJ`Etgs@w_I(R zZCPYlVR_B+Tgx`f=Q0bKrOZlZD|3{MkWG=zlm*JtW#zI%vPRi^vL@MYvUXVqXU0i5 zp6kyI<=i-LE|iPr;<*$qlgr@>xE)+Aw~sr_o#ejeTDeZ{c@Og*c0FF}q3Yq>V_1(# zJ=}XN>9M|tPY?ed;XPt{B=$(_vA4&^J?{2+-qWI|rss&B^LsAsxxD9^o|}3G_6+YC z-E&9J6Foog`K0GFE1A`6Rw}FhR@1H4S%q4~S>;;ktV*q_t?I4zTD@m=-s+mwEvwsB z_pE-ldT8~h)njXswcL7`^(gBJ)>Eu!Si4)#xAw3Ouuiouw%%=h$oiD^dFzj?FI!)? zZn3^&{j2pK)}1y|n;tf{HcA_3n?W|iZN}TU+Dx}uXya+K#U|7y!=~Eipv`+W=WQ<9 zT($Ya=AO+jHox1n+5BZgZEbA(*-o-`vt45AXB%ysZCho#)AoSvVcSOA)3)brKe7GV z_K|J7?O(WRd|@ZHSmU7TH>U8!A_-5$Gl?M~WV zu>08Viro#nAM7655jlpuTqAdp50np+kCso9&z3I$G_{X>vpifLEsvL{$TQ{n@?v?F ze7F3d{FwZ-{G9xv{IdLp{7d;a^6%xp$e-E^?R(hU+V`?|u^(zb+J3720{eIDm)ozl z-(VkNA7LMBpJrcVztjGJeWU$*_UG*{+F!B1VSn5HJNw`4+w40PW(u)_Q#dL#iXn;# ziW!ReiX{p!#X5zbVv8b75vhn%BrEb16^gxzgNmbyCdDPi=Zd?EpA`=kkFl7UIaoSa zJIEcJ95fCt4uc$qJB)Fd;P9ryJO@vQ)eajR0v)0pQXKLeN*yX4>Kyhs9CUd1hD;A_ zolH?DZ}q0ko$0D~->kkIBI6{l2YODMto%Qx^x~c!lwP-gqx1p{`@c|n-TphJm(h0r zru619N-uU?kZFcw^E7~$gbl)|Ss)`va4`g`9`2O}%O3hM-jJ(mu|W(5j~ZNrI`Ft2 zWwh!VgIGBP*H^KT8h27JyDS+lDV>i3UQ;Aer&z&At2L zO=6^bUKUrDp&Z0RI8V(1w3181{4GgSqt(>L{P3WaGbt_&u@469rG%S_WF%9OgqO^e z$r&=h2tI339Ev>{R>#waGKuxR3IGCwdP|X6F;|#gm7?6X-zE=E^wnFd4T3 zRU}E0ae3+zS+$yD$iJK@1&m2a%B0-H{1l!WgT)SAGiE%~gp>kJb8(hK+k=sO{KDZlhYmtwtU8QFFs&!_^!XDr1R3 zc<01#s<|K(wCh&TW1x(Kz*-8bXPEl3m|J>cO*8l7o43$*-S>vTr-;Sy8y z#eh;3N1sC92LKeANdQgs6bD2vHOC;T@axSn{ZbmPOC4jNdO0dzV8LBpjBYSW&E3aU z!VVcXQf7saV87r}@_Emuchm;d_AD8z^Cjx0rXm@)lF=-D)LewDmqdVDpxH7`u>>;& zdi9t$-yFj&lew>y4dKL7P~SEn&Js^pO4Q^Yn(8vL!w`Oa)m%-!IvqU}DNByZIL2?{ zfgQVth2EpHWtO`0yrD%w($vpZcdQbfTQ>OEbd_OjtIRM~GX2=#bDn(1>St?2VRhs+ zbse-_#p|`?9b^NLW4H#D0E^3xy}hDan0U*KY9efSj_B%sRu`!xh}tc65UZ5UWf$H3kd@)B1zOeOj}+vqk)aY!c4P z5}?&`Swu$VkEmO{loY6$j?~zkxV(7WJ8S^Q{6^}bG(>=H zCJg)@wtQ$ocu52hqBqJi1y1{8BFTJNn%$XriX#C2Hsh z{EoR@l5s41OV^xeZa$&6ldW0Gb5B#%=mMlS2dyHG09IK?Ej26Xl1fugpG`me3hF5oWJi0U@2NL;O=KMF zK5oPpvk~T9E-Ge61=`x46so!UkYic(^-i2(4@RCI%}?X#e*9n>#;#eNleb2*D1VLj z#5YGQ>c7@$*L(FBs&4Ln=s30s=tsW~z??fsN%rHs8K)o1ciJ0t3T_GJMEypL&7taW z8P|K6D%ZmNNX;D}u`;lcK=Qahwbnqs2~vD)3bEkG0QKGmj-RuUsx!Uk zNfRYe*^%3$_}13SRu!m-&f&SFkLJ*JQ8p$!ow6dmBBPvtyN}uh-?>gl1XZAKPFc$H8nFmRbvPPxK~0d6Gz0} zBvJ<9pPW2i9|pXkqPzmgI)c%Mq{uiQuyX-=lk5HcxJt}I`ukv1jlq528)Bd)SwZM` z#=Vx5^ctS7hg@!^XmI4J*&5JkBP9VeMnt^~_c^F|)j2G|RsdpxV=zJIB#+z-DJn|W~c$4yYy({+$-H>epg<|ZW zFacvWe;t)0d=t|>o!9}{d@&dU=H4B5>BG{}!lFEYot22Pqs0lCadAozYbH~%-cQ2a zm9gIPj+z^bySi-{By8Ho0(oQMhckF?m+aebzn$=(e>u_!od!Y~SC~fpFr_;J_$~pQ z5#k@!nBE=5Ef~yaiDeEjZ}PW0ksIQ?OkGM&+8Ju;s1Mt`NKG$^XOPJv<6NYnEw128 z!p>nFXrI8^=D>$$#XxpEIMQEc!HMgz1=*?Q&d7}S*W4I2mMIk09%}>}b~-X2f0+tx zR9C&OV&`tw1I-aij64IR2dNZiq6&uVT+fhwdy}?@zcD?gRS5TnS6(lFRUU~Zt zGr1{hC|3h`TLCB8hxv3jN`Nj2MR4}m5racd&4tPII_`2TR%=j9ImQ`vjzNH&Ll)WH z1-sOJ-hxYArrYwF?q~QWU^~}I*jAW0sIi;kx}m(gkhr;8ETps%TQQKcfeua&b8)4( zppD}ylFQ>uxSJO*-sB{DHR&lT%hQ#VL4UNQD77dlpHIryW+$dYafZ~9BVO36iev>k z4Yb^{Qt=PPtU$mR2R0eDb4;ThHYq5Hha{>jrc!T(T?UPvE{aV}jE@Ckr6eIQp)iF{ z%g+Z+5k$VBQX6S6n$F>DU^SH5`D^+Z#)|^Q)COv%Y%piKs2_4*!Ux;SVKwfrF`e3T zB}LmI|DK<_Jy(@3(I%#*CM6`rI~hcVU7}I?ZzLR5PM3WnI+yb|?%3$yB}Zp;JX1*%x5s>9go16*%wbicZy09WXv?wq&avK*{Qjt=w>Vlf#O4VlEB6Sz1D)u;%-Sgin zfpm!(^;yP{)rrqCuuYl~pL5VQi&c4J6i8<_bcG6{JucWTRN$WWHApM_lc|U|A}c=L zY30iJ_^gPMI46!WR?g35dWRkBiJBjMXR}4vL??ZY77FL zEW*?ZV?Wdp9Ep6@sIwL96F0Vwqt=I=~*i~WsL39t`4h`JK%HrzPH$Gg5=^T`Ru3S@_KL-#SE+k}qR!BXk94+Ip z$;)Dm=)ox#du(`n=*mxSeSY%djjykcoyZ&h;@0vZ5fNJ>L!OLqEG{i6D=n7R)N=!; zPwVH>GPRYz|LN83s)E9z+@egbpA0;)+)>)5f4=56U#$%Xj7%8l^I8qJ9)jxkA^z8J zl*xe^#r!x)aCz9y1U|h$mr? zudY3Zy}d81x>tT#aF+a!l^d8~SX(~75;$H%F3~FrZAM~}R>gT#dK_G>0c@*IH0R7$ z8@^U?CwvdBUF++&W^IG-@#75*$9Xo+**e6Hz$OyRZYU{Bj$`|NOyR7>?a7xiY%Cc# z75mGPN3y+~-WGot-Gxi2#4UuXx+=G*5=S)>##x-gWj{8ioCzL~+){I{lc@P}YNdjL zck{D%CKSJah1mbDoZQl zK1Cm3jQ(z17W7baObWydUGun__0LYQ3}Uz32<He($3v zuqxuBQljJIdE+6Q=f?2QTErZ6Auil>fbVj~t|Rf=9dw8%0`Z~UyANr&9Z(SzkJ*9C8)Y3j&GGH&Bs>flCYs!aj; zrNJ5wcs#W`R9}h<^OKS?LCiwm#ex5l%u0`q3x^e1%&C@zZ42dk4bWSYyVH{Qxw(&%*v3;EmJp|@{S?_V*Kjj!&D*JJ8Gxj72wQlWCta%X47wF!J{zWT09y_I4KB73FXiH*hq|3)A}L ztd~D-Jd(S2FN@lbS8=K=1}`o=bK+|acLWmw*i`w;824fmm8Y}X3`(=+;7+>`0~cCd zqG}U&?@@9fV+*7L0m}z!15*VXqZ`b zE(sg<6!^ua2gi}8+##S=abQ7cz{;AK%+dY<5H~TWBS3=cN87{bE@fOc2a(cYkRz=i zJvefcwGxy#^Bi4)?$`&wKpvd17adFsdkMb~bK-`**qd%C@I@7cp_aosTQFMb3n0}W zRdbNhVq+b3#E$Ts0f##d(olUl0sff@>;x9f^75ZlAYt|wF9foeHp`bb3$d?Ro$MVkC`!#y>{y&H`tn$#R3otWWp1 zUU-8qybH|4Mju^&SjfLazx?nIPA|XxzqH7DSc=3)CDLR6w-Xhbbt1}bs7sMxg1}j@ zPtYJ}6nrH3s&}70e4jO~R;_&Nl-7Bzt6Dd<`n7Ipjcd(mt!iy(J=%J;_1o4zTA#OB zwef8O+6J}_Z=2FKuWeP^mbSRIoVKdAhPHEUSKGdA`=jl7yHz{iKBawL`>OUW?Q!in z?N#j!?dRIBwtw6H$5Ylf1W0-Bf21sEwQ23$>ejlTbxo^J>!#MAR&8ruYfbBs*5=mh zt>3k_wh7v7+MJQ{ptg~1Zfy(N*0cq+Y1{JJYTAypHMd=F`>w6EUC?gR-n-qceL?%0 z_MmocdtQ4@`;qqM_UrB6v6NqYkG{F$#lja;UyS_r{Kj~{{ciop`l0m$>)&vJcHjCJ>z}QEvi{Nf z2kY;xzq7t)eb@RM>#uRScH8o2Xpu>KrZZMUp%a*f8Gw)MX><*NVk?f>5=v7iS= z04HD<#~5~Im%r>6^Vw=^*QWvt<3JT$p6@!6CDAg<_q`V{p1-g(6EmL{2+{QqZ(U=~ zlGPu+|L3?dZ?w<~g3OxXPb=6e(jpmwU^R>VpC0zT+kGV)kO*UXH`>`dCJ2E9=BwWj zCK6${FgN4F{NQ16usGqSG{(o=wSv(mKPId6qbu&7rf|&7RBmQBy_?cDg@L);_-MQGZTt>9>d%e&!BS@| zAB&g08y{_Vxw^kunBHMBe?pkdUw0n=&188pK7W57%KDbcFKZ7|U3I7DhQ9iu+ujwI zDeQlmT7iQ3GnM<_@(lOxwzlauH=5#vf1xq`?)bXht(j@c7wScYcjV>o`mpSdll1}i zm}>=Yc#Q3Da%1Mpc)IKZyW=;yTfo2Zd$(!w&+=%h3sZUE&&}k<^1#@d)7OmB(0afuINbCe(I) zV{T^McIFq~#xaw*v$T!r!+bTK|FoO@!5n6hh%l%amLHZ5%n2|3YXutQSp#?D19y$_ z(RP)k+n>rjrnO`s}--{Qf`0zdj-yKcw-Ql|Znfx0~w!zqd?@PM#J($IXcPY%i zEZ_h1z^@g1Ol|+4@tg8wGTC=#XOF2am>qfKn907Io>$+Q-Sqy_u7zJb-R}@W`8!UQ zcf@Io%VaV)??c4o52#O#V%#1nXgU+|F>@jCcpKZ_J&A z@3MF03-+%5t`!Vm@tMZ>tLZTRq8EaGtY0v9QyVgOxLGr^J1@q*V@d<={Y-i7cC%-3 zywbm3mfe^J;$ivj&b!(ametFDK5R`erNd12{AYbi%)83U;>Nr+5`MbsN-G#{3WIoD znEk*1TOcrh-{|8tGo`?++wTaNU3N3C@eIPM{E6?6zA8c)@KO^scH4!o_z?+Q%*wmn#jm(a1a)TTyWOP%NAtDac1wZ1xhWn_FxWi1+ucgwYJT#~ zK%Cb7e0;;4r?1`W?L2GkmJN~4qeqVV*Kp^l{{GI!Pod5s-l5(hTfH|7pBcC%Y-)se zXkdW%%=z;?=1iS7X}-tI8Os*TU*xgWJ0#REaEtTU;p2yoG{&*O-+OJSH$rdp4si|( zbPn_NcK$oTQ1A6&%>Twfe8iWHh}$_VWbFp;fVCl;o!5qih4`%tH+tC;80NR$I~2)> zggJMo|95_U!@`0ljTphgukFg)aKFHRbQ}R(I`1u^-XjEW3IYW|f=EG#z)#>K@D+p! zoCVVbYXw^c-muMrZHr(7zB>y>3q}e?3H~J*4*OJrKYq@ygbFpjc?&`jF2opm1ANXz z>{}4$R6zvXL-7^>a}gdNK{#Sq3%@f3^9Az+9)daWH4PnaKI}6EGX%>73t(S_x2487 zLyxYu^5reqXbk0y)C1uXhO)6Q|5RQUW<7kE;@^l6 zA+LmC@2nIomJp<|0saGwdEX4TwQyzbeu8x<)8DadK`8dN9==1n>mmd$toB~5jen|b s)(&B4mq{38BT$mA^w<7dxZ%e9{-66Cfg0+{%@$)VvB8fK@L&J^FN3;7EdT%j diff --git a/static/kevin-master/assets/fonts/Lato.css b/static/kevin-master/assets/fonts/Lato.css deleted file mode 100644 index 49a28fd..0000000 --- a/static/kevin-master/assets/fonts/Lato.css +++ /dev/null @@ -1,36 +0,0 @@ -@font-face { - font-family: 'Lato'; - font-style: italic; - font-weight: 300; - src: url(S6u_w4BMUTPHjxsI9w2_Gwfo.ttf) format('truetype'); -} -@font-face { - font-family: 'Lato'; - font-style: italic; - font-weight: 400; - src: url(S6u8w4BMUTPHjxsAXC-v.ttf) format('truetype'); -} -@font-face { - font-family: 'Lato'; - font-style: italic; - font-weight: 700; - src: url(S6u_w4BMUTPHjxsI5wq_Gwfo.ttf) format('truetype'); -} -@font-face { - font-family: 'Lato'; - font-style: normal; - font-weight: 300; - src: url(S6u9w4BMUTPHh7USSwiPHA.ttf) format('truetype'); -} -@font-face { - font-family: 'Lato'; - font-style: normal; - font-weight: 400; - src: url(S6uyw4BMUTPHjx4wWw.ttf) format('truetype'); -} -@font-face { - font-family: 'Lato'; - font-style: normal; - font-weight: 700; - src: url(S6u9w4BMUTPHh6UVSwiPHA.ttf) format('truetype'); -} diff --git a/static/kevin-master/assets/fonts/MaterialIcons-Regular.eot b/static/kevin-master/assets/fonts/MaterialIcons-Regular.eot deleted file mode 100644 index 70508ebabc9992e64f1314f866b2d7ab90438c58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143258 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 Hzx)3OGG_Ot diff --git a/static/kevin-master/assets/fonts/MaterialIcons-Regular.svg b/static/kevin-master/assets/fonts/MaterialIcons-Regular.svg deleted file mode 100644 index a449327..0000000 --- a/static/kevin-master/assets/fonts/MaterialIcons-Regular.svg +++ /dev/null @@ -1,2373 +0,0 @@ - - - - - -Created by FontForge 20151118 at Mon Feb 8 11:58:02 2016 - By shyndman -Copyright 2015 Google, Inc. All Rights Reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/kevin-master/assets/fonts/MaterialIcons-Regular.ttf b/static/kevin-master/assets/fonts/MaterialIcons-Regular.ttf deleted file mode 100644 index 7015564ad166a3e9d88c82f17829f0cc01ebe29a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128180 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 ohyj3!`#ee%L;DTjx@8!5k5~VH0QmdE^#A|> diff --git a/static/kevin-master/assets/fonts/MaterialIcons-Regular.woff b/static/kevin-master/assets/fonts/MaterialIcons-Regular.woff deleted file mode 100644 index b648a3eea2d16b6ce783906d6b7d5f251b9eb56c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57620 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

wF7DI|Kx|V1sBQ9FYs>m5C)C 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 BJ$(QG diff --git a/static/kevin-master/assets/fonts/MaterialIcons-Regular.woff2 b/static/kevin-master/assets/fonts/MaterialIcons-Regular.woff2 deleted file mode 100644 index 9fa211252080046a23b2449dbdced6abc2b0bb34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44300 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 QW8}wPUeo^@jR61v08@RD2LJ#7 diff --git a/static/kevin-master/assets/fonts/S6u8w4BMUTPHjxsAXC-v.ttf b/static/kevin-master/assets/fonts/S6u8w4BMUTPHjxsAXC-v.ttf deleted file mode 100644 index cf3da8be2de3ed0f7e741dfa0ac9a4c46dda86eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60936 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 z 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 diff --git a/static/kevin-master/assets/fonts/S6u9w4BMUTPHh6UVSwiPHA.ttf b/static/kevin-master/assets/fonts/S6u9w4BMUTPHh6UVSwiPHA.ttf deleted file mode 100644 index 4f3d84480b5bfa7103a13d33a27669daf5832cc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59032 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 LerFKMQ8E7wzH9G3 diff --git a/static/kevin-master/assets/fonts/S6u9w4BMUTPHh7USSwiPHA.ttf b/static/kevin-master/assets/fonts/S6u9w4BMUTPHh7USSwiPHA.ttf deleted file mode 100644 index 45f7947ebbae4ebadf333f52a65822848a93b194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63388 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⪼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 G#{6#@^db`g diff --git a/static/kevin-master/assets/fonts/S6u_w4BMUTPHjxsI5wq_Gwfo.ttf b/static/kevin-master/assets/fonts/S6u_w4BMUTPHjxsI5wq_Gwfo.ttf deleted file mode 100644 index 96b4f8234749142369f3db9e73951605d468a5b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62308 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

&=c$o%MLe#v1k5Ov&GY-;Wji&<&5$BOnDJxWa{ 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 diff --git a/static/kevin-master/assets/fonts/S6u_w4BMUTPHjxsI9w2_Gwfo.ttf b/static/kevin-master/assets/fonts/S6u_w4BMUTPHjxsI9w2_Gwfo.ttf deleted file mode 100644 index e8d349b6f91d69b8cfad58d216e3a99e8d4aad6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39248 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 diff --git a/static/kevin-master/assets/fonts/S6uyw4BMUTPHjx4wWw.ttf b/static/kevin-master/assets/fonts/S6uyw4BMUTPHjx4wWw.ttf deleted file mode 100644 index 3c2d417ea4069f54cbcb038788c010adfaeb1af0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60524 zcmc${34B}Cl?VLpdwN=|#oA@bwq#khyswh?O}1mlv7OkCoy6HUXJ1J|2njm@QXru$ zErdc?3x!h3KsPAU7ASPu>CCj0_M1W}ZRy@l=`w98v6b(C?t4#`9VY}j-|s7RB)xan zbI*Rxy;op@AlUJbP7vk~4~;(iz#oi)@WZPF!FhQ8=#s7z%_lAsgx^h~)ZU@ds@h8n z)?X?J-?rfQx{bTm@BPflf4LdIcjEWgHy%8Yr~iA_LxS+y1b$a;-n(Vjz7_itg76>J zf}sD!mi7Dh3Qi#l?H|B<%a)y&ZccnM`-g(S(B8{^TQ{wrn7rrD5kdI3M!c`ziU*lr zFkB)C|Nd+IF4(&3z@f{p9csY)y@DVe+_`7t`uG0#+f9P-3ff~Y?pl9nFZ-e4ANW0n z@_D=0@7mP-r?F0q=MF&-@7lX(|AA$1SPu!p|5J|NJ$v_U+WUy%V?Mmcn1lhqpaSil zmQMegvFMr(1a~+Yy%EpG_ma=G}Z`;NBv9jXI=HghZ z)9dt3o~}wbf+ap*anRABd-%OA^>Vo&3a_8}6Z;-k%qoP1D-t$A2TdWo?zR z0Xv|0fsQc-=!;k?KwpxaQl3tQz8~)ZVEh5nsRAA;Ps&c@&v++ctpP2q47C;3acD7z z+a?+!l~SEUinoi?(5V#Jlak(~zZ8E`nJZiw2vp{~T>11FcF8BFzFx6(*~)l)<+7y} zV(WX~$6L1>Z?h|?R0U>vmvmCR3bV`*Ji;duPP17M%pSAHk%=c6dYwKsQ@6#$bOK{R znhMQXmUI$kEnp%8PyHHrR+K8jU-42Ar4%X@pdS4f)@3Iucu7n!2mnabT13XDNZ2k! z37AxY8bEnj1%biFfDTp65q6}$vY1`U2?cWXcJ^!Sn|w0)<4@#8B6*)+`P1L91VTNS z(Fo?+E_AV`1n|DAGtq%x?Tz(yvFfVQ;-Y9_Brlj9@Mk&gnbr)G#2niED{K}~XSYgN z6dlGJH8F$19Lh9{vP{&MVHEXxTZmv|5%Oep?aNR~Z-~=NDyh@Uf*76E5LL+(IJyuJ z8?SaoMtWLN_sLQT*p3iyENTUei+SSJ`vhPYtTo8p9T;2*U>x|m=TGR?+J^o%7n z%Nb^dZ+d}`1}JH>GT?SZu-KVZvRDaAb%MmOw)E0Qy$Fmx!j|RAN=R6Sx_EtqDv0>T7*?wczv-7glNF+vqI6U_Eu_1q$EqKi;7e;UFd?pJeOjGy#z4Pzv(d6>{Y@I=7 zE0XsXhS;ON9ND68V!i#jIc#$WE63jBn$$JNKvy;#Ha%Ho==~~tc1}tnp))4*2!SX zfUZQ)1?a()MG>C`f==fQ39=021;m&`&NBcFh?jrp_B>~|M-08^1CEagGJ~WjoF1r0 zmj{Fy`k?JdG&yi6K_}CcqnIYzEl`>d8x;JID_IfnfS8oe1(pSd)xiiQ3_<2I=p*@+ zVv!V-!1~2ZAXXV;aeC4&F*nt)N$k&;ext9>5U{zbd)Ln^?7d+}XVb3xw`Pa|Zu_w!qatAd?t+kzJJ`hmq} zTePOqD7rj#ORiqO;HI5Dx{tbouUHp1cLn|7upyb_jW0g3YQ?ET1Nx_2x#D%TeetM0 zY13Eqt`@&jJ-@!#&R)_Nw+;w`EcBguM}9+oRB#DJLXFTPEN80{-lb!M{auO1`kJcp z(t`XzmffaG@*J#IHSkU_5SNPz2Ek}D80niR5}pvNbA%wl35c!u` z9?DZ?J*|OW@6@L-u5r$~Ivtl$8iEpX&8lxy8CMf98~TO_y#opdzGB34%|ezl(+1$7 z0VH}-b!D(3S^s`*poodEN}C5wCu{^Rk)FVSC4@1AMTAiX;0mb;9^gu>wq4|irC`zf zloVfzFFVjNZ~xNj>ZSYVbzi)s=BAvQ&cedZ>g?=l`mD(jud?Q5U3L0589A<_a$S7c z{^{ZemR8?5yST1n?7EfJ)hn+XTYCMf>grY3FYQ{@5(u=c>grtC-DK0Iw*7sW9s~1O@YJlmK2(ooicBTI8w*C8=}Dge-sqrBSJI48ogd^#zTxU(R*Pn z=yfvCBLZa9L9-yV)Y_ruG#12&_YkXz7F9x8Dd^$@u5kHeV+O`G2~sE&)M}_?gki*i zVzu=RKq&E!p=;JQ==R7ut4}tBYI-Vbhnqr<{Q4-nCt6_?-Ok-&Zx<_nBDcW%(KUa) zefaK6`>RIx&1-9}o46(U?dnAn@x4#aOD^BOLw+nawx`w0Y|cPqWiYR4VMQd-*%M8! z?!LX><=y||^~vwpytl60Uccpz)xDQ*9}6zLZP9|O);64eyL02b$l`hI(@po0Dg;f9 z#ki(6lE{Ey=lYqX=_g(j*$Xfj6y*%uMN!QXdFl(|H)utO&?~|cRlU-2GMh`KN>`*% z;riqoBGYFIIf5afb7wF!h|}o{GA`8>KHtE98uTIy@7}7{*~~)&+d6~6&TRujW?RO# zUE;+*NbdTg*>1Es4b}U9_VZsIzVz2`|Lj1G!D-8MeIdCMz4RyFU@vREm|WCLTr47e zqk}0z!%#$vRo_tWWTm^dWz6hEr{B68y|6pJ;L1cNH3xq7_OCBJ{Hve;Y=1R6G1|>v zWVfT2b<$e#dHH8TwXl`LvRbIl@^M)DfzA09CB+4Kp=_5OijzSH<%hIhf*(Omurku! z%jPHqkWwMondpNwUIMfLC7w7LjT!n+QA0hjt%^1HyuM1-#$wQs+F1ugBk(fFLX75D zQb;bmo}t(%P3@`F6j1Euv^P>hg6b1ha5)!in*k1#^bU z2-8LfPGTUeB5kw~G6^~lrUY7pwomLuh?1ZZ2^J!KaD_fqPE{UBjRX+pEH5h<7xsi5 z5l6T#>=18acP6*pmfXQUraO^bazk=4d-4YMY4o)w`6o6k{9XtOYZLlxzg{P5`0mVP zj9XuX$&6WOO%!u?)|*VeTG>i*z94*gcr{us)x>H@v#Sh*Zw>8I1F?rSj!=0ZSQWAd zs^?b(t+tF%UbfyEC=EG|_)0=fZ&55*v3~7}Xs*R>wV4a6o5Rj9jD0{@w1|tvhrp@| z6M8aiF!lso0y9tqXx>hi zC#v&Kd+MR5YG1@Hwc=DOEOEh_K3|&V_-x~G_iS5{o%!E0kBEPhUx44BBB3`KbRr+o zao`EOEDVkf#y}hBIfJGZN4I4nt+kJ9d87h9U~9-75SLr4!vmg3zWl?ydtf6(HL#JXjk^ITRqm-UPsusQXkZGC-r@w*?z@>*; zgg!JA+bwc&z@Tb4x%SGOvy~0q;KRYSun z`dr;0e*5|4|9ozI{Bz9p{PWEH`SJ13Cx8F^!*3mHX*u@R!w>(MK7UNW`WB3bkbDm& z@$U(X(_zoFSxpd?DbGU00*8+XehwM}?vQ9VhcI~1mq@0DMVGQN^R%L<5J%H2o>neX zDM!RyI#)TJ4v>mWSD^OEn5;UhFv(m&Dg_966;xA(!fU9ye__}WZ;(|(oy8nLX>hc- zbVkTHVG-9H^@Laoum_?Rmy@6cCVsr5v*ar zDEj3z6VeQa&hs}#HT4DoDqJ+JRXA0MVi^P9f-2bmq1s^3h)FS2+oBJ$B1rOT>q5GU zVopE^!yf@{#TSHQq8&7k1*)5Kp?0pkdry0$b5+yL#|N(Y%*K5W?(OprdOYrsQPhdH z;(40}1}++ihDL7LyYlMAg+=pL)6!L2jCua)rHijSHac&|NTZ|h$!j;B+SAfB@sZ&? zlf$Vq$+-&>S{! z)>xDjZ3JO7=vWY_tq5v@v1;*w7&Lce-khbTDS*lmvnWx@5pjdu;hvk(s#0D@xDS%4 znOPPqD>0eV7Vwa?Qa+NjI-nQ6FwlMUWsI}{a_q5~MC1~dZup_g{q((4*ST|bPVw1C z?v>=Jzk}rE&313{26m~>u~ND>`Q<=s-c*Z%=TZ`|sT6*auvb=;6oqmF@ZT9pU}_lN zLJpAfGEtJf3|I{h4*WQhj!aVw6q6%uh5UFhCtxG%zCq54 zNvg3_10G^SiLMV+m%Ec9sX@?K$gm+ycIzWyDa|_$#|dGwVhbx=MsFx`g{4=ko09Ea zd)My$^nsS)o1Wj*abRL;xZW9b#roEF4;)%jSu}KTsQy6v-UH&J@<6mEc`U2zz^T>y zzI1J`zqCF$7zjl})ypqi*u8VG)aee3r$|l{N2vv*1Az5?#G}hf!Xcl>Y!U)2kix@) zET)6POe|IhkwJhV*_EP9(pfYIsah6oi}Cad8Wj^q0D@I0O`ctBE~1~wj1>!yxG>ZY z{G*t7D#gPx6mML5_knqRSASvG&d*-fJ+_kVu+`?BN@m6`Oa7pE;hy<@2SzK(hxc~( z9T+K-b~o+1Z}Y~-ujuQ!^7DJwympxV#_6BBDN>Xi?Af=tqH^)xuHK7=N^3@U5&zwd z`L_aEPGLLgNBDGRLdK`G8aD`oXaepP0uOf_r*v36L=$8{5N5(Z46O>b9h5Bc#!x-T zY{iEJ5+h!xMhZYt2E`u&YZqkI#&oTj#;MO*D~qlaS6H(hQ*KALd~!IyJoEHupip

_ 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

-?Mo6d)qdWbMV*_$f+1P-7G+%LZ4$2a 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 X(8Szl2s3ba&|wbF#Jr;{wVd+bSaAb0 diff --git a/static/kevin-master/assets/fonts/Simple-Line-Icons.eot b/static/kevin-master/assets/fonts/Simple-Line-Icons.eot deleted file mode 100644 index f0ca6e8cf907213894d610112d456b7804fd2800..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54266 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 E0dl-`Gynhq diff --git a/static/kevin-master/assets/fonts/Simple-Line-Icons.svg b/static/kevin-master/assets/fonts/Simple-Line-Icons.svg deleted file mode 100644 index 4988524..0000000 --- a/static/kevin-master/assets/fonts/Simple-Line-Icons.svg +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/kevin-master/assets/fonts/Simple-Line-Icons.ttf b/static/kevin-master/assets/fonts/Simple-Line-Icons.ttf deleted file mode 100644 index 6ecb68683477ecc5aed38ec3fc8910d9bb66276c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54056 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 Kj_>Q2Zu>vsTUp2e diff --git a/static/kevin-master/assets/fonts/Simple-Line-Icons.woff b/static/kevin-master/assets/fonts/Simple-Line-Icons.woff deleted file mode 100644 index b17d69491bf374d36e07339bedd3349caaa30d65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81332 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 diff --git a/static/kevin-master/assets/fonts/Simple-Line-Icons.woff2 b/static/kevin-master/assets/fonts/Simple-Line-Icons.woff2 deleted file mode 100644 index c49fccf510eb41b4aac2bfa21b3b87c254083bf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30064 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

`i;W%DyRrxz&7=UY}f`DBwGN z^QCTGvyO~ey9-qw{@>K>*0ETVw6;Tilw(vetE!&HNSMvhCH4F|*L8W}J3TzIc5B!6 zX)TxLl{nFlFOSxB;2j)0hQZWfaCN|UD9kj_4@^De_#GQExLdpTyP#guE1OrO0fIS| zxSjBT(4D`0xgb6tBvdU<@K5*iOZQ*gSnDtyG3`*QWVP4SM&u7H&+jH&BW}m8EyH$^ zUXgJZm*E1jHtHi|Q5+XpdAO{^QB6mi?5b-JhnrSmxJ4K7BtY^5#({pvti`&@%0$Q2 zKS#P!{jl~ina%4b51z(3Ogng;jb=%q_{C)j33V+fF3{na1B>a)ssN0$vnHYY`KUED zSe%EkO*W05q|)u^)KjR<0`U9WGWZDyF78Jp?^|C;Z}dM?>i0LH*9cr>jv)Z zSG1v}2sOq?`&!|ERTez5|9SB5@8{1*IPxf3lJPZBH8|{t4*+#hIC2(Sb7kNbm z6L5j(={Se#lB)h)Z?$zT0;E07Zx+*lLpRocoYh0AW*YZ5e6RhG{FC6)EM*2&gS+2P=%z&>^(%zh`5z zgLD>8h=AJsbh+L}Rk}(EwwcJU$b;mCJY+Qk$h!y0R{kui%>TS2Y!d*nLks~4SNQ9) z_@oNH+XOzHqpn7mu?M>aX&%m)WOJ+5=CV`a#nsBSbb@Y4ZbER5|JF=n1T$aEvFF`% z8-85%3PC9P)l8!7DVWL9QIgqfw=i(zIglaV5Vzget2Hg3NE%x zMG{$n|nzfja!?p&3@OfNyE-nV9cbL$uVF_@@Ds2+#l8y|A%B{HUFYqllW(p zR@x8$6r9+@rTr0m3^WYA`nTXc-kTv?Ib*YdF^i)3iLZ!|?oauLC$Dw!FFrCq4)8^! z9f<$tq_#6A88-l*U5|6*8w z|2^F2HHfH+?GtdU=N<(1>)-kQxf;lef=?{q8^q}c;{U10NISx~>9|oRe%wJ6~J1Z65;d z=(Y!*>j%xC0;v553fqq6@+UKCkStbAzXT54{~JJX=;}#UR82R`|FxQ>ko#b@nkxiFP5uzZGB^NYkOyRZ~x%%==cN-fx_SjBnpke;_w6_ ziA2iC#K0ki|gkS{4 zU~zZ?kwm6YX>!>rAn>Q>huPq$!xLO><*_Z{#x>QeSTHQ zl@QmFh+!S&U=+V!GMCTwn2mY6+$U=%%-sDF*c0X0e{(tzN`gYJNgs*bmrdIOXr4D} zL+k<;Ra#hX@kL!cmQr3VX=8Y1Dc@Thj|+n^Y>o&HmsA0=J3^=QLAY~~=&_f~k5Jn; z)R&f{^GO-Qrm_z@tg1?WN4MB2?2;`*r_J6)?_SAa9Bi^N)jHilp^?UtyL*(Xw_6gN zVq2BM3^CmV1HNeMalw9r%K?`w`9_Qsb;9USryfMcm>WM(=LR ztbq{KsYn=gAjPWkGZ&b#+wVo}E6h;)z$*mnxA(jC`u}J29x*FqJ18o$4nFC} zvFgb!_ikRB;I!nhReeHgKO~2Rw(*{2fs?7--oNWX2~#Hr$OAGp&S@3{;Q|p$vsyJV z63qCm2it-^B&N~VshPmr?_?bhuVLSeQpw?@b@a+~P_2Usvtwz$OWH0x3p-3czA_cDba!pl*@^f+grlr^GBA&$-&697h8;)xLr3_o3DzV5aT_ z)%|p2>$8rdh~Cov;d(KTCq9$cBdU$K&(YSEG3Fq#7~Y#U=(*ZPH#jZytJaZyWV5Nb zuBy?y!`!)UdeWz5z6T3xW^!Sl+)C4KqsMGKhgKis1v8jlct;GKn~r_NUn5qCiaS|t zlpiO^fiDsu_NYOKPbvJX(^=L}s<sX%kAfVQ|%HgqUl`-14}f>Sf7oy0?Y+D3*=!i31@-J)gq_dxNCf6tVT XVaD<2gWrVGOVQy$mL_vR2><{9vXVmp diff --git a/static/kevin-master/assets/fonts/font-awesome.min.css b/static/kevin-master/assets/fonts/font-awesome.min.css deleted file mode 100644 index 540440c..0000000 --- a/static/kevin-master/assets/fonts/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/static/kevin-master/assets/fonts/fontawesome-webfont.eot b/static/kevin-master/assets/fonts/fontawesome-webfont.eot deleted file mode 100644 index e9f60ca953f93e35eab4108bd414bc02ddcf3928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165742 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 G*yFsbY~cLNXLP73aA74Mq6M9f^&YV`isWW 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

5q!RY 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 - - - -Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 - By ,,, -Copyright Dave Gandy 2016. All rights reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/kevin-master/assets/fonts/fontawesome-webfont.ttf b/static/kevin-master/assets/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 35acda2fa1196aad98c2adf4378a7611dd713aa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165548 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 z zq1_(l4SX+ekaM;bY|YgEqv2RAEE}e-Im8<@oEZ?Z81Y?3(z-@nRbq?!xD9Hyn|7Gx z-NUw`yOor_DJLC1aqkf2(!i=2$ULNfg|s8bV^xB!_rY+bHA;KsWR@aB=!7n&LJq(} z!pqD3Wkvo-Goy zx1edGgnc}u5V8cw&nvWyWU+wXqwinB#x7(uc>H44lXZQkk*w_q#i2O!s_A?a*?`Rx zoZW6Qtj)L1T^4kDeD7;%G5dS816OPqAqPx~(_-jZ`bo-MR_kd&sJv{A^ zs@18qv!kD;U z5Evv$C*bD~m z+x@>Oo>;7%QCxfp-rOkNgx4j-(o*e5`6lW^X^{qpQo~SMWD`Gxyv6)+k)c@o6j`Yd z8c&XSiYbcmoCKe+82}>^CPM+?p@o&i(J*j0zsk}!P?!W%T5`ppk%)?&GxA`%4>0VX zKu?YB6Z)hFtj@u-icb&t5A1}BX!;~SqG5ARpVB>FEWPLW+C+QOf~G-Jj0r`0D6|0w zQUs5sE6PYc)!HWi))NeRvSZB3kWIW|R^A%RfamB2jCbVX(Fn>y%#b1W%}W%qc)XVrwuvM!>Qur!Ooy2`n@?qMe3$`F2vx z9<=L}wP7@diWhCYTD?x)LZ>F6F?z8naL18P%1T9&P_d4p;u=(XW1LO3-< z`{|5@&Y=}7sx3t1Zs zr9ZBmp}YpHLq7lwu?CXL8$Q65$Q29AlDCBJSxu5;p0({^4skD z+4se#9)xg8qnEh|WnPdgQ&+te7@`9WlzAwMit$Julp+d80n+VM1JxwqS5H6*MPKA` zlJ*Z77B;K~;4JkO5eq(@D}tezez*w6g3ZSn?J1d9Z~&MKbf=b6F9;8H22TxRl%y1r z<-6(lJiLAw>r^-=F-AIEd1y|Aq2MggNo&>7Ln)S~iAF1;-4`A*9KlL*vleLO3vhEd(@RsIWp~O@>N4p91SI zb~+*jP?8B~MwmI0W$>ksF8DC*2y8K0o#te?D$z8nrfK{|B1L^TR5hlugr|o=-;>Yn zmL6Yt=NZ2%cAsysPA)D^gkz2Vvh|Z9RJdoH$L$+6a^|>UO=3fBBH0UidA&_JQz9K~ zuo1Z_(cB7CiQ}4loOL3DsdC<+wYysw@&UMl21+LY-(z=6j8fu5%ZQg-z6Bor^M}LX z9hxH}aVC%rodtoGcTh)zEd=yDfCu5mE)qIjw~K+zwn&5c!L-N+E=kwxVEewN#vvx2WGCf^;C9^mmTlYc*kz$NUdQ=gDzLmf z!LXG7{N$Mi3n}?5L&f9TlCzzrgGR*6>MhWBR=lS)qP$&OMAQ2 z`$23{zM%a@9EPdjV|Y1zVVGf?mINO)i-q6;_Ev|n_JQ^Zy&BnUgV>NbY9xba1DlY@ zrg$_Kn?+^_+4V4^xS94tX2oLKAEiuU0<2S#v$WSDt0P^A+d-+M?XlR**u_Xdre&aY zNi~zJk9aLQUqaFZxCNRmu*wnxB_u*M6V0xVCtBhtpGUK)#Dob6DWm-n^~Vy)m~?Yg zO0^+v~`x6Vqtjl4I5;=^o2jyOb~m+ER;lNwO$iN ziH4vk>E`OTRx~v#B|ifef|ceH)%hgqOy|#f=Q|VlN6i{!0CRndN~x8wS6Ppqq7NSH zO5hX{k5T{4ib@&8t)u=V9nY+2RC^75jU%TRix}FDTB%>t;5jpNRv;(KB|%{AI7Jc= zd%t9-AjNUAs?8m40SLOhrjbC_yZoznU$(rnT2);Rr`2e6$k!zwlz!d|sZ3%x@$Nw? zVn?i%t!J+9SF@^ zO&TGun2&?VIygfH5ePk|!e&G3Zm-GUP(imiWzZu$9JU)Wot`}*RHV<-)vUhc6J6{w&PQIaSZ_N<(d>`C$yo#Ly&0Sr5gCkDY(4f@fY5!fLe57sH54#FF4 zg&hda`KjtJ8cTzz;DwFa#{$!}j~g$9zqFBC@To^}i#`b~xhU;p{x{^f1krbEFNqV^ zEq5c!C5XT0o_q{%p&0F@!I;9ejbs#P4q?R!i$?vl3~|GSyq4@q#3=wgsz+zkrIB<< z=HMWEBz?z??GvvT54YsDSnRLcEf!n>^0eKf4(CIT{qs4y$7_4e=JoIkq%~H9$z-r* zZ?`xgwL+DNAJE`VB;S+w#NvBT{3;}{CD&@Ig*Ka2Acx)2Qx zL)V#$n@%vf1Zzms4Th~fS|(DKDT`?BKfX3tkCBvKZLg^hUh|_Gz8?%#d(ANnY`5U1 zo;qjq=5tn!OQ*-JqA&iG-Tg#6Ka|O64eceRrSgggD%%QBX$t=6?hPEK2|lL1{?|>I^Toc>rQU7a_`RSM^EPVl{_&OG-P;|z0?v{3o#pkl zC6Y;&J7;#5N#+H2J-4RqiSK^rj<_Z6t%?`N$A_FUESt{TcayIew5oWi=jxT*aPIP6 z?MG`?k5p%-x>D73irru{R?lu7<54DCT9Q}%=4%@wZij4+M=fzzz`SJ3I%*#AikLUh zn>k=5%IKUP4TrvZ!A{&Oh;BR}6r3t3cpzS(&|cEe&e{MQby|1#X`?17e9?|=i`sPG zL|OOsh`j@PD4sc6&Y3rT`r?-EH0QPR*IobE@_fkB8*(886ZkjkcO{K8Sz$H`^D-8P zjKG9G9A`O!>|!ivAeteRVIcyIGa#O<6I$^O7}9&*8mHd@Gw!WDU*@;*L;SYvlV#p( zzFSsPw&^UdyxO}%i)W8$@f}|84*mz&i2q@SlzMOd%B!BHOJ<(FYUTR(Ui$DuX>?85 zcdzl5m3hzFr2S@c_20C2x&N)|$<=RhzxI!}NN+yS16X^(_mtqY)g*Q%Fux5}bP3q$ zxQD|TB{+4C1gL>zI>g~-ajKMb{2s_cFhN2(I(q^X!$H(GFxpc6oCV9#maj|OhFZaI z;umX6E*fQVTQ@lyZauuv>%E)5z-?zQZne18V5A}}JEQmCz>7^h0r)!zhinBG6 zMQghGt!Do5h%HmAQl~%m+!pr-&wlrcwW;qw)S$6*f}ZvXd;cHw=xm|y~mHbT3yX>?hoYKfy--h+6w9%@_4ukf0Et^zr-DbPwFdyj0VJHi}4bqRetSNR`DoWd( z(%n5>8MQl+>3SeL-DB@IaM{NDwd{{v_HMIO)PKO}v{{##c@ihB0w$aaPTSP4^>n3Z zC8Il%(3dCLLX$-|SwWx1u7KVztXpzNhrOZQ78c$jd{B9lqsNHLr*9h;N9$i+vsrM1 zKzLB_gVdMCfxceejpIZat!MbR)GNZ%^n|fEQo?Xtq#Qa_gEWKTFxSL4b{g}kJNd{QcoQ}HUP-A)Rq;U(***IA*V_0B5mr}Xp$q{YSYs-b2q~DHh z?+muRGn~std!VXuT>P9TL_8Km9G{doqRb-W0B&%d> z^3@hs6y5jaEq%P}dmr(8=f}x~^ z*{I{tkBgYk@Td|Z{csd23pziZlPYt2RJW7D_C#&)OONEWyN`I19_cM;`Aa=y_)ldH z^co(O-xWIN0{y|@?wx@Y!MeVg3Ln%4ORu5~Dl6$h>AGSXrK3!pH%cpM?D|6#*6+A# zlsj;J0_~^?DHIceRC~0iMq)SJ&?R&if{fsdIb>y;H@M4AE`z8~dvz)(e}BqUWK^U~ zFy`PX+z*Bmv9VxAN;%CvMk(#kGBEMP;a-GgGZf~r$(ei(%yGqHa2dS3hxdTT!r>La zUrW2dCTZ!SjD_D(?9$SK02e_#ZOxdAhO%hgVhq54U=2$Hm+1^O^nH<>wS|&<)2TtD zN_MN@O>?A@_&l;U)*GY*5F_a~cgQb_3p`#77ax1iRxIx!r0HkDnA2G*{l|*}g_yI% zZdHt2`Hx^MA#VH7@BEN68Y_;sAcCNgCY7S&dcQsp*$+uW7Dm@$Vl7!YA^51bi} z*Vy8uTj{neIhIL|PhditfC1Jeub(uy}w|wV5 zsQz)04y;BY2$7U4$~P{k)b`hZb>gv1RkD)L#g~$*N^1N1GfNMS)4r|pT*V<&KE1M9 zTh}rzSW#Kcci_#(^qf0gTW3&QN&zsW%VAQ+AZ%-3?E)kMdgL)kY~@mC>l?RH28u;Y zt-@_u^5(W>mDdtqoe){#t;3NA7c@{WoY9bYFNoq+sj&ru;Z`x>4ddY0y*`HRtHFEN% z@mFkp=x0C6zDGgA0s|mP^WNEwE4O}S?%DOtce3At%?ThxRp@`zCH6MyzM)dA9C7IP zI}t;YUV(Jcnw$4LoD4H(EM#!{L-Z|&fhNYnBlKcQ$UScR#HH>scYBTf2u|7Fd8q$R zy5Cbt=Pvf^e}m4?VVL@#Pi3z*q-Q0MG8pGTcbS|eeW%R5bRzKsHSH#G(#$9hj9}0O7lXsC zbZ7#UjJM^FcvdKK3MOEl+Pb-93Px}F$ID&jcvZdJ{d(D)x|*`=vi%1hdg(dd-1E>& zoB4U&a${9!xyxoT%$7gFp{M<_q z9oVnk*Dcp$k#jA#7-pZbXd=L8nDhe<*t_*%gj^Vx>(~KyEY~i&(?@R~L_e^txnUyh z64-dU=Lc;eQ}vPX;g{GitTVZben7||wttapene^dB|oSGB~tmAGqE^`1Jxt$4uXUL zz5?7GEqvmLa{#mgN6la^gYO#}`eXyUJ)lFyTO8*iL~P z$A`A_X^V#!SJyU8Dl%J*6&s9;Jl54CiyfA`ExxmjrZ1P8E%rJ7hFCFo6%{5mRa|LY zk^x76W8M0tQBa1Q(&L`|!e zrczv>+#&b2bt zuD1Bfoe>oW0&!ju$-LI)$URptI!inJ^Dz|<@S1hk+!(n2PWfi-AMb5*F03&_^29MB zgJP7yn#Fw4n&Rod*>LlF+qPx5ZT$80;+m*0X5ffa3d-;F72#5un;L$}RfmR5&xbOf(KNeD|gT1x6bw5t;~j}(oMHcSzkCgcpbd>5UN z7e8CV*di9kpyJAo1YyE9XtfV1Q8^?ViwrKgtK$H60 z%~xgAifVV#>j>4SN10>bP9OV9m`EA-H{bzMimEQ_3@VZH%@KZzjDu` zRCG*Ax6B^%%dyLs2Cw{bePFWM9750@SIoZoff4mJvyxIeIjeZ{tYpbmTk4_{wy!_uygk4J;wwSiK&OpZWguG$O082g z^a3rw)F1Q!*)rNy!Sqz9bk0u-kftk^q{FPl4N+eS@0p1= zhaBFdyShSMz97B%x3GE|Sst~8Le6+?q@g6HwE1hJ#X)o^?{1!x-m`LlQ+4%?^IPIo zHATgqrm-s`+6SW3LjHB>=Pp{i<6FE#j+sX(Vl-kJt6sug<4UG9SH_|( zOb(+Vn|4R4lc8pHa-japR|c0ZAN$KOvzss6bKW^uPM$I$8eTr{EMN2N%{Yrl{Z`Y^ zaQ`-S_6omm((Fih26~Bjf^W$wm1J`8N+(=0ET@KFDy;S%{mF@!2&1UMxk>jTk49;@ z*g#0?*iga;P7abx1bh^d3MoAy*XQp{Hl*t(buU@DamDmvcc;5}`ihM!mvm36|GqRu zn*3}UmnOSUai6mM*y&f#XmqyBo>b=dmra`8;%uC8_33-RpM6;x`Rrc0RM~y9>y~ry zVnGanZLDD_lC%6!F%Jzk##j%?nW>JEaJ#U89t`?mGJS_kO5+5U1Gh;Lb3`{w<-DW; z;USPAm%*aQJ)UeYnLVb2V3MJ2vrxAZ@&#?W$vW)7$+L7~7HSzuF&0V95FC4H6Dy<( z!#o7mJKLMHTNn5)Lyn5l4oh2$s~VI~tlIjn09jE~8C#Ooei=J?K;D+-<8Cb>8RPx8 z-~O0ST{mOeXg+qjG~?}E8@JAo-j?OJjgF3nb^K5v>$yq#-Ybd8lM^jdru2WE-*V6W z>sL(7?%-Qu?&?wZNmmqdn?$FXlE!>2BAa^bWfD69lP0?L3kopYkc4>{m#H6t2dLIEE47|jcI$tEuWzwjmRgqBPkzk zM+(?6)=);W6q<2z95fHMDFKxbhPD-r0IjdX_3EH*BFL|t3))c7d~8v;{wU5p8nHUz9I?>l zVfn$bENo_I3JOh1^^ z+un~MSwCyixbj%C?y{G@G7mSZg_cf~&@djVX_vn8;IF&q?ESd=*AJHOJ(!-hbKPlb zYi-r+me!ezr_eCiQ&SetY;BocRokkbwr=ONGzW2U@X=AUvS^E9eM^w~aztd4h$Q&kF;6EJ1O*M7tJfFi}R1 z6X@asDjL5w+#QEKQE5V48#ASm?H7u5j%nDqi)iO@a1@F z*^R+bGpEOs#pRx9CBZQ}#uQa|dCH5EW%a3Xv1;ye-}5|Yh4g~YH5gI1(b#B|6_ZI; zMkxwTjmkKoZIp~AqhXp+k&SSQ)9C=jCWTKCM?(&MUHex;c3Knl(A%3UgJT_BEixIE zQh!;Q(J<0)C`q0-^|UdaGYzFqr^{vZR~Tk?jyY}gf@H+0RHkZ{OID|x;6>6+g)|BK zs6zLY0U>bcbRd6kU;cgkomCZdBSC8$a1H`pcu;XqH=5 z+$oO3i&T_WpcYnVu*lchi>wxt#iE!!bG#kzjIFqb)`s?|OclRAnzUyW5*Py!P@srDXI}&s2lVYf2ZCG`F`H-9;60 zb<=6weckNk=DC&Q6QxU*uJ9FkaT>}qb##eRS8n%qG`G9WrS>Xm+w)!AXSASfd%5fg z#fqxk(5L9@fM};~Gk^Sgb;7|krF-an$kIROPt4HLqq6+EL+62d@~4Hsy9nIU?=Ue4 zJ69;q+5+73nU|TQu}$>#v(M&Vx1RD=6Lu`d?>zHN?P7J&XWwsvwJt|rr?CZu+l>m4 zTi^VLh6Uu2s392u(5DLaM%)Dr$%h3hRB>V7a9XG`B{ZsWgh4IyTO9R~TAR^h^~>ko z(k|Hy#@bP}7OyN92TKE%qNZfyWL32p-BJf1{jj0QU0V`yj=tRospvSewxGxoC=C|N zve$zAMuSaiyY)QTk9!VmwUK&<#b2fxMl_DX|5x$dKH3>6sdYCQ9@c)^A-Rn9vG?s)0)lCR76kgoR>S;B=kl(v zzM}o+G41dh)%9=ezv$7*a9Mrb+S@13nK-B6D!%vy(}5dzbg$`-UUZJKa`_Z{*$rCu zga2G}o3dTHW|>+P_>c8UOm4Vk-ojaTeAg0-+<4#u-{>pGTYz(%ojZ`0e*nHo=)XZS zpp=$zi4|RBMGJDX{Db?>>fq71rX3t$122E;cJ(9elj+kBXs>3?(tq=s*PeL^<(M$8 zUl;u9e6|EP5Us-A>Lzvr+ln|?*}wt;+gUmd>%?@Wl@m%Qm{>Q0JqTcxtB`ROhd6TB z$VY<7t$^N6IC(s*Z@x2?Gi%eB8%(hYaC zKfY5M-9MeR-@5h zZ?V`qr%%FlPQlW5v_Bp^Q?^)S*%Y#Z$|{!Lpju=$s702T z(P}foXu(uuHN!cJRK*W-8=F*QlYB*zT#WI-SmQ_VYEgKw+>wHhm`ECQS`r3VKw`wi zxlcnn26L*U;F-BC9u{Csy#e%+2uD$He5?mc55)ot>1w`?lr$J zsrI^qGB@!5dglADaHlvWto@|S>kF5>#i#hCNXbp*ZkO$*%P-Sjf3Vc+tuFaJ-^|Ou zW8=}1TOlafUitnrTA2D0<3}&zZz^%y5+t2`Tk`vBI93FqU`W!zY;M%AUoN1V1-I2I zPTVFqaw3Pr-`5HcEFWuD?!8Ybw)Y>g7c0tt=soTHiEBxlY;RlQ`iYY-qdd94zWjyD zFcskM^S{_!E?f3mEh9waR7tb6G&yl%GW%e&Sc5i;y@N)U5ZFLcAsma^K?Cg^%d{PO z=SHQq4a|l`AakzEY;A{n6Rn1u`7v~#ufV*6GZ$`Ef)d2%6apsU6^>QJl0@U& zq|wIBlBAgf0j!YaozAgmhAy0uy;AjRA2%(!`#&e>`V` zg`MfSf5gWvJY#?8%&|`Aj0<@aZ;-q#tCx=-zkGE|_C4)TqKjr-SE6po?cX?Z^B%62 zdA!75;$my<*q)n@eB<^dfFGwRaWB25UL#~PNEV>F^c+e2Be*Df(-rIVBJo2o*an$1*1 zD$bsUC-BvObdmkKlhW<59G9{d=@bAu8a05VWCO=@_~oP=G3SmO91AK_F`#5 zwXLRVay<~JYok|rdQM-~C?dcq?Yfz_*)fIte zkE_g4CeLj1oza=9zH!s!4k%H@-n{6aB&Z;Cs8MK?#Jxl`?wD>^{fTL&eQHAQFtJ_% zNEfs|gGYh+39S{-@#MrPA!XpgWD;NLlne0-Vey1n0?=ww18{L)7G|$1kjI(sjs z@|alUMcx*04*>=BWHv_W-t=rCAy0q6&*;kW&ImkwWTe$lzHJRZJ{-{ zl-mK6+j}V`wobm^^B&2Tl?1r=yWbz;v-F<#y!(CT?-4K(($wWtmD631MN9?trDG zMI7;9U7|UsC;urLP%eH1h%U`LJxT3oM4=gpi%X@lpVR9N6Q(uhJ00RWXeL-Z*V(O8 zsIyyVUvf=RXLBKX`!peifjIMvMs1YT0n$0*B;K^yZf&HN8$N%e=EgOejqihLPBT|< zs)z`nNU}BOdT7wYLy}R10eXUksn9o)jG)&=qteGc|XNI~h5R6UBfaPeIHbA32@*>orZsCB4`Q79}A=z@najfekt-_eTg7a}Mcas^D1ELlN6(y28c{ur|tmueFvIDOQxXs1)_lKrA`L2-^^VNC#miFvO%l6w5uK2bFyu?hyNLCjTCNRRVW^i+GX``giwc&TpV~OHu(yN&o)r2$K$1kjh@>iP z^&`?sCk#?xdFX+ilAb(;I7<$BQ#6j*jKsu%LEhQKe=>ki^ZICepr3#_2#pE`32i4Z zu%eXsgL)3x3Q-^OPPRhm<^!TEPoek6?O^j+qLQ*~#TBw4Aq~M2>U{>{jfojVPADAi zurKpW{7Ii5yqy6_1iXw3$aa!GLn|$~cnvQnv7{LMIFn!&d6K=3kH8+e90Zq5K%6YfdLv}ZdQmTk7SZ7}>rJ9TW)6>NY{uEZ zY^9PI1UqUFm|h0Vqe60Ny=wCFBtKb zXtqOa3M?2OEN=zDX7z}2$Y{2@WJjr?N`auMDVG9kSH~FjfJRNfsR@yJQp4cQ8zaFkT4>5XQqSVt5c}`-A#Z=3-_mGZ^)Hqayei zhJ}wgZ5UDln%)!;Wz@u=m(6C_P@r9*IMPe7Db`CSqad3ky-5-EcG=*v8J&{RtLJ(E zw2h-ghGYcDtqj4Z^nU7ChgEXO0kox=oGaY;0EPqeW89T6htbZg4z!uU1hi;omVj+3 z0B%$+k$`oH5*SeoG`Ay&BAA%nAUjQxsMlNdq8%;SbEAPVC#qm!r7j75W=A)&a6)3% zdQq$fCN;@RqI!KPfl9l=vmBFSFpD1cAxb@~K-$ZIlIL3W}?#3+|2p{|vZVq`YA zMbx|Xl57kJVwoetAo+opiewCkCIO=uBLEaG+!0U$MRdReNsx>+PIJWN6dW)pfeZ(u zQ8ei-Ht69)ZV`qv=vmorhOkF)Squ;)8AUfh<7A_xI8FGHMRW>~%o`1Wt3|8IMrM%& z8)|@=#ssro9=f9HtN0F#O085{Bf6PJnurfzS_yg?qqszmnQIYDP{N=xqPfvl;VNsK^qpoy2&App~Fe(MB7KCI)$p1!&YEB&%$9gTk zmvlt?t7!>_paNt_fYJvw^~LCqX{4opLy!n)md7}<_s?`gytfSAdoScQWTy&Tbr&~( zg9myGVv)l|4-umFBL0)Y(d}Rvt11)(O4ij#zeao~K$vh~JDn0_@3RjP2M0|79T&9+ z?>Vx&M30Sb15&<{RtpeYUf|n7n5GHyc+-FtA=7H$p6Mh=&M0O!so)tze7#WT>pp|x zfWae>0++DfscU2%>|@oiCQj+6O827)1}KsN^a>NSI*4?#ylfG-{q?3MMXX$dUH^S6Ni=Ve1d0(janpz@WqGJ?cG&sewpq294Qa zL{huwuoARdt5F4Dbh#?<2ruzSS{VeDAOtY+52t^xJW=!(0f3P&G3Cs^%~Q~~Wq{YA z!QrEk#>oXK{sc&Z7VB1_>fA1^#YyU1Ff<^9G(!V0!JW`n@EDdj$$2SVK6*7$!BvXP zmAC;h-W75(Nnzpro3CE9eV=~Lp7yS(vXnk@$g3{R`!(UG013==W*Hj{-*F!ujl+np%IX?E0*I&-K^u zY1z1I!`iOu+Ll`UtL|F6Vb?~vk=x9w6}eE^*<)O?pZQ#8YKE#b($x>w$3E*F0Kfk zfnyCo#zOpX1(P2yeHG@fP7}}~GB|&S27%6=@G^V=rmeTB$(w9rC6J@uQmcAMq zQ=Ce?Z0RkF_gu30<;5#jEW32il2?}$-6PZ?au16Y)?kUFy3L?ia1A@%S3G-M`{qn8 ze+|6jh0vqfkhdSb0MvIr!;;*AL}QX^gkc+q0RJ4i9IyOo+qAyHblI+$VuZ3UT7&iIG7640a)fe&>NOVU@xZ*YE`oy!JGMY%j}bGq!= z`R5xY(8TK&AH4b6WoKCo>lPh6vbfu1yYy02g^t9bDbexN!A`*$M5`u&}WqF?+*m?ZoW85&MFmXqQ1J{i;_Oz>3*#0?lWa zf?{tv`_JzP7D3x2gX&ICRn(aR$#>;ciH#pO?<*}!<}cYh_r{hb6*kkXSteV>l9n6i zwx63=u%!9MdE>@2X)3$YXh=DuRh~mN2bQFEH&_nHWfU{q+4=t07pt+Jfj90Or;6JX{BCQrE8bZe&wi3fwEXHRp zz8{VAmxsWU)3nT;;77X7@GCm7_fL1p_xKEG&6G~luO;Bc3ZIa?2b(*uH7qJ!es71c z{Buj4(;Jds$o78u<3df_2~DLq`e9*$SGmrR9p2OoVB5Q(KL3M{1>eq+;+lHK9N?xvyBPHni<#j$sZK{QrKEcdR9+eQD0V? zGPaq!#<-c#a>t4bt+R#Hu_|}dlIGeve@SR!d((u)Ga45+BuhHfA88G0cPrw>>(`ID zZ;aIyn|qmhuDXBthoW{J(WN+`Yud=y(wvd0rm&1*4>6?#8&)Fz z&@V=a0w4)F{^!&W_l6<5xg|-0F!~>aCALbeVsZTd*)M*^tr*!)O8w)mzKThWyQW@X zw%BFs5_@CIic5EPcTJu8=CmynV;``)3}gJ`Vl#VY_3Yib@P-KvBk_%!9OVu#8tG|Nc4I~A>8ch-~X%M@!>yk~ERI|QEcwzgI66IaaY>gx0~lm<@f z5-k^OY#SGC80Yr-tDRP(-FEJ{@_4LHsGJ=)PKZ@`eW75-r0ylN%0Q>&*M;@uZLdJ$ z)rw7Dt5ajr;P;~1P>jID!><(7R;w|Yf}qI&8klT?1dTfc@us5mKEe;qw;YKR(cp-D z6NmUMP8x7cM%~ytE@l*Mp^oN*mCF`gRNhw3gpO1PVi_^JzCJo>#mX(q+iJ(Ts$5=! z13b45gILEULS!=)SmZ{qsC1)$8-4eADGR?v z>~4k_SvdvPHAC}=4(!I^OLgQ@9EMDE7d$PvJbi+K%-HTh`P0#Ea|Jm6zj> z?R)(YWtZoIRx>AqzlG1UjT@6ba>yE z{Wf<5moh^-hu;ptAtPG}`h$4PWcOn>vy`#bH#Ss>OoAEE1gIbQwH#eG8+RHG0~TJ$ z>`C`c7KyM^gqsVNDXxT|1s;nTR&cCg6kd<-msrdE5Ofk=1BGDMlP2!93%0c@rg~4` zq)UFVW%s|`xb>;aR@L^*D>nkSLGNmM?cv)WzHZy3*>+*xAJSX;>))*XRT0r9<#zIpug(}{rSC9T$42@gb zy8eb6)~}wl<=or)2L}4T{vum>-g)QaKjtnp5fyd^;|BxHtx~2W^YbKq1HfB7@>Hw@U5)?b^H=uNOpli?w6O#~V`eG;`irLcC(&Uxz`L_Cl zS8r24e*U71o@dV6Soupo-}Ttu*Dk&EwY`h4KdY-k55DSqR&o7nufO)%>%s-Es^5Q_ z60#cReEy=$4|nW)bLh=|4bxW4j}A?qOle+wjn88oAeYb~!eA+EQ;8Ggp-UldAt$3M z7*E590amz>YB9L(z?Xx&?I37XYw?Os-t+05x6Z4vkzBE6-hrbB=GAB?p{DQXV4CKg zls@_wh*&XC<3R(CEZxg8*Y(6a>cIOq9Nss7{=UQ7Nv%O_WxSyBqnH{@(<>A&2on@z zn57W4Dh*E)o#rJ2#tyxV2;C5#rl8%%As$4qB=IbMt-z|jnWi>>7Ymq37;AW!6Y4nx z1Ogx#!WVdA92mEipgUxzy_?ddg|x)KOCyK)P5v@usc;0sN3{=0slt4CuwaxK@20eO zhdp~Z8iJ7GWrkq_-X`~(eBpthn9|`tZEUCIGiFpJjjxPVE9I)#z3Q$3tw`a69qxjuf+~ z*?v>d5~pcH-AQ~0)8PyIjumD^?SM8!Wb>KZoD7hOlc2nA0_(eG!in>}Ru}>6)>5 z@*}T`Hw{I^-?PS9>(#UFBQpW72* zsfj(2+_9@5x+57aN!`e`f(Mp_I(D>}p8)@&g^g+X1%d{ z%X5boE?hEoj0CiwTh9)#8^?~;|wgor_=Z1BI9_dI{ z&t*f95n?ZgZ5CnQa!v(p|JT?y0%KKgi`Smi9k5r!+!Mkz=&Z$%CFl;?AOzV`YBKrY z0#Y6~J6&dA=m>T@TYb8ukaV4z^Z?VX*MCKcp13-ye1*`gAj_Tm@r{fpm?K!U@Xg2AfndEo6jZN} z=XK0GRNXVLW2c?}B)rH^yR>u}b?|p(W$!TkQTAgu1AIG>MFfNchMQB_^-AQxRE$Th5-E_tBP@v(Cy|ojjP5LEU|JrM8 zVF5;$>Hl^jlHWDPChrTH(vh%bARyj5#TPb>omAs-)4zN z9?9(wybd0$Z5s+}Fiytv}-8U`IC<{6U2_NqEAkv;7lys5Qcq3EKt z0-!^Xy3idllgZ~qX^QTe=i*oGUCJNk>Y26?+9U(Ks|C81S{-v+6ebc`c(yibQbuB% zxM7mk>}dI-TfUi5Jqdu6b`4SqF)y5humuCaHhssdcR(jKf5ZGprx;Oe7VG#G6TA1+ z8oZLl<+ey(L+$Qsck^4fi{I|)p15MX73gHFUU!l${lN{)Ht_Wb%j#UE6cZ9}Wq^>+1wz z9TBA@%f~tby^0YWafmn&8Ppjn1Ng{d;S01WImtMzV<`!zU7;+8e-Xko>qM^OfOZ`Y zEZG#vcm>EGF??&G6+v(3l`X(xMn8ESv=@LdMfdcxFi%g1?0HDPG>blldR`OLlWN80 zz<$t+MM9%1K~JT@#aBZjOu9*G{W$u7cqTM|&a1)0wR8R^*r$<&AhuCq1Z{-aUhc5P zdyaaK{$P=Y6R{40FrWmLbDOCijqB(1PrKlnL)Tm|t=l}toVLAZOXJ*~-dx|_A&o65 zskcpT@bs+d@ia`f)t8ivl{(t%H?O?;=^s3O^GXqopx7E3kz06f^UQq<>gyNmo4Ij; zrOxuzn{WOqP75~PwPXC;3mZ#YW1xy&DEXsl~)u4`-v_{*B%R6xNH3* zJElz8@d#i4`#JV(ko%x;u{LMqLEEDmwD*(ccB9Wp;u*9I?=sC7g>%L{%$4m#zhbjm z)gK{LWQvE1>_yl|4T$nYKNVZ<)vza7FKU5*W~4)KNgN@;SA<9&ERxIfA&UZnB=r%N z5YD4fY$9Mkzy}!G+`KUy>3l(FSi1 zw)t)*w$E4#ZSxfm3cZLC(o3aQQ7uHk>_@fMTHoM0=quh%mfN6%{`O($pyzg0kPf=2 zjA%M7bRl4BhV5{{d4HbnTh`HM&YKw@N~47e7NFGr*9Yzi(7XQl-FJb4hPEKOC!K2x$nWy>8=PJYE)T$=Cqe(n*ChZE zklF{Ms}h0Jd|@o;Gz(~b;9d&c#0O^j{1?tF5dtMj9dG`|j0qZi^aF1r{<7KC5hZ`E zNX2nxJYEr@>u86|tPjTDet;fLn1R+IOm6&3b*}TOyNpIaid@W9c9!jIfiJOgK-aw=xb5Kpb)`E9x%CU82 zEQg_v`e+tWYClJHl=_EsSW?LZO3)o#ox(#2UW9|V7I8fYnz5fRtph`u)dywWL9}UV z*hdU9-BBK5G&}j~O6&dSdWDIpFX;&Or5wNbm^Y+A-x6(K$$Of6JTVl9n0gFY&=T5p zZX?pCxA&w{J)eDSfb?Zh*LT#AdiPlB;A%p|-`Aw6RP2mYTh zLmL~zM^VS0V@*4LkOEG~nQR)HyRB+;*KWli%QqKt&%16HWyMXRhtwdCgyoTm*5#itgp(Wap66 zyr-dgKgjl&t?JLMuw}!Boz)TOa2|37p^FAcPmxX0apWmfp$B1WF_@-dsK+?1F6~yY zEwi!-))Q_CbOP%?p%bx|=d^nLBig-_$e!nh19^Ps`s{SNq{nnW)V-qnz3y+Ipd7HS zsb}z%!+}y8izoy>Nyyj4m_br&8TGFcze#gP4?v*NEdl zzGBLM4qpvdu;5vCFi9^zXU;sW`>pPi|NFD# ze=$xI@7q9B4WPsw4CAO~UJ(S)s@u41E>#9D>!?=*N5m$%^0E` z<0RjkAj02TN9RLX3Js+GArg=Nu>E5z zPa!vMuMV06#7$1dLbwv+VGT(5V_&A~Uy3T^+|y~Q2>lA|=hZZ)ex%G`rhkN54C5gq z>w?qN=A+LgB0-@s{OJs7Da|z%dK)uDH4?m5Y=K(N5KWL)uqDxwBt>QmOk(h~1u6_s z>9x>G_+@bJhBQ;(Rr?20>Tjn}^Y`|rQvI3Ua5$aGq{HFf4BhwAFVk2oHNbk)hmAri zjQ_!g*-c^AKM>A@je&H)i1PsJ5929F<8bLXvONK4;-n6d;Zm7Q=G|k6Fp*AY!b1a`eoS*c zF413z6`x;!NZV1k5)sv;-Dqjt?t&|JLNGSA2yWhU-RYC^oiWI1+idw;6*>m1&Io`^iPgF6c$sN zw9j3KFYs@%*HNz1Jr?F^RiLV%@DyQ^Dnc1h&59pWKhD#AMQV~3k7}>c@gdw=dyRf5 zHGNU7bA_hHWUnI-9SXtjM~LT>U5!uS#{ zKSOhB>l^nUa&S8kEFoAUIDG}(Lr#|uJCGb%29Xr>1S4yk0d)9hoJ7#4xNbi?5Dt?N zBp45evje1L)A;&Smy9J8MJe@1#HwBFoYPv$=k%GOaq!kd58)tzBI~EkGG3Rqy>GOTce-p>jH0rb~c(K z1|9q=$3)Vdgcwyvy&>S3p(f~O;~?XK{)Kch&2!gs=%kNH#-Ee-i}S+a@DNWR(Xnv< zv7kIUUD(c?RS|JmPeXBC6cbxUl6qRxl;fFAiK%!>EzFa zJ$-mz?G%WqC+P-l!DLX&nfxzGAnLaFsOg^Vq~gaW2QQ<(qixj#J=;Y{m`?kHkfO)i zdxQ*`2Jr3iXdj4QE%|AlQ;|Wx~pKrr7xuNnTe=t-AO)iha6xDYpH}>yZ z+FD^H2VS0x4us;Wo_95^kElZ$>j2HW@wyeLi3i%Q28NXxQT7V1{iHY}Llc~!Dkv8* zM><6X$}-pv0N#?+N%W`5%}K0Is%8kCOC~LuR6+;gtHYPi9=dqUoin~Q^MhE;TSIe$6dEI=Xs(`oTlj_C-3c4KT+wJvpu4Kkn_RZVg5jE+RF`XNx?0xmaV~bW?v}wVTXn4{5 zO&2X+*pF%!%qu@3SLRk-npU5?`f_cV9;|pa#ktlD9VuvRx;TK+fWUv_$vC8-@TcO4 zN_-D6?7|-4!VWMEgQ}TUe(c3w4{eyxe8C5t7pS0MFe;X@U&B?sVDIGR;u>?mPyb2F zV5WLiQ2mX&1v=E#B`oe9yk4Y2^CFRk8*rV6k1!uW{m47&7E!m%(ANz&+ixrB^ng(;#RLHnX%tfsjJWM- zyBo5Of=eNl8*;gm`ozE0weGdP7~Iz5$$pI`$C5 z`U46T|8cnpt;J+VO?%~H_`Ph??bcn%Jzu`2`z~tc^PoA?r znJlfFuxIeRC?a>J?C!EC2Bn;dnhn3XeZ}sbjb-10*a7A?aS00$P{m0wm zO_v_`nJOwO*k6S$tHR@xmt`N`;fR%l>^^ZvbfRm}PUBtryK5pTwRdIZgj<#_irORP zr7I?yj7m&+KkD(;PKtLXmF-s9=>`j_AFjI$YN7_w1g7hD(md1~ysZj9;u_Y4i3Ssz zgRH~g_UH9AHR4A!67Z@2zch=Odh*4WzWc2=ekK0-ueW&=xy{z7Gz9CSbv}Pk+4ST# z#ZxnW&!Z1tS0A}`@LT_*wh{sv=f-Dy+2cPoUi{nzYTGjx)eit9s#G5^D0+(|iNBlJ zV$vUX35MrZ8K19VAN|i75_}Z#DO`R~MZQy~2$6gqOvN0Js%d70SzJm|ER&Jy5k>-I z!fh9^fC*zr22w0EG6&Uqo`eqC7_L8gi(#?!A>;y86ak0F7|oHQIhmW!15hHkZ(*|o zF+vd5r!A(imA-b0}qc4-&FS58}j>!?PW$SEg*;W8H~a^e%b?2`O8 z*`i%!x17FmIo=X;^83K2Y3Hja(b_rMns6%ts^>=(bA-9V<9O1I>564?R3a}v1yYtH z*l6T7AY0T66-95WtZgaP8(}|MBGlfNdh@=~Y1m!IA7($BPUtE`qT@h@;M3Hd z;_dtQw^?1x7-WaPK4XDxuqd5+qVz|PQlALGw|x}&MFa4RtVSK`(e|RtFN=u%s&M?) z7+HD3$diG_iYZuX{0ijc(*2C7cTX)p*3LRRtn3r@wq>%<@A9jY)yX*dv zSq7pIH0)jCA$)wa^7RfPVlWXzzoH}vzHmu4?W&f|zEC#fi<;dYS!Z*G+=!O(wLx7} zkfS~!6{@R-(Uw86L(mJl7`6&&tfKDx<)c+WIlqL)3pSX=7*`N5ysyr`8ap$bd^E3w89)ZgPiCBi|f{Ji^U)|AMCk%95n_gVk3|_XmE_Z6(keo8NCgI|@0sfZs3_s1} z$KK|ZCF;AE#cQiOrv*z^HWTBHM`H8Hwdx20FDq8lu^{(Q!@5s%Urrmi_ZX=7)j%7* z2x#|wO+pMI^e#2DpLkU+erWUorFxiNlu1s>XIg^5wIEm|joek2Rd2IsPtNkBRLQTFsnoh4v_<(`f@uV0I_G*I9RD+?L~j{1bx`#0ta zEeZiTNBzhh^|GEN+1vl7{w)Wm!`yhLKAuC&Ve`GhjRo0c|E^`tZXfkQW;&_kBLS|M z7!XYb?!E&&=u`h5Ld{_dyivFMQHW{aI!yVS7oS=ttZ_4U4sb{P=wmO6wCrO3g8Cir zRxN0ht{}^=kNOy`2fdgiLzr_8?$^fWMSdbcHb<)&+4+$`i%$>mB*aF7fv0tiFWhcK zRThLy0Mtx?A6Q34Vn$tJOcHkv?-ldg8_%9Jr8YX#=C;}%u*pWq^?L5VVi61EUkC^@ zTi3LAgna%bC9aB?Qos0?XlUZtnp9cISx)1AbGeO~JGb1<*DpHId@iRrT4e7+!$h07 zWDZ4FAXQ;*hdB%9)8U`#Aq1XW1`G)sm$Ol@ZCv2#2r5~I^BXuYJm%NgOkCQOAufat z)Mo2&C`TDc7EDz1sE;V{`=Bx<#5gYrDb+@@FE3>Yx=pZB79-7UjD-g%Z#qc&td6cl zI`S1u2Q2b!m^1LOg{LEV_eV*@cFW|i{!+a94itA#8 z2;?I%3?C8LQn5B+Ac|?$1Ejde^`AH_B}3`>#H=np*@XDR^y^=fZDd~Fz;wS>e@!M7JaPvv zPU?=U|2$6iw_+;&j{0oiARgl1!2p}_PMTg!Yxs?H%{HmJgU62_ghA}_;}{7x*brZc z@>!rSz|M}1YPdKizI;?B3~2O%LY`8A1SF;-m z+Oxu{+PYOU-V9O}bVd$T!;AU2M<2*KtciMEC29!H9V-u9ZUJ$M-4#Nb$5QVy@LP8HyfiyK->WR(e1g77J;isq@ zxu$>@C(@*mf}RY@L8hJXBrWMOEKDqt3i8iwFSwpR$W>G_j=iMN>(!1>S7GdmXt%UH zpfdn%XxP3S<>d1=1{yBn9c@?(YZkyNN1 zQx^M4-32#mo8SKR;r8t_CV3=RwbSNzS!Jbd%GS0L=qT*0!ERw05x~DzSsUKHYQ||Y zuwKD!+2nux!l3~g>0-F=;qnW{w$F|jqXuhZz#N`4WtzLDj_MYvu(*X@fb3G;s!oPE z?QMW|e7J7#=?C#3QWQRp-~(1;_=?J(Y^}oNmHRoN$^y4Pv2Z8cL)EmwWVNJh@>2ER z)el6y-IQ`!2h2{kx3}jwTf$_!N75)(mi|n=?Ylj_>QzqjfMiO67Wc4{rOcF4JS+{j z&z%duf1`r(U@ZlI{F=sZFnCGJv}cN<(cA|5AP8m+HUK z@vG9%#_zOu)ChxFSxmKsBSSO9XX%g4SU79e4=G!|Cgo(;VeA8dsRxIZ$Eqhj(brh0 z>Jh)P2`<<#u_i^?L>%2jxXAxZX%?<7l073C+~1p!t{Dj_9ZxL$sz|_G{C#{Hv@t=B zP}EsMr62u$;U#=d%MRJHCiNv=5OI3(_o-A=G_9B~AsrRui@pzUDE@tHg#6PmWEuT^ ziPt|@8=kjTNmkqdOlyJS!m{E9I87hqn;%9rT0<0-L99QeURoyK-&OxH^mcao3^t~WeS^K zH`XC|VCLo6*duA78O!ugN@5Elxkhd!CmdSX&*f=utfmDFD9PkBHMk3&aFB&)R8NL4 zD&i)OQLO z(Z_o2Zs~o#^$zu`{XU~$I{T&vAH3;ofJ*ZpJ&JR~s{J0}8cw}`t#a3NvWA?#tMY67 zLG}{Q{#6^CipQ$*V2|W$g2v->Y9+4=(K+K`;I4$BFUb9!Nrk0B*fL+v z_lcdO1uEs@|8I@xoKCB{68@q=)}90JCVF33Lb?M@bC5mog<2~vPXXzk7B$|75Lya& zL)t=%E&Pk`S-PznN<)4iAI;NU!@f0_V&wOND{4!~b@1&pAN$Goqzvq>;o=lr=43Xx{tUtEaN3B>CWZ)Uac%%Y9--wFCA~Ek7aAC_APm}b zpXAnlNOIF+;t%pPlAxIkvv1neXa8*XxNLX6ZDDR(+U5bi-=^>US$+3TyUFaf{gSPI z&A@*!TUbRQ-p-3$KUDc=Hp9j|c+t%)Z{KNid2DyGia&p6lgtpOkDeM{Qy=)H&22V` zFBRKM=Etf98a&;o2pD`R2ctkyWxz`aTDZXBjY52aOspy*2=?xDIZi>&&))8y?Pe*( zt;DkFm|`@cFI!Kx=wFn7fh&cqy-f1RZb2KRCK7JNBsApYHWk=M5J&|wBQOdb+2_^g z*;b(s3o^wX$sWZHhUhNh^+UU2+hPaWw)eN~kHy66akHOp4#cDm_4zDetK1Mqx+sR1`nMz9wwQP*hL>=&Kei3+FtV>|yg%{T(6f`N5BR!MdXj8xHG^3) zqCJiEswQF>ZLP}3Hs3ciKciD63}0Z^MFL6+`V473sGm^=U1^Mx3`Y|Mrl>H0pEcT6 zg^H5MH*WeRUNMs9VN5fcZQ=>}GHBs};LS}+P-y~P#IlYJ0P8ym@R(0L;jYe*1D4ll zwDy~vES0HtyCCI2411OeiC>SA#1wX;8DRXzVihdy^T9BjrZUmN_=b)~n*!R4%Wps~ zkbFH!%W;I*pJZ#8%)c_#RUtKlOksrV!Y3i%vh>?b076sjL-)-NtH_t7E8;OBZOPa@ zAofQ3jdT&<%k!kzaG)7qW3j4HcvQe1&&jd+f8}J3!f+>UDx7H_B8^6hA&r*!PDQ-B za5jys`+BVIUd>7lmgi)Y&fyh!`yosPQAwyIh?7D-h2#b7);pTpdfDrCm->#&W_JPe zRvi?=>OgitOs_62y`!|JbhXf5STOdjJDPjj*#EK7D|Q>bl1&L=hPkN@2)(QE#vP@l zt9uJeTG&n{WG78N)aYu19%#`y%8i44oVsSwNLRxgR6hF`tsw;8VRy)COB4`B4i4SsLAa4`Y(WRazi3X`Vv!fMiDilJX?r1a{9%U3-*f6J-iKJh{i^La~ z$yJ?ASG(MP>=IKImh$g9bD7xJqR}YghlfIHszUwEmoF2yQ`Xet0HgZCGNmYge2TvH z+d^IF=q3{GD`-m8K+R-7AdPA64e{l|c4AofbmD)4hUvwM1bw^%@mXLok{H%R#q;qz z+gU3h@JZH-G^8$-2?T_&a!E51(fhSa5Q$w^j>=mA9b7)O1^G1VKyM1v8fOAgDLfFwlSN7aDkBbh=1Vofi; z{_|sQ`!zOY>fWC264~Y0Y;ZbE!j3Cqv4wlfV?E8SiTe3tr;ceTaXo*JV!Oufp0KT} z!>xB&7aARQo9It=F0Wa;$5j)X(=fKBtv5LhYKFC6eJA)BwZ>zny85O7zI6@a-&ln8 zLF2LorHz$i{9dO!8mb#Jp?&t4L$8*9&!)KTkLxQVHBP8FA!bZwX zC$1xtlqa{pU|8*e#v_V+#E4OT zjwi(7(vGZ$V!mG>tD`=FtRvSqWZ9$*B?GPmVd1ek!0@{$s=gg&_gx>I&W_E$e<7Y+ z5K(_sDS$qH^8rKPSita&*B->#;u88_rMf;Axsguitwh`|=XF8(EVlU^L*PKbu#TN~ zwj8|9X*SENE}$egSAG|3#!^5By}_`$$?RM3+{=QMMid7b`V01GIvvI+&E63R2wQNp zn}sc$*2c&2oUL%!tO4~7wk4n)tpFT)D3<_3R0r=|=}&0KCf!VqIpm|jC(z<~qb-#Q zZxk@2wJZtt%hiN1;J9w_Hzt9B+S-HzVkb8@NIl-+0XLm`=_dDWyDqXB zn&w}0*`hmpYVLH;R9>jKpbgr%Tssmku7 zB4?i;DJ=yE$6)n>a-tiWd=_(RksK=Y6Abz5;b5mLI|>)(FA9o zGzACes-Q@1Vend}5C)iY7*G)}1M%Udge?eW(1HnSXri;yq(~2bXQq`x;Yrz#0k&ke zS%JGlk~lDWC_ny*-Pvc@4#dzy&@`+2PkV%% zOIv<3)+u>drFF184*~^AoZL$_J<;#J>d$8hF1HEz)8d7HT$%mI=(a%Fw_CitukY~T zzCPh-wvU#V(e-YoddEiUO$O~Gr_8a91@$Jc+rpZOpW6;!qTct6s-1GiRv51Kzn!ku z>d;8_q{~ie0yF5Z-59^#vLXATUx*cq!zD=G$XZeu&u5Te*HqWE4IIDJ=3 z;X=s*MnE=AeJ9|E8#P5YEW>Y3>i7+gy{D`72zWgEJ6_;p$$k1u>hqEMJ4WhXT+1`J z2UoHdw1-mEKE?MEYBN#+HGKNk5c-SiJgPNDBrxIO3hq2zQ?Q-Gzn`%I_?VYp&dv2M zvIvf0jiNBnpf1lm=3_A6ApuPS)>4!*8O26GMgpxwaM6T-up7}x$fShgk;qe5v^RIo z>TaB#z4r{2{wUbivuj#sL%^MIIAif88=Zo8VO`(VhtJ#lK)G7`AVbhecjuza-rrB| zo4s>x>$20;IoY}UyhY=kM#Bz+WZSjeUwYHVtw){{#_rt79ybJJr`6`3xa`^N&f)n! zT=yimh90T==dW``)l)vNIle^QUoEWPPd=w1q+I0(zj?aa4;5EaZaQsy5FJ4LeF}5{ z$zg##sP#GwKG2!Ph}IYe2=jqBViZeEZy;=DiXR5O3_2O25Y~Q9y=cg)D}9l1=&&Xw&3l?g{8))$`(k@{a1p3a{ens7utuI^2=vshxrlD-kY-br`D+hAM=))3(PZ zpyB3*357l{^D%K-(OTUkjEoJ4X>x<^UfmPAA7hlXG?QgK21ybCZk1lxS0Sifv<291 zEjcA#Q%-#E!a(4PJtQIWk)#atL{s*GU*JZt07Zc#S!1%fwV7fXkwZu$LI=?Jii9b& z9N7&))d3Vh8fPHy4GD@Ijl7yD&?%NGuJ_OccYXkIaDN7{Ux?ntALbeUyb?sbz03s# zLfJD@r)GcJGkZS!PFErpG3low5RJ#jCL63{qLHqyaMc*AVNejQp_b+{ucvHN$a_^~ zK+n|6Qz^l#n5WiWi;#UEURyWC?C}74{5m0i9bm^jS=(82np)-?!p5j&Hj8-6#y5q$ z-cZx{GVhaJT^!E3OK(B$?9)Oq;h*nmgonr@l}$~5ny#*74^BUz-dtT@>WZ;S_3r_} zQNaQi9BKB}jHzND-dA1Yeacj3_qnU%q4vw$L-Baogt=3ig3Ri*h;4T_HQn8u6~D8% zu3dIGR>z7KUO$}07IDA zm>ULZ#zLtQpB=zl`Xly=k@2w#_&57?*Xi!kJ;wQT>Y(diU_s7c9> zJt9NLo6(QTdY?<&%(7s~gGuhxX6Ia@TxNd)1c%NSn z1vg!?!9F%t+BbteRT}T^ikFtgySn40Y{9CQ#s-^l6%*Z|a#r=PT|QRt>uzZ1KDuU2 z_UG&)_39e07-r|Hmy8d@CawADtYBN~ud`dnC6l4WwkC7cwB?%@#G0C73m(O(B@{A= zKYo4MwAZI+m;dFW_8z_0tM6&w{t;apJRSqCB|8-3|G^xy4{cteem4EFg?KyO^H>jM zvPiWhJ7a++c1XQBBKT_Aev;X1adZCx?O6i7i}=MPVM!{DFhM1no>Vgi=FJObSSzE4 z!cz06q4?jt9&?tl`>Ym||8Lbn@fQ|L_G8v#F`IpVs|l!&x&>B}_z$1B(XGyIsHAWY znA8qOJ=@^)4xPoaU-h^g^}_jK@kTQ7$?aFf|5I6D)sIC2%qiC(coF8shYu$ie*)ue ze%G2{U`NRIn<&=&^cNmI;H`MZjd~?#3I1s@KF{obqiu%g9@l{o^DS=Z{*u!j)-EktzHk%L~ zUeueNeuutfbuxAHnCfe9zB#!P8?xVF){CM-QK}``94{Bxq4Q=lI*@*(t$ z0*llTSuC3*FY_i0Esz=DU(#!`f?@wi{if=Z>r@~3asMrB8H6RvvkTcW)vbP8ZeWX4 zzxps+&i<@^TXl<*)K}C$u*vFs=c>O<uva_OepgZ3^mp(p%~u)K{5Z{k!@f>W^5N zctHJ;`gb-C%!>u<(kED#4A{XPx$+SHa}?%+(O6P8P)JhxL-2PKS-#1p!TbB=d;5nL zMMOs=yP`{Yvn%^wn}ki9e$C!VtI_NeVz`$Lz%L_RchA@F7J^6AM{gFM+M7MOSKOPu ztXH`F#C^w(VO);r;56Hd1-i|6n#b*T>ceqoYd9adu&Oc+x`?PF5k{oi7$_HEV@K2z zymA4)N+`DI{|3bN<-4D@&N)YxIVoqR5q@8N=Kc5COtz?XZfomYb%y==nU^drYn>b!5Ctr?PZ$sZJGC4(Lx<*GmYK3@9};69v2?xCz*86!x1fq z9-^Oe{|eU+0lSwM-%%oRlZiDYBcsgabpN8BFSM>vThx{{TLd#395z2-=dkJ; zUPumj_0A`QOXa%S$dG#HKaV)PHrXJUqTZlMEURp*D&K#c?PX)`>TojQ>yzh(U5ggE z+}3v2ww-mQmrPrgHX82`E)7LZ#9*S)OrYMVHZ2*%Ix2 z-f6n^R()lg_{@W9puD-%bs!$vZY>)VYBn{#u=iUtgZ1U*4oibOw!C4kr;~&cIo+d? zul5rmlh}%uY=)i|^mJ>IyR&mweFZIu_7x~{W-C@zr5Q1cK^!y+OU~frPEZqXZ04#L0$|tY}D-NPT^J>z!>2 zLk;VdDSg7vTYSmLjc%I1lCVSm>+G7BEY6w@(XH|*G{ zSt~)o`-!M-5J4aV2N@%gOd!0FRFIBn|vW}Drt z-eWVGJOi3H9hf$!nudR8+Nmhg011-@!@NC3DA2QVhVsnWtq@_vVUsn7Lgo{)!})lf zHnxUxXX|Z}q6~&9Cutz=WXN1iJCP;&D8)pBPR#N=xfBTp2pd7-lFF5XXBc!;f}%nR z1Ca6zjC^CAo!5Zpsbiu(lgpE2dZaZQmR3Pl1Nu#$p&}HOO1KhD0hr0cDxiUoC%PDR zz2y;b(?1FUenyXAUfrc`fgeIi%?Q>s#3O>1`S`d7)!ab-ztxcdp zi(oNgfzqrSy+Qa-h~$kCFl>tV#u zT0yo>Sj8|%X=Z5eLYl_j3H$wFA3GlQ`NIC8!J3ZtWgQ*Tf>iySj%6K(I%;b=*zAUs z@a=8sq4nu=XBezD!_2jBtet7FSqQn zIF@m`p^X#2_+Y@)f(;Nc7NdxOl%T-$NRFKpzZ*Diiyv-9$byI~Y_VA7@fF$z4H|Dx5g*3@-my-zW{NS^+s=4LU=S;5ULvFYRU7E$thNp8*A(h3CX5s zqQ~5@=c+ot#VX*Ndavjg1ef4*RI#r4+51F`-Xy>#L9~eMYl6w8mrb%>5bZT?ljVD6 ztEdNv0*uOqR@o*xU>7I~%q&O{-x-#ny*Sp3}O21M?Rd(O98C84<|F{P!iYQi+&Y*nsLu5^Ihu$V)k)=GECZL$l#xZCMb z%xz~?w@;eYGR~3+M_}0ce(?P zl902^TxqD4$DQx-Ouql3YC)>Mv?0+^0b7X9MdejK@03cTh{%+U%}ktHqQF-^C6`xw zO``FD0}P~L0z_&PDjancf@m?ZGR0TUYN{lM-RfudpltLzU;yJ{R+GzQ*P|q&zCuzY zP@pguLKr`*Q*oFilK?v&y$CF+j-b`jSz!_lC6mW>m+2px;ND~mcq=BCmMTz-PuXY< zOa5z2j)rQ{(LTN*&~0=Yh5whf_W+NhI=_eaPTAgjUu|FYx>|LuiX}^yT;wh{;oiU% z_p&Z@Y`}m`FN5C~v?rUXJU2@qOB4H#QH{+~N5*}@@#Jm2%V%+B2D zcW!yhdC$u$WMz8Y@Q7Sm;An!nZCaUSSuojY3}>m>9D|bq{)XtxPsx!lnpMKJ$>l0=VE#0Q${LhbVQ?(avB~M5H(A<6VIs~Hmen|XCr57cj;wDg~y7PjIZR* zau8CZLCaPfRJMsKeNi~1P;*LSAkgMF^Q=afBekooDqXYIppZJ`(kv}2%`0n&8lEg` z4=C(+1ET{^|A%kM#z zXK7m|9Wcfc3=~;>1jcJfX#rU|Ppz!j;7pMyJxd%-z##=(QTY&BIZl!@lVSAb*KE2t zsC)F&?X{LH;g7;@GHGHi9oIy36f@s3g3 zRt#I$TBG}b-9;4UrV$&5Ij9vP)Y;Np6VLT3k-c!=P<<;z&y-p^C+_T2?PjhnuA3&) zZg_w4iMx50MTey|GHd-~Qvv|JOonzEpncEx-PZbcYu(#|MF)Yep>~>mY?NK)j*MDlofYp2?IA zdWFjqQYB^@4u{F4kONMK_E=?Xxs$LThk3UpU19S{Nzmr?e_{2qb`9sV2yanqH0d@5 zKGJp8aZ;((RpJ-E(g5Ey-P)#3bab(6W+bgQb9J5E$fs<9fcfNuxIvFo=h1Dgwcy+w zPuTU(HesXi2ZPm;XEiGog3BROSUdQwi5UwQ_J3+1m1G-UYluB@01JOMr|AGf`7CDG z0ig`8Ee4)kL6qbPGy~CNdwL7bt`jNhr{b~f<0Mqx@25+$lS$DH(Vxp|&m0t?&qQTw z7?k*9V*W>p{DU=}4O&dJVTtJY(^>`^lPL~F6O|IFf&j!DWck6E9}tqnNz(gl(B;1+U04#Mx7H@PM!jr;8}`p8X5AFzRgZ z`H&lBbVagpDgs^cAL}3%1zD$XOne$PNmH;OFF;TKQt?TS2u1Xly;A5E%X>i&LS8)c z94WDnS|omqYiN=XeK3B}x+|c@HmfZ(WQ<~YG9AvJ!q|jbd#I*5WUrl&T>ys=H|eYa z=2P;fwY|sZguD`qxdX)M>uI;{{E0Cl55B`!K{}wLHeN|4VH*YnBfJf$tm5E77<2U`gq>@HG1qNC7Hcyb!M;d687pf$B(PUZ=T|xM7)L(EmRVw z;~E{-q~ZvOOr2pdE3KGuy*wmJ%9P@R0*A2yuAhIFS3E2{e{lXEPa&La>y?-W>-8zjMwKGjQ$BzcAdCp)p^-It?U!LP5Hxpchm^Keq$?$57$5a!Z+()BJRD{ z6WgCQN}23z-^iC&TytVqsnMs6p-*RQ(ixw2F8vzfP=&GB|8F?{vwhrLatNCSGk0hY z#-0-r+MT6XGIxqGf<)4vq(!0^mfU%UhXXyCkz}3fmG;0s&`8l>X!W^JfDuz9HUo@{ zuuFqpp>Uv)!psk76{RqQDF$&!v^n_ECT`}V@{zZoqC)oA7_w~`M~N|5Q|_k zJ;Up>vyh*=Kjn%>HQJW}(v6${w!9Z%lq8ZlF>@K=Ek<&|IT4DB~B~Y_O;v9%9bdID;FI$4}a;O}@l!+Yy zZ67)fU;`NEa8WOT7DH7N_&*q17&?q>qwQXMcFgOOnF<0N*-^sEWbzzvC)kr_vv+i5 zgPm2{O*$B>IAd@{>+WUK><(pc@%$Y%QkK)@5Tn}4^Ln|tOsDsh=f>O`Mru?jc?N+S zjv9?oZ;e0J6*s%IG6n*@)S#6c137i!nnDgDIU_YINmjH(${tUCloc<{sdVK)q-C~s z^SX%F!SQCb+A?8SAq-ab;ILesL&}?2F1w-0Zdb;3_7dq1y_J`mAZv20%2Kk(?Wvhm z?BgJojYahs`X@A7)HA9Qm5P}EkW30FIDr{C1ON{u z1g5dIMr=}b5GjQLE~kiOEsekhAqGW;iWew{c8QDP()f-j!!>b}0<_?aiq6~yI>*3B zi`CdXW~Cg76+JS8SL=N!|F26HjVUaAW#N(;&=GruQ@h?1{-Ra%60++(*a{-;SN={& z3m*yJzP9zU)P6F#y&<2IYIRcSWv>_H=QF%ksji&bymFkwB+s?s!OWBD?KvFpwAYaF z6HB9tl5(fq9jdFlXQI1E?Q^gHxncuVOg#lH7*|HYd$Tnnm)HD6gV_v+Ekb4 zp_-m+TC}!*?8^M?Y`$XK{JN&qk1Sq6xYYg&+mlym)o2Awb#46$jTWSN#;OI(jOptu zaCbaIeUAorw`cR3Q9bDuE~l}?)pf9WSllS}RTN5{AmKP8TP%l##64O+ z<9w~)>KD$L^#-v&PKLdn&JjL-V;0%hPd@a%E}(nDen@49b&%5#O-QsX6;-7Ym_{)3 zVl37&u%3X?ma&!7b)K&CFgV2vcWds-QvlU}1h5qyxV^(mlpUfHjzhVqKa?A?iY8<~>_=ad! zk8dO`rvOwQj>Y9oP2*Ot9wKK_hBC~WVtf!r`yU%(p%oD8e+cg4QUi%h2a{}O5}EG* zZ-HLS&Y#FkWd<|*0G}o#4taLmE^k0-iGxUlg8Xl6I@jpH*%~?tx@JuRJn#pu1 z@%_I=rNM%Y&`YFTCG|8jY9=GAaO%H4EqhwG9gJlaZKg1oi{db>rau>VdE^b)^5%>b8}?cL9itw!Y(Bor%WpI?%Pj4J{j!bwjl?n=A z?##%PqWmuA8zS)5vCxk(#bC(9jFU0xQk5C=7R7TRzMFn&JpLe}gI6mL{C!MbWW0*I zJeV8RWO=t%FK{h(m362pOLR55=AN7W`u2&T{v&qlpQUo)8&gl^+xyG^_=H+E&E8{g zDtj>Tm&AiGOuNYD{?mSBc+fDm!jX{TQ=#IZQaQll|>^G`1^D^SV zM+ZBRqk?)b(96%pKAv6kG#;Gx_9RUJOrL=Ch#REmXQRXa?RfD@|1DZPOH<>K-+Z~L-ZeSdCe_=8y zv$DFgjbD+f$Xn5p?QtF#T$_pgT|@$@QGPJGo8D>TeAt8fg6onA*w0M>p@iDdM_^a=-IIAa==ijmLcDs$P+!j}iuEj;;q_SK-hF(6t&u*(3 zU!LE)pqCz!$h##W9aWv*rYjeIUm+JxEFjgC8ezyBN-_G-vS}?09R$E(jR6BMU5U^@ z(V0P0B}3^eADjeW+@$S6T2jX+!gXXQh=c{DMBthD%*Muwk`k2(;0!J{>|O2$aekt_pC0cNlWBQj*NqU$H3%h)ui z?qoV$6o>@NL$D;;M02ATJ{}%ng;dfcXd{fw1p6fDH854f8 zL_5c+rAD;odO-?4m`z)jE@0QsIP#m%s{3yxi%G|qJ9mC592Bk*4$?J5vvrf&4==v> zL*Z%RPT^^~#-wiB-EW#fR>F=Qt#Nm25b;_CbGzR|l<+O7jV3LT3y%tNHaS?@`}o41 zF$uNZFw7Y~77Aa>jb2bAph2cqyb2hF{`0@kc^4I@JroH*5@Ck{3%HA7J ze{=QfTZrXPG(~C3e0zG=<=@}#yeD$(it9e|@}t3Eyl(l}7SBEY4FhdhBIcb^!*gCl znFlPvfq4vU4akQLkM!yPH0F@Xp4CK5WGsrIY#-Z~%66Yny0cS6LL^vZ{#CoPf547v zDOQeSMJf?e5Ldtea!LXg_#yu@^rU^*gZ%^VuaIC)(1`K^c$#TLNtk$0pons6AR0!$ zLUWQKxeJ{spst%xMbvmTKy*u_|1@&<2(Jsb3$Ne98JRk3nUx!DJ=x2tx%A513Tb^+ z6{A$>`g952ZR_y#^#BMQ;Q?NEWr8Kwqc!wGt6zh&EFKrvp{{ zN~{S=Y!iu^0Jos91XK~^De&WAO?3BQ!NF<=uyq~mg=ar(~#oOa0#k@s$PSzc6DGpZY zT%MiJKfg1}p{soS^vIIw;22}*cuMOjV++=yo`T|dD%z@Ov!(S!t0^oRsA=_x^+YR- zRun2H5=~%|fM4gQs|vMD>7n5f8#?tsN@5RaH1W^l8V#@Kb6(2f^@31PSCF5~CtaD} zHvqx#ExV!o0Lk}Jze|zj2?JMi!xC>^ZcUbx|8oD`UrHT5QaV&bC3|pDTvIB|$&v2% z6%>eP4*a&})c8hn-$b+WaF^U1-Y9%4?aZpl@s?;DwsrU3yUt6`1&HKhr(r4L3qt&ZY~Ue$d;q9YOJv}hM+5p1Omb%T%HEakh-=S^t}!cIW|NCt zvYY;N*Q~sC1sQXeEuA^!svEU*$tdANv&&^(v#x9Tve5*SsoPZk-nva@m)o@7>0Un? z!Atj^ZD6Nk^lh>fKMh(sMon0&1|FKqIv6qslh=z6Ed%72Dy!IIOJsI&k(zNe{r5j` zk_^X6`ZxFWKTWP6!%seNfB&|pQNmWNqVSmX-rpQQ`2bN0Cje~8WfmX!`rCUhuDV6| z?tzm(+(*>4Rl?Uf)zvuzW2UIDP+k<|WI}{Ib%x>RC*r31(n%p}+BT+-9GkW+IrRJX zl4DHYwrN6EI=PMW4E<6fuero2mvA4UMJq5i)7)epXyn;=e>z3@9f-LGcf5hMl*Uci zj^i)l8w{96&a4mrQ~GllC9!c~%TH#{M$B;EW?N3ttH6-F_R*bkE z%xs+9eK>1JJlEyUi3|T4SYbBZx6y2}B_?h-TH3hruKPE(H$8SVQM-|~4Xr_@In|BW zVgnhInnHim#YFuiJF;qqG`&6hB@?p%o1y+ku}Y5rxPFzA>{ANaiBNe-q$cmhZ(g6f}5CD+Sf>5JC1{YNhE(3F0!pqbX3(RwM@_N|c zFzw=ol!l+B7sM0Mdy|AsMx{HQl(76 z$#hO*p?1?0eXP0O(<)bIWm(nM?>D&fvK;|!P?al}G1;T~4{9s&3~cWA(L?15m&fK{ z)~>Hj3O^K`+eU6-gO#NfAS4*o;1-7UNR|0&(@~!?n_WwQKqAZxwyrJL|JM&?c06U%ORPS!-dO@oAf`H*?OVR=v)~F4S5z zN+5)YCd&}E8gy1RrguKlTO10oX1m^K%4>6G=~)DM_>yi%EXJsGuk#kUP6`2@0mFH& z*Y7NFja4Y}-Gp?I88a-Qs4d@6Y3k4^;uG$8HkVZ>6{d2Ts(+j_*H>Op!RM>kkox{2 z;Rsw5Iu&f8xr|1}tTY4tlHM>@EiDGFo?bbl;~Fu({1Z6Pa>+DgRgwURk+FuLorv&p zv=R76sC6XM%S1>W=qad%1G_wM3Sh6nDM0zsc0|E!6pSFE;zY!kd0?&wr8l1tn`~l0 zKjN<7P2T10Tav&7>10G6STwUFdt$Ckoo6!J;)Qlku~Vxs*jOESa`jr1$`w?}mAukM zx|OzkuRpal^rsm`;TczAm!Ag(3+p`9y^Z2s;Xjy+&E`xnc2|LnIxpPt&XsPg6uUf-7ft7w~JT& zfw+4o-?d@ch@?j;51V6l_vA4*Mm!^38vC%}t2Q0LXa*LS0U5%JS+ZNQ2IGMa4z4Ku z1XMXlM4({XWT3mXmejMX4KfvQpFUQG=p6zh1P(#hx0TaeK{z8y&FKjo3kEhe;iDcE zfcF9NrmRd+z#75I#zyOzI${$C4z8egkGJ98@%p80)mt99&dA=tEGF*_>L9oaR=CWYsR-P*G_o6S+z$z#(P~a{(6#ymX0~h z+zw|!lNvkPaUB%ja-FB?(Fv**Bgd~HFZW*OO%_;My4Q{$zEnTq*A43HRN?uNFg=hl z(mS>Jp)!boM~Ci|rMz6Z8QFl};xW z+VC;%K?kAOOY{Zm7ozQ4hK7!RFs`B9d6c9mQ-&9ZPv@IOdauhoi;5;SiiX_ zWHK;M)?aq=IP-A2oqKccL$m)pH~*+mz|;ySZZ3~)-BsluH|nc;xl+!#{ao9QcRBNG&Y@@wdtJbh8!GYyZ)Aw zzW!rQ{z;Ot{z+k{O^#r%wLyJLxwd z^XJOJx5eNf7|~5`*>4^z8HR_EXsbFq6_{Qh=&*U_cl%k zwM=iU2Q-PXbe70@^dA>Q@*j7JJAQ6|4-hly6bGu#Guf4I3#=NJmMq+jRMnDLMGTM8 z6FZqoQTr`j5OI0-s_>JgLyrB~1ISJSSW>S5iIM8Fd`kT8G)kmiG74kB5_qw%knBSo z@oyzBOWuPdb_$`9K7a)3Pq%~9W`D>*IUiM@0O!f@)4ww;cr6QD5gESP1B%!6;MicH!*-Y@P77+wB?U{(vm~ z0JN-bp*I7tds}$B|2Yv_ml9GUw621L=mG8zKA?tYOyL8Y$OA*gF20al| zE!BG;U}OpgXwsPQkfX7WgsEmUAWlI(Q%5G%c5JA@ zvU7cnaQC>*j%_XCf?T?a7#|JPH|92fQQw$ue`M)hN67HnNs*fMopiZ@%w_PtA1jc&hb32b{w#B}vxOro)&kk4QYrL#`LlzCOWDbu%nMm`flvZfG|KV$j$ z-FNRE&whE;GvWRhXt!eH;b*Q&eRI=I-{8}UJ`2g|xFh(1d6<`@`9woMA|kP%%i+S5 zK1F0WhSZW`Qt4EZc`V(MZsAXaeCedS(Vb5ELclEaS@QrmjTB5H)0hpPEE5EQNlSt? z21ITlh|EwEWF@giEs@COAQx(+_op}^iJXqHgKDa5asPlpLpVlbgj@6s?#6S zYL9`li=n^zx)AA&B=wJxE3xcTD*N=wh_LiAeKO-y5#$mc`A=Xw@xj(!AZfrCg?F2! z%%%|*5?(3e55O%Be>hdJWqz|Y>@NYc35+My#uxNsQ%rG0cZ281FRKs`l-S?BR7$Qh z-dVrO@Xl=E(CcZ!zjWz~bC~pbD^8Y^*o%J<{*O3DPI*%37d~UUCSH7g{XNT97LQ$? zYDwS3-Mc~fzXjb-ryofsKuafo;|MWb{O%5q#oGdD3s3+{Gu!C$mzxRqo(e`nj_uaPooI_7+V3f_n$&KXNEvegYzVOAmOI2;f z%Txl_vJgS~zx%NlOt`B5A1jvKoKv>6a#W5%cB9YQE}Ng#F-&RRe*ZmNFS`A= zffzY&T}2~NcH;d+T}$M2l)?WJg&c4iEkTi+0V>Z^9RNlas=*@uckms`6J|+}MwkVl zE*N-dTsD!&Rw6C9;`uACcs{*j*L;_2erJQvcU_02%bc~Ubv}FK!A+YVd~oxo2X_nq zIxLJ(Kec`BV~&r=1*4{GtdwIw_4r|;;(YY{D^5OnWS2C@x2K~s>682AHEryBn;yjZ z4?M8>3E?~8cUvB~Zsk;R?@dJv+4DFYRsX`H578avc%LRj22up7SnVaEaV$dP+@Mb2 zq4CIrhOkSI?M#gOW_%ee~$=YyOXUUtta- z@3Q5iMlTbdyK_ZVk=cxE)U2`ldFI@H5%zHXu&HYiR*LHY$S&l*@|^Pwk?pbS!QI|E{fuLT9l>Vn41g5I@&W>ri?f&GFo z2Mvui(Ha1iNH}VO&gaA?EjuED!@2g}wMSvNZckt@^ zbBcT{_aqY7%7ddWm!=M@i%rJXYvdmtmEHZ<%5=2wE#Ya?`{vOxdvUPHUc~Hq)u^&+ zVxd}piz@JUQn_L0+rqRxfv#aS1_Qa)SFTn?$r9m8tB0)&yDHj4Q)OzVO1NO^@T(S# zL(0QB&KiTUe&dAnr^5A~AR?Oh+sP8L@Ls*u%05spT>iM4%=WoC#%#@Vlnc)Y*M>(1 z%>k=bX=I0!#ZUiZtZ{s3P3^i(18oF$Y@`P&pb7q@ zvO&%Rinll&IO>Nvk;2BP83HY%nxOt@^RQ6}1388?OVhV+Wsgs0?25ERVP|+&EE0^` z9;D*zmtfJOHEx^cUSPX*CM%hFt8IaM+BUL@o;Mw^gE?}ONuG9OHsL}9goCExOl6k9 zcBF9hZPPbzo-Rz=Cbo417-4=XMb6q`w5^}k)dn8)rye-Nvy7(}Gh*3HgK@Lu%)3+n z3oI%!*v)_P(IJ#lCcqSZfges}9(VST_vZX!8Iyu_9WRljFOkeF&%DGjD#;zAuOeiL z)kL;tDxm*yaTD@D7Ic(j;`>P;SyBFLyqBneU^?`pM<(c}IK9OD2nZ!U*T9lL1{g;P zQHC5spChCsLWwhCBD+2mm(S2;iqgWTOcCcZWEYknl3hS(8+Jq-!Js3u!vGXFx%%`X z1GZyXL7}pT{gaax|rmpxnPf6C{R0 zTib|2S=j5#k%yaW)!9?dat0A=*X;8^v`SQ&KeDAp3DgrAcLuh@xA;PZBR zg`=d<4p03_tdo51mGomi;T*5W zBR30JjLniAk}JV|c8{b_@+!PN3ED$3pu<0a5gVJRMq0Nr)(md5j3YKqt%Cs={mM&V zt(QUujwTQ>MqnxgM4FbD0^omUM`j%X;ov|kMM@GAVteUvCTv*~XK!V8i8e-rGO=_w zoddypK}UkYEyU(oO|oKfA7hGR%Au_RIi%5mMX8P!NNn^DF#hO?MyUXe5YZ^CBuAyz zAaoLmQ4tEOMf%#4pPP{;jWHM)?Ifp@kt=LAg`7AKI~*z{W3ezw)pVPUQEMy~jk*Wh zTB*WpR!FsEi}0SsqLk?wqmj|el+#Tnl^ko>maAr>%xuC2=oZxEl4o@~9aI9XR%h1D z(rWcqJyENP-l}^|YjhfkRH_Dq0Csag*5}@Ne*Zr;M)&xhr-|1PuRQ|g&-ss8aV zHQ)cOM)PgI#`o!W$Vm6yr&5JrWzH40eATw{n%~Tk@(&l_f~OwphL< zCqVa}HZY$G%oj?XR`mrDRG?uJ%%7|Dde!ITbG2SC$p5Y}8a2z$XEq>ISjNkZ>1)ov zgE4B@ZHNjMe(1B_iMB^&AdI3IXEcx*Chj7 zB70ZAgoM~V!p$$OCVPKo`w;0RGhZ4!{v}p2VcgvrJjUJQ`tKgHL2`y{a5*?8l{pSS zVw`E_9ZV7@{DRZbcUGeBT!b+Rqb4RXao8LXXKXTqpXO606l_ghxNxwE%@d7RW#3 z3UEXjf7lI6*9ic+0Pae`^tPR>QL2SMsL3oEYnGOP$E&ou>S`~7xQVo(=)(GU4qQK3 zr?C@W$tk9f*D9E@M03cl(WrbDVpAIxG#Fl;5L{*BOWVj61YAL>qYM>lvf-j@87tpW z>ZJvtU!o^7M2?;aC>6H~*pz?_@A_f43oiSGu}SQ@oNif|jUiqc=UP!8 z=>_F32*pk3PFPZ*vcpA%CN-p;Wxmn4U-oTG7E0BO+K-oF$b+b15-I&yI4^>TevPA| z*`O%f1ySQ{Y5ZqvdO^$W`%*F%#Lt9hQ~Pdj5nk<{#WM`}1&EZna`}}EkJxL5;b(RK zf@)(^i_(k8hi0cS63J zs|Oki5QJx-ntFo~>>H%pY^E}xqM$b5MkoYvA@~kW?9WyLsNftU=J84%FU=uI1-qz& z1e^PwZW2CepU0^YenL2@YGH@)Zu1jQ{eo)vbm78VWF|Q$<=}w5W#K|%AkIaL_Q^~f zi|eTOp-#ROKBVnH#1e_)P3HY8s08{;dZ}0gP%Po!hLQr;BV~334uMWAl-Bd--#Lr4 zPP?Qdr)gAseNmTiQDw`*c6`PC1Bk z|3&YFAt(-S5J%N3gxme>D{!fPNgp+SjP6|uarzfLH$e)iK6*+D$1m-L*m8QjAGFH^ z!4#H29_}tYGe9>0-gpLnEkFNVf|O((Fhz0>mN{pkLJV{|+nAL!+nm@Nc5q(1;$0 zM^XlI4futW(0Z&+Dmx`;z%>=+F$`--08{c%b07caoO2rfcx&P4E_cI%*(-V`x`@j; zY3;gE`&aF}^~k{oo~)8NnyMR&zN(UV^8aqFW1e}|cCqmFEzbNRLwxxa?}InfKOla<+Aw3N@!C?SkfJo8^8o_ zI-fw6;_#rs8M>Q+4?{*lf6ip$gGD1_2)F*3nIb$OJoLNYv87o1MtGo;=rMVHc^Mg* zzJq)5cfvzNlfHv34fMZg$+Pso7znVXSU~|SIp>ji?}fH(>3^H-I{4m&4?q0ywD-t7 z&`*A`g)pImWS4M#Zu;G9Tl!s%h6&iR8RREo0+8h2rQ~oF4^Cf%UjrF-Vx~<}RSZ*I zE(2MIVn4)+wu!iV_&KCBJ7WozHtAvFJ})oAL?hICnfWHzmC33lUvkOkcX2xQWGg~> z@BaL}sp{L$pV2vjL?679*l!~z{`9L2m(0`GtD8C#ot^Q#F%1oEW0p0nz3W%&ub4Tl zv7>Bsdu8sZhQ_w8CH3p>X8H^MuC2*;raREK{(9zN$DD5BT3H_a=?1Nud0!pn*^pUZupA z00^Tj5tSm3ES7<&%$QX!=9c9_0)sU3X6E^ShyF8t!uA7Cb=}?d)XA@&a=V}EW*W(c zOu_RclPZ>-{Zx1NQ$Vf%1X5Uw9d3Fmy}|)ud-_SSfJENUoGgFpK<0AjCt1h|evE%Z z;>VXe18_1@Fu#N{v}Dy$lYcahh+FBgOa3nO3B5w!-!FNJjDG1I;T;eXh*@fdciwr4 zjDCtq-A8v`@^_NF?=`aGOWz0iLhnbEgMcy@d_;QkKk$7ipcWA}i23ZFsLEMr>E*^m zNiljMCxS`D0CtQRk`;cwZFtH2PC&AwZk-Esg4y{wTFw0ENVACmqI*lPKgx2}QEvCVye^Z; z7cdw4Cy!~hT58(tTvkqTwpOE+DP#Ggikowbz?sCpE1Y-gkZ|y`3z*$+64-JWdFkBM z*Ij#OYe`h^Gw4gVEuZc6IEwvFsdR;*#pxI9Sj47n+C_64wj)Xcy{3t;pT-^ zp1g)@-ZnI(|2o#{s+>8q(rfAp^75*M!p%o28Vqk=(~!6B6Rq}RU(=z=?xM1(WkubU zhnjpJYqg*F8xK`aD#}}&S2U^mP@|C3P(crm1S=Pk9!@{A(q$bR3U-;imDb8&gx;j0 z;T429XfFCd_&s7}e*eKm7kxl#5W7Zh_&9LS%OJK_PssaKWeGE7bk2mF(NjBbZ8CnPRDNY_y0vqvSTwEU)@I|E zO68Zv=36_MNF$?~kh8xcr^0{F%jpBc+=KqI8uz?&m(F%qRQMx)?AV_(LB-(KX^Hq` zc*ZkN%k29pbUyV*rbJ(s3^CW0uoy3ptf1(|FpOf9QHdS+wI<@yAcjwBu(VmQ6c=8m z6b?EH45R20DOnSoM;S*<`PnH@ znU-mbX3h<@cXoy%caE$qshO~gkdgW$q6rpc|}mM zfW4fn2@zHg?ak<`h$MyQiiQ`Lv=lS5hhmgJXsl0?YsZi4E)8$=c$QBnnXh9F&2c*$ zo}1qk)E{n2YI&bMPp&&}lpO)v=eQDNTY=41B&;b>thIE#&z#?7w)+at2l>OB;qvN; zop}qqD&bJPd~C*5L)|+2Gh=x(#-YO)hiLs$8|GplsgTtp7@+wT*fLZpU7J+vUEW}w38eItqmZNf`rIh|C45G*4gvtuv2ThuDXc4 z_`F(~o4xr#n>-TrA-kYAe{7|2#8J7Z{f-(gd;Ga>&c1)lWrqs;pUj`koHIS(pOU_D z^8LS$#%g*dRg)QD^LVnOJea-VNlv(W8>d}4abi{VBvc^g{(<%>=A~8;kSobx+W^dd z&`(FbE}}m!n<$swWH;yBxQ58)FmSG&`4)_se1oQtH6u;oagR#y4*UV% z$RlzEQQ?Bxx~KCmCdnIwnIbM2*apCK_K0`0o;qZC^gB zrnD~peLitnc+7HIOQfYaR@=5i$KjSiQ`sTL}ZLR4Z5zHCAtN>{bMsjN!6PEI-ku9@ESMg(;v}J0-^JMuS7w0b5 znX@cD7-?=8W)2tRaCYfAMyrX35sT!5f6!STjzv9;6_lBvK768%HD@<*NHttQXnIdk z?y7^F`IN{L?uU%rCUVHqK1zo@akLs-EoXkZnBZUz#7i_Tpn#3a5+TYeLYd_#dc{U1 z(h#`k#S*5uBs;gUF*loal*U~7`L0;$=f#;4=AN=BEs2&1-}$2Zg%57C1^v#VI#-t> zJzRMAY0~-3eWdazv*eQV6Mxve+y^*iS4kA#R|fn- zu&3e;qG3vLMn`=l-=NG{P!dW@q#yXDaL&2329-vr{@Uo%C`>lC=j2i0{4mP|q$wR{ zgn!v%CnO%Y0uBjp+Bjf5$TTk4KkHU)cFe@~QB_pz^SCGfJ*?JQKf0@!=#AcW;GQ7N zoi;maX8SBB zw0v&=GnX)%`~NoZ44HYcOdJ!a{DCi*(Pc}iWH`|I(H=k{g-Q{v<}ma?m=r%QWf!J} z8H0%E83q-u1cZqn?7c^L{#>B=FH!3BvbI-O&wt|5F=H-$V*bp7Etk-A)B;d}v8Z?J zB4WCFFCq`qCkDZL$3!R|>lU7)++0^}S32aEDj4OA`8fRuuF~3gDH32)EFsOzy=Bgl zbuV3)$8@b(Z6hmq6?u zdXVtQzxf91Fn&M9rzk%aFfXVsQ6;NGq(q#$=}<**)WJ{ZWib+A-;a)nqTVnf6_5cn z4t)>}4PzEXog;w~#$Z1ki{Lk<(qh}xw}&MofCb9!BjRB5?P=tIsR5L1!lWmvIA=!w|rhUdd}Y5$nj z@Zd2XuQLzdk4WtBzY3^hY>D1*R4J-QL@7{T4h1Gs&|F;1!b2qrcn-4Ri{yl`y@Yd0 z*^pzgBXmX3x!4)Jdgi9aQKc`rW~P=gL~>^9sMO=stc>u zp1E|DPH z1|+>G%%}<4&@;lb7~m`>2842kdFnKRX;3oaB^xJ=tNn^$zN#HJY2(KGHZfn-jm65O zv2|Y|sE=$MDk`P#+f=niuhp-qLb%_?NizMK%8mDJtX!j)P1?vF8!9)6SVmEIG{8bp z2aE9}WF=dHrxwk=qJ>vZKCOv%Yh zo)At7f2FjnBAx2PwiC{psVaa#f^a&N&m&A4FlmWM^^S9%ZFIKlfmIcYLA zle~cwab?#R3c6H?C69~O?j5+5(Ku}I{&=DcPF1X14!C@Ld06RKKXaA|hyZ9WLm+u1 zYU9HRsSL0LRFN&gn`8*8j+(;EIWTVc&J}Lr|J??}oqO%vFY7Pd{Y6}OUwA+M#qNvh zzMOllm$Y2A^8D}4UwIj6VU8R*BHYKNenP=LIsAo_?BrvlN&QmChJE`sbiAY%o;Ws{ zJ^8}+nDF|rXml9KiJ>Kc>Yu7U7@IPDQ1zHiY1R;GVYn5!>kiY=A@hYZ6D5!jXKm9F zjgDUbX@8jR^5dZ3&mH;m`~C4Uo)bA9>NwaLyc_};espuXotf1sT)&St6D)?TGRdDT zPCw<2Figb7ochV#|KTi>N(;hPVQX42l#brCNgD1 zvWp5s5{;f&-4$_d+2V?%|A$k^r5fdYhRjiF3}qc7I;+Crs?HH`C`>$a*KxQcE=)hS z=pzx^E@g3}=pCRZL~ZT#1ON~Xut5lx&eUcc*{uON08|U3d`6q&Pp<)B?F42E1NRRy zJM%GAHH^}96C?Sr?6UqhDb*1YaDnW1aE>TLszQtvMYxNSj>v)_3QAO@Im7ql1+=foE6>vkVT=e zML-E2DW}+g0qxjgNR(UI1)Cq(jDO_2P2H0>Z=T$}>HXxWlfN2Uojavei`8=j+%dd!-BCV*E({dFq=jrOQYQES*I7_41O!tkCj<#5M2QaG8ryvdqK7=gu9TZr8csspKTHAy4i_ol!q6 z<&!|m64QwpObHr;Z$XeC@yn?D)x@T*VtiL!l|DIvw7dzSd8F_dSYno+%Z(I9k_YJj zv|M0aC;$HDo7~;~Dq$pkFC_j<8=icM@OSfRWQ@v%95YffhmKT`I%QJSENWZSf?);l z!poo|oEX;_!8Rr%>f(a^n0^QrUm-z17`_DZ-=T;mxdE-G&1&Sa35xRsy&xnq5mJN0 zK!wb!qvfZ98jkQ>%^p&%D|XmjyV>G3!aoc_lNykvoS^23*1T~x2U{uIUmA95?=I9L z*Jlw~^}!~T5!peeSTkrd+Vf# zRppW?oSGxi$X>^L&`5?#8hsNQ=(QGe0tSE&-C`W$&(dQ$TdnBh+>We?VZv27Gv#S`x zZY2OyBt_P2SMC;6st1M5LWQvTL6yp|2gJf0<7BwUm3uT-o3rxrvdkMw@MpJCqwJhC zsZ*&j?k0Nqf?0WWb$PpuYUTD_yS6LUDAXx#+PCi}1wHVwKmF-3dLTu?Q9A&nV6oSo z@k-UhPdpYrmPL~F=$s-#*jh4}6K)VM{Y!r-HzX`A;+Gyg=WM=6{lGoW=DZ`R5fm3e zUJ!qT%nyqa{2SQ%$wGES$NUcb69&&849DX!S%_!9&{1|m^t$s{#zpXjSU!ThAZ`em zpMkBPEKH+)mURqx;F(k6X~?W8PDi4?A>1LBv62%KdYqIl(To)^r+k4rkHRibtuKrp z+A+}kFuI9BP}DF9=o3}v!~q124L~~#QGm2Yp#;K80}BN8x{HW(2&G>btrLYno+H9@ z35Jh4PFn1&B4`XL_{g>k=KW^r+_+su5K}zr`hwB#F1xI|d$y4oOH{&}z~X<*=X;n5 zfz3sWma*%`tr432PLpt_&gu7BDvm9EuOiIYq6=p1X{ncj7rFYuMO!}UiUBs)BTs*) z1o`Z5JrSoV`*u2pM+f-Tl<-D7;B|slWs{gddl4xwg@uU$RM2QL(h>#HgZf$A;YVLG zl0$wIQT7Opo4-^W&Ft;P9i#4#aYx_(jN}G|+H66>&7adGyzLmnne=3yCCIN}dz^55 z%q53NnLa4o_=l&E4%Pk62f{t%3gK|tBrIdDXQSypVUnQ#)ZYSK&Dbq7n*`JDF?m)27D?iLX(kMOA%T@ zfiG0Ffqf_p6^<=Uz=~9Qb}N=Wa;dfq39?xAiLF(tr0^|+?3lV+4bD}=FZvDP!*|ZV zleuo#==FO+)Lay)iB4#-+S-?Fy@|QJIIp+>9J{11)nNVZ*TGkL-3_oO9~YaG97`l8 z*{J|YePRu82%1q-h4#rUt33k4Y)Nlow(4E0rq3O23t7Bbe$|x$vS#+eW=Ftc^%IBu z#`5&R9&0=M)JgGTyx2DFr|X7BOXMQjAPG%>5=Me~z-OXC8J2#zo#gSvuEokmLq13>Ks;moLJ;z3yyYjIm? zg0+BGvYJ>*qa~#P6T$wBIE>PGX-G8vh!q|}3>8NeL~*NpU@c$^L@~tDK^DVraY>x& z?bc$O#cGkc2@KvrDU$WVlNFHR@nrPQ)cb{S2>N5OmC_7h^vhB+a6Q4DaVe_5(lU!# zw4+1&r_Wz*i%LbWS3HQz&{u#fCNW?^PSAZ(dZ*GecfnPx^t#xIhor9}Uia*q{^*2( zor4b~3k1>VM86!(%Z+PMc6V6DU}B5XdIGL@P}a@}*xZcN_4A&%c+8lK56{0owQc&0 z+cr&|vU&5AsnfR3n7%D_{rtmp-xKq$XXeNZGSNw8Bf?kHe2W-ikXB#O|-cKR7uZ5(TT(GVQ1;IKD*BA^?N;j z@0}ix!ATR1xOEQ{YHbdiSq;J%Z=uHSbC@*_zsJ8-uF;r^io9-jp=FLI67~A6TB9W( zn-kh*Q+vJO4pAtKQNPEeH5!aIo6)4#n%(}Fki*jDi6SSb_5z#QlcAS z@#%&1i23tyME{#Ci!?+UvreNCDv`Mgsb5hG8a^*#cNk6fiCMnPiX-Hp+aBztPl4Oh zyHn6D*0IHn$3DB=tiNbPC^UlpZ*J0?V|6jJJs@Q`rA}qn+Rc8tYS7vYi29IOYhBsd zuG*5FF<(~HWYziASy7zd5#-z)PSo2q#2&G$?fT0GFSTxP_hrrNTFu!t*=E!SBi0Cg z2=SRH$2YzncHm7u96A(;d=Z&(Qi-??nsK-hIGvf`4q1jA~oib#XKO7tb8)6w1$r@c;e$bb_`&F~Ni2jzvZn2Fw$ zz~B)d_)khjggJGS~kwcJ`S$EEhn$FG)b)C?Be?Rg4{?f);@1;dk*(~!#;TB_6ue~koujG{(Beh zUbt{KVXkcLp4__g$fK)QtXTahxoGr)j=G9-8WhCenK&*7rYIphp6F!0FZDa$cKI}A zbC$PH6CR9|P9~in$MVcdqgHQm<%JWmV76W(Ra?!jyjZd}yEEKSQq&abG|$;JC;bSc zi%r_Ko|C*fHU5MMZZ-d!_K;<@%9@Wx|6OFrky`ijgBLxNotf;yC;P z19KdM9L-wjp>Ck8BG5)h!T0r&0%+sf$hTN2Lv zkjxKXirD2~To#O4g3+K1RK6xdDPT%wEeGp9$`BglwrgN{jB|EL-iaRh)`YmW(^uJ7uLBa*m(&$7XGI-Ke zN;nA09{>_C7UNiom=;}hVi~*+tXPQjh2p-!$Alh2G7T7~LDWZk#B@Y`_||eS0j5c8 z+}MXS8)x<*jNC9-9f5cm&Im-bpfa@rDJ#}aeD&mfrlGy%ww*gk?W`wa$f&eubjT!agn2CWzTsF$9FQLv-MyCyzdwe%0(XgSv}M>Fy@F$&>plh^`XnrC<3lF=|wT zxwE#mprEjD7ST?yA%cmit*xpe>+d> ze4^cc(iT%F0-o}GzhxHDd0~0Nw%;391a(%WY$gC>p7cuGwE}l#_6uJTU3%q&Du-Sv z1BNQ6(xHc+GOV2wta51Ju2zM;w9pK?-$vo<7hb5Tx!}@jjIK(9#}tXZhOa3(4AZCt zeR8mWs=yNvM86y>IS;5hz*qP;0}qHi0D~PqBaSeil!iUQlCV3>8lbEi7?siLw38X7Ay0^wp7>Q~U9X90Kmz9u zGh;-Yf!@kam`UQaU~ zKC^g{E;aY>7jX`w7r}f$FY=D2T_qmcXkvb7<8v^QFe+0lBwIdIEMQiJi?iI}QvaG9 zFIlAGEc-(x;`Yw!xJj5VRhrI|!-jRvUkNW&`eTdRs$1-4wL%XTJcV-aZoPtMmT%{l z$~8)|v|`{C&B}j2h3Jt^>K>w12|Y-kXd!bQUbiuM2zE$ z5%+bOo?z+mdio*1I#~xKh1Nl9@bD{9rvijuq<*AxPY@W|#D%3Lf z|LDW95-oJ%uc7PzKjz*$Fsdr;AD?r})J$)wlbIwl6Vlsc5+KPWKp=z?2qjWO?+|(s zVdyBJ6hQ>RtcW5iifb1!x@%WfU2)a5#9eiDS6yFsbs@=IzMtn#5`yBo@BZFDewoaj z+wVE&p7WfiejXa4W`Z0o=tf#%Y#8W@tEJz+IKR>U~HRPH7}){FA_g z2@RTRpp84qzJ|6Tbl~m%2s1O8`iyqZ5(?E!d*MNCf_fBIp0pN>Y$)^p^{g6c-qdT) z2G|`q!rdp`_EOQ1xd-;oeZW1skI7UsOBvE8XfB>qbJ|9n@GEyp#)N$*zuR$;iHTMl zMb6o*mJJixJe)xE3Q6_4>)`+&0VYGZT=+r_+-_y*&qQ=9TDu^?KY|vD9{9zI3DK(5 zME=Du$arMS#9PPZ2`ya}-Oqi0SJ|R6){pAu>P}GuxC!H>S(E&)JRvc zK(%pLIt!%_Ggh;J!P3mN(C&zQ%b!{2zgdp>O3i+p(=nue_40cDaryCg10&jdx17tO z(^oG`_H-m)1cDqwb`64b;Smyx)_@t0hzGhdMCC4<9`|!TD8jm$rK?L{m%e7ES5xX| zjVv*(Fl`#N^Ymjk_TQ;du2gC}db*#$3;ZWOD(u{Xf?=5$H@|z8nKTK#24ycWnW{7M zAKQD&^LZK7DvgHE{3S1zo_>f1NH&P+M;%Csfl8EPu7x`aIkw>Sb*g?XAd3zsX^HUS z;UC1y6~<^aDLl9k{x&4~;8i-HtfOnX;mQ^KYx5>mteILiZ%SkHXs&4RwL5E-R@LO( zM6u}hNxwS1`A=KMZudb^r4d&kLjbo*jB_XUZm7xw()$Npp75WZModdD;0bDHwr`R1 z_{sVCpn^HUU7WwBZ2nzSn$~Q2(Y)xssf8Q^yiQfaGpCL)?csqTYl$*OC+Z@HVq^XB zOye(GF$~=Qgsvvqt>JX}F)?~g{W!WMD}jH~8i`yrp|6CFShk_1l1@(nOjnF*SpCVK zPZ>c(Klp(l_zKcZz|T@YCZ0yA0EZ^D{lW`$b84Z^U^;j-tpQBvB00=t(w>;jRGNw zHbmPcyBkeUMyN*Dp&<=!4Z*9_kr2sB-A2w*DIcMAtDSr>qu8;Cw5OT*sv9K9fcGOK zSm!4y(a2K=dfsK5;!ihJii?WuI$xqIGc`8d;YdoW%gL@wbJ?B#*wjo{qOWdT^k9m- zk==Ptc1~SdlEaZs=lt{%`6zA(m=DT}5dFZ2(yka(5~#H%rX*T@>g=_aAidv5RVz4Y)D3sGFSTS2r^}yJIAKH`4lg%ntx|R z@g|#cj@ugfX#OhfWp`jJqBtUbHkZ4DSHKDHin0O4ELt|2GH9gHaP!L}3}X%RMu9^v zuS(%Jt&VKN;Q3N&Y~gBXg}t%bWVW+k1Gq)5L#s5@ZkEsLIw^XNABqBodZ8Z+V-=0W zNfK@`WLS{B9Hl>p2R#J6Cms(mA4-IIVD5qlOg);Cpn%vztqY4NIw=`LQ{iB&^7#Wa z7a&uV)>V||WdnY{zt5auLkdb=`8s!>hE*dQPt81kI ziO)fk1BII*_SGJx{lTuOLY^sHz={3|Pb?n%Yie4$M&R<(ilKI}PV{R%0}AWba;7QM zlhO+kSbd)<)y`7?fZ^f#8IR88g^8yYJUP*(>zlFUnxzNtoZYl6N1f{El@=@+k}>b# z?4Dj;?9= zS6nw@ob*rWHR+$@M%;ibXjl5MM&Dm&83`?45etEsp3Zfah6&wn{SbZWiSl#g2s8QF z!b4X)kx8BIv0a|9d#)&qO#jKn1JeLSU&g}PO{iQL9$?_n`%N@9{Doli;kV#$3Nk1^ z#U4_1qX>;tNcxH3ovQtK_!)Q;noSJxssaap?qI9Elad>s5bi2j#ytCs3 za>OCS+>#mBw~`ecHs)WC{zzU^cx+5Je#R3lToHj6;g(tCOO%@6wkpq&GX4R1 zbtJ>0R7-sa=3topyX?tUg83mJE@(3F#$*?KY=Y=`;PXg{F}hsA=r60uXOmHR?c0m~v#F!u!V#*&AI! zFCAz1AzPG%yv`L)O!?wt1!(?ra)UJ3BIHo!{9Yy?_5{>Guyf`FChX$Fc_I zzkl<0r)IOI1!D?xv z|1Xy@#d)U%ppGeWtaJ{l2B)wBCoHNdN?uM*O~xylSFjm1X(4SGMWdi;NKxSuf(5t$ z(yq)xWA3qIH}GW;dPcJn8YKu5f;{oiO;wizg-JCFwS~i3j<8^y&6ATjN8`%xe@W3ZTPIsDF&xo?<=iJvK1bU>vQqQpAR2|98e;? zywn>Lli7c4!^k9)D%NBa68o3AL)UnD;d+hQ!;L5&d5@<^J+vey>4Buo;w7UeC9Ww; z>UC`7uuab)c08w7zw+VUfg^7(8}2hqI@xh>QPckSg{{)#cJ`ZoB^^z5>Wnx}rQ)|t zm9Bv?Y4QiD9p9(jwKLujJIq}-HB>Ae=~c1k&Xe~rE;Db4B|o4OT`5J0Rv@-mt!atz zj@X>-1Cp1zVgT55j#C)|HMfmO@q}V#n`2Twx+XYdZTw(Y`5GfTH>Yk!#zc-pZW=AdnU&ctSGLmPRA#Yl%*st2 zE5@3|99PQ)1!p??$QLg?_qS8cq3YGk^9J=x+wtQaLmvIzOJ(X93s+Gg81?GDFTVN4 zi)CtqLG-vQfkdF``vU)J8+thXfiD0dYXo1A1iUiY;}P;M1b7IG9)w;9FLlWY2N_j$6R}D_C#tuFLyR zQg?8Y>?h+f4n;=rDT>*O1&SreUa?-W86MDk6bIlb(X6-=xcVo7u>QE>DaBdEvx-;o zHejCOiI7E?piCY_R(m?>8YV(eH+fkc1o9v@DE}J~P!EEwJy^lDDl0jm&=M6(WjI1} zhsug1OnxZaJWem}2`>S^DmBPMa~QOGSg}|L3CHQ+J#ajM_k+p-7#qsBCaS65;S<0J2iW7)(J59wVcB6%k{?6%EJ!OsS@Utz_$(y8; zY_=t%V?5*DFrIlzZ{ki!YtM2>w{6Pe9$-Sq>~eHS?^dvtrb=lv8>;ST64@AOhk#MC zHzd7!sHq55P!v@j9C-9X0WZ0+LTk2bC|f@z1F_*7DLz zruI=vvH$QnNO|>oNZOsqiluu5BhEgp6xpgOR(aQlPoGxv0hs4a`qNCWlU_c;dVlqi zTDma!WiF=mlT6^9KFbP?yQEJ)%wpTyIW&YF?FBzULCQyRsUJR;KJU0*`iv#~`OnpC z4l-gG(E_)Pgd|FRRmT4(%sYi_RPEM6;$3%-Z%5%{n>c_iJhrLhpPL>N-gq#SBPHg9 zDzo{9P0z5IZB?7kp52`GFuR8^%q3e+zbL)g1bTBFEEJU4yBB)6py1I-C^!=N&1nNd zCbKBK(G8K1;))gUZ+7rVPAR3Vw7t$6-x$fJPaG&+8+m@w#PTMtSUR>8IWwlE8>A1U z(8^i-@18xi?eGFN_%(Z7r8sxBlq5ZS&Db~Cl-F;l9Je^~taR<5acm>kyS*=)&e>K> zn6*kON8)>1LFFjt>#TO+!OahJ(gx)D`j_ncOO%}4G{JPx7gXF@3{UmqLN~)yN9>Bc zpC>`rSsX-oGVPMHLph6`su_njt$XR&Kiz!upPqdwyjDEi%D68N9r}`S(*JBYcVz9o z&$k{p(E9wnYv-(faNH~R-S=Ja_ctH>=)vYCYu{Y{=JESp5mvRUOUK`Q^Y~KX!uq*$ z+wUr^XJ)0&pP$0-5Nl^v=I{ zJj$bjzVt*|k!cGIjUTvd6KyVeA${ty&7gHGB<#Q1y14zTyV}$4`fA-A?XMQk9G1;8 zp5EWF&#>*jJebfrN6kWh2{r0A9OgK6uv*5?N2oX#x;mx`pR@Uo*GrC8yA6OX273VP`NcBT5$Qr0j?G(M{{P7piqRt*) zN=el73s(VL`SV{oUT6>g%o)xA9Yvu3PritOk*PmT7!2X&#aO|Vk=pG~2a{1WGXR_p zgE>l4UMm$H7b0r$wzikJ{oJv(mqs9+QS`6EILDZbuS@=&Z5%$wIA;~Ut2=)?DwiM7V8y|a2de7gte_wyolz2Y5-{hoV zNoufec(7NxJ*CD7ZahunGQ>M#l7ayb)Ka^pQ*2}^2^dYOPAi<uj~;F1rK7F4-`>hvE3z-Vn_W?n%^t`Kao>fq*aO)WY&#u0N+&ig zJ}Q*7oyn@G$P)Y0@>jpY5>F&PG#&KoJ^YRX^+K*%Ss=<$$y_-}L{UXErgc(E5-&jp znr?_BbPwuI#L%IiL?tQGQxhLhEFNIO&2PPbbo8M$OJ>hnvg%;{q2Ii5`}B85i|$0V z!QOX<^!@rRpKN0Z=T@CRx@XJQI$o|_piwYoJ1MS+k z4@{;Nph^J0Rz&vw*R{6pWnO9y>5qG@xbr22mF}0)L#gr~)}4H_qp>6$<~$925GmFS z&0^K?9>3KCfKji9ml=9*)MPGa_6R~d<|%laTO_^BzGM?4)z`l!wMngf1bd$Dc#b>y zn)D5~h>eq4r8agA3&T>^5wi5Qbc9S$4}>iqA?)E5ky+fW9UZ(72IOS8<1gH;@(K&j zloXa+bBDra6BOoL3kUoHL_@>&^ECv-8f4FE#sp1A{n>?AMziib z$qd)|3UYAtV1Drc0u&k(6_1!N+06DIJd)YHfVjlPDl1-ccwBwGrPxwmkM*Bj&`JO9 zczs)T=dI|h&|7Ak>vWhY=o3EevYFqaC&{Tq z)3qak!8J0(ysUS8nYK5}M38q_I^SDc7B9UZ{n3JhIN{&iL_m^m`s*5hGQUi*X#Er` z6bg?OrWdP`5fltDi&4H2EUat@&_IR9LpUa5W4Rg%4tUpe(;Ger9WZ1j`qB}QTf#b^ z3yJPJRD~)R&xINrsUgCROu=#5G1XI4iK;2pV}O@}KOO%07*Vf-`?EeR$EwxqVsv_~ zH78B)v;dStjN$1NIP~7JcXh{s)q6EbIU@q&-f?ixy=5Md=FW1>?>pa>4E#k(Gs<^oc+1PZ8N16fN=wp54FANlzWFAaH=&b{ zfQAnN$J&Hh3yED}MWOIH7)ogV@}!cEsZ;SyN(m5WYD~`QDI`rOS`C|IRmP8uznuy3 z6YU4j3nT_Wj2)#Thq^tT0U!@=r>Blx9f|3`@u^wA`q~sTeE7h|h2DfqiUHkf@F7ED zuYDvW)BRyvr)4E^ilw7Jav_Gs7aQ@|s+U+3X3)W3FWt2JrdKY!z4Sq+^g^o5V&0dV z1qHkqhFbheojd#ItY@|lQRzNyUi9L?d3B#|Oz?MU#uKs^g5D++Bss#_E~hJT&JrXc zz?^emMMC_0k@h`{lHJLW=t%Jn&Ha_?_9*|MfFDXLc--MM6MEpA;3i*GXw={t1haxc zP`O~@;Da)-23idkDiZUq^f)0+6fq@S=PW6PuYLV{sqOpMudQ0PYG8bpASTE6ZY)hl zG*aHwjnBOO%*LsCJTs=3HujEB7KN<%fvc8PNnxb6k3uS-^=bnQO7TWH*Hy)gvgG8l z85Q}%i&JB8E8I|<5bHDvy5v-s&E`r=ju8y8&IB#)g!{#$77yo#OK1lAl0AaH(6h4> z(VSQ$yN2aB^90#@%0m!-u!JJq(ht2_FagGX;(L(h1it7V^eiZib?`=sRIu_INiKC4V|*i)2yOAx9uOS);1I@Ox3+wfauYF3K4 zOuA;4)LOn_QC(VE-J%WUtrDkDYIq@X0)YDCI7@<^#YJY=;(>PkSyL*zZ_nWm%{ET# zC5_}x+2RxIQr_V`A6&?+38kflYBDbn563}g9u_;~*cxbq6e@C1CRBO&B}a9MFmZHg z>&!U}3RApc!IDO{B7B9g^xk`|r1yg^5$eF`>Vbc3h|%r%WXnmGaS946*%m{#AHL;7 z=?R!_dYl?{EfP$pnC0-+&-WUwd!@fx$VwEwO6D^=?VyBEslcEkgpa6}lN3z`4yHZX z0PJK?bdvJ0Fj_W+No&{9n%>9*>{puinPiN$s+-au%71qGl-(Z(C}l zy-X=>xb4;D(X;8Ib!?q{o3`-fx)3Rmbs0h!^KMx*b`G$h3KiVGf3^t&K3Le`N(YJq z`T??m-Xc>Hm9neQeEFW!XjHi*jq+ootM5tgo!)c20)egr?CPwRuUfLyNo8iMvLbTl z7wD>#prGjauD7x7YW3UykBu=V=6-d>2Mvl# zTMd@Tw#(HL(Xa4!u(TMqUOM{n)hmcjWIp^F%XAv5s*(Aoy|L%plHZjaTRM->L;jn( z(Yu2hvm0`_bA)sevFNaIg4T5+6&Jg&Yy|O_8v!qQUC|6pyf#nEG;`oi7ov(2?tsOx zW$u{H1LI1Mvb{(D%T}Up@bb~XA}v#AsS~tIo6y!hUe3Hpod>3stXub!RwUgIXogZk z%z6oQ`n9kwl4ZuhA>I2=`@QF9hzRu%%$g3QTQ>nzmM@SQ5=@t%DGc~QxEVaeP4Jqc zE{Alb9FSjsl+J($zLMM^QvCIE_uhN%b>{Eb2iB!!>8wMCW-XNs%-qH6SFXIC z3q3(Y{R#O1|M$bvH>XTjkfI*9XHkN54q(mprAzIAYmU6KiOt`%2|=Delpg<6>)oYM zq5=0I!8m-lQR)EeDAT#pyIcQs9D(S9f?ZOoh&EIM?{pHpqp#BEz&v%nL&nrW6Gbh|z9nE=Zz&d4Rf@@`|1|q{5LbefQW~ z(y@Na-`H2D*4*%?Z7cqGjog2Fym_fl%A@S)Jyb3{)5Cj6+>5ufz_Gs;=VK3ci$ultSBF&OH3*5JvSrRY&ov&|RRcDKAZ z(cw&Ty~QfLtM*D4J5(^?V^3o8Thg=GgEmxl+BF8F4JW{^@$+qnKJ#x0Zx>;LPPL%3 zDdoN=vwA^5&Z75q_c;@~T)1b`pb6d5zaIJc$>lpxad^4*pst56UgwNs`X^hT+WSqu4jr1Y{0Y7^+WF+oE2$aU?qR7TA!Y3_<4M?r;FMCY> z>^ypYr$&JXSqv) zJkOTO`5Ya&wv_O*k&sroHp^$Wtud4XmQ7u&@r=;Yy;MG736DQB|-Wj=&+b6p7iRe>0zW&L)D!&`j4@G&%F8+)rOvC}XxURy=?4n#mJfM>!i*&PxL}F-W zkK9IO;HJ||)yaiLUj5NCL14o|7!omTpTvmD-|p^AUS5hQg_f_|cA5JFKL-naH`m7n zI=RB=4=O-BzC3o)xxBqV0Xqb!Tu66N_d)rAQ6f+M;=QQ_1*y{N7hRv__Fq%6 zbo;TFUW#~VpBOGkZ9AD-z}0_ob4dyNou+y3yBady!b zsk!m-lN*MHO8omWr)7?;DG;?sk|%t|#pff(gj0?OGPsDT8jDC;_neTvuR;&>6WRxhYVu;z}Q4(tjcOss|yB*Dg8?( z$7qdB>%TlPefo(nCH$-!{@qcKb>@6!)v8ydFK_+LNon%-`Kw;x3K}$`)|2TElxOd4 znm1NGzMq5F+ilxb_8P59T@woAsifhZH^I;PSC4-=bhbE?ZX%tNzIxlhm1xPGGD9ey)#?$3zhFH_?bxWu38Tp`)Pc?nRWaOu>(v7H@ zlDf9o9vj%k|G|rRTJ#G<8O$^XX>W<(?povI(@G+4a&HDuP4}|f?kLjO$)v~`g&X*S zz!hZRIEaPq;YHFl4|uw~M=0fi$Bt7-bx&?hoe~UINb3*u)8{@Rbbc6V9X8E&&~9{n*uB*L8l|I+P0y*hf| zNK4U>ZwhW$9hk9v`s9A;<}&=58;4Mm8R~;!)xYHW6)Fhbu&aL56A>mLqh-iT)S*Hi zVh9wVw0xuvlQ9-lBDsDgKH@D7cZu={LF`@K&_guDLmGUhP(n_=q-cY(TUG*b23?^S5*O33rKQWp`|kc5{)N;`2O~X&znq+_Ev|3VnupxP#M8lT)F{tXa(Ls#n=<(4Vni86uEij zxr*|XIyD@2Vjt;y08EWu4f$gMAVxChP$i+o2Wl3vT ze{-rKhD#EJ@$K`FxbsVGu2WcMOEg|m@UuFOGA&o#{-?NP{RjMKe8)2bxiy?IQ7L@~ zEfdOxcE*?_JT62j^u$+(_uY>$)saQ&N+fmRWYqgDRx#?5Qhg_K4@cvaa~1tzS?^#< zW`Xyt7j(Wa8^}hmNx-38$$rhAWADKLBXMvj6bUJf)Gkm>Ad7i46SLo^49e>yI{B2* zb1>K990uf+PH-K6bk+q9Dnu<+IR{;@1H7{%dPl))ptQ$`M*zGUTr;9ez`u}u>kM>G zdt?g*8%I+e)b4ngzX&&rURUgJB1?hOLAO9)H9pXprr|v~f`#QgMR(BzNda6c;P(@r z03L%p=H<{f(h)kKOoh=j`b@ino(y9E)c&-jn&BEcOpjEmQv41l;wO9}o`;I#a@++C zlTUGFbVU%HM*z_j)J`r69t!#tAQWWU3>5J`RR9)gdB0CAhvqY&gwCAycq!YK3^4~= zgvuc}i__2?MdiRTvCB_ZqTYCjI#r4M&?vJKP&BlM1bzo!Ovr*hl!mHR9HfHCSApxH z_%)>}6=iY?K;_1Ud`+soz)RIq6(jc}KB$j;D-mGp)GFlBi{i77)ILjGfMX*QP^lu7 z&l(5Uruqbjqf|dOC42C;y!70*CHgVZ)g10+)+;q3rPx=LC^ij82I1Ce|5%%_=(-gn zxbM_f6&oKe&TDW)Mnrz=9GeeJT~4&Bm2rjyl}4ACISiqiVXrP|R(u;|{6mGadqmF3^XjRN+iBC;*8a(j{I;}cU z@07mRjC2VJi8lAJ)Hr=VmtN#c3XOwZh76tEVRBtO>l&%?SQ8V{lltr9QoY8)prCou z(8rpVof99&zo$0yyxyFi#bTw_FYdbQi@S>F%w;NV(uQP>AWGk<0n_p}Cn%M=l&#W1 zQ?F8^1u*a8faiGcX6C%>K4w4c0nm)O${1f#2u;08%PBRg8040<3Uf<^7?%ksjlYiN zigUAK)MicZBsK!MG5oz&H;Abliwno-ox*RPpL%?X(#a)jVzRVWpmSMAb2e^;|)N>Gz+l?B(pIZGYpz!&J^?7uV3IA#fDWGz5!-lJEpLB;|`NorHQjTszjmC z-ebKXp;DtqKHLSOI69@rx=>|QXD6fq?ta z-5z8G>m>ry0eLfV$5^$`?5;@f6{yy5`LRZHqQn?YqRFDyXcJv_HU9u$kEVOCO|l9r zGPd;AyA6iW43kmImagUdZ_S_Xj!Uu#)}(89BpZ5f$xs?i(<{xDYZnP<%WLNGe%~&u zMWwcF>dSGPjxSq&{P^-^k`Em*VFd=2jvv(TNui+u&2AetQZ#Ze^;sFGR$5FqCvh8{ z`du#s^Pjs_ZwGu6VGOC*xC{(QwLV`|1K0^SVH%s+ssr4bxwJx~&e7|W($FlC%?8uJ z6}p(fyy8F|$MyZ7qGWMd(e^1woB-f1t5c`f)%Qzz-EQBPpX%Uwdt%=(%Pp?*dDze) z=s&SGi-0^1XD9X9Sv)Tgqgz>RGUTK9NQ_N9Lq83GlELp9$zvM%ysz-gU@o*P>@ot8 zBvrYXgP*h~k1U+C^6S?vCHzG9{bO7&w3J&?jaj zO`h0T?TZV?l6?;3_||BI3Sl44qHHcOwkQ$U=jhB-M2LSD|0j}cLI< z(l?ECuyNw1O%tPQd(WNgxDj3x#L3bUEsH+V89N2YUfIe7UX1~7qNg`14158Zng(zOWHZZB`0%GAORjEQ%lLEDZf_T|T3sl8!I;#U` zLC?`F!N%B3r}6U1%@mY$MVS)1%M?`#QxHb|q%`cV#bNea923nMVrzz3v?}Ns3Lcz1d|VaGZ6{zYv(1C0 z+pqM%ZPX1Mi9n&bNM3gq;|L#;TA-r{g+kJ|O$amzg;)r_FfI5sH8n9)NDQ}1jp0aZ zYk2S8a4Y8yvu1fU+MIZv9M{m5?SZ7OAgFjHo=>Bx?N1NlS0B$s*YYK&MZ+^&$qq(y;2J`Akhi`c2ew>|nRVJ|Sf!+aP6 z1uA_3C6dCF3pjd}fa9HiZMXut9k>Xpb%|a}7jksHyp5k|E3{*c{y2Oi_|PAG zh`OFh4RBc&G$TqC@@WrJis+;irPD*bRt2ROlCzhji^!QyY1+f=I%C1(1tSq(+8Eti zlHSo+GH4`rLZ(DJcgdJa%=4rhKoU48cD#7g_!Jcr?WTl_Jqf3{>OxY?6EV_v%-xQT zUBX^UPkbEd+B+0ok7kMsTAXo&M~7hU^b)=q#~N`GGPzUHO7LiUnVon@I@HOJ-Z=_6 zDirXC>;@!6f{D&`N1+2C+EK9_`LL3i+Z(_!_!&XEfd~XsfPsT%7pdMLl?I|2w}EMg zTKqJ4TXlP~Q?0%AR;}8pcRBf(9XpU=*4aMi(;@xluMTYQmB9vauS}aUf6bctGp6Ou zPE1_?*wn17sgJFn!PktbDh-XS0y`;{vcC6PhqjmsMA(v`xE#REiM-7hCt#Y66{;ft@pA0iz} zSjM^~tb=&Orj}C=FhH${=v%+Jm=XiYNEry&a0^Th zBfXyf>(lt}6&c)%y(v8>eTO@|xAJyoIC4Z9vg7-^8t;(adGcQAk0)o`^A)eWqB?S) zQ*`rc;4Q@;&B8y9Oe4?x%k#91=@+#jfR9jyt@?H-ORah#q_>7ARkh39fB@D3W3KC1 zv&<;a&PF<|bGI<`^2w7}d9$oZp~+O} zUY+{il&BYt2mU@3DjYROmt#gF2W44BEOhDDq81nEf`JhYWw1aXHH381y+hdo+Nrn* zGQlg@BZi7}u929YwicQ7X-uy$NOoFff3r_rJJrtqMjMfes@&YFTw(Xb8~1JAcjLtB zCDUgMmLV2l_Vgvy?TV}I6+)DKArj)lxMkb-GKVQIL>(R~uayoQSSqiWaPQozjwvmWi`5;Z$A2@%HvTz`RJQFbywZnQ^%PNos)tAUBF@Ka(SRW84X)B!CJ#z22<*6 zFILV6JQ&l^M}Q6(c)JH(8`__uVljNax%qswO+r-n#_nxVZllNzLw7H&?od=O-96Om zbXsXk=-Lv)$T_oU?p$e+)PA|jkP`P`MC@VW<$aO9N$Vf_Zu92v9$KHI@}zrIS8hh> zCproGM>Y@@;Nkzjs$nMc*boqi&}q(}iu(OxwOTtA8vYwi|HV6pd_H97;{N}6O{&Vv z+WKw$`|0(`$?H%5eIwCdqWzc4PO((~o43=5~p6-pOh*OVS)S?o$2~{+?jdTqg(ywmH0_V zD%`WDkb2Y=@4*P`b`9v^k4Q=o4#_!czsI0fAd?iXC@_o9#e0#hy+pL-V29`mXdqPPkfAXtkqjNQ(vnVrWf-TBTXy%VpThV+J86Ln zRRp#Xoy1s_v=%@m47R+Ohj8Q$<>ge#i&R$ZM_w6-#oGB=d2fN=puxe)0#QAxvb3tt z?34ue^qu+z%BH$Vc+`C9wIREv=|ts@$wfJXgfPG%Cg$}+WMsYTKKgCVO_kpDSCH5n z*DH-ZoYw0H+U>qBy;99p<%HK14i#CrAf-58b<^}83QMISvAK0k%SW;FnwhQBcCpDD z?E`46QTr&Aji3|xKw?*rVpx`w@f!#AEj1H04z&!L1u};mB|_q9*O}dIf%q}x+2Err znV;|_NIW5zU}}w{6RO-*6RHmRLV;Rx#SL)}rWC7&h}cK_-4AbHnrwAW+coDF^$^2# zBO-Nu7op@XQJ@X$hVgiuNT$^GE*c)VO9#;?@nOf$#J9K zcAdcO&UtQNnXqe`S-EqLWJu4H<`178%;gmQ$ILyD!XBEoODLoI%RG#1>xFj%ydpNI*<~C9GFl(tM$4k0N>uX1e^R$82$DfY?lLM-#^|M8<&5`68_?lI zW}+zONRW(_aFD}MYD}OJQ}BB<$_SQq*+!ufh5XaUDxBptqSQY3z=64ovj&epFgGWg zTZWn7!2B`N{S$6Fe9V^`4k@*!YL~GJViIz;0siMG!tc|X;FCr^q9f8_xFK39z z5-I2WGH22Jku|J7vluFZ*S4ooyO$OX$ni<9gm>i!MAz~GJ}qp4=EO~Pa}SvReqe57 zdczL;XeamLz`=%~C#On#NLyEMNr9EkdUd?r>nI3mnhinTd_i3sNUt)y6hfHK+!rb` zXLcy8qjdwaxZ47?>pc0=yE*06Id8mCouwWT$QWb>#q8{RvOJh3vil}EG_c8|{0VqtyR!Zfb$ zil#aV30s_eQu;?G-UNINjDl>lDw0u-0?ouQGHIr^Rfa<9+R@KVF55$ zL9={*3VN0oWRD^8lK`fee&v8#z7vuJ@%hSBp1jjjG5tlyuC>Q18Vqs$7|RH0l1ZNm zcn$F|c17tRF2fKn^08NkuC~t5i_27NCz>~nt>0*?pJm%vf6W%dgjK3*wLwQ-N`Bm& z1EmF$*nf1suS|32`aPO5UtWmc96wD{?#r#>m#GBxbaj!3do&}3wU^WuVW_?y8pI2s zTz{EnS^NRM;*w%=E!$ICnC)O6Cb%YU*N&b)YlL(syKls-rDL@>OpHyH6sk;-CEeXEy{d`^M~UA#LiWpps$zpKvy!{UCw86PWiw7no zP1=|^!8E%nQV=DC`{xYobKtLT=B9rU^MRz0!mkt$p_Ww?B37WOaq4@$`j(`Z(L4|u z7aU$2XykeahldZ(`+yr@AFJ9n>AhtOq}`zrQ8GB^mQ*fv?g2RGft&C8cD51mja~(1 zv7Mp-OGapv@?00KVgP|-Q5U9UB8o&0sS$u?X_TP|8;v#u+1bLLF4)iOV(`qOG z_+Z!c5$&Z+J^^45xIOwhq5%T9hKM7@C1MbZ>b|+VoTKeK8Y0u@9{9WYz}&h`iDnS0 z1p9#HPkMre!2^Q@b)ZdE4>-K`c(s1Bwkij^n>C^KO7(@AnH4X9D%FNwGE}8QZ=0Ak zKsVaD%RDF}FhZSG{l*(P)#W+TyZN4VwE=#$v*Ot4NfV^|$IL$frkh)qoiq2q_`z9= zi4aTeVofm3b?k6OJ{xI^&#BsGGG$s4rH^Pm&BYomHehAXa>Pbf3|N%&CFdmlC=^Bp zZ+30l--!od%UJJtpe*)(UenI&eMUaJ{~-y3b3542idFMO!6?b2KL*5!Ij$J_G7Sr+|rgT<=t zsL<=Q<``~>G#0^__eLIyF>AF3{@EC_HF6;~L6xdO(3hF2gbH=ySZWa2+&dbFKp^3e zwTe+xxh{U56e!Uk5YTuaB}C^z2aFt77)hW|=r)j$!9=k1^^Cgqj;cXLuOmT+^`K4t z++l9Xd(sZG!DMC& zq&w(71cMWseA~_!yk3%~qR#;naQ4Kj;5Z<%w`pUifwy#_ugmdESS=N;VdElD$UO9S3EG< z^u$wyF14y!M7QiyqR!sd&7JEVJjVu68>}5{r%k;7QkgHVkQADXZ z8=k=_bYU2mRIwLu>Hpw%&){~rumKQyKkbyHtNsA`x-_(n6?TPamdyb`avHBdMaWsO zt54Qu4p-qWPhP7B zf;c!c(gu=82Sjrs^=VKnkxz(6PJYhqfFn&1ZtFo|V{lk7IIP3JxOp-Dg$;}AhA&y% z+%e$T(q+f){QQ`(@z}DZ$FR}yvGhOBT=(|cwQpbd41cdAAGJjgY=W z7F48EVCw|7KC4`_@Q`%j@Rl#?a!2Y$yX(H(a#*@>XrZP&i!IpCZu?U!yMarHK0e6N z(~Bq3GZ!yrav56W2OndfA3OH>F)5v`W5%`T+s>~Qbc+^_KlJwUrEeab1kY#e#%sW1 z1)*?#;Vn+n&4y`=>8%LZ6ul2fRa=XEk^i@E2CN;a!ad zLb7BsK+ZYv2%?eA~Kv}WS~~$IVP{89HcxWKO`4m{y;*=fr#%bZI^yvS|Imm zr2~&|+VuD)mZcZ;>Dm6JFV!%e%N3J6Cb{2B()Y<@u$s(tgI-N9 zYAPLnm)GYB<)v}Ukzx7_?)1Z%r`X|56DMriG+|=o?u6{LUY@ub`ylx)dY7v|{EuBO zy=x5J&t4Pf>6Mn9U~?HP@q!^W-hrIw@fL$io(saV-c6`NQhcNa(eFK6<(5t8fviTe2ViJK=*+{_BKX?>ElzO@@yBqSvF zNz*#g`_dQso>?*!OO31{6cAu<(q3FiE&KoQp620ZwB10gn54_f5&eGl37agIM_uR9RZ^068 zmiYOw@^LW?KR)u|lLbf_jS&FekOCpqT;|9%GQOuQbSsl8$8G;idiH?_rDs3iJ|VBZkLUMlL=mwS2y9+vhCwAg2mVXn)s30E_tpJkl$y z*fSu%FhyERIvs|x90U!RMSV_0WD!gih+;(WMJf=%Jaz-H^c2Xf2DK-8TR^l&9k}3@ za?<-kgq;!0Yef+X4#trn3C^E&f>#~#I zcUa#^@*U$?-+p$_eD}hN*#47Q==?rw`4Z20{bwrngkfNxc=j4&JIW*9d1i5sSO+*FW&%vPA*H>)gG#i^0hLJ*21Q<1YGUj9u$uxPlPzLa=~j;p(&6w0j|L+ zS^q(P!zq4BFh?|wXqPN68A-trBv@WZOt~0*LGpUX%neqUQlCHr0C5Y_z0Fa9fobB% z!=ooNa|I*AKjMjt_oWnoH<+YZzIDfBUOJ{)wRz_x?uOZXVw|AwGx)7Q(WgKmaY(sufE+i9hOTeI~Wzvk|}?8NQ&OYpx(+-~s6w>BC6< z76Z3v6RTLE#1*I8Xj~zV5_+VUWov?40ZdQ`)3ig zD>3e{*bD1=6;7)0mX&HCJ~?{D_r2%3!Ka(|&r8Tu_sbqTJ;Au=dIpjraHH>dSNigj zf@NRW#740JEOVmt7Xxn|v4qS1U0*eLL?(_%RXOvtPxs3lS_1FKLO&<;PUBP-y_%mq zLRXfVTr)E;{?$`HU;V(7Y}}%u(md(;^_LVM+&8V0#-aY0&r)I0R}c{s$Y&EKQGjz| zFc4@EU|0#>8?duTKq@c*n$yrK2BItHr(uKi#^;YecUbyrX6-eCa82z@W;^`c@zv7n z_aqq}kbe8=R^qWALW^|ox{6UHZ0e_fW>ZV+E3cF8L%B&lG2y*^3onlV>?GAh z6;vKl>Hz=(uK@)_A<5SwXz?m}ivrRK(C1|69|uod5tMf1oQo@D2Uq6FA=L|rV*7?a z-aPI80(N)FXVSS7Pu=tBU0-LLC%njPkN=|rsYT;lM#ZIvLbFHb)y}A%J8J&k)vpdH zy!gVDF-vb*^H|PQc7c0WeD|i^f8fTJra!*Haxu&~K& zd3Uj4$PD=Lq^=Jk;J18h({2%8Y6Ds~_sB6=z^7_BUrp?G6 zT%8{iUzO1R?6G4n4fFL1>0@-x+sQbsIx~uaN~w| zd9+gKA|&h41|$UX>Y>0*d5PJCqE~_#2Nb#j&t^)>Yal@%pFk=(qQm9f+!=92Mh841 zSWLm`=&O{olfYx_X7odvtfHF`HL0~aU!x5w1^AiMGf)EHb%IKE6_qZg`_Vx>e6@1% z-b2TZAG~?d;_{3bp{P(~mc)XYQ^T8g-?Sw>MX5E$*wZ9?RfRp#Y}9JXt3<8Q#97o; zRVJ53uT)i5T3iY2#hmOBb?B0DEpqtnIf zHLAHY!Z&Z(kYEAn({H@z&V$$Ml#9zlp^B!ay|cz7s?~{%A2(p_%&EmCB|(%};H_S6 zq+DWcS(Rwwj0TmqvdWZX5vwZAu7trW7S0(_H(^5E$k`rMg4vWftv{>hwl~f?w|Czg zCS5_Hn&*`_&6-g?ux?O;G_7CF)(0oQuxsbeKnjQS=W5Yucy7%YzsSdmLWT!Ev3+G(b#j%Fj>TBSu>f^ zpw__F0smj++=867(&hxO&!GQv`Y@|iXYj4uzI)T`@{)$@R_&ZtU{4vVwD&FQYmwg1 z8n^EB%;|Sbsf>#>R#(-GavA!}UQpRrsZ6q(f+PCnmycgQv6sdOggjw+{)1!E-!je1 zukU5hTC;C;s5Cr)iK5A3InI=)RK>7+lB)_bbh=jWP@7HX=rcB5nOA?)_)$A2*7Qo$ zaO*4G0nXta8BFNAV*bedf|`lLQzA#lGi!P#y-z zl9w(wls=@q58ZI?bE1^#wBlgX7XKVt@AV>*=n26tghev}h|K z49Acbsu>qTZYYI_ssb#nyBT=J<#h&UrmM7CxM&D##>LSSBX0?cmY>wwAlHA`)f=OXtB?`4oRisQZ4=|BwuRxG^w2{Z{!MGYh`{_h${bV>?josn9j zE%O13HdTA$f7dKrUr7PbWp}i_aX0z4k>3ABV~{Kz<$04j=?Dpb;8r?+FhzHU z-72GEc6M{Q9QHYionTo|*EUFRa|#+Hd(T-CE%&e%V`MQsn!8EJj~<3v{KOC(JGYlk zTS+PlJll(L@ke=%@=}~dR0Y*tAx}4P1V41{3Y zb3@UnR7HAX#~FtDqpEy}jiG8i15RE?NGR0)(x9MQ3GA`4H;@>?i%F*Q6un*M8VW`$=60JJjrr3({3V6f+6E?_ zXIK%zv(tMgdB_cUh$2^v;LFJ&wo?b(l~JYZ7aDC@IueOP0qa<er^N)+%bc*@!y_d=@)A1hV&Y`*M#|WlEr?!!7C(z4)c>-EE zpq9Zhrvcs%0%=!;NKYN`75gBWmy6Ja!2^<^UM_akntdtFmX5r6)5ft0u{j5?%`6>I z_8Ob^=9_E;Rk*tL1*t8+QZ&X2yojLM7*3UE?-lFP9eL!k$%uQTM~$PkXW<=RUElQT z;DW~SBP!~LDB9cdLiEuuqtzg9Xc{ra;Tr)D(_ z8f{rHH1A@gRZ519o0R9v4Ahw=+5h5r*Q^hr$K^pAYa45O%)_JW!dBpq#2?hMh1s_ zNS)-d1Kf}l;-q2RVAu!lE@1XRlIuK=%E9l9sZEZXH!m)^HfD0b9gq&V#`}VRPuER2}!z+-;9AM#K$N(^$dr~Cf#Vz za2h}+P~E4?x|v+~@r{7BhipAjgAC%wWFrj7Ir%bpVMBI`Q1V6Rmv&2a(w_6W!t!PHqx-(kdM)E)4Q#Px zP-b~U!`iXZL$g`dAA66kU)FZV*tHD}#*n6!@*Q>d?xtGqR)#);Cnba`p7RTDL z4Q1sG+(W%5$K@2jXmcy{0MJ0?lQJ~u#~R3rEIzM7x^I# zQlrkL(`qx)(=)VMZL%)2K%*(RKo1+c7JY+ElPhpPBBke;u550~+o(>)t6n8i#jmf8nW1XBHhB>5lJLC~XT4=89`r<8QxX zqo(%VG->F%p(XKvpA?60yrrwZ%D(kcH2MUE0zD1Ak!E1(kZ^knV785N)rA@bqOc%O zP!I=&sVE@{{0sZsTw|meq5(^x*bM>FMr&&o+{dHyl3e#>)E@J@7ph2zpCI6rl)!;} zbZJoGMHSW{k6`f>o*oHDoqQ^Sg`fw6_kl9+{lVYw+IM01=shnk-1Oy;KP;4Pf8|%w z`){vX_crtW>O5O4g}6tS!BGCqqg|HrN0IE}_;t7Y8@Ic&W3<^nELwHL?hAVtzPM-f z>iO5*)3WYu>3vWS+~OUsT566+u-JE**QM{jl$JF!1d)`aqi?&xr?lc75>`tm9zoE< z{APq=n1Sfb#C?%N6Zo-hk325iZrd06icOGWI__c90jj(4mX42>@#7+Kjgvd>V#B%h z9UpOM3VF^}hM^NAd+v4UC~`(}NOzE4kg^8SU36W<8;LqX;upt~5M_!Mid`J8y?hPsg=j2!n+uy7P56f~wevR;29`yHc6Wcp z7?p{+Jy{-iw$DD)WbUgnRVP?#tmy^Jq>2%{&!hX8T1}V#BPJFihc&5%`_^P?;+n9K zze*Ja{BAR*{=e$p13ZrE>KosCXJ&hocD1XnRa^D8+FcdfvYO>?%e`AxSrw~V#f@Tt zu?;rW*bdEw&|3&4)Iba*Ku9Pdv_L|PA%!HAkP5cO-|x(fY}t^!$@f0r^MC%fcIM8V z+veVL&pr3tQ@lQ(H{B5hU3cf}4x7V@V;L~v)I?6_*wq6t@dtRqF(&Zxdh`_-87jFo zg{9(bQc^a6km*oxBtb82j0+|3Gt$9d#X?J%2b?W%t;(wOlfeAIqtZ25;A4nbqKVe@ z8qq%asL^OLI8WZ5S?G*P@uv8q)`9n^>;UDX_ULuK%KXB_tZ0`vF~1;IzRt6IISK77 z-|gv)Eyz#wx}viZ3-c>|-7zgy^wCu`W4o?X0{{rKZ1(}3OoJ%xgbRfJ&Tt)B>$;bt~Ya)oH02^A> z?zHL{FI=YWUC4L_u%Zs96<+WowQSBTzrv!*aGs7Lwv$2y=zHr!2B#q>)@n^jG<&zc ze%{XG;hsiMezkXY7Y&E#ncsi?kFPxOhr2$1aeo!7dhU;Gm3R31ubRC%u~1x$o<2R= z8k`#4%yc`wIbK)1ExM;C+7=&Q70n)*)D%-t6q_iRE0U+rIPYg$_ijm?=dI57%-;XT z{{DGazWCW)*MH=B>?8TP-^D$-<^HQvZBbL>I~nhcugb8+Us*55zK~{%u8P0)+2_6; zKQ$`angE(21O97%3H)Kw^?{5e3Q?J>K!-R4#1|JrMzTtP{cS}&H-*?hL0I&l<9B)i z6o@xu<10Ov6^e?+7tRS`%uDbl8>L@f`0%!E4`2B4(2c2kKkj|(ycU=)HYFA;TE8$q z!RSrw$;uu&5M2;nyJlvhWBAIBoSaoVU)Z|&#fw(@lk>v)QC#ne4`vi5x*f|iGwWM( z&Hnlem(96g&CKF7mzmpEY}>YC<+g1 z-E18(f+jMBv@km*uT?$Ws`}>>XgO8h2Io!Cra!F>uk%$gXCXL2%;_N?C)hp_*NI3p zLO*9c^P;nL+SwtN{ng&RU&-&_%08v`D05%sR4GB}+=id{&fc$1=bESTv%dZrXyY0B zl{^}LttWv8RCRvzoLD`v1a|b__0`w<=ggRC@<{)xcgob>IE|eDZEy5ZXQ)H;UvvRJ zdjbx$K;{Ty_n9R3hq1t>(ZxW(1Ldb;KSs(Ir|$s|xUMuAwG~zi!?c^=p=Xxp=9N5eEhR^|KX^olF;(A#aC4bl_-Q$^6);{6eB9CdQM8S1*_Np2I_X^o_%P!ZYABl3X2mGHCDR>zQW zM&Suv;SA%DgXBtCBtD({cutV6nQ`n0z7>Datx)gle30qL!MpT$DK7KGg=;Q}xGrCL zhbpgr$I8oHkxSNCrWGK9?4#dNFioHy99v&Fd2%5?fZ)kv93s_6;?u<(n9`0*t40`| zB(GDt>P$EW@i}5Ty~yEd;=6Jidwh96CF)-;PiHsfms7YL@Sh4?@@vou0_@DgLsq&# zhhK2HffFY(<(4WC=bWG-{d9<+MByX3&V*<_x!eGAnboY! zVK$59QoQ{50z>REr`aUTlM(s=hgAsum~KePrdLx~Ny(-!FvJ~G-=7XqIVNI9;pqII z$6`h} zUU)nZq6Cr^WSIYowj~UDC{{Lwnfvzd-?yE;CcnZ0a`CA(tXe+0Mt6$8THSy5Gk<^P z?*8iW0Q+#?e&O={`%X5q*H{4mUmH89JGBO)3O_&wHUI?r!jI1{DLMbgtO5wHLJg~P zGaEJlV5LoKmoBp`3*P!%#3>-bN!W00}QqoFh(U5 z_I3)fCvSpLkO+H)?~@-H`}}!1@Vqe~6-Nv>$hb*}RUVB()kzcIXv>RX!ILKas?#Y8)jb>rWA^~=6v($U zWv7;bzCwQyw=J5D9yuaR>)f;J%XMt|KlfcEXDhZ1Mq5|NV~=fprP4LWRr$)+$KUT=ltlgu{Ty{aMm#cPR0)3*R$@YWTsR5O zIA6&3uq7mxJGM^9vKoEz&eva;clwN0t5JN%h%MXW@_N4KSGXKsT6H43YU$D{@tvxr ze8cFd?$owzGFd;+so|5iQjSx)d+x!UG@i&t8RFUl2M)N;WFt$Gv>s#A2-r`dRf$Bi z>AxOF>X6ofSS6jCQVeH>63_Bk5f4s)J_ddop~SgAl^4$0uxL_c;p{9-qi0y?N@4$dG>VPyZ;IP+7B1L zH0+AXb|$CfMJ`#pILf$q_uUtd_-ge+T1HGIX8whfFFttPFP~?DOJ@u`aOZFC{&3Uc z#a=jNOyaR{(}54sc%S$VvZg_HCpz$Th0GxOa8#?DCEGdhE2#WZ5~D0D1?v+*oGL@y z5~4St@wFK#p0gJL8!tbqFgW?1{-==hxP0QN{{E++Ft;7OwL)25*Re+~}0H_}6{CX*0oRXs#@+*Y&tIGCWw(8|;cD7%( z`BrA!|Gm`Zm6GqX`1)k_`wVMT-pgz#XJ2RMzOIw+u3x!l?^F9u>>b`S`DOn1hN7`w zU@^4~_>H@!av%5N}n6I9m zvS)bjSNp!dZ_o1HYhK1z(VlUf-X{s&m6#W&542T6n!zXlB-zx%Zsmv@<^mME79>ML zJ3cXrLWL~$buQ;TKC1C5o*G0`w)>7%&%^hp`% zPFq|?O75ft_f)HXp&{OU^dVM<;wBa=KYGqq1O1V8N|07y+)a?xn6F!hKB9F>;pTuu zgG6>AWXypxT=3$F|H{5PfuwtsIfqT6p!g_fblgBT7%}xo@&{5J>HaLZjs@h9%YqV%e4vbA=;aBYfUvbgnw@=pZFuUNz%ud1nDwW_*iEIp78 zsneHMX_ zOssGM6bn=xAm$numq;aA5H6YM&=B$gPUVSqYj_0A35IkspBaRNOlh)^@*l)_*+1`L z!t%(vaBx-6*t5)Kf5+~Ue^q9Vmj4#xvhjRVG@E003zJT~Ab(+ZyY0;SBD;<`5~t*q z`YYmL8HL&7%l&ydRY_6&al}`hiH{qPhcZr+qvu&HZRLV_`A)#~k&iZ*wwh>!m-}4xID_ zG^|!*hXR=*3CtZ5mh)o)CdLgc0m4fdEPG&&LCBw^P{FgO_mH~-?9zsr#KP#mvO2hc zvxrHAjG%kK*wcGJjUx&SASDKl6_f~UxKWN0g>ATjcg2IUFv4DDhIegjnoVz(j4U&g z86~scmKM9#o8d5-jErZ*FY~#vuc(+mH7P|el=%H6I9dNlEq>- zCKQOK&1)^5DOO{2RMC>MI;)}kUHOZ5ySHYo%3v(oXq_V50rfescC*N3;p{hNyS_($ z<_6j1L5esaFF)`iMXdS*)BRx;MfGCI`>FhUYz4v5ql z6V~H?*!H|}6V`n|7DZcb6R+jmIa+B5D*-w%hIi}vUr*BND`6?@Q1GX~hzUw=5E#tG_8d-|q?Y7r{^tJ9yvIzVGg7UAc>DpVJI{$37J zKpTy)c84=_2JI+igw)j%EJDmdjF=*-sZBi{Y5Ne1L-ndKJ{HihqBxqi+G{X96iGlL z|G{@8Be)RJB-ucc0UeJ}_x-rqMQFffI}}py(;M-K+BG>`$TJwnFg_$_(V_dU zLeDGQZ8H51d)NtVcac%BMhudDsp>4h$Wvc*%4@ zB_<3{JjklBxfQ`oWI|$avv5WXcfRUy;5Gb@BO}I239C$V8ZsbNLdEKfQiTN%)(V`vnnc%4~>T=X>a7EQFGF(W|S5SHevO_?5Ko{=$M%3jD)D{ zgRAvU=plb*cVtH$vDiI7+ZVNeOUnF!A*G?{ysNXPic)d*;@O3vp^l7r;epdB;?oO~ z;?y*vF{5l^s_1`H6|*O@bgGM2bJ)b59V$;XrevjsF4pc`iDl90@lh#JtZh-o>?o5d zYIeq=HqH|^8`4>|x5T!IS#D%eZE=RGdGV8`EsjD9(N1%LIS@VjeEBG)kpFh0{8^hP zJw;8yiZf29$oLm!1Gf?ltM2PuuqZx{B-E7iYs@JhQQXAA2mQw3r&xPZW+JwBFm*)p zlny~C5zSLD`3o7iGvs22^zN_>I^cC4q*_4q(FB3rQ`|0j?2=CMIf5W2Km3toWM!vi zlzI=WCm25bfy1AalAaOtuDWsT+2dnRS<|d{TCMtOTt1GUUVG81S8Zwhs0QwPHSlL2 zl6yOPQ0GZmbFeV0cu8}`dWEfdIH$JCpPo~+ymb<0&)DTuEJ{tY>h-wVK8~Ayeb=g2 z!F@Wz4|c=GODFXP0G$2^7||CBNkB(Kevkr?=O9%lQ26Ma(f}5Hq)bnvvkt6}G@~@5 zCpaQkML$Sj9Q}2!bu^*H27(Y&q1#d!Y^YE4CPuN}&a=hXR_)?K$rrKtYxmE(`Pw)p zdhD|ca$}N`J%-q6Dd`n)9m^K(T@j;qNrGi#Z}EI4NT$cmQqCJos0+Lpu)rd9YxVMb z{q|J3!hW7)oXb7OYd+RTUGx2>y@&KXZBekLD7MHKhskO1B-JlWTi&yNZ=+|0$Eu$k z%}m^J@+>tyP^pl4lir0r`Z&<3I4dJT5Q855Kx$qdKm#EG;>&`pqBlw}67LtCL#LKr zP^n6%fyx4~<*FiG1V-UfAAC0&yp#+mgZ~~%Q{JqsuAZojX+>h9)otd^YNv~T;V|kw zjnyf4Jm%1wlZ@WA+aFxF>u}bxu>V$;T3G1A0dHd{&m$Qi&%i$XYT9{E^}!V4#yOG@ zxn-#*#kEy@H8v^5;jNVaaasPNc}0*Xu$t$x(A-sHcNlC;aGKT_T^V~)Ry}at+B+@{ zjds-~GH+I3hCelX>Y9z~a!p)de>>iD{Mjp9Ci%J+`P&&nMU~C)1Hcf&Ir}!q*G++s zxLxQS5{1Pd?SfIV21sPH1yE61Ks!KUYfG?yMm_;z`P__1pOuD?$VxJ=s`*pE`x!CslJ5wr>oJ+y}lyT%s!BB_805*;dH&79sLC)5WEie6Y2K2gqSDZl`=kM z0*kfyQf4Jw$@R<^E!^f19mUqN^*m>9sQUf1+|tZH#@W+S=f*-K_N$nf%=FprKVRyI zNz0rU^-RQ=91A7V@|>)4p(%P_cE#O=ljT-lo>=ZH&xX9AZ*opnkX1|7Iq3zH*P5qh zW)$#snXJ%ufpGPsoaB|xGLx<#c9?O}`6n}NPQ^}BrYr$x(!G2%> zr!KVMK$Rp|rN>f;J5Bo(?6!P5qU|vT%3c)Pch0badE&A0SC%xadgP)DLtKPqj?|r8 z?o4ln3%Y;A8_*G&Kvo5>0)u2`c_B+7F1@WH1_DY3yFQvf#;ko&!`5i?`K#NYoc!vw zZuhEF-$IndWj?=Jt~XTX2><-lWSdk0{(V+nEIZ#~zf4?zEI*C=4Br)kB`oTJhvkp! zW~`O_65UI;CT1r-cp*$5nG6r}itnyY&N8{3ZmY-W6;2F3Z*!TeoxgF(pZq>$PRf

|iJ)rNwdGr)EOmirSOj@aI>%6ZNkal&y#akd%Z!h9PH=pX zunSE4#rHx6xEAD*#{#Db`j(nTHb$rq( z`SIDCw`IE4UK1Cdl({%QKiRpYvTI-Ol)2E3n83%6*X4lQTMw!im@x|=F;1LfZo~Bi zz8NanVFA(DOnN3USPvw4gNFtrRu0qgkpyHaDRvGISd351$@kpw`x|c>3KfXn$u&2; z`YH>)`XD!_1eR6A#F*dni;b15*+r!}i>5Wk&f1YAUQr*cES(1_$e9xt2lm;#X>q1N z^~f!^j11l7%FB=Wh5XVRZ?du2qN$s&8EW$xAD=en{wJ`EcLpk)nsQzwbcYS z`Gd1Uxu1V+O&I5g%~#~+ly9P;rmZu+8N?k8GcAjx>r1RXidKDjVTGVLT0Jn;=%&b4 z;Rg2DM0S{X%2U^#WXLMY%5+<^EuvA1%GkN&g*j1>MX_d^W76@)P`%T0883Go2a({ALKF?KFD>=KXUSYGYYJ3Q7Tk1Ni}n_TnL=PkP}eZH%SJ7V22 zNmh?T@7kRtc?vyJuFI61o{T@EJ6rOw6X){5n9c#d;0Ek*S7H2tlnGpED3z&Cv;vSa zF%Afdu{fd=#`T$~KS;8SP>%}g=rPh(qP!r9DH^uY8h5@~kzlghqids+!c%8YwPtRg zpBPMh53UQm?!}(WIA2w`YGpXMVoJCwB|bBDQB<7UXm}4v=IzL^PMtF~nB=H+N83#a z)$d57Y|nX>TZ*nWBxEG|@?BYpj>LtRrdlofq=r;Wd8SR0(sQyC60&pBCCQOlX-REJ z(p#*)-3yQ~%bk~!kQr~dvUqFdWm_=^&YauN$6lVGU&EvSYZy4!f`Oz{;h+$3V9B;B zaIj;o02H~N=!ESD}J8h-5^cocoYSL{%o5NvbyP58+$p9d*FRvk~X$=Ub z2Ipk}2>f&XbGS231p}FPi6cOn+?AjyX?&<~CXM`ez-!(c^n%-K7h6Hs)HHe)q>mS?`Y}S4F6yJZNv{ z{?h5q!P@gT)#`PHs~cwK7U`ouDNLH`&)28CXumgfp)=WFNSN)*w59lQ;%<@eNHWB( z;4HB)EeiZSeHrV6mm!lQtzc&11LE9u=UrX1aMP?*^-M*vpV|PLc`fWelWZH9{J`%M zerZ`{23RdQ^CPZ4aQlQG&?DU6o%IWH$X3#vA(W62?Na2jp^HF=uF6HqmHu?hmG#yG z`BM*eOqoC5?w{kg&zn`-ad1+}gKuTIj(s9YpMF3I3a1?EsGAAop5<3l9GX)2z?+#d zNRfO{{>!0F?;Kpc`rtd84l&!onPdH9{rnpK!?DR@lcgVy>BxTpA1z3+&zo7_acD}> zgKuYgKKfj*|Ma*k`|StwY7TWyn=#*>3&|$?{F!x~hbaXr|C3(-$p^0Nw;n8-a=5c< z{yck1;SuJ5q2+fsZ+e$3HamFo7?&?%+qlfOefbl1lTgOs9qiBK}bP zSV!N%Eo;293od`*1>x8KkdwXXWuZBXda7=zaJ%IXKYCJFdh$1!Mt*y1V_f6{$v@*z z-^sD2{Vr+7ijV`Y20{@JRSICq&Z6Yl^wHK%S;Vm{VXvZ4>(mBX$~nkA!t_dmJi_9%^0c(_i*qJt=OiWP z+?zc)Cnq^6=Q}yLPaeN9>tgwx`_Fsx>V+|#7jI6UQl9K9!>`YmT%K5B8@Tw&8Bxhi z;p54R9^BjCYLgqPTdJqFP30rAztuAL>ayZh?V%MJ5PlVBFJa!g$(8b_tHeopS^;G! zq^Nvl&&D<3;D%|wtQE757RN>x)b!L&^0>U*EtunDoy)$wG(BO`vPBh=)dq0!I}c{Z zr5BW~6n|e?R8(2?)#AbAyu9SWkZxNYBoUo{l-2Ltox2TJG9myfNxy{BQ);oi>mE`510-d+FPV88sw+UkSx zY%s4{&0kks-^g4k>kNfQ2g^GvF1zW%#X%hGK+&Mk@9w`utges@Qk28R^sz9avHSDn zlE#U9_&CUpkd#0$3$77pXRdG+A+HS>aAHI;VM6I}830cLF{KlU3}L@sKJW|c1&ytj zU*5WAa%a!}Bgc*%x$P%xMQ?8({;}wDNC>_uHRX~yE3SI}s!5SHlCOAu6Q%288_%T< z&>TfyjLy=t@Bnotz!;F60oD&mrd&BL(<{=?pc4Rg1Y{n)uH-wn&Xhk~a_cKcrp_6C zWOUBdr>}2qwLce}yWFzd9q)&}>f^=s;G|;tJJRyFf%;XWqpRu%;_CAqJSUoyvllx1 zUH}AA53Fm5s9PM$y8v{hG1t?dc1>}O1U%O@ z`h1N(y~$h=A4o6sT(IawV+E^xz*Cty$FjQi(2bJMnqZGHvYerTc|{fdQL{pBABPLm z`V_+@>((5s?YLt_#m^EG@^ayI-(yx(4*81yDu%FC@$8S$Z%8YhNJ zp`~;R4$V~dPG`0O5dH>X04mvw4)m}Lj1BP$Kwj7dAV=`I{a_A|5QCH~2C4)D)EmBn z%7evN71PkL^|n5#skpJSF|bBy8&r!3Er2im7X|g ziAS7ZSqK+sje&V{XU$zuyigcCSx8FM!s`x`p)9I0v}Q}AI3qPPGp#{t+_ENA8C7O5 zjotZ!DaJTU5QW~gK%lp&GlZSPC@W}*Gfw$|adKLL$5Z5+O6vvj-PCU_fxmO?zyV75 z8XTSrd1O{!wPc}r1WXntL63%)Wq{-1io(Zc7E&ro4K!}h1ZXDk*sy~@e<2g~7_2r) z&t@3~bKV^nidnhyXJs;$Icr|NU)p>}78;vrOt7qdLz;_UBRLp!(2j`r}o`(yqxwEOv*>ejs@{S*0p2Pb~@x^Hu zH48pp!0Qd9rig1UN>=(tG|jw4tV&5sOQ{l{&o>HVe&NWX@>##-waMw}$+i6U!zBT$ z;p9594|3nhbxNlnDfbVuW+^$nBsR7rJvrmvM-~#e;M_O{Jh?vtuZ+tb#p{w`2gr}T zXh63STn#UnT$x!C^9ork6B>4Sb`wJ$FeC|?tPIxED7q{QNAi%vD0A>E16flmB8hfr zD)>WLegPte{;ct9Sthtuo*0*+=pExF8yjV$%Sxs;Xd{cvY}QL@?|@MdZGj5yrymyo z4MgM=JJ>Q;H1Q7DE||B(Fg6u#apjN2cE@k|*avLHC9e=}a3AMa0Ho1%B?H(n@7TO|ErL3%|m{Y~T!xA+4+ zd+Sec%BAoA?QOR6O*Z|fW5?fOFvE6B<7e}k!z2V7^!(6^>}U6#c<2wee$F>M%O1bw zGKiT=^{mMt6|@=I>tls>ga$z-7bssm@rlIo6pf7EF({ zRm^N|<~R0ScU@2Sb=S%BkJ_V;QFaO0p(3RSeUEBa?L0yGMiV67R^ZeRI|1d44$B%a zmPiy9Ed-#WCc*z)pbEB)=qu0q7VWFFq!Yh9=3JS2QB*&zxNv5X&uN%nJ9e~oKC}iF zgd{^CrXVTDpOaJ&6W|ZIZ0l$ijbG2|1)J*>^ng!P(|ZxKSvVh`+Ko?^A4{7ubH$vT zx{i*z;#KSC2E`PM*MxswO9~S)?G-o8>UCnTP+^1?NR=2@%})+=u1CQyPX$d<1Kq+A z%vs`_k3#@g0Dx=aWuOH7=&5nj+~KJI;aOdBkq8SjGNqmgjW4?p6wyWJG*;+~6Y_I& zbMq65^%add(X*g29bUBK`#W}gUrd`QN+07Gd(jaSu_U1x;E<0H zEa(9dY{_VMYlWETaGOkSN1|BK+C932Po=_l$iJ;7aH9*0Mwu}Vx-iR`*m(q*>n6aY z3Z+oO14HrD=-2vh2YOHi5-^!cm8Gr>YIa=PT`1%{fNk6!M@R#{fA#FbPKml)6~P20 z1`0*f8q`8xKe-Wgv%<12JnQQnyXU{?Qb5p`3iPpcN(X5cJ;>$v=-S#Z(JNZ_zB#(& zYdy@KRJwO;-RX|}^mOn3?R4D907142$qzqz zTB}j9g!`i#Uv|z~v}l&|IamZg&|n@y+5C0C-@AF;Dly%K3Yn4d|@i} zw0S@>)vg&21d}bg6rRfie$4_Ve@V5ydj;9v-77!*8A=y>_n#4K++X|ocGk1~^SiVL z>vbec`N;R6hI!SMe`d3l>?fwb{MAjWtflFCm> zqdjdEvu9U88A1W&6Gxw%8{gnN#=VHsa?*bB4?V>_AimbaQ4Kn53gAksICqyTN5su zJD1&}$mz((kWj;@r>z00&nlWd6UqA4QPPQ1{onQD=~bGSDuBTM6;91O2d7F3(W2s9 zLYn8|T-Uz|(uGlC$j(HT1b)7sgrKj;IXEZj>WT+fM&LD1J_OR4Ls*l*q z(0*St?x?Cn66Xlq2=RBXfAIcmuf0F3!jl#b&CDrGE$O=Fk~`|^*v=7bS7u(Zditi- zwW-ZL2jmZbwQJY=ENTCiKfZAN(wlb|t*M++%RhlqRfYV#{G9wl`NvUtlN<7qoXx9x zBKzeX35|WLYW%Zc^=lYDzVEu5<-IgK1gx>U`KST(A29 z7zKa>5}U&3kmea3T`C7PP8?q(!vL&C%aPcrM^Mg1kzT=ZU_koGHY{==3Tvr$@}meu z(76{7H1?;&I71DJEHUJbY5U7kF&c?($w^%6EDR3)04!Cc>mjVaVxT%7K77Y zh?pqBk>{-y%(hC8Bnm!1{Hf0!vV!feb#LkwVyxaMx5<@y*LL}%dvho98^~G} zG!Mgm12%DxTp%-y23ElgP>F!e<8u@r#M`blW%*7XNs4jC{))30i@_o{144R^Rr8*2 z&`0p*=TzY~ufG2^DI z;q(2Q)BlV7uRm}~M}+kHr>C!dWnn&ErK*Cu zE0x>r%5_Y=!9E*3GS~n^U_5eSLiybZxnwPulF6?oQ?HO%i>G#=8S&=)RljeYeqj9x z@a&1IUpOl(sV3iSmhVvVt^C?Gs8pfKH-G)@yI)IBZS@Byro?W5#*eMGzbgOS`0-~wIj{%qH??L=S2NXR ztHxf1SHsRpw0yA>v zFz!3P#c0_0114N`D=T_$``GdAPi)`*1iPhsjS;ks*I=%!9eIAkj-xhnU5(igD{-f> zshbOzynpf4|Gb7RU)uk6%gU84Z}%;`lj%N}&tEE7O~uhZ@RAp>z+(@yf;-KIp8I}x z!DI5P^955(tf|OqvWk_zW+iuA#iVDpn#>zsli$mvI=7$FZGCgP-e?YHo6X_93;UmF zwmN>eWA&Yr&E}k-$*7<8?giVAU#2(g{Ie=s13AS}aA?3%B=_Db)9(y}j{!}bz<8*~ zJ?g%B6!NI+Chq$f<~O#PjBK3i&fUL_9~G&2j~%7mH(fB+3jam%K`7{~!1cNu7L~(+ zy=h;dw&bj>vBtMm9KnNrBUkX)?+a+$*pYEY0AHsXIp-+-6y9(hF$h$CqJVmdLqK&a zaz)CwldWB7-owEOwgIH1fMZBlS);Sa6aa|k1qDt}&g~oVTYJssk3Tk>_X4fr9*@9T z&wOZNx4r$Zl4;pQ*Tg=hzCoX2Y{;`c@qPYdySUmWO6x80W2*PAyVU04t~7VT^GVy+ zhnU@kPx*$lr}N4$i@LL5fcjI#@d_-FBkZq{^@S`jHYmR$t@{QVp0)EJjtpP>CVHKC zwK@aG`T{8vN%%r}=W%B$ z(_Hb|gBcG?AUFkN5Y~VkE(GrtKO*q7;wN+fJOUo29}*gAigXo;osss59xv!U`MCtT z0Y-7tL3UXoH<G9z{;ZqrR6sUVoNd1cHI&I+7p&q;$?!N3uAwtrmOGDX%no4MwBE zYcw26x2D_tR;zm3LQw{z$I14jT^sfninHcc`?<&9(%S_|Fgz!CeQEma<*PGWbp4^j|Y{)20DOhSxob0p(vRs8Wo6THMV&gai%S?{*q({Z?zGt@82bgi}jd`<0OI%h}?mLwImJ5vIN5RxqA_FrH zs@2572~8G=#8x69z5(NV=>~rmtP)1KN?i~;E|k*J)1YM>DD}XM1K28x)-O3(Ze>l-?J=9$=Cy(7F3C?I= zOiomcQC#KDxT_pC^QMT7w4}n6kv>CmQNZ``#3MQW;Ul8Q=rkAw7UD+1DS2AAFt5=8 zA(0!o*B50lJByg6e69S~^~sLO zw|{F_PIhXxNfa*p$t_zOL`Qkrd0#$!O=hMi9nQo;ugPP(9?98#=>=I?S8aao(^>ZT zhF`y0oHk=sMkaa7nFW=1eN=iTkVoP4?m&{jrHbrYIKMKwrruJ`EsJt?C59YnzC*C! zQE}jx$A82GV{%*XJUltl`DgiwiySp_^I88y9q~t86c=iP4J! zOUleNTViVGPR`iymr8w3ZGBv<)8vY4j&06#i|cM)Q)97u{jKbLX4*CPHTjQ2sg`&c zEnW%xe1QwPR>j9#8~m4DwLLeN$2j6+6B4ZEl*vZl{wrR(WvDeV%`t1Tf8LPXfbq*b zW!1kU{S_xw#h^f!DHf-&ED-(&wMYUV2B-?j z6~eSPWM;Y7&#Oer#)Pmg3sa{oS+olnaA``?^re-%BGFb@dQ7QI$e5a!8S92~PqrcW z%%9*w@2k%r?vR+n>=#QrVX2g@V=IT<{4WbG{r+p;zjT3mV*@q6gZa~+$nVMWBaO)= z(wr-w`rxy_AAe~0qngDl_DX%?Ehd@uOH~qD* zwHg;Z@OSyv7j9++e|`O1ksR-mTZaNy$`}2WEw7hQ^6Gt0{p{86?_I%@+xEVSsR4Ns z&@>7TC3|*7(9tHD?tbWIUj@DF`(gVBa;IdW66dL8xw72&(=`%gnh zzCs1%*%DQD!bmw$!sq|PoyLagim<*d!1{JI(VBo(P%#kG@j!@A$c(}>yt)?AcAAc2 z@J=zY5+y+c4O{4OQ9sO*D%dbC07Zs_2{OW>#H3(>#ID;VMJbP904q|7Nu-?yyrbMn~K9OnSo4Fk@c z)L8C(P5yJcZF;~~_JlV8LqFap?nsI^<-%FC;u!KJ(Ug!T#wSog@j;JP4s(1%Im~fR zISKJ%T7pTGUs8NphLdtl@$8n=Zd<7rjaq-iUuw=|`8UZgd>Wmb;xa~$zD2TtZ;eJ9 zT`9TIpR$UZaXdqZN7Igq5s^!a3Kj~lCj;(!JkeM~M1#cqv_}Ts%8;Hh zH12(EWcaYY~)7fzL!mxZ`r)XYE+ zt0PLtbgAx?I7Pm7M1JY^N97k^h`WTX8fIm;KgP;mi1REbqDk8un00no0QaC}BysLa zx3F|qR+-lT;-vs4*|IY6gBc`0&i*HwK019KPci|*!?%>)e^1Fn^I|@ak*BfZi{;nY zyPtP_#j9P|C%d zIzDS(x!~yqYn5Ecf2Jh9=^Lm*>{(AS!%FC^F4wi_dSGSZB6y*CRQIgzW!*cvk942n z8zGA2hoCFA71%OBmJ$;}uWT`($E@x(gc!ZDg-~`0;6^B1i7*L+hrI!1y{AYTqa2d@@6zTCo1Q!H`o@u428IC!p?{x+;^E?Y0l5?UBS4;X7dxD;~Fnwu*TU^wrhboN7w;8N~lBoLGfs-|Qr^6m6 z2+l;l%xXx>v088$i^-UZMLaqhS4nhP%WM4Bgv6RlriFS|_PQ@RG{wp~{yIG%EZUUo zugVZZ>+5|x4?i${#-&@97wLlyF}@Rnc9YvxVpFd7iqUC_a7yKjN)&H{44Es<7~^)Q zj`cVli3wAjPDi+ket?a>MUOv_72z=D&!M?0i14E< znc=Akr;1+YFkp|BV2duyO}yg#tJ$WZ$8Pq0S2##myV-&$Vlc3FA#2Kmc5Q-#L0 z5dz+Ga;S1VUEFbVF#@!6v5 zh!ce$wCeIJWPazJe&>?M~T7=80Km%%z<$p*1`g0SAVL7MV*HckBHJs zx(s}m8rCDeNedfv-)7sjuu&Jww`gIL&drZ#VT&%8Kcj{1y2*k7-b6p-jkmzhX%}o^ zbi&7&51O0JIJbx(G##NnXf$m>H~1emZ8;TqtN9^B958d9Djx*_BnRC2c=rLL}j zV9Q`vN9VAwzIkKBH@&&9ZHq5ZToNwy)%5iElvhK(!N^c#aATwm85+=@KD43+_=!sE z2Spn}bbsG)&8Emue=i;uBBlfKE3@Y{^Evd%Nyq}q^SR(#-++v4WW;ybv|7X-&TfSF~Z~hqFWjn z9O~-t^92jb3X7GG{Lcz+#D_%iDb#h;r4bw)Q78J)4gJcsQ+e}ELq&O7k#4+U?Z~0# zRP)d?btjcIh&tMkzE|nCZp1Ysmg2jxAdDb1UP>Qw(Nil@5796-_C%V8A{eLk$e?ey z-#6SD@tqmkp-Ag6eRz96UgAwV2Fo`**xVNBZ656QH4hIDcD0NsN&5PSyILbd+CUGY z76PVohI(+=cY3V92^Mu{U`eNd>@YyM5+r&NdQSb`=CjHyRK85tIXpZ7y&h^_vkFUv zUH$(}2}KwwwO9I-(JDgbZz{8>2Orrt6v2Ci#-ZE4`p2Kc8wN^9z$xJ#-EN#QU9GzY zwu1KRu406);cgXD1+m@36aLx@U1YH&13UfBU`{0vPIbGEn!R9GPWFkVOFwLY&BcM z*0Lt-|C(6~@Y!cN8*624EW+AZ2kT^AY(47+^Q{;9l>KagZGa7wAvO$?up8MXcq8A! zwzBiEF}?ueliS!RyNF%PwzEs%c5o-#1xb?2pt`z;UCypxSF)?v)$AI!mtD*DvHk1- z`xcC{UC(Y{H^N8IL0ITM%#N^|*|*s(>{fOgyPe$uPgi%byV*VLUUnb*4!fUymp#B9 zWDl{2+4tBZ>{0d@+^s&ro@C!=PqC-j57<#y<9wDq$9~9u#GYp_uou~n*-Pvv@Id`C zdxgCUBf39hud|=CH`tr(E%r8hhy8-R%id$ZWWQqXvtP4g>;rb3eaJpyzkxN?-@$Xy z$LtU6kL*wE6ZR?ljD61j%)VfMVSix4=7)jl*ytck(D6&0XBhW4MQVc`T3P@jQVi@+1y^3#>Y)@-&{#GdL_q z@GPFqb9gS#c`5L~KH}Q46nYZv( z-o_)m9ZCR% zG2hNF;XC+FzKdVVFXOxU9)3B$f?vt6;#WgcbuYh`@8kRV0sbw19lsuQ|Bd`6evlvH zhxrkHGygWfh2P3=F#jHZgg?q3=tm{3-r4{{cVBpW)B)=lBo#kNETa1^y!cF@K5wg#VPk%wOTJ^4Iv!`0M=V{0;sl ze~Z7(-{HUD@ACKfFZr+d`~27Z82^AD=O6Nq_;2`c`S1Ae`N#YZ{Ez%k{1g5u|BQdm z|IEMOf8l@Sf8&4W|KR`RU-GZ`34W48H>a)ewVPskSv z1n}a7VxdF`2&F<07AV6)nNTiN2$jMlVX`nqs1l|M)k2L>E7S?~!Ze{lm@do^W(u=} z*}@!Qt}suSFEk1ZgoVN)VX?48SSlMn~gl3^dXcgLoh|n%{ z2%SQguwLjEdW2q~Pv{p0gbl)=FeD5MBf>^uldxIXB5W1T6V4YdfD*|zVN|$CxLDXO zTq5icb_%a^VW$O5rNuYT+7TuW+rfPuMRU5WXc`CtNSwAlxY2BpehD z35SIv!p*|Bg2=@!$6&}#-lRA2uhlZryk)f_u z{ZOQNu(i_|>Dw6T=^uzlop>G=hlZO6&2(vs^bQPf5l29^i0xfHy~g3rCQu+95kA~$ zpm5jFFz@fy4@P?XH%1Iw`}=#Fy84XDy?8^<5?BLfsCb@jFMZ?+8dG;e8Y?HX+DiJ;Db zNb|4(OEsvfP9rr%DX^!%wOefOY3?xNW7-Bf`}-n8=8gS5BfXI(w8x?asREN09vRSY z7;Notix^ta9k>g_%^f0sLt;yRf47k?w8BdRgI#^Y`qt*&$Y8Tb%PZdZwCTHso3RjD zh9jGYn>r&z1)7!crmnW(PBY$h^fmQF+J~)b5KHE8WYD5MD3qa14X+;=8t!V}BGR{5 zy87CXPR*xW!>{q|sHvXV|f@z>l%BMx zL8TQ&H9Rt4Rs#w|C|yKwgysx&ZH+XwkM#6dweV1Hb5D;mvbnXVxwrXrv&4?B_F)l( zV>{-^V8j^N0zkuPm?+TN(?1lkqQCmO`Z|=hOX$zOh_SV~C(_r}Jg6VUR-wPw(AwYI zi}BX?Hh1(zhRx&sH8OCzAE|u+_u);E$gmBcJ}^Ku?5h8&g&CfB0W8p zR_fMvbnI}%+=*dqQlVQ3(tI~4p^*WTa;FZ7Qh~GS3`9ns6{8g3I4f#o;OtCP3~+dV zOGLkE5Ocm$8g3ry9?}D&qR&h%gI$sKR%~L-1i9)wkvazZM+Sga`nn|mS5 z$Z!*VDdq_UF-g?`b*n`UDt(1{1I*qxBo6ft0@QF(vKf>RCeQfFMj(PULWMOE?d}J_ zbO8R_uq3tgV~i~tI8#dNIB3%Y;rL;|>o9hC14cmlAjZBK7!f$n4BXxcq&d>lVgz2m zICn(sN*625pry;IKB|yvpry2_x6OjQ!=3#@==_LrXrybHM$AY+MK$VMu~0=KSYi5s zm1(6^mJ|AfmXWR=%$5!#G7r$YV`}b2?ah6y5q)o@t-EX3(oRi6E$bs_dIal0r_%3Y zdvSXts;z$n1J#6f;!2$veO8PLe`iGj{?2-)Q8Ay%Z&8CvMxz=gjH;ARNeyk0p>8Z2 z`kv+ix+#D%Z0+rDq3=>=qg8`<1>VdXM*4@ z*#IiVra)PRWx~p085+Ti#PsbN09cQ-s39aPFSQPgY~4zI*A;1vU;(89iOR8`2@;{B zAL{Ii^t9Q>7aFxSQM5!g0lfl-M!JSN(W8Svb`e^5Hn+9`L20YDf&ml&IV(m5kh7u) zK~2o0AgIpa-ky-yIy6+O2W$dmnpLby9jRc^A*_xrzrj<OOZWXSXNDEchhc(j6pqt1Gw_b9G3NSBax3s%#S zmWaBvX%FIN46}(YO7!V8)R~4hzzv9MpmY#`n|t-`plQ1Yh32+CvAv|M z#NN_1+ycZ7Y^)9gFk#Q2Wmvf>QI4K|RCI=zvQ2m%8JPH%;L17Stvbawfz0jSG-SXu z9qjLFlQ1zxHlvwcEwr`_b#EEKqSik$IJ98|ivq|2fJ(o<9cZ~HBGQEx@ZqijVQ7Sg zHXJt4=B8_7L}(f5;2XQ8O_8paerz22@P`Ct0lV_;m<}rDrnq2?`T^r>aF0rY)2pz( ztsnG&vi;CHzpUK45u`Y%Ql(8uRbFgUS2iW0sh^?(bSb3^ja7MwE@8Tq(WRU&6^4<% zu7;ADV)S)$31TWJQ$;B~Ql<*ZR6&_4C{qPxs;Cf~g2hUX778Ipuo%?@i-T%uwJ0c9 zj7-5|WC|7|Q?Qsal@!y3-j-0N63SG9YJw%GCRjo_N+?GOI4p?)>g>sZ?&8yc6tS?auu2)h})>5rX_)S#0r9Q0P zsqi3`5u{p!RBMoG4Jt1vYf#HNjVcaN#UUy-M43XADMXnfL=X`ohzJoxgo-PqjS=8d1PLTUR91*UB19k&B9I6XNQ4L^ zLIe__5~?IXl>{gU0Yiv@Aw<9sB47v+FoXygLIeyU0)`L)Lx_MOM8FUtU#BTP9k=(tdha0PlBIdGvI7<7av2Mv0N z20es9$AxmxpoeJCLp10i8uSnidWZ%+M1vlpK@ZWOhiK44H0U83^biethz31GgC3$m z4`I-8p&Wz>LWBuIzy$4qvWPN20_EzA3Q$d98u~B|eOSW>fpT>^1*pC-0YI1lAWSGB zOt2KD@ekAZhiUx7H2z^4|1gbzn8rU$;~%E+57YREY5c=9{$U#bFpYnh#y?EsAExmS z)A)x2>a+~hXf3Q!=X{_hptiiGRJ*GaE>NR2wML!!ftoVyeYtiYFRw;>uGQ{!+Pz-8 zPgC!;TD`Sey|r4swOYNkTD`Sey|r4swOYNkTD`Sey|r4swOYNkTD`Sey|r4s8qy5Z zY4z4=_10?v$(?k d0mRO}xo^G_%I z2O^L=ATW7lM&^H<^*^2eAN0eSJq3(x4DA1L)&F4euaO6sK5joV1E+r+DAqq4sQ>Wu z0|aVj?P25hA?l{GgpFa`oP%>HM?@(=7t5y$lA|Hyyb+&}%lcF7Py zVOq>>oZbI%cmJ;c1Ox&!PmnY&6cmq2?4Nt?RBbj#@*S#u% z($dm;AKJG3Yv)w@yrS19dscW!&dp@T$utcaiktwRu?l%Fgn7##v*Q%&IaI$|O!P}5 zE!tXI-Ss#N&%~+2xwep6)=D=@bER^nrNZX=A{Jq3H3E=sm}xcLG|pUA-88}8wRPyv zPnoSTxscjcm{McuVx_s+*=h#*Xv3UB1T}&E{uxPi!CD1QZy{>6F_-GvT;_v+@h3%S z3~p6JKLUMaO+O0%W$iTHs4{|UN^?L;ts#@G+64bnV>gujTO1A$SfkJKhUN{&{#iBu zbrz-NBAI4CWjjIN*&fwVu4RubbB`IvgcJ!WV;{$}bpWy2K1lw(2Xe|eWcN9U#V^J= z0v&sgD$Y5Kh^J4utKJ8w`)YkScnEwZDG=2~oYvdtqau)|6HAhwqW$r>MKydMdi-xf z|IPEi=Mls`ySoS4Uu8Lk>GP(?uENKw#l^+NO;vrl>caNS*3!n4J~PMG6%1?`Lo`8D zP!I`IikK!Gm+D~0Tx5dT2;-4lEPJvvNz@Roxn4bK2&F(-3ukKoTzvdLw9r!ZsOd)GFakMtPqh`I$P>j#E63N~^t! z8t)N`OP-Ey8cNVPKsgcS6B*&w9LA&4rPERq64J$9K^)cnN)EQxZgj#nJKXDP(AwtHNPvj4d!y|3WE|h>aXutjp#eR1Va1(D~!1cD@#G$XK@| z8ScdxW>*_WC0A}fCWQ_Gk+039h^tbyU`-AaRQXE3C@|xuc#bIvB-u`7jVA9qExYjR z=L}OyA;5`@PuJUM+d|rr+H3CQORerU?U9!{Bot;XUqe}i%R=!=DIcZf5IBHt${UX7 z$u&nXerDE=@3Wd|0@Hz$q*rpVDJ+Wsi!-OJ!$UKaeXQAz3oz@z3unQS7l<)x)linz zAH493JdOfC{BNrjX7CVfZBLDtgiqO>03bm9Y%opN;dZI*d!CgC7s1So zx$n!T6vhxG4g7BozT_i+(EXciSh1 z*WKx5dLayUw$Hadz3+<5D}%BZCKe`cE4yNK&2O zC_2B@YGbYTJ=@>6O14_I7;gA)sBiMPW}zMqr`$mljy|@#K)X4 zywlOE7bt(D_<9aY(j=81rYh}wpQBZ2>BFX$_0y{XD7Q1jV-(PFSPU`4DYgBSjuXGW zB&TypZ4-Ia;ZDv{*YiZ4BK%bLvA^d#3^`kw)^(lO=^V#PS}I{JY8vD2<6?gDUgByH zoos%w5n5SA70~&_wmZ}=sE_CH+$5D%I~M^tEkJ<ZQI7BsvH)rso$j0Tno$9{71< z@V}SCAhApjLIvlX0Pxk%zZqkf%M1LSF2n#NI}?5xPC=! zobSQlu20xcw~DY&-wOel-n@?qJ&by)A02bP=f7VUb$6h9A&zxij{$poi1x&>usk&q z)o~Zd^jeapPeoI1Jmh>Rc-6+ws~2@GiSZz{hBgw^soz#me0J4++L57M=6^+@00R~q za2yth-1NjYw%qz!q2gOQL3>x?qI6L_n5iR9jUE#0ppndAXQSaxXgAAg+?Y2ZVSq`= z9KUjbab4|QH-zBoMtL>BP)ja&OJ4O?2yYF#*>9aH4X@u0(otsJ5@}kXX@!4~Fy4Wh zDN>w`7i{CSlIi9?H2YDBB_h~K`_cJqA-9`a@G}pVc;w6b)PGdJz9MqO5mS;`wb~72i`W#}dhh!aglheCet+(79kLz+P{)7XRuyhb{YxtDFZ#1N?6e^# zh*vvtce7F3I~yiY){1)rPtn#OV%8zxe}b9$IU5=66PVl01yCBSd^dXUKhK1G0R|IV zcvk_Ac>q2IN6uR13{;c-_cRbEqYJTB_{Fr4IijaDP_s&jXx0$`sG}^H^o5 zz-Q`#Xift$p?Wb<=fxuzXVyNKg#>QnXBe)ocjuyk{hgW=c?V zRs~?RkX9n-Kuh2ogdASyGctZ-79U~PP*d!u<<~CRR3B7LYtxF8T{?!Nye0d%0n1-I zI4RC68nKpBKg^rfqiJ-i4HXbQx4>=dyxjLao>lA4TIu938pOX`7jX~@WPeN@jr_P# z^lTrnNnS5FJgePCzFZ$yZEE2?4_z#R){UKOsw3qqM;Tb8H@A2_3MP!1!fsit%Vn(B za_2OfhiiPV49y_-YDhUHAURUHq=tlP%rx5l^&mD@G^8z-Y=Z-tIt3L`u!>WVQxz;^ z&9LZUjm7~;VIecrymMSz9sAiMQWB|u=tF>$?NZ<_+~80;Rt&KJZ1cdqEdhb%EWus! zdJaxE0R*U{g1~6{#~l&e3R1mY+6nb{2=-5{7mcd@paR4GV(zxv{CelE`s$Ei#`XXd z)c6s?t)+nM8@GOItmYqze$tkR-@pNBhUdU3!dN9ILMYJOj4^aUvZMFQFK=P@cL1r6 z@U=sJ<=N(Bq`QQC3-wJHuee;+1OIT=^WJf^vichJbLK-(8A>DTum-ya`_|C7PvY^V z-X#zAoguBv{!+QTW6rx3-!1S_UiFDt_}ti$D*F?fI@AHKaETKn;7R7C5HXlh^h{!o zsrxdvVOX}7A?4Tr{6o+@q_3pMQZTg)Ea1)Q8|O#l$}N5<%GqV~ZE>N)M!~x7JUKA5 z9t(l39F)9Tiu!T`O`2ZQdW$v?+Qe4m558`xNHnv~bX8j4G6ay*PnvTLCWgm@K+IP1 z^SI~_P^NN)(Qy;gv`8wrCM0r zdu^7~mAS%W$G8dDhB^z`1T=lN-^sNz%Wcwkz4|)K)IQg@u1iEb91XhJ5xEwYDfvM6 zkLOfT>Goml>)dkK7RrcGd}4t$1w4`Vi@x?8r-Xz-T@erhoTTvYj;62sm##V72KMKy z7jCvo37#eEob8=(e^%k-w*#CwiWcoBL~yaY-mZ;3#7$hwrE0n&Z&_iqW9;qZ8h>;~ zOjAz(rmb4$^7bp}HHOIkg&1oXJz&O9f5ETRc`KDiwH!c>87$jXR}9R=#e{N-{typMNosUZX^8aPu^3Zb=_A_|$kJ2>CKI25a~u?@$|xUD0E z3rV0H2Dkhmtcz}Bqr1R;PGC&s1*q_(cw=w!eh^JIxmYy6ip|~R@0t~6h9kSKF8k`r z-rmZ)soKb2jgHIODnmo-1=6%KLu=Va>yJSJgYnC@P2eB{+<2U~g=4b-hjNb|x!65z z5!Z3c@32#?=kl#m5f8>l8a@f=Wi6&X>j+N1+ruaQG?CtDV~PXb>@WWf2Q($z>z7U+ zMBlz(Z=2s-T8$d;Ue6M3l3xRuVhSxm5s{3BKIpgmi-?-oisza zkmgcLp`Vnlx?L~qe?(H=WYV)H)PPR{pA7{5h`m_l^X{d`q$MOR49YduCf{c>9PI^G zU)!twAe$_^TtGrD{jAw%Wfw1k)5`DgJXWP`-7XNQ20MryLW6t0#t42k2 z0hnOio5PA`bpihQ)A=v&;|;YU&l?F@fC_Npa}OspB^Vr!zTb{NLwi)Hy`}19z@fr? zU3Jh7xd)*wL=El;v+()ck_u(iI_w^muPd_R6?OAcCyxtX2(vAWE-tjbs3u$PJ&jfGp*j;7`8P+@e0HF88@NU#6t?jH*EMz0L$My9PHiB zRVebeoyHC8Wl&pm$IT(G**{Utw9Bh)HAE_^TCH*ta-8|<-fxJ&aV4hWUSV75)+$)r zdIu%X^B9`Hh`wv*IW6Ho^#zL)v08Di99QNKyQ4Ex^x@3G;Cg6K(hX}D-{D_(j!D%6g}xd;qA)E>mv@<*$ZX$rUpcaK+~5kxF2pAac=%N>3B`6+-EO>fzLHkzfcD>r`}fy+!N&}- zUH9`HP&unio@pV+24r=ON7xE68a7?3>8!kAzHyK4Lb=YbvQ+HBn+||W{Eg?GVcYQ!l ztSPK!t!;Un>i4P0$ET?I9pdIh^EU0+RcYthPqRm& zPB}LVBWJC5;`qzHr{VN*QZ9;5?qvVIY@^viP)2>OQxb+mdkWDzLq#%PR5z67y??M+ zSjDiw%%q&n3QENt>Lwj~Ps8*c{0xvFm@csrU=eyiH}Cpb=6h0&O92O%dTc0WV%R`6~bS z;QT3eZTz7V7f#K|S{Kj{_}e_u;Joz^)V0uvH!H@e3WnVKG*Y;R5RQx=UKb=?4!qeb z=_DKa-vz<$?}ZxrbHii^hC> zLN`k`gS9^kaeye-(%)p=Q!i(kFa)B=q#!VbG7-calS3zKZMl8Kg`I^HD#h_iN?($! z>66rNVaPiYq<@#JX$rYXkw1$h7(yVDzNky$V^i%H!;0ZYI+ZXhW#@zfK7#lXMnh2Y z^3kcr0*7W=&Ss!urbd>4di6HWv0K><1f+uu%DQIF7AJcpusQzmE==J_e z-fwZbee~KU31mUe(k?U$jD<>ni>OKvN0|-t=m-(#j;6O&G~<{8=r6^gv3$D&K-xY8 z-A~Ae;#6^CAZ`&J{>W;EQAqsZ`r@~1+yiz(zXcIDK*GBO!0caA&f@eEcUcd0SLAp% ziK^4%9xfj7AK-j%&m}#)l$Krz(B|KAu~u{JsH3mYsRF-@7#pkE z;OJGjbEEV%#{Qt8>G*G(Vfh9<)rQPk1eaSAEZCJ)F~PoR(h+g}tl-VX($ zYO0R@KF7}dH^^v=pHnQ9YSNiTJWm+f!v@BwqQ$Y$ei`a_1{_|I-ss`3Ry;b`bNIE$Rnb+z+c*ky}aexvI*zKtJjccvTTZIqk!Rw!$+NgN&BT7q-IM^YM>9lAFF3qsj z{Ui)Y_-SRrj^=N_HhESJD-ltQtL~Y=Od(%jfPRpq8P9`F;O6pc)s_oF{z{=|n6er5 z!u-{h;{bvm_L%5agg+m)4aA0YAb@K`Qv~YLWx~sGmt6*V!|?F z%7PdL2(eqp+SqbvQ;>6xmHK-4tnG6El;(blqDJ+}Q2=*wlRYGBr%&K>9+K^{Aa z9GQ#O*$%Ki>UYmph71RnuwA?#!9vfTIuG|p%N;AWWwB5C+IE2*>xGPGkT?t@?Dvhd zt%Wpg_71*1_@0kBba@@FZN^TvjpVY+rkq1h2gtm zJPXCjvMjf7K+`s#pH$0kv}>*SPOV2H-e;NChSuuNAtqhRtEe-DVqBG7vr*enVEmVd zAv-&^RqMyAthD#nN)(w!Yp^GI_VB1e$~skiRlP3K6DJObNVTJM{r0E+{x$grTNFbh z_uBsc88W7$jtTI-pPGD>}Uj((F_m&nMmhI4lhx z;SZUOC;SP$w;q=0ux8Ozq190iFGeAoD%-HBSfOO9W&PK~Tem;KeV~3gA0dW>Pv6I1 zYNn)N-+Qq-I+AJB!=V9uxeoR-tL7t;-ZGy%%>9l;tMtQJm7z}(vh)}z8v;!QqkT%c z`Pr;kXU{<7gZGe(<&Zjp1|1&SGt0&iI1JiBIdPElDo}oD(oS=FPy1_j?dy9UkEB(@ z9bfbpt~myqXy`*o?NPpA2S*3Iq3$t0QzT^=d^GlO7pmjpsXe^IwU{J-P?mtkdD4jT zbfg}pfa66t&>R@5s6DBCTElqWD~=VAB5A$Y$g3nSX4Ol}s9ozugn47sFrns|d)D7D8mh1^h>F8%3W z2a5TI9W)%RgrtE1+L(i!DwwV@xZ@VytBSnvu3ay?9Y$%KBd@=bFp#4X>B};lBl^>;B5%>LW8TFDeNLsW?@@;#fCxMm!*pX9lfHt)uuajgiV$d zT#h**{Ipyhjltvp#_fvwZ6(9T&)Rb;VTsa~=gJDe$;q~EJzFO3Apn2EXrlA~F^1;i;H_jG>WmV*SvFHky zf3twjY=>%B`6@dr95pk37;>@x#zI%UP>yJ?6%2RCAY-s(SLIof9c#sG+>FEDjD6gU zD+r3UOyZKt5Q%XW6oZUQHH@|K!@vgu>y(j~#NpH5x9l+GPE6*P91EzHBE}krNo7~5 zb|0;8aj<>dJDCakJW=LK#vk^V^`8D9UP$2lLk&K$X+Ag;(w#ZeR7?dFGzJkJMi;Oc zoicM8#T@0|)<b|u?YyW0!6Ew$>Y~pX2XU`J zDYoQ`d*fm7~YwxoZtL1W7$X*5n>+fi8oUqvJri& z6nm&FFcO9AAX=7k9_;yussklMDtxu6t5OkjY3tvL7s1PUqGstoYssPT_ItLMXX))Z zJ03DK>_IPJgIKX7x8Rw<+?!kIc9MEA5hw)}5-iqzE8VFOr%mr5VC50inCtJ#tAQL} z1%tXg16rH5cZ?pPJcaYO6~hh*gGh%x5*s)RLDozXG<$(Q=kn_7fh78e%R|8C^X%4F zm9*vMr4{4*^7ibRo5iK-C*+ed7*^J_i&Im+>V~x=%ybD)(9wLptciZLN_)YB5O^v@ z{$Ja{Qtd!!GiH0^v6Ue$NG8nsD)~)N*JjWChU+1?Ny%198}eb+iG#cLFl;OopkF>K zIJg1zG{!THV!AKNdnO5aW zt-47+g@#B%3Z{it%Q@M`87PUsQr8-l>(V z7?crSbh@OEA$m#}=67-ZTp889W3?AU=1tjMdw;Ne(Izfm0-RQ+6jH&8gwGA_(Q}sf z2cqudmvKpmxhIPXLGEOm41F$3^s>mhI5{xLs3uHjw&8hlNfyhYWJ>LMMzm7Au8{{4 z-78CWHW(hd0`W;PqChl|g^3)t!&RZbm@=i00BhlV_)wg0=hMU42F)9g3L@3ao5I}H z8I}fZ8eb0a?<61oj=9=X+T!Eq!RN*aH=0Y9i8s}rg8IT>C(zNJ!Th>8L<=0PZ>~y% zhz0Bh?ag(U19g*K4YsztBIx+FBiiPs)+@S)uF6ph=|=6xgUL*jcixtPvskp*56`B0 z={4aNiYE!i0tq@Z1;pR-k?I3o>lQ~?sYinu)T9ag!9h~z6;ikT8&2oT|A@)-z( zaQOIKXY~=W6~KLycubCWOz(G95I!BBDB0Pny<_|zlgVmqx-mrqM_VmHhiBtJ`$Z5w zCPrd45%V_Ko8gYvDbKOB4l<(Fy#)}+&?NnmY-1A}rTwO$s?$(4W6U5%XfMI)w58zk zbnp#zcaX9eQujFlW$d|exgN>CX+D9ODCFX{GoRcYei!0W`_4DPA4@ELI0BSq?GTP9{qy5{Jp>{!$ilU=1r*;&BcRg z$*q-IA(UIbR;y$MuoVtrm}_sru-Iv6QF-Z$*v_HQLPEzhFGyrl8>MSf`fNpzygHW~ z_QJA574ufXwN23TR!mhNU*^BKQw@5<dJs*_=x{mDYt5qy%uW6HuIrYQdUw=BHHG z5Nt@%wEdaq4{)mv_E2B_!pNn?M`+Gf3%JA^GCHQY{6Z+#==o?VMBVKN&I-5tw2=+-ea|`(iVDzDkf` z_o4ZdXMG*j@}fOMk`);6@zP0?jJxg|pqYLnuYp;NEjq=E37d$523+{9c|=_m;Y=FC2zr0q z9ABp`#xa?^D8x?{^m9Pb8P5(LYi&GbahTA*2ISmx(8c(0gM7mGV0*-m^P2+5>2y*D zK>!ty(}TsN$-pvPyv8MaFTTJ&O7I6s@>;4;BIl36G56wWqHwlP{~pWLHf$Uy#0Puy zeV;G?gvis^Jxj`$>M5o?zm}_}UVzVP!9jt89Pwn(1x#nRAN`d2;9sJ`tk0AOz$1+E zH{8RxgaNe%M&|1hrS+*9C*P^Q=fDJ&p_?m6QWaQ!V5kK*vuF%HaecM^I*D{f1%Ubp+IA5m}APs2n1ZJu)J^J{Rl04s^nuyFN`DfFR|@!RJFA-DyQV<_xaV4SNKY62@hT@DgkLAq~ zhG+%xacHfgNfA`ZaU>zuj+4n`fU3TLj}&960XK1bcKm{wvmh9SVn*;5QgF*KxDXp> z;Zr51Q6HgH%jqJevB^Jiu6LMSlE`WNR1ubZUzzA5+#sU+UBVg8!D?yT@>=FvY+EEQ zC!*yn>I=^d@TLt~CRiEKJXWgp@5P+?!Jd%4yZjSDVZ z`OkMD7`^B2*g{%}qlKpgf7Zmo0$lvg7&BQ)Aza@3G~b|J$Ysk*P8I&CB}bAMZW-~Z zIR_wi6Up0t%hZXSOGa=}k*;=(xjt200^6TTRMf=`GX0xknXv$dY&rT#xsb_X8RNyA_$By$)d>6vNs2f?oR!rfdl)uT3^wm? zQwUBwSI&b&0r(I>$MjJH`fi%N1_>bz?&Ie_?js~TGj-`X%$+E9%n{r<<}`S$e`-p) z=*`trS)6S1Q%@D>CURjquWCtl()2l|<=i+Y;!j1i7jdhWpckp=OwWUJ0MIi}l3TJ6 z%ie2wuVKrrw_6uhff+-6)=_Nlw(qWRJwWbgGK?~1p|U<-iQ8R_>vJhnE;jiLPcBi1 zRW@hF{B?5XRh6|AR&h%$^yWc*ouol%@U#QTr4H?XOSYZzd|Vm2@o@5F7Ops_jl7Q) z_!ybL>GEq;&gio9wM`Qi-TlKa5EY2IY0@jteHNx%WR6`sJuJP1f$&aYFSPnLp{u4Y zEC0QDql)X^>kq8ecE4t_gb{C=2=3N2Gdry^aVqO$<8QdOeXI3e?r5`^^}Z(42qSR{ z0UzZY8>scj$7ip(7LQ+vQ=uIKkHj_~tcpcgSP5 zl5+MbW(cv;e_PPRsa@@MkrcgqMx5Z%N!L9-bn~Ur<+53s7!rjk3?KlB}I?)Qdv;%ICl2PJN$ftp)ow;+k%4wA>Ck$|vtQ zY_;32dscrw)Oop1ekSSV`gS{<%RUw@3VxU0lDzU1SQNO$YkfWP$ke$i6f&=S)<#|) zlsaMpADLw$TU8oa^N=>@h~Cf?=Nn=+j|^}w(vlxqQu54&1r>x{W^6ldqjSsVb<$rwy}rmwYQ01Baz>U?dDE) z6Enk8YWv#EPCC25t@EorUGU5O{POaAz%~D^imu19F!K|CcOQ6u9A(3jzt&6Lx23hJ z_sY^Wy`DrdJCS0duxEW>Bp16>_r;eS+N9O(hQNvjVv4ZBkPTG)KZS(quq)nebe34H)H7M%ti+!MZpA9N4oWcss21+ zAQwnD0vc>}2(d1Q#3z7x%6;?j6E#S26$>I+F1&^X5Yhyy)jZx2)-|Upucn@=gqJ|1 znjL{ulPOb0eXL1wk8Ah>PJa-YixeC}tZx!&A(kWBz|&k)2zfAfgt^NQ;Olk0Vk3P% zSYd$?<92$LGI`4r+F>*)w>2H8@J!QRnSiB-i2PD1f4t*yB0TW=VEPmk1ex?YExNMN zI9GtnDg}xUYG}IWCAHvEm4{~@{-51el6Asc*;aKov?K-kv&2q9S;tVToYnO+c-B=` znQKkgiC7CwY$Fiqj<-%#M!D%}%W?y{P=lzvRFF$pViFDB=NX-O>E6kM3WCB9`o^B* z{MM$j4lm`~NPO5-ia@%@awPiq@h@2GFf=ysU@*00s(yk}5oIaOg0TGff)nIUWYyxN zcEn}cZ}y^F)#s&R>KDsgsBwSUKb9_R?p87K-R`$x3itD)iTviK$x&+bcHFT*Q!eFg zNcceU!8YQz_sVsSd;ERa>;c4~o)C6(H5wX?RrI-;Mgfj(au5r*P)ju{uKG+ds!M@l zW?klvU;Oq*8pDCohHSQ24f7DeFk&%(PZcU>rFa>O6fcD4U}U3XS#+b?NZOc2maoDf zS5>B4E6*}7JnfMM)^Z2!u|FFCSETDqB*+}eo{nd-W7`sNQ!;2e+6~Ni)KbM22iZWB z%yRrZnm~6U0RBToY0kZLy)+s{VKacat74^qa)$4)&Ph1*?@Ov-g?MMEm?8Zb;eqt! zLvhaQgRdzKuk?`*jXV%Juuj*{CsQsj!V&}8J|X^iw$%6jIW)vwOI{HkFX{!z0lWlKgw@5_{( zOMVy%4F^Dsc0R@>XubIc?i6ec|UaBw?M>gea5yPFzj5S zT>m(ee^IdLw=-~?{o7xKpf^)qkrM(2p!((az6XGrED0(FM33D<0}i-zg79zA=DNXS zEsb+Zs~m#O<|j?o&r=|HRfL83{B0M~P{4zigdGU_Y0sk`&i#!eN@q9FI$Eh0D@$c= zHCwJI_FH!WbsFo5orbP4n^#UY>8;Ped9MS08=u=>R+PXtTkh6>nUbtX-mk~TlT<&} zv`4nQ78`LiHas=DuR9r3LjJaDID5~MGzV7ac6>D$N#lJ)K*b$#vtKZ<$~-Garg^@I zP>8fe%19Y_zr@ojHZ~{hg_(b+=~elZnQQ=ZFK<0h^nP0I2;dD#pcOcEKg%FDH|FA= zgCO~T$_6o8I$2SShA9w6s>(w(SXOn4pJ?h|oFzAC(qSCg$%!_$fG;Qnflw=yLUdWW zA)3k1AMBe)===HMKi6Z+RK3K-|6!Nf$WbMb-SFwgWqST%&t-)@hRVSed2jSKYbX^_BIu^IWwbNF9 zpJnu1Rn|Wqa>o_q$=jWj4UQukG7HKuhoijLbIp1FaSe$CRlFxs!%%g2>DL85wjvj( zy86kPCL7BS#|tDau=B}#QE|ffG7?kw$s+S;oe~>*PDr08^U!7HjxX!ohnTQt-D1S< zv>{kD2r9{5>ItH#v8$A+WSK86m8%+ql61HsP9hz+9q#mvT0C!ly1bL)-)G``ieJy& zd%tNl6e$!ua=U}>dM}XA>NTG{gA*PE_J3EIFWC8k4~p(C2wkZV>yfP7W~hmm#ntLo z8zO~R9Z9@lS@sMv$@L065Op;&QPR1FUw{cSF>(@B%9&rewXJ#8_cAc=o6*#1DT$xOzeycmC9E)Kw;29{@u_qV|P2(ZS zxS}xa+vYYvo$*1@$w1$QXeJ2ZsA|VX769oq82C&5=~|MRo4VlmF*%RSB7`4{P#pDd zHVO!rfZDXw4$Zpt!Il+oD?D$1+{uEk#nJjBK(eeJY%HhD`*}7)n_Btv{`Im!O4a(D z%EQ}+PvTbP=WADI;~|5XOqn2(kOqamX)kKHqw#y&_tnem731aRZGz5@?m$TdETNl9 zYS>UXk-v4THB7I;csa~%`a0{~6#Le+(mw=byX1PI&dDx!XDsGYB|_m zcnJe4os^9}S8d;{%WfLBg;;#j0-p7l;vBtSuFqcnEiu4ur+K*sVg3u1YtU+w(t}S* znYH047Q2SAnx}fb`rn$h^+M=ct#RG8&mx;^A;cRG6M`R-O{L-D%KMi~ug2yjTfo~> zH4VQ8Mvs>gE0<^aSeNJZh7>i+(1$u(`q{(nwWQK^YY{7>(QcDGjqqfWJw2Vyf}@0< z*0q@`%Zi=ABF2bB1I%U^tnxIB&zV$RNhKpCH@w6qHX=p|SL^r?GC$PTAhC+K`1sxu z=1&f_c)8l2Cc3u2W@J%(6;VRUbf0Btl2F`Y)VYf`m|vxeoTi>`gW96 zdvwr9$IR>Y)MUHq$%$rM=IkMf`b<@d5=nY#^q%C`fbwITF7v&Kd~K}4z;F$*^rQ0@ z4Sj#ac5hQzCLMN`*^3>aRyVd2a?)5z3k(T7strykphhh$nsZ>Qc7_&FaAzY51H=Kq zn4HbEn!l9dl5~X1xNQFng5l~P)~B!E-}j`fMweF^Ns421yno{$UANe9e-h$_dT3dQTzRcqepkzHk^z|s)HyzqDH#~EbY*nE z!3acTnuFHKm4Be2=5dmGaC(Z~Y(EH2Sh?kod(}((&UA6`XTR-YOn2Lq=K8Ed9J;;w zkQ210aTLZ=kK-~tSZUlpgbb=&zrtSoh^z`D-34aSz#KFN6OkBL#w9Qm3&c|6wm}xW zpST@|N0Y+_&$;v!^lp@ufMv?cYmi{r4I{lR1#NwKkwjJrH|5aRv8PE^P+iKQnnsxV zp9t{@(G&~gYy7pdSBcci0$eh7${KG?ZP|P5B!Hh!V~Ydjpyepjlz9e_y56W~f?UN1 zT}>?Ii^u;+sVa<|K{^5K$KG$V_fNK*c-!7`SKC-ilQU~8d^Yh?4bl^Be3ZK^lT{8= zS8p}8Foc24u}xec3~k@==9w{AJZg;u$Bsi94Ws6U%vuicdGkP86 zxPP_v64Oubdj3pnSIZt6EKDi*gaANFtS^9aDeN6?*l&Po^l(+nHNdVjB*mkA<#9R( zcBb{DRXMY=mRP1rN=ufcI?i2TqDX}okf?on<4}r zl;fjdikvb6STV!q@K~{=8VjL*l6Q)k40Kr!tD_9n-j}cIQH4J3L)rJNMja`rb^JJA zOox=e;F?5I3T&fsrC0_^(Yus3APsM;-FFE!Cx%+-tsa;5@zPj%AVh-)t$ zF+X@&4pt>X7%PsBv14&KggqdqHG1W^!jSt~HJUay?gXlvWsLkQPE0grR#Im*_Tl>X z$Zi}x0nE$Bk%)~}`lYFe!RX7JuD=ox%p`whlQ6|bqgsXfHaF81jT$YIL9{f(HSak? zpn0T?m@}WjLFh8hI=OyV6rERA*m#w}U1h2qzjXGbsml6#Jw&N*zdT-dd=15Ie+EtT z*#yE+H{;eR8(c31v!LGR%vg8(nR?iWQ!X zgB&?&SyDYVk5FD=GAgy6YMPzYc)U?f6w91AysneldB*ZfNwqr7o)r^k6yycj+5=oG zIsm{uOIXjQV$7>=Gfq1Zc(Qc~$x7f?D4xDB3DhOeHps*Sz*-D^I+uTCI|L@ z!^~0YFTBJ!r7pCmhdi8L0w%yf7id5|2Cex45Bt0=AS`Qc>_st%GM2eiFurXA8)&vn z(v1_c41I0zS)vsNNO%C$bu$RG48L{WZ2&C)?)C# z>17e@z3yu@{by7YpJ=5K$JiT#A#la2nF;S3f; zDSR=#+R(v$PoqqAEtF7EmCxP>bl;Bz4el=aO=r4jf0+oz{lpsf`JTJPo^$7U#Lirz z*rL0Ew*_?NZcc0iwo4?}+q1LDEVUGyv&xom@Y2<247cIV0>W%XhlS_CXn+GXfhKB1 zlkLEMF9fYoKw9yoIFBEbwmtAoO2?fPtK2%89$@3BqiiYqJ(gJ#O3CSZtS5)QCq#Td zD;_7RGd7geKFUW=+l}kCIyx@xSzhNHB=BU*rOC2NCU#BeGr7%XUc3KTRu(22MeP|OfeK}h6Sw$9 znybF@fKbPT$!GsTdDghElPCbj>FE=w$Ot1AM3OO`xCeU~O~LnREf(PRSZF*d#^Q?o z>;6J)+eJi7qg3szm{M%>vS1BMpTSV>egNC$?5H3hAr1~m4Pbo}?=89Nzi~9tHbPTP z;2V^AM16l1wX0b{vq4OIUpnQ|fwiRQ8kTb|JSWSTROq@C$lwruW0aX#qk-YnxK8H> zHw!#`jFjBf=_XQx5f~Oa{a_)-ei$&AuTgrk;Fu{BoqrAlS)sby2vM(P>jNt|rNgh>#=@{8vwQ;2CN+C+RNN7dj;t?ykeFtlMtesE?J!WjV9* z3rus4%J)WW(aIZ8p^48E4n3tHQ9k8b_cpaLHU+paT&KQ&zhG@L^d~+YM|w33YEs); zo?4rq3NcCzHtF8B$38y_U>LwR7r2++O5|Bv z#$sZ13Jk+K41jjkomNzn@>A+j*ifN0KeIZ^$OW<*yfL`NGz?~QZUTT{3buT*ARp{p{y4spA`#PCdq%(!t zgVbI=WSZrJZYhdd&(h!^D?ghV6EWy@F=6~$$K`8cR2A~~Yg!i~=>Q|o`GeD>@AK1s z*Uv*oP}N%In7?%8Abm7D=%i3{BPIHITKaU$uuS!$8KP0af*C~(-(~u;_{URw3*`*_ zdq{v!3xx93adJg%>3)ftaFArB(~d`3U&FxMhmx>t4)wF+v~l@12ZgHeOpelk^&}8 z>}dr$wl6ypRB);DsHO8~b^1t@aoA=_md7tRbz;K2)jSa&9J7=@>-9u+J;6&>r7Fe} z1Q+j@6rI;ze+5kFhp}4Uw>xg0GSfUi8Zhbz}Y@6}@->kHZ+jo_eNB zh(V%q_s&vwdO2BFfGpWxY$G-%v(_2hc5_AcDm2Jepu?qKUkzVEKPk4WM>j+2dM@ow z8vq`m^&8RJX*`fav$SU)?UJt_67BmEgZxsQOvV2JJV3+0J-Z{8?Apzzotf{|zIMm{ zv!jhM>cxsvuURNkE@|ysfs8o<_zT7QN@VBJQPZ3}3lcCuLXJ*(Vf-n-Y6LJ=XrD6d ztc1sN0qxRH0G(w}9yLBmu9JSRk?N^2Appkvq5mzs20=JsXT)mCPH|p0tTyVyWvdgg zFNy5FhuyPMb=0E4S|_06JTmFIA{Aep?DP~m+37hq-Z^Hn+1lxt zjM>@#ipY5E0K9@)7GY0>x+%?jWiTetLN0y zEVe7E>1ZOYDLtsHRm(ok5FV|sc~;NMl_AU6R$a+j>o`YW3Kwcu3mdMoaHyt8>hvJi ztWh>ls2=G!J$JBCIlEm~jLh;lFuvFj6jER{Lt;v4rIl!cMM*%Xx!m-4piw}Fxh>dAv%`Oh{%GoMl%m&=Avcrz zha=aWj=EV2(W6)pt)ZS4nWhCY?9WY&>4|QM(#Dh+q|(i4CW0erg?KVggqHH&GZrj>>FO8onE`P~>Jp5+Qe*(xghpone*3 zu1DM1jR5gVrXYiMOB;=6>H$|z)2x)cOke3Fn~-#fv72Fx=vyIaCjK5x7wtYu7UH2y zLT24kfdm$wx}YVs4BMkNA>nVV1`C;nts)i#B-$)Wy&Zc9@e*t@B2jO_27`#O6(d3f zQ70iH5)l(4vDyrxo=5_+I*Bd`ZwZPf{sW51Mjs9JdX%( zA>}GQiTJA7Gl{)M} zh#*o$5avbfvtlA(tb<&{U~yv6rqjDcLB!Z>auT6hXE50Xt6vJsSTIUh@ClI6sk78M z1cEWI$09;bEVuyMDLC~9Yl2At^On5i86XGx%Y{aA|c5HRqkDqve$iyKc zNpBn+=_%prn2e*^$A7B%LVg zWb8%&7H(uS14v;QdcBtj&=W}%3^t`B-iD(fdyIE)BbuN+J z1Hjl=s|20iY}O0NVkM%7POR0$TLmwSrGY9}IG_Rm2jl^`t3p2+aIGK&TbgU&-=>v>s+%nlBRP1Tm*_D-F+c#|3O2I|S|Agvju6c28f}K4-G;3MQTwF;jYKaR z&B!iPI|xqze2HK&#K2`YN;M;x*q2|8Z3>7gbgv0;-zr;{WR!>9^6WaP0KdH^d8 zVS^|P-yVJh>H%cIL|dzaX{L}ypaNJ{SQG$?t3+72Myw~i4LU;%adVx$%IfB&Y8}&# zaGi09w=$Z^MKvKyD89a^kxS)QYXQue!~|#K*taO0lHl@apQF%FEBv{_QmUi6UQzI| z=)?FePs_XaXv#qCyC&Fd>TkX!Jb07dYA@b}{2r1=Hc~BCd~D6bXn%C-9nWb@rC_bG z-gs|kjzX! z{0(PIY%gm5;t%KYP}*An+WRJfV{)o)schzsDjc(KMa6}i>~*TltlOR8WL2ggffBez z{#Ok(s$B3f!*-nPLw`W;*ECS2V!nLOO_Z@re6@? z_~N%!=oLKu5cbuSvwSa@ilceTLf3Y;3y*eQdwYlAQZRPiL&yIL~}Uiw~k zk*Ck;F=Z3DM!pQBXD3jJ@sy@YK~m`>Mw-nmD+EQg@t_%5tU%N!(B=0-r%N9Ux?g=l zed2yPK*f&%-H$GZ0NH0U#poRxOM@mT4EL^ow@$B$T*xrLR{r(-BNu zi3t!xUR+Fp7e0N}9g8;KEcWf_nA$7wxdS&2AG+~?jy~~bP52Q56fT^HE^BP^L~8CXSa#ff_m0%s zZC6}6HP)1Bg1^|*ORw0rR){m%Lba~=sqDg2^A_GDY`eQA;%RC`>se$;Pwjqjv+yAo ziw2^{|F1O6x^s;(QIsPOiO ziw`Wm=*Nq9+_ZH0awvJUw`k)s$839Z8eDMHKnpdgNI!_BUBgPXNXota)ag8Im-lYP zXu`=S5$c#Ru>MfPZO^0JQ*Xl_y5~1(zx5=V@WQ>_ht~J?)cyqMjq72}nVEilkXn6b zP?ymp`-_q`P4pNDqG-w$F1Vlb33>@xcyw&=D&a#f06BR3^}(H zmpa4Q6HG9d$!ONIZ^*FgXohW5A>rbrQ|4ltnc-&SL?TYQnaLn1i~6Xw6)1#RaYqv5 ziXxZ9jQN8*Lu(}(;|y&?r~O2z&6#a>OJUwMIv#N1HH-H=aM#imMrqBWJqH#~)0=nh zH0!4=KCoxe8cAqqx@hkMdls*eAf@ga{AG*XX3o_L#D98Kb9~{dE9OMCSM$Pnb9BxX ztF#xg3wCJlJjwJ9RBSVgs}Y{d)jsv+BYv13Jv}Hr}V^v*_?X!fW?1+PP83)pHRp zLBA|9>K>+eLYA~uT=sNALP0$W%JdK^exfs(E_=km(v47Ih<*_Q(N989y8_cXbL!7g zQ-M9di#kxZRP5S**amTB`oZKQK!7WL!IZ zmDlV1z-YA3)M{L-%V2h6l@rl*#YLhM*Bk)7r3FnQrOd zxmsB9{jh6qm1n_Ui5W^N*NwjuIh zDv_kvrYJ=-3Ht>H;g(Gc*Y{4IG`XhfYM*XWShh{Etw(b&O>|=Qkl51O+fq~29J&RV-l}mAJ*F{yQYFKdO6j$mz5UH5H9OeJR^BrqBbCImq)JXt=8jaZOE($K+EIK zc*=uC)4OH&$jE7TSg_$lm9cgWTO&GRuI^0ksb9KiYi(OC!kyVp*^H1yoEYj_e(}0x zZB4EAu-zqDf##O$o360nC9n7I09t=ybhcawZ^`QQRhApfQSlx1PdCr&2)6hg!LYxrefHz?*Bo5hG1V19m@G9A zGgi!!*My9s)hES_vU=xtHuX18X`dVjHn;TkZ(r~Pn)`B9_|)yCxp8oup)A8O_L~Ct zaZhO$BP#oDALAc8HviN9vGtApMkxJGdBrE{E8L@FRPNkypFCxyo07Xs7D1pQab=r^ z=-#qZ9dQ!Nc%c_eP*E6~SNVlex(`>Md8}xULT37sP1M2%5WXnP6tILut>#!upXKY!LZ!58LIB^o^PRM0)Iu4MVKth5Dp^$Ke0O2O) zD$tNZxp@h#+5)BA;e}FKXiZCb3oS?6mjbc1`OnO*4j&=B@BjNgh_$o3v%531vop^# z&-46#c%*0p;51w2hak8?{yi)cPo5NG;)|lla(H|4m6aKt6SG&l{pcpHlmZ}-lVPS&85{;Y5Mk9GhZqr%A{xj4Dn9cH)-#oi+0E$s3k{i#|D_Sb=hN>&lb+Gqn>Haxk@WWbpmY z%4P7Tl=$Iv`Fw}A!nVHoiN8$V^<-b~6T8nUpEbj1V{|NMseR-A8}GlouNha)9<6Da z?_BA$Je40~ymOKN;cz_&|7qSG7j`!E?7D2?+S|RXPN=Xrq}D};-?{se2mZdW*}r{Z zam|FybEnqGD_7r|4Mfh_w%kNs!`O*FTSQRd1Zo{|Txv5Gbb^s+Ac|xhTf`O_DWTFg za`NH#X!rQ}u~k=HwQ6Zg?>RU24-E9*_X=2i?z!io|A3e;!@?b|&^~8fEO5)?qix0UoTI_``5>_HnA!vfJrG-6}# z__6%cH*b``e16-u=Yjb~;Cby=+aKO_V&~2iyXIbbR(mmr^s2`V^r{nYojCCp-1w&a z>{B=+CNHoB>wK0 z);6*cMUUX2|$Yqei7s%w7PUQH4LMqk(gY+B9 zn2C}hcm}8#3?<14jMkZu2w4(+7D-DWCDmnc9+28d(Fx^RQUw(O0RxZ>5zK)U#vDii z;wvF34*ANp2`ULOLVz*LtgAvBV9h@FASRK2A1TA9oP-G`ugnUNpaZ}JDYNn{9Db82 zd`Nxn@YtFnii-G%Z)6bjL5`kV`(aNyDY56Kldwmj&d$zvOmeW_D0!Kl!KB2zmd`_i z`)7(#u;<((TU8v|y8dfXY`-LM;}*V2?)#xuM-dgOC+@x(5S zMw0vP?GDD_flZLuzJoCg9Y*m2Qw~XBK?$+qsx(o`LU~04=)1gO%J~rhBIi$O_z{@e zP`s>^o$ zAq*DGIv9}$6MS`1i71v7Rr86@oMqRy&Fo!H-uWYFJUfTP{gtcu7Iwu|7kd+u6@7)G z-e&QM=4#-x1xSb`SSCLSR)BT$;GEU#ez=;sR(@*sg0}fKz5Ems`#~qPmQ7jLcJxj9 z+94nPM^M|ja%JbVv(Fy-ApH^)*YB7V@kG+^f@{H-a=m#o>i z^L13l(o;6>Z|rZePn&NTXe|y-^>8@emsO9oG9(NI)f*T0$?v0`HQ`8=zRDd?d%xLIB+O2nqE@Nq-+*_#C+VvjV6VjP2Ityoof&i9| zl@;7PM%F!mD#xo-8-mf`Il&;nma%exo+UslhccOUA#{P>uGNy2G9$W`-i>amK{vNS z^ceK4(OFTc#>l$o6jhGu63$_GDE`Ely%k$Frsra-v%;Jds{%NRo%nlTF5!|9IWit` zz|1RlA4`V$9V7`0GSDlVuh($y+A4lc^K!Gb`_=r^H@@gq?@&^Iw zYK&$D&H-ItUIWOP=}@IdJ_7c*Dh0Po-pkHto^hbGdq(pXLCNt7*=$$xrR2ds6cv2{ zxF_*VuK7}aJTopRm|J!{|4~R#L$VKsq~~J_8huI39Aa`{To`^}I2soLiSCkn~*E4ZCWUitU^n_ih#+p}bL+c_al zbLHQG`1fDsfV*s#F>t$n48li`=GGu^>_#KCI=>d#I@E>mTlfwX1@PVY2}t~-7t629 z|GuNI=j?#Lup&Bh`Yk|r#~tZAF>b=~GoUN5jo%AZ;Tk5{`{>#^H`mwCvr5G}q4&{O zAN}k8zn=kWVep$Xqb%&Y-~<{Uz$uEp2#sMr#SW_&AmS3M7$;O`cr;4TK^*Y1UDT&P zG8Qp9i-mbX?qf8fQDlG3IL% zSqbyGKjsf#4@F83l21pHBaeBE7;Xc(30}eTvH4UKL7u8FRYD4TWQwfFj=9%W2bFyi zcv#v4F>+sNeSSD%DwWAS#$H`lDswG9n(C@c)#qfB6w+pAQHxc%DC6*sk#j7uT4j|H zt4&40@vkDydUo{!gz0#)12MAWfB3lwsfB=hMe~ zZ@#$~i!ik_XV$_FeaI;3s;Z_n>qkNRp}%n3!eg(E4r`$^8pCoS_$Dw zER-@?yNU*B#BQvCus+3>;v2PC;>*Txw+tsmA*=T^l5Fw1yPU-AjA^o(2~(&J6eyS9 zfmF`eQeVoTl+A?af+Swb2mQdC#fnXzi}KG;lXu>)EYoAtiqVATgPyEhNw{FlR4KKT z*d|F>xvDdv=2xQ{tO`?hBu4bzxD|W2WuY;!W=I0I$eYXjVR!Nmy9I4#t+{P;P1n}i!dTGl z4%QVpoK>|Ib#)cBRZd4y9X=K-tlipGv-!4FM>kKHu=yw%{}t?67l}b3%hWmBkisKL z+$GF;xRjw>pt=HQW<1$184U*c=UOdD5UR)?Oom8MCQtSgl;0i&MH2L&TA+VAln*m5 zCNM&z1brE>NV2q?g@nvt1QKqdD2V|s&sl&nwk%8#$bN@inWaQwfZTWhlTr3yGRhS? zn6Wlrbw0K>-wx=eDJ%L8kK21c>=8uJL+m{LgaNZ3RcnReZDNDo`+nSGd>d5!_+abd zzOL5d6Qj!*CXUMrK1J3KH=-g!oVJYkF{l;p(&ZKQJIdHE;F_TP27@5Vq>Vw3B!70A zLT38A8vnJ3>d9Gj*sQMx9Y#z@|hsip2 zD5hQ}q_}P9gN?l%_QuJZ`ZrB!DA)%k?{M>e)xX^R;-NiUAnAB&aomSDmXm12~beaIJq-laFD z_~Mf_A?5AiaABKrhDZ{%*|3Ev4GMhpz3+!yoX*l5z;5rp;^RPbyx51+fo6-2bA{f& z7awYvf?9`GoDLGLD{b=jBOiWvWS{l72MMHxrvyoHqI@1%y*nhLoe~ek{9p%vYu!f< zUTIs|ike2{`c&+ySep$hzENxr9v$gUk*q6}ilH9Kctpwl1l5u0AEJ_q3lyaGElr?< zOcH~}?ORHt^dOSA6wjxDq14iSEVU1{X)Z=AG9p6k`$vV*iSHQ*_PqkX6xlGL%JzQp zrb%UiPwDii!92B z#X^zeXqY&@54+m2sdN&37DHd*kAT*r4+Sdlusy^XuYY9vTf&(E(dbQk_Z?U4zDoRx zgk}Q;19vWAG_Z{{vhx-n=0pYR3~$K+}5} z|Nr{>GvyyyUyKND$#`3i!eYX_(pfPrhu2Nz(x>v$^l6TtF8zNaKRnIx;bq47skm+g z7>mkhe;>%!^k1VZo_8$$uQ3jemHI!GQ6B4H?&sw77<6<%5#aLNf$<9DcYHHXQNO3Y z`hWkG{BL?`)-NNkzZQTD-#{Qb+}o%HL~Nt+?IXUd2J?TVcYojBcM5C5XdJ|8r5BP@ zdF4r}_sjH6kU*m(=D|t)AM2xM=ut!0Gf6KVu)Tvx(y!>0QqZ2BtYejuuFQQtfLtLD zgpkmY$nuzD+iNpM2Fka-5(w9fI46!In^P>%&wH`W8EtD9STd{d-A;M0*;e zifKh!OcLpbNe!m@bJC(09R&Sj*XHx@6e2VD90V60TPips-~);XUQS0NmH;0JW2;~^ z9F1c`W;7mgprg?ysQCJVh=WDiI-dmchjRZwLjL_E-26TLi9~;@$Lmd|Qc173Cx!Qk zFf<7S69b?pc~AorUi3dw!vw7t^bdGbUX3&9)S&GE==W-|BADjV~aZN6xnv}ZW(i~Eq6gz>hgM;SCRB$G!zOnAY7mri*TINstE6`d|8QmNF3M?fNx zOs2d;1H(8|G4n}|E_H<8qXG{?@DE4f01-bvnac6j!VGh2zU?-p*sd@IM#hGP2Lu^= z0nq<3!Z&e5xxNpV>saNIQ%c!V%CnSGB}SG^A#+VAr5k<$Y#d%Nh~(@U^uL%0lH$f; zjdmm#F0Td5SO?)&U9HZgldE((@D@tc>U8oBupb;4^YAf}B1h1Vl4XayLpSzeQZ6GZ z*MDZpMdf^3a-6!%SO?);{BY&I`_U7~O~G5JTw@)EGnBHDz5QUnTH-3**oSesW>8l% z5oYeN_8QI)A&zyBiJYm{!w!Eos;Kz+;QTQUQ%bpxp>l1_Z?6#?6XIA0QMpcA-7yZs zW20X#%7F_u#$h}bq5cK8lJ|&9r3EADmQhDia}Vn`^k-u?78&1A-+*(o_x#?S;B;@B z+;avnG7);Na?k(43k2t$?w#O!R-$`u&6V?eHa=Z>n&wpP(2Cqxt>C5Rqx2}Ye5)s` zk=M0?Xxg4n85#2U!4zHy z?N?x%`sqz(bHCXPC z_aNf{KQ}za}--K*7MVC)=<*B%t6N9($#_rVs$xPB$sFlj;+&^LXkdHKHO%l9!~s-|}Z z&}{F%rI__`>Aqj~O~)DK|5BuN#gLx92H$Y{bow9o(&g!Ul#@zGg1kk!G9$-k`z)1@ zbis{8B~g7F^E%@&{#szAF{FYDVv7C2+4AB3S2jz;E1}WxV%lWj4Q7*tWdp4%H{WvG zN=#ZSQxeu8(FYHIeRmY}|4{xj?{{e}R+Bcsb;Q^7Z=WA4HsF|Dk`4c06j%A&A7rs) zDe~RbP>b+PAOL?As3R*|A8y| ze63fwBj?<^;rhF8*th=P4H5ShptpNoN5{P3KNnr_fK9KrJ#fLIOQ%-~Lgn;Jf#!{i zW^8H>XgO(I>*@)+-u&#yoJHH#&YBnS&Y8J(+rruX!@nyBehccjhrgQd9DNnGB&3R` z6FKuUCXF3Mpfmu> zxte_XGQMnW?lx$+9`W6dT{k;{@l)*m*y93!F8_nNX`Hp=)ml{-xSSeXS2_Mat6QX? z+MKDD2Hgf#6>9&tb<-2y{c>#O&-fwYF82MalnlAjMBju-mmK<^)kHB0f+zk*g;(V~ zv{7c6_V2es!i@0mDlt<5e>lJ?5D>mvIw1-vQAi4+67i5p!h~8GbtAw1cIwdkhf;6L zZ-a`r>EzoWHR>9iTt}*-dUz3>@?;WJfCm6(F*jw`MetaR{iyL=IhR^NZJ>5gmy(s& zd#J~V6(7|J4F{+m@w{|6FOBk`_lDA_7Qxf!IpguurP=(nC7X`oeTlG>jkF1vd(7xx z(mY^B|I|H(G7lkvk?t|4v**bMjJ=!L%9OgF+oIcU!WVptrq$`uZwYoLM$iPCNRBV_ ze$!u$IwX&=qi%q*QUA&PB%c|_pAIGQAAS&xe-)8Bp{~{0sWNH-mew-9LA-_Vgb-{1 zFv4u8S_d=HaoEw6$)ZQZiQ8)?Vhj!L$p`n(XhCY(`;B|nQZ~V=P6v&sMSb8_;J8$D{l$4 z#-&XL)+}0a>`$idEb75!R4p}`+Je7Bj<>}m@{7{pC>koYs5xw;QVtuc7dnaRYP0|U zY8E>2#4E2o_R!n!(x3e8Mytfu8*8O1S4E)0?r=$KpV%N-%W5t-_Tc_X-wlHg{jb^z zI#cE~&-8#tUeKKX+(x1~w*oR%)+oV>*88HWBtV^qr>w?O{6C7S2Uz~}$FhQw=2 zNG>7k2PFy{=ZN(KyLDvzDeN3;K|#kl&d58OO<*DoWxy)ze z`3)+^=&IGc)4@sdm5jsCYBVxnyOMxck6D5JW3NOp zzLQ^}i!F@9$m*3ux_9i#<$U9xrEC~e2iP+3G`K<-w~_$XVIm5}Pg2D0dLuH~&=Zg- zOAu@nal2?-Sl%j0oY7w%E#x#-jxK=ZHzwY>Yj_@T+wlj%i<2?BiYj|!NAOAV790sM zqw%KQyXy@WpmBkN_f45)92}8PK3VwlV~VT_PaWg-umhBiDn)guL~T!794sBy0*T@4)%W=^;2Th|FW3vyNlPiKv%AwNdq5{zS;}a3izc4AXOId&HeiPdcSWfV zCV5F1m%-Y^vN=SfNj*XE*8-nn0nD2De5x;nqUh#GsN<;j;dMOX^im1urjzLJ7?aGH zDu()pSuW_g|3>{qtNof7c2L&ep}(Fy>jvGEXW{r-t3|p0J#A|1LRVSXLUx_x66R^LnM!_p>J}HsA6^_PFKwOVDp*{H6?b%quFIumldITL5G-q+ zr5;qU?vo^z(}=Y9Ad+;KQoYnRYOl%=tgbxTtq#Q}miV}Y^5jJ}8>0}$;96)0)6zg*EG!EZ2psuQ zo9zo=anEsIUsx!AE(UC%dtUmcFXS&&I2|COWAY;^Vh)&TgV*HUCjC$4*5IaL4+Pp% z6zK_oY$AE#xC11A{{0#OCrkw5>^hKjV{d~$*O z6We-)G>Xc*<$c2*hR1^*^pOmab||9W-f5Tsj=lv&2GD6 zUV)`JC{@nAKHzSwE=v>@oMqPR)_IIT*V=niM%RY;d-h-+t$gGQg{C(%k=gJ!OOKr0 zlFAxz$dyQBsIXBYsc_LKKxA3i3y@R|W9d|gSxXE{O5iJ`R-zwImUm>tLnKWb5Uz5o89GOdB; zwb1H3c|QmM^8+6-A+14cDEsIE`78Oi@c!4`g<_(wy{)R%7pe*C-AjW-6LzesU*6PM z-t6mE<{=jQkkNZl-8#Qt-PqIDjsE_1`+Hhu=;3wiKIgnECaqdMjX87G-h16$2}aj! z;`;W+j&L`r7eKn##jJuiM+LDDyB#mXkRA~t^B7(^O@i(;B|pM_WzrW6B}0vAD%561 zX&R+zlqNWPOw>QUaEPiH=SN!xZI$)D_sLk=t6*di^lXeLYxDD%6ebj{%f%jJVjneb zpc?qY{-_0GWMDxT2QX&>mI*Bqri!uQ=EqnY3IPyO5EjoG*IC&SJkJa4djG|}RW0)Z z;{xZ*o_D?{=&1^JuQ;p?YK;IwSRAAeujmd|q2uSz?>-0Rn%9!}Yc*h5;0#n$+8b)R z%jYZsPtL}tE(+fqW|7#Ti#7y1Dm%x`TD)XVd3Q~Ny|NqsL}HZIjRC-J|FYIZVdtj1Ra>x;1CUFy?oR0eeqb&+2=e% z$~&q)yU&x+xIagyW8NZLd1w0iEzZ_yoa4bRW|Nh>@_e#OrLeVvlUDzJp`GK)pdB;>@7<$p`HuiC$DPtZWNvO@KGlI(6RZ6DEme z6}VQuV!a4^0I$V$D>>!m6uV?)u5Q4JrB@oW@DT(bq-tbSxcu>02{u0U6G0U?Z+dk0 z7Aq9wB(F8-6GnEv{9p3lX-?24EQSG{8SLumJ`UyqRLh$cqmmiEds=*T<@xB* zVHJ?xp;f`(^Pdl2LyuE#hi(fZ@@u3Z^yHDx$ECtWQ;PW-%7?Ew)AK<*mWg&zAn>&# zp3hvJR~so;NiebjfYJgZ3kyaTV2pQ=X?|^{Ax6G~%2D-FUc$(w<p&={&Y211-(yzcTTRn`)<;I4W|;^f2$aBJ}s1dJd5rt`Qknxu^-C+ z9(q4Lc?uX;1bzrU?iiff$UGAooQj6GSLCmN9<09puDifoFz#n+TbX%j92DwK-1#wM8;kZc8hOXTWOdlrk!v(g2;SK#-^cux!keFA4IM5Sc;|DiJ&Mc}6jWbN6Y^+S9;oR__{BE9E~mL0O5f<*Tuox#%@ zr7@25ogU>&ovbe_mhk0T9_E1gk&^W^o|L?To0L7|qZK6_;V~BcuGxCxX>ty!CxO z5RFNr6Q(Vo7)uyI2+byk4`} zVj6{$eA*oOvW%srAmjK=LgF-BiGv^}^XxTk(ofBo)YkiHV_?8ZBLf=sjg zd>Uh|;;ZU#ZhTc8z8+pXv@M7(>feO&Z3xl_g6JZ&vpcw9Si2~?|HzQ#F??AShgo`* zUoG)oRhAfrd#mR7_wxGouoZ?g_;uk0$|17mLn}ybIft%fKJO_U$gbDRwS*Q`$w}|c zr$9yHBq|YolD(KJ#D3Q0AO}{Cy}<)H`d|8_Sen8?S2m5t(62RvM5Ckq~2E?EaN1Epf{! zbW=IyvY5gAqdUm}}cfVfXIXhj^SM|VEr3QlwhK4oQV<1asbP(k8~-7Cvm)go_7q?N7BqPS)$?!|4HXXLz(F@M zMSJsH3`aR2f>bgIW~Kjhib5Ls2gFHH$qiSGn38jNZW!^ZQpM{~J{r^vBS(snt;Ad? zI^>izQIb;*(NYSNr8ld7o<{8RIsDDh%L2u6!tDmB;y@tn9p)4|V*DCWCS|x#2Z=M6 z$x@n5mRdvynk6PmAmP}4`Z9rg0)ap=NV(l|qFDaj_b(IiQ&#N1F$XwfnG*Q^0p(f0 z&$oq+=-hYZHKhf&ZTjyt8Hvdi^y|ZUj$FCrjxFn{oZky-NFdo8;7(Dv8@Eg0 zEEz8q#6KSW!){H1?qWTFTDGucdDpw5aH&y}FMC1(H3n4ODT;mz=?^Ovp7pGViM<%x zFz}OOyaLgS*IVgul?EH?vTIG4rCY6rN+pS*h3L0_bwm^{H%b$Cb$1l77SlT3Y|_Hb zdxOE*yF9_}x>&e!X7$8zRRxyk?~sg_3u42D_GXc@7-nlsf{}K_TNjqCxWG~toL*HO zt?!9X3cA3GTRw0-j9cSjZAE3oiJo=24njR#<<&nx)lnU4ov=uKXM52*Yt6{u0^sc`Q*f9H zXPt-RSpg=Lk;5~g;N`&Xz}A|*qVRy@?H}C_N(7z8_Di!?ejQ_dY}$91U7k!b3mW>GYNjjw8r7aOGob3_51*en?@!+BA%Wv)m- z4UwpU%8R6RUqA)&S7A!B-AxfWYB9nxQeP#KM&oKE)6HzT4rk@yl7~>IATf%-t89NG z|4gINiNBC^?@B@4IR0lE+s`aItw#RUyQI(k0r-_IstTAU3hRv0d{O8%N^qjtY!>B( zp@q&x7I3d*7A)!KBxA22&Xnir!IAbamYEF;_}{$+Dd>_vvI)%BaRj zd;4%yS0C7zeo1}^d`lKAdC7Qx#zdX5TSNCt^tzWWk`v%AdCz~JKhlv69k>ydeY+s$ z@egSz1Cn+M&}e%e>KRf%vRfT>F)8kI_#)u|K7f=U<$$6i(xk`G0a{^_rn9BZjfZsR zz4)YITRTr@7aVwOtB13XOa}mL3&`(#!ChAdCW9k0@1Bj0Z1lf?;3+#Ur*XLp1HF$IGVpgX!?{~3hfpur|&OJ_kB{+8(>)LPD>DVP3ahB`+kD)PR zJ}5`(GlLnv9!e&YX{1Wa@1PxY=vXr8MZGkAv(pKC(XXI`y+qblR+hmclhNRmZw9?i z<=0>|$q%R*uzp*AiemnX+A%^+C745YOnf3Rye$y*hiw6iAALq~Bn4R_p@0QDC^~B6 z(TFXEflxg(U022U2?%LzD~ET`)PQzcIp$jN#_ijTd}QXfi|5?hU3RNDReGs-W39%_ z>5N?)-%j{$ol|=2tew3rCp;BXnitj1(r6k(9W@iGYCO`Ef|BOi&hiO7+vJ~E(G)5X z>Ex4Lg@>=4a?a#xJ9BCf3{j`RQxR|ofZ~pO0T}ukel^4wH=Uinqols1z`#NI$AD%H zW|zMTeB+Dw96AmF`86~>Xaq-bm4b^wuqD)ZNo?eIuu9Be-jvKxb^+Wh2gkVTOWmfREs<6p@(we=^m8 zsqmQempb|9I-@}^r|?Q#iukf%x0jCe(_phfi%HWA;$JU-ars)#q!+ZdZ{CszrdR)~ zdb<4K!>_Q8W5G+u?iE`;K9?lTOBOM{mv=0Zyt}^4zUs=Gaev)+L zB-xQk=L9LTbBZE6=(lIATIWH(|MLtNc5A@? z5p^Ec8o74zW~;Jgtfl~4&fEZ`&$F+qeZC!g1P6(cpIGis-{*r?4DB5bh2x4G8V_Jz zLN)3Me*hT30Lcj0?E>?WuoD+G)wOnZ)J{&{d74Up?yB$JKB=|JDTYnvU})YNGqlaF z==;IJb9deAk<0G~kk^Qx#q1$aOy!qYT=4JK+-Jc#O>q2yHJh8xu%E495x; zL|>Z~lY&7WFE3Fcmpd4AyF&dTmrQKD!0QSz{c#grWwDsT+Q!6XC0&+@w=bNrE8q&1 z6gYcpI((u_tL62DR>@V>S?x1vfh38vpkaV*<`!bLLHC62Yyb!PUC>tH?P{rS06jp$ zzi9|=n$!i0-L7%~f-ZPTK@h?%iG@C~Ian61XtqkW;@Z+?k2BO&;pd!IVT-!vkH-B3 zi7|7lIE>ksH&TNS+HFJ|h7RlmL*R@t`7cyxjMXN=?a@SI4mI+}TTj;z>*HYaO!;q& zMxaH}3bZC)b!U}JvKH!jt=1*_I%;~I1tlR@VAqU=w@GAhvNl(Q%Yx0KZ((8!guw!Mi7N;|xyxM)yC!W4 zHlT*<@?sSF%vy$)*pbSq7StN6sf($rs5_}gsb3IY6YLp}SIHt6S}lkKM)ZG_MSrRh zFQP8rTUgac2xYu`^LYt6sS1AS zCH)ME_k1`&z%XqQOms>-wvf1_EZkur4vSijfLe}G3wSpbSRy%0p4dVj7_I7W{I0HWjX@fgjS7fsmt##Wj^E){pUy?{bo1~jqeueyZ z`Lio3Cg`kI-GuV}FtooMrPIctuN`xPS5<`MT1|LQ4?%<$pS%sTepn9;&mIjVl44-Bns< zds15@*u~P2yXlf9cPLcU&^00A0tTC&uD?AJxxFq;|731O6KgWDO%)4|Ju1Vj_1;^;2^ebV9-R=m3 zIcJ?U)VM)@Y5i*8UA)-i7HP0pW2hP*1IM(MSZ(>@#g*e@7A=^w1PyCdkGaF`9pS>F z@T93oQGx0H1q?V!@$QB~D(c=_`5ufXT>56Wz`7n~zsSmO+~EPtWX zRUdmVy?%T=?w)Im=t?FnTsJEii3DdILz}4Et)+kQ)}%>qO-?WTbX!w5XR~qLO`AT) zY2Iq(QJN9t&GJ8hY1)Bx^W<+QKRg><9qN9#8{cG(Y>c-Coe^+AzRm~jY`uP>(gI? zZoN)t|Dwz(9}^)c2>-)QuMy>GResD{fL@`=R0&p_Z9`{)^etA4sS=*&rLU>XjM2*2 zBxU(U@OlrnAlPWmfxWQefE)pKK=xu`fW&aeDC5f>Tk+GPhS%(VUaQrZpDC8;IB$8@ zBgt!!x^4A7E%F+zJOpmh{C?OXH4Q%S>kXFQ0{Mr6U@W0$8v^MtlzjoDV1xGo{7>^0 zqcLkJ9Zxa;MyXD+hA-7J#Q=leD{S^f08?|CfPnM_U#O%SDl-Y{*)1SM_~u)=NDTf8 zd?Xh>^8je*>;zuH=k$66P70$^0wD1vf*^RjP9GW}2IVW>klz?zQ&JL~;2fPp@Pa{b z^T{+=r)3$M=5%I;Yn1#SF;BXjouuz!v7CAnHK>;x?@TDeRxiKa%Zig=|OqxZ`@T006KsJsT{LMft~U z6__JC>l7)U2!vf_^WZilWz^0DjSle^NVcG0`i z7x%zRPTqCo$QZsCv#51BFP97$Z3gGI#2-R(5tfcW$k&Y#4@G?$AJ8|d$_bN~Mm^>tw{GPWReo8)X^!-VC*mrFr zI3FYZWg^+g*G#kup*m8&G;r%hk6d)oBk&Qj$?zB{U*OOK_?Y@H|2YuNUYG}5^05&u zh{S!vT(ziQ%jdz^aycqTm-j*)7#xX|a7ccA06vzU(GP0IicjulFJbRN`UH-yY{z{8 z*tsx{Gm4>iSB1%P(Mv>cQ$p{#ghjmpJ5D2MQ6ljWNQR`*{M81KxZ?qw#1Y(uAUe$8 zGng|YUczGE54u{jJsK`543%`oHwrJVY@1Fq*DqbN^CRojiW>O?`Lpt>gy>lsZ~o~0 zw&>CY8k4c2WWgIRtgD(bCt)q{a^fFhe89$;pK#4*E6ROC@~z(-GTDqQ548cCOG_8| z>q|VlkAq!c+-=Qf0Pkz-@>=H1v51By%Z4o#g%?g*lGJE!hCAH>t){w$*ZEzA0WDut zsL=$5MAw@3PV4w;+M==gqk*31&DtAo;QaOU)A!3xPhFv9PsqK=P&Ce6r>%Wy*F#fX zl^%~tUnK??R&`lh2@b6Ct~6w{Z$vsdVYdzuD&kn2gtL=SeF?V@9y77>fksuSE*1)- zkH!QDhaqm*80J%8IbLaN4~>p9SXU8835MNsO3Fcbc-}P4qJ4cdj8{&+_DO4dxZ<`4 zD?;ryW0l|Y;#GoYqfHGfmL$yNU>n~ zf;7#C3z)t>&Twn}YAKo4q1 z%tL_cz%gK`S^d}^h=-Lb8cAYN)Sn2#pwH&BSUso(=|{R9k1XyzwrQsCfvHpy zGye@{$d4Mm?c-;@@mZi1!1|>ZT+j%;@46N)+qkfj<>f^~>64zis0YA&JHNsp8%9%G z6^vSZQS8ux20k7Mg!oylV3aL%Q)@+2NnL>sfK$|Q4PXnRYdZFpFT8Elq|3qG`RzCT zDLZhKj&p!(egP)yDi-uED7a5v-mtB20tDlk>fyFf`cwj@QQa|Wk9};F9)4vu%6IFG zf=<4}sL@(gyg;P1ndPKT2a;wvarc>G+beh~VgMy#Iz;`I%89aqcFrrX!VE8ju3Zw># zA2Oi1lzLCaEQPnau&^HR(=e(^ z+gN5N8lS=u3NqZP3elazYG*fx=UtMlS+Zb4%k0^an{T{+^X8*d*Z2A>SFWA1V|iWO ztiXf=@`pv9wpc9KPEViq2%ymnGhz4c=e=H^AMLRJ{OHg@kH_zyP?BhmEZ=<5i_FfJ z>C@X{qMp0)oDJh>GtC&X{`>@sT#*haUSPB0t zeJ+fqcMN^L8{SBtH}o;Q1G{xAxU=jYGT#>>NpuF%fhejrM&>6*-LlForgUxv%8~?B zwqSLaEG~qJjSvS~V()tF$y$uv7;vCCPreNG!>F}`54;YC*A9+*?RKwYXt1ogX+d){ zGb>R!y?H_Nf#&kEW-zTP0e`$9IkYNy&J^BYG?W zDsO5+^C*_Pz9pO+Cdv;qNEHZz2Z0f{=dcESr;P*gENxUn`)gEYzp&14Z zSmQcXDhvO#Dl7$d^9B)U z#}&}PU+6A^Kx^T39HZwg09c(CD*$$_CJco~5-0Yp1rtRS-kd zg1Ml~67u`pb|Zuwr{|4y;jEb5R%WMxr^qNeW@#YcG&U~-IfjL>q>3$NtPg0-bg@TM zCRBwPBL`@!uIhrzDja$PM9<`Gv;#s5w3|vm`^@xRw4T#KT1V4*8r%c57LL`j9HfOZ zQLBGkXP`NTp#??*W2})jX|*g3fetc^M$iDW0OM9WI$?pu?bLIcYHKTZ3smjs-vCpgN>Y0;{? zaC}Flo-2Zs>Jxcg!!kMXdnsA<=A= zboFPIHnns{$LqshpN|%RU~-w=%o-p8&VY7JwBE?cbAZOevKl>VUmdN%FC5CZicV93 z+gzmc^X2UL^Q_jkySJ4>rgCRhxVcy~fYv#l61#1JUqgEUsI3F^!~)60GYQsHYSYr1 zJtm|;@(mLKXec&S6hm6C1x1qG1IkJmlVETF!NqDECOv=_V9;8$0*6XMbH$9rAPJOV zOb!4HX33;ww2);Pj^=^T>@w(Ei?uXg&^ErKh-$YhZMu-{0x8vb51u#yJgky{SX6Xt@Fn=M`wKqHaRi z^3%F$ey!7NFT!-*YhxYOYwI?>c-F3R8z^#@9qCxHWApl^Hy74SDTUAwM?7x5NsW)kvY0@5ksMt`)l#k00_;^34AB8>^v4`y zbSTXD@GR|6=z!5!f(8mN8{+XG2mE}D#q&GbVWdzPUqwcfR#59<9I;^$1Z68BG{8MZf>nuNIEmc*D>?(4-D$J@ZZ1 ztV_2}+Bv1!^bvgsXszwjcTXz7s}LnKCU-PP%RRcCBlNHmd?ja_vGAH1`or-0n$~5! zaM6d07vHwLLofpNH}Bjx;h#5s(Omq+$J75pp9{cs_ewu{+chcHY?J+eeH0i95)GY& z(K6PFx)+VK0~WqC79OM8ey!AUtbbI|)c|uRM`}H^;(LXeh#`)LEe3>J9>>kn89PcV zREW1Y!ZfR(&ta)3h6x!(j6KKP7;aoNqo&tWSSFedmUonvRJf`eHa*nSk=)oGnzo?% z&{=kG_k_sonzGuW+Q@%D*!hEv6TyZLkL>N8(Rr;r_}oTwx4HvZyaV2=og1rg>YY4q zHoGh{oIbxZQ5j!cRou3*vt>zhP$;nr*3xjqTUqICu3UO)aPszpM?UN}Z+s50*LKe6 z-K*@#gLsGN=M_kIc!k8Wv{4--;wobgi4%PCT0&DC%CmCD;+zhK4gR?~c$EF#r49D5swLbYDMy*C(Ztpb2 zyXMdrtVr1JWLjr1Gk@Xm`>lhIp$GK1Ohu->EjDy*Sy9mad8fQv{*}dUtFT*jTG?H| zYwca^-uQ~XzM)SopaEP;jaYY3G?h`FnrFZ`#dc{TGlK!uVw>IT54lbflMIV~Qw*{9 z4pD@d91=?|vFFl4E>kEISBCws1_=M7VucFR0h?qeeoVv2S?c0aG(f9tZ6x*^$?}<) zAC{^wjTHU4@@s9#m6}-9Uo|o13TeNt{Bu#HwB8J;&UGNUt`ksZx#!aVxb)Kh00X7< z(mnWsOO>)RxU50qiK_~` zfzxc2Hp}9(QT5&RiHS=ml0TH*)D4r}o8$pf8ag2>Jb67sn@CCCl*i*OeNZMCf1tm6 z(2Ah)QMOA2w@u<5NcaN5DhCh z&Mh1yG1e?`3l4^`3n!K{<3Zvh%*F}XJi+i`i6gGV&Zd^!_Rgp8+_ps7fQ^hA2(a7=X5$VsO@1*7Q;8+7|rM`s8!Ay49Z#gb#&Hj{N@{js{8$vy_gbF52b>5 zT*Jc}M@GO%ZAp-0)S*s{l@Li8LwsPzVIqk$pU3K-lwW?l_t&S^9{p_ZK{Q{6mdlq7 z+>R+`x4r{|Ty1?8(%9&GL`m-TT?mwYz@#%D;BL4hnC- z1vp;a&B1Zwif6vD^@fv&B4V*ns$iRODb=Q3u6i&MbG~nsAOEP>mP8(!23(u}1*0=3 z$r%pwVEs^m|D%Qo(g(4^f*Ox0%oRI1yNqT`bkMp`PIGj5i zHVSXp%wp8~=PmuXVj<;1x~Aa&WZ&!P|f)F}$^yO}A}WyEI?uczUqORQNyr0TI; z2+fT&8ucAkLV?J(mJPP0zAWrfvr;xZ(ims z&;`!vy}FsB8B-Y$4R)3_Ypiu9b5X3kw9p7SQLAI2z;gx7M$v4K{>PlC)h+N43G|#r z(1`xB)?jlrgG6%3S#`i0uI1=&5+8e`k+KGN84_vXrDw6Gkf(rQtpS9(o9;I1~?Sx!Q-CPV9OwHpeHnitg+vOrVP*xOk;(P;2%p*dJXR7!dM_Fkacr%KcCk9>!A@(~D33l{qFO=^ zPys_@NV`;2${;yL4xtlRWydNyya$_pXWHyy$Lwtytx+iAEgr%1MCG40ZkSzNeWGvU z3Zx_U%cli>FPfWH`aZaaaDPs7^`V7@;|;}yyZ$-kpKKCb zKK~@I`!=JSW%b5lfz>Zx+f(9yX2r6l?xH7}dv2I4I6gb1Y_93J_R`+g_8m{1vlTGO z2Y)avah+g5y#O|~v~4vCdeosB*TWUdch#e(qcXJh7}3+6<5=UYp7d6?ORROzdAws% zROE{5t2x*7eA!|PrKKdy7f<+Yk*4jzYo3tDq|7D2%%g$QVrN9=+@mi%fAqjF{efS~ zx20cw;(k!VM4xyy{TL{@-@knM!fy^9{Dy6j-9z%(tKJ39XThZ3q|4;LzPkz>83KRt z{6>COS?fcx!%ifpZNO_UG!|7kiYF)^Xe<^WHXi`=am8?&#c8$}#G+L!()$?!X*g(j z!fPV}{*XDGWOsTOE$>~md{(pBvROXzrsQ%-$3XeolBvrVtz0nIx8RUA%ot z$BH=%5|!NKi&rjaiTLa+W6-##)Yl22NawlDB`jwZH9S&}gzDI$6_<3taLdg3^SYWW z7Dp}ToZh`-+cn@P-P>BcwBRYw={}Ob1+Gv5c;~nvYK#@r_ROue24;3uT-pz4NLz~P zr)`~FXpzP>wYAll%sV?d>!fL$HecOQ(Aj;~qPde}CKI#N#XH)fjm6M0^Wr%z9ua*$ z^z~Qpj;5**tU+Rn4aqKlV=3ZEZYA+mM8X1!&pxpEEch>I%P=xAf7?2{K^{tfF?%cX zo58Zo-`3gm%-LIkd*b{Z^1py_$NY(4@+s;Rn2LU`YHy#nV@IBxi4n?b)cBw=X-w^> z3GQN&Dv@c1WK$tBeek;iz2G%t@R=U{u7Iy$GO=3L;cTq=WUS(8%ZfQmaRGBwteDBP z|2qpipcWCdVP;f?kySqRouwTmzbk8|xnho#-$z*+sF2HQQNqqFRvbh79RX@7>|13} z!^RAup%=eLJQ$C@{o-64zIYnO0M(vb_FcRIYIHsDekXl^>f^o)$>cUFh9g0VIEJOM zxC76vR0Ip94l)|i3XoWwkc(nVgXFXMaI}|1pIX}}zxnL#^4GVW_>pDjA;3Sg=bi1) z-FS*JnoBKT$feF8-2*kkg4o36y&XYtzr5ZIepPDu2rPT`u|M1fw6{M2%33dt{qeGA zH|Cme$)G41-hGa{u1nugYic%i^xW~M_fHOcpL>7H zY2<%NJq_P+5Z|Rao!031B(oI-bP((?xg7Eib#ojr7YFw-a<9LP%<6pO8eTynea1~H! zjj@kC>McGZ!4Owez{k<#=D?A@K92Vz@e~N49MF+kIv`<)Uf^LOtS=N_hot2e47n?6B961WqG6M}P#$nCuIyP>bjKY< z%X+F7xqz1us%tw-z)M5gZJ3D#B4VQL{7}iJ63_S> z#>>A6m5p~gu~#T~6AXYiv4<#Q^cC2;6YBSYu|(z&|785JVhvHTA|a(Rm&_0}v;jJo z46AOeNW;t}Rd_qp5K=q_f;7v1(K>h8L-qW;rs^4{xcqWlGq1V2%M`z*$ksADUUB>S z+g$}(Kz=?aJ+U^!~?f*yHcfdzgW&gi>-+S|>w>Q0J`lKf_nVIxXfRKa`dT60{2_PL| zXkr5urKl)T5gT?aD7snuT2L3a;Ln1)xVyHs7a()_-}~N72+00)KmY$fFz?;^%6+$- zbI&>769Z*&=?HR_*glK7a&$buXKoKElE}L~AsJqgKU5P(FP2Kt>A9d{{)Kxr*@7n3 z1v(-?mv&@d2GXwVL+Kuy>A-2c3`wM#O$4gJKqV6TgxlkNDK@RXep=ykg~}XxX_&4J zmnO3Ndc&nvfx^c_v_tLSEk=XU!s8GP6uz4CbxqEk0Ec`A(>nj4L0PM^q(LcaA10Id1)q5Mpm{izktGVY2Q2Q*gQ*eJRBACr@puIbLIEL@7DPWm zjku>lcqhI;$s6>={lta0XyS>feU>+wg*6a=TgdV8SP7NI;H4T8kewi2ZsJsyKaS%; z;sXT7P3s%Lq8I`ZsuTP?D{`?0p>G*Nj%v{AB_o@h2R&;uI_84kDJ2!8iU{(6(UE2|vUSj0y=3{EPz<3MEAZkh4?@ z-}u~5geN5)?UET^(Mg$TyH4l@-XwIC1kaixiL}410I|9?8aO_!p4Hbli-VRA!v8_#;~WRI1yY20!=v6?X8MN?3Zmg^1^!cmM}mWf2H#pUM_M2ST>zjS z{Qe8iCfOTAofg0o0R{?YAoqc#xc_go)X4~&` z0@ru0ER4rW%N@18Hu(Ae>YSeNB8%V0-zi?j;{K{A69Jq2>txg#-bq;I|8C!nK(}n zyH_vOCP*VpL^&`hDAAMswTM3r*c@Tg6sIXcfNg>y-b_4v3)rTZo}wjO+R(#{4@@-T zkCk9<&_7_7z_Wvi8LZV-qkmUxwGzFgXw}MMi5?v*X^zF3!S7}-%aE$MaE}!Oy$jsTzR>bSvL0Td++;NVs(S)dH55%@kQ}9 zC6b&R$u4(6flxDj9-LF@ZezX+W#!?k=jO0_^u44tt1`zGQCZEaA9!H3)uJi}Coj&I zxbW;l5SbHc@Ueci6yXI$l@ljmV`)W|D!_$|qywF&CONJ1(w<8lLHq8d9V3?74ZIy( zxr>}SD=)ocDHw4f|8m$~J-mC-aP*16Za1u4-LYhGJHU&ngO7i-dY!@U;Mdq3YucAA z0S{cr)sQ*rPA~X_C50G888F~QV%`c z_X4;U3_0`YBYm4*z$tX;a-trS+WXMYXC4J|bUL@9A{Q>W|J&~mUQvEK`ti{-ryd5% zs&e#gPDMq|Kz@bbeNX}7W?XcSdJ+1V?M>C9tVx?-FE}x2Q|-X-+XGI(-c6HGR;qRr z<2+wsPl|swDaHH)_h=cuk4~_54+yw9WO?vdflmkUNCHFa?10A9=U@nWiX_|&4LD~oIt&J{VgAvV4G-hI#pqgGW-vSqTyMOA{?^xV zXUBdqu|GIqe8~iC)FR?rh!WUtV)HQ|q)h{PbGihv?SMkuCq{n3h?`nsxpqfR4E>M} zz;zE_X5h_o2?ek;|GJo<5eSx{NlTr$pJ9?9>3G4va`nAm>yuP(DYul~0kR zHfJB@;anW`_dSJ!;OFz(S59T0m2q$4`E(<7gnErSO1)40o%$#BDfK1w72!c$G*Qr3 zL#}}J5lvDT=LRMm4T=UNC5dW?rw78K3Ys^JNNkfO5zqSqM{Ukf*ie#2=^%oV5Sc&( z8#!}AO`8)1T&Mu%5Z5c1EOo&eU^HXmPFf@CED?oO%%#!fg7}F9$}VB%fCx+-s)kWK zG)X2O#i=o)2Gl_2&$M4#E4vOtwpB>|Bxz-yq#st5{-?!Q>L@(G*198G`hylksi z?Nj7RIhZ}X?~uAQPefLxcyR$w0~ljS=AUV)}eG5SO1d|eseqLIbM-1TxU zEtAXmIH%|vWy^KP3rg911?^WpQiR^t08XQjav&F~IC!Z+2b8I`BbAb30E8=xJgy#( zv42x$Op{HbHsNJ0nBEN``ms8qxjEnENpAGphYlatomjdb!WL&kQ`xTNtFvrvb%PDQ z!Yqd~w)SoGIeHuY<4?&@MaQs?LSEhMt8)4Cq#Mfe4(1yDqZ>vhLJ?kV@)lzb!ywOc z&@|(*bIQ$yYK>f(XE8`Q15`0`MnXf4TBDONN>FIZ&v%R*1;XX!VE}HK*mRAlM^*GZN`LxS7LC}Tp=s~i2@Nv2#zU{1ib`}XIQdz67W%>n10p53?ab~WbNn>tsHZds}vbw53O<>=-m>M_qWDs~HH zTzh)(KWA;Bv1KNl)nY4XP~wc{IYP$mdz=kVjZrLZ8@&>|)w9P{TVQPJTs3+~w|2~f zb;>=8z?@)!6oh(m$L6`@j`*Le;qX`uey~;3nhk|#c8*>(d9Wj|Q7AGeeM4961EUp7 z8FTBUiqTItq@OpP)sSx+HfxpWw?o9t7(|VuCQwtT+0;DhO6pFspA#$;T-Aj{WzJAq zLopE~)1ky5Dstj~g3&S2y~JaI$b|$QPf=x)78Epnq*OwXh9x4bIRpYa7MSS}o_5WE z)!|P_ZXqDTi2EW!U1GY82N%!@qU=yfNGE8wBy?;f4`&*6a62#?40*X+Bh%0@!os*| zNsDoVTGt4rv!o#xgn+e~EqXZvBmqTv;S4CRSIDdk18J*+wwBZ?FJl?iTQsK(x?DE1 zngO)OP~_)z@VT0+&-@IZNHsIZXFWdSue0)xp#oTiPTv*}Z`@Jt88!Ty8mU~$I6TbI z2L?~MZnVZ7kb|9lr`4$fPQ?<1Xbon63m|56D;NWKjpn2>gOiQH*=@$F~Vxs zSpv|}e>?!{|1Q6)CtR9JGRevH=e#T5>0Lf3Ma|naxn4qrOT+jvy259Y{ndc_VnKA# z)c>Xc*bb=Da1Wx0H*catFQL-1n;L33o&y$9>je*j4^h9P-l9Ijl-OCI0d7zTYA&+l z*Y6}zYof%~zv&oRLGG+Fo_tUy{=zWL7Ioxp)bf0vzI~=G-RIqy= zz2En$pjwwiNkO%)6!=L2$H|kV!Y86`9h>&OO!iZpg4AdPk$;JN52hUnUjjs5F(AE! zvJpm4EGqEq=kwwW;xr~Opfte-2?)MnL~;t#XUgEXs+P5t_}IFp65ThdwPjP2Z~#{= z2l}VHHTAiTU)9v7nxE{x`)x3!YFw~#O)ELB1v6SlHEn7k2PRxOzisK>q2zc=>R9{o zMSGjuS1h`<@CEeg(t;|dqI3L?F~=TUeynYNW%Dgd@p0(hrE^xaH}74vyuJC>Ma2H< zECq=#aHEL1$eYr}?&8DaXNSE@rsPAvt=Hy<`BRpR-gV!u(e&5XzZB?uUC;!J1zx&7 z`Q5Fzes>O2Bx85v##B7ev7vmRA|FviQcYup2%D&wYDvOmDp?DkPBo>P*wcP@s@75O zNY%Ri1wq(r$}_>glfT!XaQQlzB?e2 zCx#EB!DujhD(FGA)>+X^!jqaqyC((UQoWj`+)}@NNvl6 zR^A2V`@5fg_SsYw>hf1>PpH)=ApRp~ZM7ft1Z%ZVgX{3IS1#|>)&^1c)7n~5rh=pt z3-No)aJvVo0;-Pe)*3xDK{gH2n8J%fj~6pPl-MIVkHHl1L}DdAPs~Gjb)P3dJdfcV zp~KQX4_Ar+INR6REdhJ<2WpniW!WVH;E z8#X_3aO2kfzw?H{C96y8fxI=tYjGKz`w&5A?e|(B?7^Bd`ez|RnS%icMF|7t1Hv3q zh{u(nK0|HEVc<@4&PhSvv_e2(q7t8I@wxMP`T1-iB@%(3>|cz_$3Y+ zZkRIXW;qzY>)5efH~tZREaQh&qrZqB=%?+kZre6v<~BOJXYrEZ?TgW?2bPu>84UOu zl`AbC7A_P&=1qepuDoV;-?5#$j=ggudJY6ufOl~^>Y1@^+pF8R5w!8MV> zh*J`DAVCz@*f^%@O?0CMqKSCyD>#kJ3)}Jz-B2^N$W1fP=^!Wd4ZlW`JfbY-^@DGe z{^J;T-`~nop~Cmj3;f51_OPYcS7a%IyWiC-OscTI%G0Fq{u7j~-TpqBwAr76%EMPBf_D|%LupDifIOO`dql`u{(^jd|*IYIx^%=U!>7yBr-47Ol zc@Jn!Ci>ADbj>qLFvIO&puv=9jiZ;)&On>b;5C`#dU^<0@WPiP(ba}A<8PkSpi%+a zuF+J9eWX?@_Ia|e+i(sog7@IoB19zDpEA&J)RQqF%{UUl?MJ$YnW!*;6O%Vjp1gS@ z{quNek)I`m?`CX zY04@_DTGP(Byqi&6pxsmOXAXZPF}x$GMcnWw5yep={8DLU_QQe0I&AHJg|tf>`8mX zGV>X`S#a*%(a_T{GX}gj;}Ozea?>R861C*4G@- zhW-T8O%{g`xo3(k--|pwtyrawaCHlinyNY~P&b4|2Fu!9_TYU?{>(HYQztLlM zXS)^7Ef4Mk`Lm6@GxyC4;pdyO_@!Q1uE8m_&sNyK2phNMsG?S%)U#IQ1G+-<&|!sK zz~#=71{$lB*%K}h1_9BRE&e7vp@xZHHjd^nj~&9H1fTFQ6ne)3%!tj~?n1{vp#^;k z&fqY}XWmIY?M72w=qnc}go9mRp9|<*cJsh1dyk{KIEaWj&(GgPXKMwPM)$JG*_y&p8DY%xvJzCY}QIyR;rbx zo&}!+Ij4|uDzG5AP9|HIlr_Eex=jAsTQWQ{KmXxNh2qN}lx*MkD%JOWD)(nUYGvGy zpGjoM1Q(*sKXMBFk6^7{F&yQ6FIDj0gLipF7Lt5xG=2+C%T%hA4t|Eu zAI5e8fs~@M{0ThOkRAFeVEW%SNqDs_(u55s)(=!sOsnQjFo#fc;#avQa*2G9EjZ;<2+8&q=@BuQPKx z5AmlgC|eT|E)b+;WD{4y8O1$w4hnwzh&?+X)*(i+2TN=YDquvgzsIkQ516u010XTu zNsgGj$MC<9ful*$5V?wk4f@EKEMbp0!ubw!ugd~p9w<25P^VC9T#@@TaTmLwYe7L`ijHUhI!FC)hA$^^2PjE)Wk8#F5X zI08b260F_26PnnTsJ+w$S6D7>DN-}cW?_ph1H&A4G@>hHXet!F4=&~}=FBWy0N z*o2uY0D@tUr2?Jilz@@j!n5;b8VE;sU$L&^mPlA*ER;Z+b*&k+AK5LJhsV*Yb2_;I z9cCDS>zZ(Tq~^x$m?&;oIA&3)!r}mcI9h02<@gk44GmIt~kvezZgb zd?f|MH5&m|C$yapw>TY*{c20kZQ8#t$bU5|I2n5 z`P}r}VY68|i(i_7EJx380lvoG z7aGu~&9fOLje8d(QOs*WA2vSw{BLN6&*sg$o#Um9gyCe&?epdV9k9)xzmMY?8ed1b z54XwJ=#z|&%)s|A6?B1rYYSkGQuNb}DGh?`2z)v+atYYtufKB^7(D69mYjy+%{4_G z=(>r3U9qynU0Ut_Z7+DY#+>XJvC_`ZPyGp4fKu=281L3x?45F`$Zwo^be>qk3>Z;e z%J8eNz$E*qUb6Yo-qVd~(%(FGHR;K{X2~>oK2^jrpAE zv+>v8!AHQwbwIEX7PO$_d@M?wB*HWq4U&S%*M_TPQpf#DaA)DZzv0vwPz_%)+S_Eyj-?UB` zGhQS69XBN61n5y45|PzRS^;$>6d_(g3jj$m2r0kbIWdt#d`BMGL>Plj2ejajo8PcO z8#fqP-HaJJ)~J8hZWudO9}hylq=bjO;kV3A1yWP$1aT#Kx3F(~wr0{Fg%}A( zdI4z`wG90PWU}A1j?u|XU4V}ezke@ze<1G!a@j?`e}WoD@RNSin^hCrQ9!iciG`_P zzTz=)wBWZ05LI_#zKE$@OepYTS&|w0^^e~rwJD+sTKdEjQW^(r(!Z(k%c|9XyD%Ls zS83o?(4?wKpMO(};41|2mA?B9Um=LE1oCqyrUYv^s@O1^zH4o{32a!$+aH?4qWoq zduTWM>gBF`zZ?R>hkJiG*1K;#V3eV(*(1hwPM`4fU(zytPMp^ylpJ$Ydd!(x2{r%^ zbOAOIl7T>G!x{5#IyQi56rCaMRE)4BA`AUjH~~G19{>IC=_n3;haPPOTD*9DeKlxH z-Nn55d-OO^rS77m-o7`DdB(msysRC zbP4)u1AzWRUH}zq*IrX7R1-<5M=*>1mFQ()_G-vQy@r$r4alafZ_DNya&gaR6 zf`p?Vz=P=B>v1L!m}jD`kiiRgvC;G{9+%Mp^La(DTGB;VesMRWq0bBkkiGAVOC~D! zFPqXj41^v#04#Tc({J3f_R87X8f8OkqO~=aH=?d?=!nI2tM0yM&9&1e)wh(iH<#rO zud5&0v8ZPCeXy_KmDT${1@eF1b;;B5Q0~$@%5Oe$JNn{Ii3NSVdi!+4P<35HJl2@g z*wN9LbM1;%+ovw5t&f%s5)-zaZ+{?SZxXAT1mQo66Ce>RNrWU?DhnUI zAx@ta7ktaIW;_9NCIfu!m#Y7;7j3@(`HuTKoFgOy@x^>#j@0j>6WU8IGv@p9InlG8$3E~Z0(A*-Lpql>2xaE>8+2n zH_w{0aWG1u8UMKPXV4+iJwjhoVm>!awNsO*1=K3)O6n%!ZzJd@o)hqY%+zuC7}O@r z5{{@{6Dvk87EgrY33Ht0h#{ARsP33?7fb|0L~EOLOOlI^5qtrB89Y&@i-qETN{f%8 z?j^2}AXS7~q$^MZjA0njIOaSxczWL3=(c&~&b+!C-`CZp{x;HNFPk>4%*A*3SZVn@ zblcmdb-MR&tjk;dsapLncf;Yb&Z3fuB}JWOha24gQma4p)E}-GSCqFPuV`Gw;d+!) zS4xTpeP#1N7o(k4W;c!W`#N}6nW@YdBsVFodk1s@)z*{fMRWkYcyjC3lb{lGg36PR zU1WgFs+YWV&|4fSyC-jq66ze4C7wgz=0l#+Qpb$$h3H@2gKtUdfpSdVJ!KI%p*?3z zPW!~xI~w%g$mQSY8}0x{K)AnXohT$tYPq9P|FvBHwZ8F=78tCDiZMC&mgbat4!)JT zAI&=CDXDbKUf4auQCjK=dT_?QIb#$M-x{x-1&uuKcKakd(*p1gSF_@q9MhRreZi_ph)aweN8Rc zIeJuQG;o>IxnxXaj)vAX#w>JTR(^v|d!(UO&AKglQq3j9Ee;u)YEOVo1!i**S{ae8 zGIo3nmvtB{?!sj>fX4&zil7C)=TF1~{#bnE1sJaqsu9maM+6LPt+0o=fLcMkdicD= zzXDBGBoZJaL-3?7AhWPWt;Z{)A6bUpwwBFrzN?bS9=*`PSneHh_2I(4=kmwH zsgu2)38`DgKk{NIT-i0Q0!(3`IC2e22S2-b7G}cyxrm>U`g`WoIeo75t5y0#=X+ z4#q(u0VCU9K@qu;n4}O3aRD1ffSn}TyCSd<*<=>LkBMRhCPL`uCBrMD)v=%Qf!)aB zVWKt$n;OGagSCr$z`ysR?{2GYFq&D`Z;X~reKgt9l6>@ed@7Nvg4y!gNqhgg{5GIs z3_Xi|4a3nkWHEW5-LUSv-#xyuvU8X(r+sk&9@yXSRkHznXGWE-j!#pU%rS%wYJSc3 z6@T43aW7s6_33qxAT_5IWfKHigjjA%+(c`gjALL-Q&j|o(#H{aO|yvBly)g2DB9xQ zCOVcO`{@Eu3=vg`jTF-YwbY~nI`!epu0FhFOL0eK#OpRFK|)V6tz$!enNep{XaOd& zDuxW5|nhM~>yJ>Fv| z*P5!8SA*Qj`h+oF-qtj|y__A{pe|7YmIX`xupoDd#*k%nL%`fT$Pg&VVJwoVdK1q= z27vr9t+B-e;gA!W0ECcMJX=j0vKtr~h!+4pLw8kUI`eq}C)|T+tF>^Y)+pr{*O zJQ?61L;8a-I73{*Pf$e&vK-M~F^iycT7gnE!Ny2-Zhd`jHf@cD?fLokaP*5}F$Eqh z36Ydg3Hs3;x)+_i)9mxuimL4$veXdt;R~SkrH4V;F}Uc;Wr{0#1IPW0 zydx3~hoWeTBQM|X$j<{`U6^nmb2B=%x2>6`<%|xlfA4kRz85&|-27>(X4#*{KE5!p z?OWjbcH6e^MEnxTS==4ZV`22CoP|Si+|%r&h`yM#s$z=P`gujIVF{9qQ~bPxs2s;U%19f5Mz- z)_HdYnY*U%33$NDz`*;azCnN1JJmAYgu(%u_DPaH^!f*Y9-<#O}NGCH3wut&Th zi$u;iguFbP%MK-S0l&aUkUm8X@H;{@h#RQE znA$OVVu4?13VUL_(HA3U`og>m_sVcN;-(UGp&lr>*Gl8M_4M_eI3b}@StrgV(#dmS zSbO3`Uk}+K9RMO11UL?$cnDcTFH87SgCd#+dzUhfJ1@Rt&+mPVw;h7w-qXE)6 zvv4||omk8Xv2mt%%QMfQAD@9}&%|{&xMkf$Fb5L2Hxfj9AOv$JLW&f5W{c8vXbj03 zbI7C=tKpCZC!RM}15}Kn{GttP9J5TOsJNAkml`hP94{dl#QwsRkEJdfH>&Cz2*0Ts zHSV&@9$p8(sUC>~<3?701J^waE*nTHr5;{azEZ2!t}I{oFfPJrSC(D&@MUEywcNPN z=o16!Ca#}%)ZuSkO|?+ts2P}hpeSM6SJ>ed1QUrkFcX|Tjevk~j**KJT=j?>@WSSC zT5HyXm(GE)xY&1v`7@MOT@j?}BDPD32#scdgA7I11qbrv2CGVuqxWtYWu>1g_`Z?n zYsVAZRP;9j%PPRBK5=_3ALAR($dxMj1er{3lXuGBS6CFCa=FYdn;^^5s|DbbF7<K-!j}4CKp$084w|1zSKMPRxLLb1-CP z0|^P2;E7SNIl=OrDUt~B0XP-7fqNmkmHp)&5VLUStgmY>-}O}teT+VieYI-nBo3Cjq;4%G}^0bPvlf+D(p$Du&<5-GZhJQswu7fnt*?+8K|w8OLiO)Zd2A+!-~ zOd(ygecNL|1*(Da(6;ud?p&Fm9VP9-6a6~y1H6l(B^OKG5wvgEU=ODLiz?tMm3$5a zGvz8>Nz1U-@<5=xby!OY8hft9D11qL;eNSa8W+JJXz!GzalrcLC7vJ}5kX%jK@cTG z%%C6IjqMM?-k>dLLwG_y#aZCL2)wNr#WVRm7Ow9&fjRbVnD97eky2lLhz-r2JYTo;_z96;Tlf$M|wn2O-sAnL|t3fBrn4uh9Snd<}1^KsqJ zz;yvZ_HR9_l>Afh+h?T81+PQ{Q4lWT>(a$y>LxD0d&bQX7p!LSsMm|ucL`b$`=|XS z@PhLN7ci&S0HZDuH_>y~Ke`_O2S2Xs9KU}3_|A17*A72(&&Z1034tw~QUyI59QF>@{g{P2iBwR@(%Enomm}-b2j?>p~b$e z!sueq1fUe42bV+&v;0dA0sHKoff75E)9{HQvt|uRHEZl8q|IjF^>A-mPD}74aL*Fl ziRt(RvB5VcfDU*#B7WuRf{q?CcV?fh!Of(|#TZ=7r$o#!tSWp2blXPuda@ZB^YKbns?YJMo*kSw%50^}xO<}koBF;&HLLR#f#t8aNgb(9wxYZg zT`sj}gVyq}j1IzEXr~6f++YFb0=3HpnlFpU9D$-;lH=>q`>HIdY;umqs8q|FA8Xg}8fj+kZ8je}!+_S{Jt zxlf<^{i`8^yhS60m>?+(gPHf&OL(36gEGOsUzFn{&$E57Q$9?$5}!5r>j_kzPJnrg zo%bU&tguPw(HXe&ARRn0hC)P=pAsxJSPEgH>D&(!dBKvPBzc-ru&-m9uDktIvb`Hn zq|#YT-O-d#kLs7l3%|Zvx>p1eW@^v$dfY+gy)%NYDpQ-pRdXm6_h$ib!Hws(5tuGZ zk6NQ4;l<2K+KMJY^!)@NFaiI{=OxaF1@arOEkZhvDHt41t~ch-7fiNuo5J}%FXg!NTGNPtw*J3{bLG+ zZnyjy$Uqxpo{{fX-C)Sd%gZvXjo`msdX>C&+_+Y`O1}$erE{m}RafWj(ktbgckI|K zSK>sC?ACqzZk3UOPrvcT)1)BLf)ng!gni6`QmGnh7&VfbPR*y*;K6x;PdMtoJQHk4 z5!EgdADA`}>rOjB2YVom3zEZ#UIchuI3e*w4;vV}Xd*qVWljtJk23W$=6EbV3Q4cG zl$;hM=PW+P=83h*fAG3+Laz^uT{JP31m~pp@T{2CE5K5V{06#9NTaFK6e%YmN8%Ch zEX95$A-H;jgnba`@e!Cj0v{k4L6MEg3Lv<@5hf6#WFfkAGWbH638aN4N@O(BF;V)J z-ZU0@^Q=LZNkBGaJ!7=cGN0ZrV}qNv%zmhQR?MORG{X$Psi6JC#aDNB&d|e=K!J{% zob6FYLwKlUJ!rXhumZPj4(&)S~YpNC3?pI@|IgTOR^!;J};%aL=Ij zHG2WrQ538UjcGEOn-^`o6<$-ES6t8(*MQz+o$1F1eebfGo0BaiKMUPSijUA6*e;W2 z$rCFJ{n}>J(4_D{j+D&$fSpyu%{jq_SHZ%<}*f(6);A8OBE z7^9&`G!ZW;1m0X6iADV-{X%_z#O!0lxfsXd>5$j#4S9otGzCwy#gUkx+FEQjnv9%- z_>1>R0#PE#@^Yg0V|>+;Xv7JGlhGU{P)r#%y9VGp2T6uGA@2MN`{rI4lxD2nh00UqpUOeS7$GU<76S0&p7wwf?~!|P9*{bsX& zE76%G<;b2pV4zS5g40J_PHUD%?Y3xKE|1IUaUF0vbvEK?#G!e#P;IuF4N8;8<|T!BDN>wVpsL17T6dGqbgCUp4q}Cg~+)V!_v(n{q%B3=yKIC!oYQ0WxHtTt< z+TidUb-6TlXDH-!sJEDvPA4fQUGH>iN<$%sQ{6^1h9RLyAwx5e#Dpg#Pd$6!0AlVR zjhkvVX_nFRK^3SRIUOBC?@pf%@<9HY`RE1o!aP!9&TL$w?>J5C3@VjDqf((VNXuD3 zT0zC;1ua%RZyB5A76Vqlm7JV_5uO5y?L(Aq$ur=G7>)BR7K3){Fu#8o`876Z4dLpr z!Qz!bMy^p<)E0w>1a)e&&Z4$*rYd`Ow!JE{J?zd3@g|K&nH9qITYQXz!4IfwbF zZXbFP-HQweNj$b--vje@&6~Fi!0QHgjvu`J?Wa~OUAp2au(f?|OLghgIvMb^CVrMC zT3Zv`&xuy}Q`BR7-|kkG%v{nu2|X5!jt8y(3g;Q*dbQSQ&kH2NzHF^ZqBI%odEwfs z?AAbCq^Kd-YM8lWX6i|(36I;c;hLf#e39IAo)nBZaRS{ZEA1?8E<=x9qiriJL62>L z{xizbwzg8{dweA1xW50}K}?aWF(2x{^mq_+qr<5Q)KThhcm`*I4ER9}m_|{2Gz1c4 zGRE^-z#KD|km)xP5KllnvC$B5>dyH>MqkLs`FOm_Ma>CdP&3{jo)AMECiKk-T+Qgy zMUCRc`i;1BcwsaPb3G>e6A`i(m^ea$q*sW{;LxORazRK5@u;*nDbG_@JdYbxm&W z%cgtV#BR7U>Utz$MlZTc-!V6S7LTAi!PrE}F=K`ML8+91x-$1Ym8pD-$*Qljcn8(p zTvU!ew;FA_I)Is0v%abJree&O{PnN9Z@dwGSr31jwQil)TO9G0gg376`-+QwUs-A| zyUb$^)TD}e@`1>mWtQtujE1{DXvgw9T&89%NKVQ%FEH^6&2%E zv!*lBu@=i2b66(xI^+2s<8+{LfqN`C?s3IrK8;DvO#>R>OkIlaT8i%q??vALP3qDy zKe1?IYZcwCO8E}^zi`=|%0!_*(r-l)?1M7T@)IKmMS#D{_D0_X@wO9!65uyq$spF?VB+!0C$w906K~nN=NB=uI{Ym=g6n{Ur7DJ+0L}Jgfs!Ns9sMfl{wE(PO58ST;#f z)Aq(8GY6GBD)o$N5D%W0vaJekULLC(#!5r^phJbD)LF2uwR)dHxJZYR`Q=4ygUChj zdO$AnfvQ;{6s_mssiABRo=KpB5Bs?#=h4;61I1a6K-9A`#|7pq7~{SEh!Edi5#!Mu ziJZSgDyQMpzX4Vv_kBx0{I&ZMSp?GDXB8@9<$!*C<9MiB8fy#eNo@&&kB~;>l->+3ySI*Lhd4Ghg(0S zYeZ2LGh1C7^aZ-=yx`ER!YpMDxKg9aDwNAN?Xs0>3wP~;m*j^B*T$rqclonMMypU> zL483%J^gS|WOCP{n#8=B722}Fxdt=)Gd!P5S~V!(lbvvlnf7T#omFL0+dSP_!BA6q zokeZdx~=-f*@0}}TeQ`(z9Ys}yB}h#Nfw{_^4KvXaum)Eet< zMQI&)k=(fueZIJ+cJq>CWges8 zW0|Znz(in52pU_Q_@}C7h#QH_<`Z7L%tX~*VygPGr3BUPdUq!PlvZ0YI%_r)l>+(C z56kV+Q8@54AL$rZ75eNsX=!_@bnSC7a0kwT2hrYFOIqgb+Bxr`tkD%(?aOLuyci{rJXL)lb-f-WySMLF=gEtWUdIPWDFbT}Z1w?zcbMIlobVM8373zQZs0^fC zGipKq+a)|fI-w`l1HbxWjQA=;Q$NuQa~|I^>88#irZ@AVJK+xpsuop&hEc!zq7SEE z4tx%O9=EJ!+JY!bqFV9AH#`HhQ_)`Lp03~e;{6!MY_ea@l^~i!#CM@Eh3Z7Kr(cT$ z4;~sG3CCvq3W@{7m+=9S5chH1#M29;E)LT)Fq}F8dW$$YdO^<7i}dO)(Sd^?a0Ia? zO&O>8FI-+#M(>3EZt8fMuK~ zXgU&I1OhokiI6U|lTc3Hs)5>48L=AtPdX^fx}i%~mA#3+1lrfVBWHJ%YL{y_4Y}r# zC$~3VBa^I<$oqaxM+F>R7-`GJKP47n%7)2Ou}&zCxkDuV54~zr%z*7rWS1mX&wR`oJS9FUG zPK!bi^F->${qDhAf&7-iwS1{WsbCeUn=O`*4ah=O%iA#ZKQYrp*U6xwSgBOWMs|`* zf>Pi(x*Cn^*V_{I^?YPck1}bAO^`tYh&-Qo1Ytuw@rs!i+7o{lG7thrN#l{pAJ37? z|0uV~=ceuo#9lv3)g}XQ!dx+J&PS8_UV^o~sa^?n1pPGWqd7S7k8+`GvKCOU$Aq#% z+MJIkpRN_k_NMj7kRXT5PW$NKsLWnFhzpJzOq7pk+7eylL^UHB-ZVEK9ojN=)w;(g z!gUpWPlvXS1PuD&FKeD#TFy0=R%^1=*1G0db0pNHrkZi7tJh38ygoS!HpI{T*s{Ph z_)qBjNq4-loQ;IMf%-`me$9FE(ENThJprLQB4B8W5SK72#31Q5f|trPV6hAGMxui$ zV#jgj967v#75T}E@r z;>&e8g6*ARrdNpMr_1CQwELYVQ<#+bWfdV8*XeGrC4Ldaf3@x1XQ&~iv0=Q!>)?Z( z@IOY9M5yDiTkIyambcm*POFvIs!ce-A*2c+P}?i!I&5O@1qE$ZyQ#Om8}y>u%&(i) zwvHSYbLLsH+~vU=TmEB29P@&_iY0Wo$4I{Wi|=p(wHkFosZ1fUOh}*hx5QD*SgMOqk_5My5p{+o zA>v)RAGAcY5y5L06xE@L6BH3`TOxqE5-F$817<>IIbH`pcdu(|{PPwh?$`MP0H63He zHJ2*rhZePsE&@uEi`igvn4626=vs--nQd3eCw#Nx_ksA7_VvRrcZ`@jF1+Z`uAZ-^ z)Wr69{b0{+0PL9i+U|+L>S;4BU%Dgy>eTj}$}G1zzhZ8aR(HvMhBoIY?D_2UVk0ot zpSKo_6=e2A_b^nF*}n3bFex1p@kk5;@-1HYOoHMnOWMe66zBd#KXkD$%(>`AaO(Gb z=JSVT3@rA?b-=(+3duc#qU~#;cIpggIARAQE2cJ?%R+;OCr8eFVjj&*dT`;>lMIT= zoF(Iz?%6-5`_clb&y?*?l(yu|-!tbtKL#fssF$k(4yaN9~_rE4NKcOZPz%b zRO86DvE@zI74Dq1Vn}iKQ!~JVCl+5~w=8TQ^5C+$_sm~moKilatTAN28h&!V!2_L^ z@roFtQR;lpyMD5rz+^wR*QU#%ar zzWw)^)qij1(ev&IQ2Npt8shr%9!8k|iHZk45$j6}rj7_I7yiyQL=+;?lCcqrVlp3i zIFp$XK>3O7f#460&<$C53dtfq$`T>6jFNtXQwYx{xTlTc(H}~O2;f>Y0#Bot!#>NA zx*?m79NE0|;X9w!mx09~3uR58Yh>9Yn=7jx)W}U5qfh_fq$5BID$yyl9i1B9REPHI zJujL2?m3K30q*dUnO6#`l^_Wo8~vfE80j$p#e|uML9!|9jQa@s`N;KOjjp*7Bsb6A z`67@Wv7kP4iCWUL?x6+jm$tN)vGxHhwFeA!tokLikxo@7?#|~kG zE+*&-{?lPdB@GUT0VWOLASs-p@F8iPEqesm!5CnFL^jt96a(bHPzjP|r_+p*u7U!1 zN!Z~CJ5m!;cO_%PhQ*TN5l-k{1YT}iURk-k4VBLl)`cr@-}@P_3k3vQfD(ti@a-@U zE#g>3Jp=_xFeC7Yf-H}TA(Amb7z0s>68C|SIDb?Cf#CEL=pa0ouun$(sd|4T;)l=q zfz;fWL&Eem!nWF`=M5?XLhO@vou zU6Igfkycz+Lab5z;zoswNkjzrBoUGvj}s$K4u&MYwCgoY%(nLudifI0jKD=bvUBNPRjf)O=l{r52=007PrgGJ=BHl23_GYizoTUnu)jJK* z+pHC*ZvFc$d+>KEMSoZtP%3j9$Byf8YB`Hm!#EnNvTDZ%Xy!_p)B{JvJMQ(ANLx#l z&WD`2@g<`tJ62aYv+wL^+w{ByN(!z|E^3pnu%_kTNda?+Jyzm8ye-9Jm$s%Cy)quw|EUkM>eecFQ4nKX(jrXWtXRD%RHF8@# zGzI?osQR8v`WsAjgrvtp#R;&`oiEWi;F#2{scT2GR-Gi@<;s`n&5}H@74UG{Sk|Ir z3tYWFQ&4-`XdWMB+FRXuEra0DT?O3T3|T?m3erAr`acTTcET=Ds_y zi6i@eXNy+77h9HP$+9F@xyX`igJs#6Vr;;eX1eL7n@)g$=p;ZwPk=zU5K;&!dY-#w-%u2RwxZHj3`~Bkw*6!@=?Ci|!%$qlF-upaI z6WM{D(kdBY5lRFpuAIJ3MICZ4hPU2> zqe)9idMC+ZL5CD*tn_WHwpgmy`6>+o#JW#NvKahEOVT97-3JWxpei4{=Bq-%w2D){ zs?}SXI?gw3+0w)oG;N`uTZnVP2iWebEH19}wHu9JFb|rnN z>*+0tz6)tIHDfJ8dkV1Q|B{>R3U|Ygc3%Yn_zD~VUjYHIhMskNX(Y7t`0=Go>(b-k zb=n=d2XX%tD5D?hia(CKgQ*jbaS%0vnnX2IbE$>Ya#Nd_@&<}LQI7%0zZFWEY39u77f}@L$ zsA3L)?f?>N3TWIS9@tGzlqZG()`D$nzZ%@7#dm*ivhgqLk|S=g5gxxA z9tX|Z?8sO^pI5!|vO-Ni0$068XTxvRx%88O4QZ^#2)tAQmZ>Y@2rx(-Y2m;~xRpht zWLF5jd+7AhM_3?!%(@?BefAl9_LPWOrjG8u2>*z_XJ&Ne7VvfU2;lr-0|SiWOPmPGhk8#Rf!?e~VsM;Fl=FeOt7ufWi<8O-lb zKe74XTrluGLwzMT>o%AQPmdmT9!xrWXXTg$(bI6{fH7blUDnYXOr`Zp$IVy{gYaXe zzNm7z=`5(7ckhNLW3)j`vHu{tznGHi1TQ~iha?B+{D{r=du>>`lZnSOc%h3J8NoRn zPrO5!{3d?d!S$=poc?0Zo-a1sZKkT{p)2EIsT=o8v_m7=;hh5$wE*-mP&)8D-+L~FjIvy&mWTJz&Zyy|C za&jGW=A<)Q*?SIFMTU8crqAXCKKdA%o5yzATa5dk%b{<&?gCg%Kw2TR#R|A9R{eOr zl^o!gR{b;_MhAH1)?seTcMo-BJoMe_nbO}Zm_9fUWWTyMvRk?N#4-94gVkz?I&eZ- zhmX-+lMc;x~%Y-3xxx=lMVHj_j=}v42cqZAt1zP$byS z2!7fO#8aD{_-f0e3Mn5|N|jTUR9~tF(dD6tGLNRlBkDYZnoZ587E#Nnm54%bL=<{E zqS1S){nRn)A{r4`^y4H)pWT41*GxTs0TZA2!!C&ue*oix{mKvD_ZkBKt&9Q|&Kog)MWkAKq7!fTs<;DFA zEJEXNJHdO%?y-iwm2qCojVxv~Cf?t6_;4Eo54YWae;a74$h&qauc9IkJeeD!e+uP- zC-W-67JTn8PS~>GFk908N^V6(E?13@zxfS1#`w@oM87Vh^B6?ExH#Mq-?cwa1kD&9 zkQKZ{P>B#pG0g#=u*nfuWfvasbNc|h=Yx+9k2tVmVe^cI%kLd_;J4@RpL%HoXS0Zv zhThZQ&ucb*z8R#PTYmBI&W)RnjhVi2?L_MgjXq8D$NS4>mluguhU8vPO*jSFQs%|? z-q>~M{lK{88#XQ<7kGaEp_gjQ*;JiDndEDnv-rbJXMuXu)`uV2I%?&#iD9QzuN|zv z|GYETX;A4>`qXs1=1f(^cvP}zj}RwyK@ec#G8HR}m*FgS(2J!O#D^~lM86hv$OTpMcWucX-vORWV(!IBB9z%> zbkZl^6T~L!WR;BN0ejNyV!G#o1JOjqa;6nhNls=3pPD397hsG&v(j75G657+Xw!^N z-qnR`kLxYy;|~*hn<}nGPduQRfUzh5{?j^hl&e^`8@+ZnVls7r!qC`MboYN;Yuzs3 z#5dr_yL2e$8@6t>KXXAg{1 zU@y8r&xaSlRWLr-6#W;1BeCFb1~4b}$-*m9#n%(w1o>AvLW8 zVXd7F+Zif4gWeyBFf8%65&4GRPXZu39a7qSO@z|xSxS?yr73L3i7Lr|kLIEp>K?@D zQydn{^KJq~{p*K-U>y5T56;9y8U}BhYrNRar~yNOVjm5RrYrTodL=M8IUk;8cpdu4 z;W5L8Y5m$^!%+C29&n;xyFaWwFCkUv1C8E#GAwKZg-=@bnh$h|IsNMEKnP$HABg&k zkfH9M{eI={ZTN0OgHG2F0!~n7E|->p9Bdp8FP2Hm&G1e5u@>EI_|;5UvjDjnAAelj zmrEaNDMi_Js3mnO0Afxc(__9M1vico?0_0;XE7)s77U|1#~u@KdoiIEh%LrvF%}V! z7C?Ypjl7q)GIXe^2{%Nz2~adG9ocUZZ{a8P8!07vx-#^~$T@{fqctfqJUXdDCYLFs zI!}heq}9k2oSc!7RN#SKw?+2dwo8)g8R{GJp^<+515MuyTds9Z?>W|7TSi~a2e0!f zA2w8s&Q^oga0r`7g~D_ZON(_htrOF%R>JT+YZsfvdS1@5$&U2ojLjN+=}PXO@&^2X|yUgF$EZj$n3aN#@WYpWD|QxjVLR5Jj}C z4son4*xE%&W2*`m*(f0*P)CB`+tq0kZlz6jFP4M`$X+|{?lGYRV%1G}uL*Im0lVNL zorv2rf&V5MyErPZUib2h-+Zr@4;j+GX`VCX2GzGy3|?24wDMVE4i+A~X-aM?O)VPn zsnx}?uB514-*2HVWg5QuUyIi7xci-J7ZyEbf^RzXTFvhK+zqe1!i9nOmF_Zk@b?*~ zw$$;mFOSTBtN-l!FW05GcXjYlM5K2$}DXvGpBKE zuDSp6#Z@ruGKT~cC)9eiJ`ncRHW6P}71PSo(#oe*6b|t_`~(b3w;g@| z6d?F=(V2_@&3PD@R>aHDjDU9&>@kc;+7x840G$GboRnpvJGI5y=nhT|78o5|zt=?R zMnk%2SBaK(&wzK&7dv!$vbDbxIdapv#c=ct*cMznzdj?Qe*W5E8>A_bgkhtPXtneh zTAN}3$P|sjC*H2c18CxXmepq9y(08u!|?Luwl2^ZA-L~vYvr=7pKm-4 zvY&`hLXX3HKTPW<@I};@5|Rq)M6CJ=pgp+h>s>0{F8F7yu$zOQO56vwYW5ra1 zP!e7gFEkU}c@j0MfY?A@D+DjY%O`gps}SileGTH=*6&(##i`{Qov0%EU{@vB-wl9& zc^J3yhJ;5+a6=O4|H;F^FrewAIz>Ng-MU%&6!poDD+yI1{ejFiRn$Pd=Nwabk5>bO z$Nh`?;V$B*FcEO#@g1)eOJSS&_}5r{tNQKz+d8=#*xp@wrIEU^NvVx)PWU#cv!Jg- zy3D2Xx21RXp(e`)Jzd!NL*y%1sW`q(|{rrM)N0OOGHq<_HX+VC<&8gBCf@Y?Nj$kQ1X zEi&lfAENK92Xof1hkM{JrN_Q#d$?3+a>S6csv$#EFalzU4JMVRrAFrr3Z2#e`8Y1%Xp}t**kD27h|~19-I0lJmRk#gaR}*u3=P(WL(*rt6jd+%6IcDfWSn&|f6{ z=`jW<-}Qa688sx+iW(3_z@JbA+mzVXCjJn94o1wWADt4-IQr?b&41pj62@RCG1b6{ zl0_&E9?`p!+aD%}Mj$91xqKJA9^nxegkmgdAHdTn2DPCmwy!Y|wc$9b`B&Ny z^_hQ*FcEhnLQ|5yM_9dpOO1P9XP;A}E*I|6gf{q(XFq#s$<~|3?7{1|o05UzrM8!L zJ@IyIR8nCK6@aREIJW{E3UdKCgbbO=?C7CEJH|pI--`5aLf<{3r7)eS;s_^BRwcm~KY1Abd6!PL>+4Mif%XZt@Y#-y6P|fnr+Zt-XxuS!qa)mX9zrWR zKFqF;*M*><3#CpVmm&)5@d@0P(d6~TH$m-jFsk^s;pggf@FPizBu^@R5q=b-@&BZZ z!1bb3nuij1gu1Fk&qWo69|<>J6sRDYhn@i0o$Vt;z9_sU^8HQoD)}~8J|ysvoj`CD zUJ)Rcx04OP>>?=%dO_^tNBM--B@ANpKB5yo70*<$UJ`w`$2$>$4YL?e7=yRRm{F>; zJ7X;`3SRHzBR6;TR&)Xhb0+QUibp3Z0f#Lk!Pln78^DUM-T+Z0!~nxyO($^NV~(OC z2fXbq>sR^JD=HRkIeO+y)Q;o0aFL_^xTA<3_U)dM67YM;kzJ2{8+{zz80jdYV(;QG zeXGMeVR&7@8i~`;CXNl010GkWDwjQQ-!-+R%90uy+u7;&2 zW>jxVm1fAS#_S@eQliQk!`qtc%c~p5gaQ*P3R4sxKXnHFJvlYmYNS=(Avs3ou{o#i zYA)Ugk2Jk-eC?o6iFl$?f|B2IcJZQNI2jJ2|P*sh_$s`g;Tu%eO8OJ?Rjei}yK z%55mfkyyqss)pHf<8tX0sO>hP^+XUOmQVsR3DG?#>+FEwj?7535doEh46RpbqecJ z<6oG7(%egKu(o)J7E(rSSYSv~UB}LSM}ozjgDqz$n@f#x1wo93P0%8V&ja?j_6Tus zZiow$IB$FfgEdmIXS|8<_0KUnKOF*13Y|^?kLVPw3LQLxFF+Hyh}!Ck0aZN%i-vfE z&EIcYxlTXio~Q2_qStL0@mX;l9gYF~!~1W3TF5urT3q)-(Ve&XrY)H|u}`L^9R1TY z)fLBeqWOQ2`gy653H8H0Q3V9F3;_$!S6o4c7)DzqG97%x{gvYh+(KeSjW$wE!hChr z^V#bX$rg!1DY<@KqEw(D4)lnL8lH7JhZ#)WDtrJ8JfPQEQY~g@XMLle{qsz^VxD#S zea>M_SLIi%(1=nzcE2-0FIG#L3H>6hlAxy_`-JhXXYbUc0h9>M?>DG+M97H{hz{+$ zuy5Z5Zsh0pM?>fmBcX)=Ci4XA3>xv>eWCk5N8xZ6mM*4aMxy1ycnx;mZm>&mUw7Mm zUWTZ==+Laz+6sRNfEqXr9z_4AftmpPp|urIpbuC9`ao*VB@qQft>M;4D}zs}WHp)fb=XKz!Mc z#EBEi8PWQeH%7wiUf|wQWoD}0;a*tBgg3t2-b#Enf%6#NsS|H5;oUicG~(9prxV^! z{mZg^A^0o}McWuCxHJu6E0kLnOK|lHUdP3XCSJt%YVJgIXesf(Vj-9}8Ztq|+<9Xm ziP0pXu@8B-6VKHWAVkt5l9M!Qm~Tkc>y%b-g9*{b=%3lymI4#(PbWujj z`092|PfYc8st1xfdtA_dOQMF~5Q!h;Zp7@A^QmfT5ETI;pam(wiRgT9&>sv16Tlp> z4Ez^(9b5)i0i+e^^I@bk7r{w0a#-4pJu$moq5ugKr)DA{4OT$#8-X{SkAdsBW80a< zF0|C*gR~U@BjTNnLXNDHIH|_i?Raq!I~EJ;Tazy~?cu#p#Kz&NE(oyr$6Xxo#GXT| zKE0JOVSptUPcW7|tUCk4ECswl23vQT1d%G>4Oj~ml^7@T27#5_AtGWz7+KJz1SaA05QSa*6k-yL1a8WK%4A}Ri+T}x#$hOO;%f1Jp8%JK zeL$kDIKO}ms~3t1J{7yP$vzr1q@YR_^DbSo575I>jK)&MsPw#nn+r1Y+ZQTE3PBJ3 zHpp_Mr2AdP7OrJTeM?K*l)tS?nScAzq4ZB;9S_Ea{RNH2=+NlzOrr`%z6@wiCl)0u zQ+SEYl4@0$EDp0)FXMfUGKoYrm`-a(9$faN@c1B!37qZL975qK)JsjXewhE zn&r8a!h)jA75U}Uciy4TF182d^f2I?+GTk#L@aOgNqL~xnjIFC(r!+XNyQe03H~f;u(Bx@y=|}~S<%O;;FuDxYM@n_ zEi)L^*6XiX8zgp}B_%VpT9NExUUgQfO3N@(uJ7xNa|19vbOIO-+8ID=s#N9@ zZyLw)Qd%V8vfWY?4w37?mnpDM_Q%^7sDhO}dF| zT%PUft6`)gz5aDu)lOcLtTR?|tk;kbZcM3^C>(arT#g%&o)BiMRN}l8M^TPRH*n_6 zJu^R=o7bmzjVN<&`xRN5NmH_*A5G_HCnskW(9FSMMs1o*Dlw*}N~B7?GF2?Mpiic% zp{0F&uAHD<yL>9Tk zqSh)TQj66fW}Zw`SmwNg{LYCenFa`bG*?b@!>@?!n^-ZZ`b*y1I}jxAXXU8p0bEJcG##ti8565H5_ znq5DE2f=N*0tCZ<)kOfQZ)WOfrRRSfBK> z2E*<`hmm0nmfm5I@2_&%!JsbgbM)%N@x{Lm!w=p?SN_vl)0 zrb)?3O}6}!0Yj(FsXR2syLjUCq4mAJX=;X6TZ_E|dkqf^jq4o5{BorcRM1*#2KMGc zb@x<+5goh1H0z2GD}wlTG|zikvRLFh#R*vXhPJWVxXrW9An4o)AlHcNk6*cLqMlfY zY!-Y1zW3RN4WEHx&;W{YC_49Mr00cdwN0%CD`(X@QpplO)iG4CY>t~se?X$wzqFp5 z&%rC_m?oDw5{?6^bFCXbgYWft+wX3H3mqM-hWK4=>QJrEQKngl9^e7@K4n?=t`g#;0+SI*_!1jMp9tJIK z|9>hEjX2W(v+~fLgOybeR74!UV zV&@X~AM4(h>XS|;7syV*Gdi*&RNw&8I;}O)&|Z{OAr7g00~&2!%rM$CeiOV<-ed;V^7P zXLU;pP=~m18*B<(&q8E{zVq6%ah@`!HEh&G+I$9i9g+#!8$$@`*njDjaV4&pdfZ`8|Em0v3jvcMTCAG!Wp92 z2uj6-v2)ZY>cKZqdh82Wc#5S!+&^wR7W$(I!RG@GMJdvQ!Zhwh_yJ15&OsGJbxP}$ z5qV=iEJk&&Rrk7S9Pt{0#9BHGUZ=gQs@Qw59sN*0^Vwrrq1CugLh6cZg8qb}Ggx$l zHJ(tdqg1#ZMRMrZfo`BG2!1JWMEntkz!(e9;vY@UFyM}FU5HF}+-rH3iZo#W6fTrmLR=Js+f_v`6g2=FY!YHiG9yhT0~%1I zib}M#5fQ)26m|kv0sPLm^aImw>~OK0rO@(gsqz=)@F!sFKpndToXNDjU}?&XQ1Mp- z>Y5a#IK-e10c@Ei%n@|22_?#m6$1BDQ38He68ff<)NpDlvAXO8B=mQNjb0;1oTZ>K zX~5tRHm48ceHWAUB6fG>B9_bnV!GxNJZ@t@q#FCprcV6*X(q9B|9+|1q_CP8`PQwB z4467*ep%ON&TYOeS=nF!{mztWb5^XFGi^#iv&FLJ`N_Gtlb>HRjj0(~RT^rjLhK|g z1%DYhu{%Ujaj}!5x6#~_Md>V93)nVL4BsoO>D8iA17KfJ%!?<#G+E4hTjVO57G>5q zEpDpM6tQ>t`*Mu9k0(&Ypmlc*>j2_2-A0 z9)KUd^cej3__RmAV?^C?u$XSV8saUv9<==?{Ah!t%Ye;DaQnKjslqx%M=O?YvLS^o zJfW(Cka`wP2WafX?;SZ3k8HxpV$tlNuEY~S@W_$)op3BJ=I>REX*bqo^-<;22x=~t z#b7BN#*x=_%6~hhzG(T~c|lOd<4M@KOiS2tA&Q0mB9oQndPay^5$&X|V+u-vXO$J1 zG~vS9$?QfqWmYJmfy`ikF-%@H*#Q1Rwht?+^7E_m*&XBW+Pz`-UE}*LoZ8H4>$Gh1 z)P?;zs9VLdA?$r28e+mI%l4nU;E6aHdMOE&_U~Ux0_uF6ePmM2;wrnnYH^Kh+xySG z#M|xsOV7Q(O?J!JL>XruH3;=uHO(8fag~QI7hGy>z(s2kHu1@A5M+FIG^R~fY;mV# z40hDD-5!*L3tv2PVev5Vt(wR&;e8tAExG?O1^JmS1 z^I=By3lO3B* z({2Z<-@mL@TZED@KS-(;8IjO;T`r8v-s?Xr zJA-<=1C4`!r|2V?kt0g|&(HXJ#`FGvzvSnhembJu{&sfu+uOVMr~d!D{v_h^*&Mi4 z9M+YIKa`+5L7`cE7Wyt^w>RceUE>x4sMIFBPef=uDtbWYj{%MeY2ArIcMcg`MaGG?PAv8eV8gY(@c4p0RUSCZdIF!@@*VJ!y87;8^o;sgl!5xb9h{p zt!iA=0awUZi&b$$^i%16zK*LB;%(1tS(K(TP1!#49&w%W_My@G-g7fx*t>7m;G*qQ zOu95KT;++j&}wWR8vXGGb=F(!%SnfnH#Z&ZwWWZch~4Oq@dWe^&+Glm+3iy_qHQyw zGBXFx8PXicr>W|Zv-YKfr>AUZ%j5e%f)20?&7uRT$=HuEhu2qvm?dBrRK`1zrn#89 z63>Yk%zp~-MR-GobQzu_7`-?u2pDG^mYOrfFh>G-dy*k{1si`p=DVUCc!_Bw7W8mz z;mM;FreF;RJ7(?MH)}!ez_I&gdGhGRXaMhN?(Ty}tr=AwvmP`QR)7!=!A~vP z9JRWlNUsG=){JkXOOuSg+B_$%jFJ^8ZMy22Kc}Gv49oGOCFpxwGH|<>7WehI;5*^% zg+9)@q_0c5@4`NfWqtjueVV`Sn-!hfxYaPiM8DO4pfX_hR7np=>x*tsD6l~xHXEGA zqLAc>GQeoAiEDkCRmwA=+F7-;-mJ)(9-(w2WPNk#`+T*l?S=4?C)m$({(Qe&@lap( z0L}K!zDL%B83Z2>^(4^g#IGDUJDC;y5!^x;Xo^wSA}klin8o0R273%O$!jNC6|q$T z9@emk55x5>@QdiD^(~Js0}p0L8>a3SSGLrPTE|C!>kdUK z%`Qf*k$TgZP^1-w#RKx_@Yu`}E+j2VgMF(eps`%2R)F%PRIF5Pc8REx!pPt5KLZb8 zk1r?hZmG8|do;Xx%8(hh`j+dhV9KF2jH1|OwmCfdG?&d~&Q<1?m1L?^t*OolRW`GW zKdkViyg>w50wx~j?TV5oA!MlTQ(@j%wi}_XKHS0$WTc;m3L%(j==#9#8 z%lVbkfUzLGFnQ*_(jv%Jk0^ANOCDUaQ&R3K2r(PXQzSuGeigHrXT?*+#di9+>~zpk zQd^9M>e$8V92m@{K2d=Q)%I%Cl&>7C<~ z9FXF3)K-~n&&*(p3vTd=!UeAANP3K`pekRbh<*a@b$Y8jN;yooEVjb=wk$JPnbW7Z z#{Bi4SReoVa)XcGC#M*2d`6S^NH~**B|xy+wlvRf?hSl9%iO<-q=d zqIyJ|s-84D4Q8=ogS5(nqK`;I9hKs1({n1`L{zCZbVgZ~>8oWexqW3LblWupvVB9v zx&6+c_w);T;H5(Q>RKOjo2laH$qD1&<0I$nL%b5bIL|X{-`Ih<3os#u9b8Qy!+P{! zMImU=n>|&V)#@Cr1%8Ud8CKAw)fZKO8OEgO(!TROS7{TbyU{SMbmrBz|HYpJhSfBT zh3~jLeTz%+te3F`zUQm$#DU?TVJRw^@Q;RDYwi>oIh~Owv2Gd0^-4!4;@HRS^63QN zP#xKn)(My}qjd`Sp;ob3p@V-^=(I{ES)pTC)WInq`TjE-Fmg(I)!HBTWOK4YZwxpV3F?Bhe;w4cegX zG_W_pFx`fQocIPwhNIJPqF6Hg*yl|kOm&kR;diTXfV=ddwK<0+H`KNv=jRDn0q zqyLSvJB6}C4>p49x9F5uR((Z6aT%zbI?59Bve}m!hI(kYyH|ktt|}K(FY^;8!o*h! zNrkC?Ml9qN)a;dj0I&fJ%~fQj4aGq^uF0#jD~WnKmIh*t4zx5U@Wr%`sLj}k^K*J@ zz~v4E+^zt-E-*L{7#wjgII;l!v1=F94_Ub2NTl!4MT?I<`1MhC-OJ;k5(vB*9!TcQ3f_i#Bj4og%zGK;yUjC*XH3SO7>FTFHx#0`&X(D9i+_foj#o z_KT}n+5CB94_sKX=>2;qM0p&IJ_C9!%X-&%?|JDycx`{nl#-Rk+niGt><8leUb+Xx zPhHT0`ponj6nlWsMIF``CSZ-|V9<9d=Kw3f9?5xAO!*zHK4Z$|0jzc8VFW!SD~o6; zRxGjtrZ?OIe*sdk97y557uK(TVLixIu!_t)_o6d3KxVbd(?+KCIRk%A8;OExKsMmr zh3>pelth|Q5VCXnssSyfV;^$5?4g1TdI^xe{0hqHmsef}2iK1uw|@P&@zIA<@-njQ z$u))nBo~F%T73ro-HHMuaejuHWP4UdUW(qT)S6kP!)){>C!4iOYXW{4Px+}J(N>M` z+IxVASJLUOd=kQ%M<%Q!gq>ue85LckqrW(x#{4g>cG*N~qwOZ~@%`gBj32)Nc%>P= z(xk3c>z1aZr1i>>8Z-M0yW4wLq0uNYmK#qk9E6S%qw!Sn_Thap`@aVN{@QCmPOnIW zI%OcvX?*k-eG-=}PRh*CYLmGneO|9zpR)L_f>;KN>Vzy`D^~h)djTzwzlL)I-*(40 z6=V=Epn7Wszjb(#Lo}fgIfywg@8rlOppz99rB;sF@)bP&l!G3+Vptp~Y%5xIHiJBctxaRM$}&^zLJ@ z&#}#`NUEL)LKk=If(z{z6<_h-MP>h9X7C;WTZ7S`>@(=+3!^tS0su}k`ge*JjpSV7 zBHB{s=oQ&9wHzGGc7rc{ed!{QPkTK5{#yOv-asMEXNUkOq=QAUpFIjS%yn0x5+JIQ z%Wm%o)h6I+OQ|GkA>wLxB~U!P@>H@s2(nH+kFl{)`=eTtRY4lrZpDB&1Tq`ZE3#fv zVLm^AF$vK{KJn~_Io*7+E)Ws-ZC30L7!BnLG%y7XkHi_f+ibu*Yfm=2(u+{G6C_JE zZJo%#qx|v>+a}O=HZzuFR?%zVC+pRSArJxefPrs44w7^VG)U+Lhtv8>Wn8s#E^SX? z70G)2ptcPvT7lB3`d7U7q+2d?&flL_B9*bF$`NZmgqPq;@Y08C)_e#uK|hfB;b*s) zVCeN`7cP!{7~NMqch$PFqUbC9yp`+6_I~>~tyL+c=`DwBeNdLws+qLY$|_PbncB}c zs2DkZ?SMY#9tTFXT%?oBTMk%JI<87Fw?v`{)qc88PU9*l27E(az9z9i^xA*MM}gSf zYNXOJIu5`)YfcyXT>cCRFtP#0g=P}9)2O8p#c%>Y?asjXB#5vuxBvKuZtM|lAPek+r{E{iVH=h7{Pmz>spuqr2#+fo_b={kvYTL|+%6g| zteGGdQ3UW9Vu;Qs&70gJD>ekeSQ|vy{$AD*?-FhF`(HbIP>+ z?wui%EmUNGzu3Q?Pp>J19yU0V-^gT5eVJp4w+mA zxGX1z;~xEQ@`6)mQKU|pLVc6MT=(_@qid%F{lV9d-3HG-nyP#f{_e|7xNkhiJOT>Ag9o-WFTG>wfw$f~ux#_P*_-d- zEc14)8Q;D=dwcu%HM{1`Sq{W|egM@cpTj)~EQ?%gg^#VS7+wMKxBSc z!4=raq81Uwjrz!^N51l zY5ismpR?<>cl&y;zd32-qI*_6@0kp)(U-VOcklQkJ*uQ&*Bj%9-~acG!xjU6(UIPd zg63a_!0*w7GZ8E?2PRi7KK>kdYS`p{`H#-u+_7rp_+bM+-E@{7c-L#M#pP^aUhp%5 zaRF|*t7*7tztESsF-_?d*U65hNZ8Gc+5p*zh>(p4&=j@d4NFm|Y67q^Bw+;aXEJ9a zg8oZwF$1T(Wr8| z?tG(PNrp$sBx!Xl?X{Lpgg+KkSF_)OVst8a`hptf(E98_ft7W(?DBMnL8{e{=$$vH z)a%fI3)NgWG@@kb#@UA^j@C(j82earbpe-zA8h}&p!x$aWm?|AeuZ*#RZ8`1M~|Kv z?8*u$67u!unQugW_%@@{)ekW7HdHR^3k<$~1;&hUU&q4Arc{MSMD?ybVMW%r`?6KgBNfSeF6E4vj61P_DGwQMB zTMQ=#mw_?rJBx}_6U}xq5K)a5>^gAt*u8t^F9>GK*ij%6;v{qbIrM7AnBEGUxYfS-fdGdzVfB4gf^$j^HASo`AI(q|V z%FI2x&%eK`%x_Vt(Q3~nYu+)SfAj4Ap?Mpcp59cmecM}Sw)v81vD9ufq!~2KT&p#5 z5oE6N%w2KYhxJ4AJZTb{%&d^`v!;djY+Re7MWj!$?$HPDy+bBi5DbMXT3U9^7-?Bht`i9SKrWV z=TkIl%am#`jNZ~Tc z3kY8x4HPFaK(sOjpeM!%{&JvXL@Je0r3kLw|Jl-IKRk16YPy&eNflh{9Iz1_cn#bu z)9BN^8m+{Tui*@KbFMB2h?HUpC&K!_qFF_rRd7R!)1_4WDRZz+CsVqXZP~HDIatzo z`|@p5iVW$aM26nQy|wV8+%c<9PM`X~q{`%IQ@^U3;Z|j@=DC%Px+V{k+WF|ia* zHxeB%C4|{!nPZhpptDzWhB%Vea z{eY!fZ>qBp9(?PDs_Wh-+=z1_eZtuVapodaxzqPh%nsdT)c>Eg!zgTJ{>m$Yjrpsu z3RdUw>sMZpL~Q?A)7*3G>^iSu+yAb;^k^NGNtIx%Scw3d6lZ)%K=05UblPYKcq&}w$kNg7l9 z=rUg?dh#O5WsYnFk1JhfD4aTkcytuximb5qAznwQqClsdJPv-~Bs(RYA|pR|Z9|Zl zeGUhYfLwS1Ho^-ug)6h`oYta!6tt?M3-BxGyV*kFHpm5!)S-LlcHv~p9u;JoPV}8W zCUcaN=-?0$RF}A=>tkW0rg*WssA&wi0ke??(fd;Ac1vbEu{Whdf>kP&X^Ff71QS(; z;H0&;W?HtBlr(Bv_K)bRZ?|ATNP-0BGKVZ3SBQ?knQ0XO!ccOYrnOa&w~HyRgXk6G zu}lej$vhCbom^aF+8;pN7w7bI8cyRx{{cGlUs{aXXgDb;dT;bzsZyswmo&Pho9Sj- zM-muvlEN+$c|7fz>DTNpiVo>z_Luf3`^)7H zX`*acgG%L#&o_9Zmb4@)kNp-g@r`gitZ=buN}e>;L&HxnP5YHapud(rXm}C1I6NMFGdw5id zp9Sqsw}=xFQ_Mh+4`3w;tm;V%j#I$9-A_Nlsehk0?Qz&%oG#ZhY!c^G+Er$yire+@ zkKjJ=Ex3=aO@Q?j{(uKQ2roaTeY`}<0HsW2~THYO4)HHTz#T=JNy!AVv{SIz@0yT#C$v#RkqBE?TRUx)e>@$^k24s!~ zqJ8VWKQV3EiSNmGl&}={57Yxil$26nDy>0(AQ_M|HsgipKTUpUz>Nm(=t+2qSr$DB zGTFm8Ob>yVaV(J=Hr!|xJ918d&pbCiUCL8X_ zyi+V$yA^&u^7?OnGh(Y5+#wTpu46?4E`yXHYuf>%v!f0yqS`68{F6_jn?Csjl%t7( z0>|iOAPfF6dIvlo@7M8XwNxcFBKAB_Ft-ElfEzp7=FmzvfYp>^pdi==3$39Hb{|@G zVvQYdz>$tQ>Ea*_d_+mlr?I1zTr3?f2eVCHo0dF#c5+&+e4@|hgZpgB;0Z_7fWnO% zn(FjYMGa`(E8=JXPPx7ju`DA`p_lr3j)vcxhMDBbez^E-t9{tQ8F)OCd%sqQ%pUydK`Al+coq zLfxkl8ie1L4o zaoLDri`yRF%pFF9oVM)ckQd*)=GeezuD3?*efiP2YPx%t~4S7i;Y?4`JQfYQ(X0}u+ zO_SvmNhC$r@XJQ6B7M5=4O;XvYL@~meF!pm8wzVW*sToe)Ebc-v3?koD4+zq-S1)Z z(F&?BP>w-4zlRTOfAwdY`SK41z18$eu`M{Hq1tHN zeErP>^jE9Dd3W!~KfL+!jaTL$ZLpd9c;V*2K-ymentt~a7(Ti8`U!(p4=ORM0N{qK zyC>dXiEh1sMxR1asHeqP3fv*F5lJVr~ojb1Wn)lYu5x32`{n6Id7vM*TdY~*mr2D}mQTS08t%N^c zg^P~>VorkE$%g9D7Q@qx;SmJvz^wskh|bY=!0nD67{`oifA$6Te*Ny~cVHZpM;--J znOYQe`N>8rB@1T2BwDhGC> z$;uJFJ`VCGtRzuCy-sS}9lT( zC%4Qt+b}tZD;=C{n60s)d^Bp0lO1DI(;tgn;#Q88YQtr-of$z}hPo-9xmMYvPw~6z z+*!WTn)Kmw_FdRFXLx!|sV~c2=kllMOZ%g*(!W%lVGCwBXP1SwdRcef03MBEJK;%) z@(ZQLHb7ny>Y>!KdPqq$S_0_j*TW&tMAy-qZ>6mgY#9s`@E?GEArb}(F!L6hCzys@ zM&HGaxZyHt5H*STAa;x5_)T~pOORC?O_ohuCjK0(amf7rZ{OAN=SP1$ zvo{EWzx@jsYg)X&eUd3FNoSU8`}fz%iz~E~0JX`KWzv}y+BtKy3bQ$=1<&=GXvoV? zvM|z8YySZ&-(RuoHp^gBDA!oK_rl)!gYP=?*GKn%X?)>J_}g!iU%u_h9d?DL!rTn# zW^*t@VZN&xCcTxe&<4#9zW&<>%oQ4~JO%L-88;~I3fYIBhuBCm>*28~;4)$l2pl$l z!Gbibo|^`UPg2&6x8Hqn5gWnya%2M!ODw*KS5qrvvWmGYtDjl3=9$%37ag?kx;poT zm6QDrxx|t;Y*s^Vir8eCPuWEEUtEXg3UDc~c)!jb6rXXD>r4^&stQkFK&6-oHCzlQk4bJW}a(IJRsmrhQ zW;pVDxs~bpDOMUxZ!qWOx{C7B6?|aK!aF7m-m!jCX>r4>nO;v#PO4O@b@@m6)j9xz zgPln(e?hO*8~=(u8s5~B-CUT55_15pzt&bawGY#y zeg0|d1QKmE|5a#EQHpb2{FM>(l-#B1n?K{J6@2Z(_uTHJyXeCN5yh=oIfCp^+d zLfCIJiav2LI$i4ZaH>wnI7H(|ULQV^$w&qiSv27Tm7D?ByNX?iMx!H!;|jyKEJlOD zXaS{6|HyTQPqHU^+_eAZ1||5Oz!WMTzW?*jV|I4_2BzcCLO zXzp?|9>ft5HEUIMa_wI$u4@Eac|-^CZ3Tn8V2hM0yO@K zwIv#)1Z9({*|T@=p7r27JO_$k!Hw}C1Y5^bH|XDo<{v-(%jx6uL-7Fk)1JM|w!M2I zlfZdUg#Mq89-?lHho|5v^Z;l|<+7!F<9!^)skmPkREe`D0s@JxoPHxs~IdpnC7ERM1wbJtPyQl+-9AV_Ar70GnWV^lS|vXXoTK-^=b}Hp35(to z7jXsCc%?RSACp8b#Y`|Fp_eLh44^n75si)BM^80HH^TP}Ig03=%s?FXJL&|G@t2-CND>*niCpz+$CwJ?)l z8-%BfhS3*RoGa7S>B`QncmYO7Px%oX0$+neKhmvj(F@};XfUz1seTdwx3{&vd~Euf zL!ZuU1fX%|r-#-|Klbwb!ekJ~ZivfIgmspV%0&EtVDoKo_;kb*nZ4^rME$_c6XTQE z6o*!39Qx~_w?{LPNQC(bJ_bf$wcKbETrOrWiP4hnML3Jz`UyIG zF*4YZ85}t>$X*JLq!)z4)QvT3AVxo+gmC0R{KO6FvB%Ju6nA8zJlF~Q_U+SmJvOqN z&Pp1dl|XF6UX%u~wvNfl;(b#bLjw;-yKQn5kHOgtzyXxBhi1afC0oy@XN;D*-N9*% zzFY~LTfcbG?%MqT6!|QJ-h&Nw3x@S7^VGW0FgguOqM8f)ndOUTjLk2 zbCr^0qf}xsr_gg>H^b+NfRo-j|5fzl7qH{i`SV`|9IyiJRagtpz%S3OSaA+mKnbvr z(3xAUe?}Cih=M^;N^zdZBR~A<=>CS}0x6rN-@1JHR(%#LEl4)>AN}cJxkq%Ah*KBz zcoPoIS#b`2+2e(<;8tpAsMl8``u%dOjR&9@BQb{|s~;VKwRgufI8l3|ZZGlxqLYge z8qwtDqy?pEJtzv0RRy*!#Cn28ZdEmx%a&(}nA}pvad%+P9b?b#+%)};KN zWt{D==4vbWHbbt-ISUqL?P+e_Gc)qhtT9`6y}GAk*W#_c&(gp2%a2~pE&)uRT=2Mf z!J13=-7#&`&U54LT$loKNBzdiRW+twH1S&al_9@R(YJc=Xfw{H{k8I~i+8o}d1cSm z#<@GsQayeA4ko_fdieOoC;_~Z7B;&{bddRf)qM$k8^zi8&g`Z8T4`n7vQEo~WJ|K- z+luWti5(}7bH|C}-1iANNr)lj;D!WJAmnO*aJD7Ta1|P$C6pFOxf@!V1m3ok5-60m zkZAMG%*u}Kgwnq6_x^t0msmSHv$M0av(L;t&&=~Y|1|MyL12rBHcM1iGJ#$lG`OL+ z4kDJbKYvRv&p{OL$8LGtwM8MX%SvJvN5bPOFP@mJ2)hzWgIcjz#qjGtyz2ck(z#C` znmhNQPXR+haO+^ExV^VT6F41juX0;VW~ZL)<2CuK1Ac?n7Vs2SJIwVOu7kI$jy?t& zQE~l?m7W;HN~87&pQqW$L_VxTTuV2$k?md0K`ju%2w|vid4NC@T@4})JFs>S>2pX( zqy^b0rw8!Z2criQ1SXHLAN%qlfO=S^1Bh5Ps2u#DXX@0RPH;m_qfWY&*D*A&UJnj5 z+Vt9Zxywew7uoTCMrAVdyx=jandqC=DXm^`KhGm(N?KCXnU@#f)G>cu0rs`Ff!^t% zm1;A$Qu-yWplLPpi_RgL&d$t`tUvA-t>B1;hqOX_y|hcpbuJ@(3Z>UwNVoN-AIasf7?=*A8z}FaxKP@# z61PV39-vIg`@r2@c!eWKTl}GF(mqY565$tQ=$q#4edL7X#g07oGs+KYdq*qUh;4 zJzV-crO4*=Eap)^BK&;L@||$IDeQqOMyzXc;EH(m(Gk;cJ}#@o;ueh)&3rW9g~CA@ z>JOu23Mo@M<;JE-d@6^Dht7z{{2+16M{}|^J6;7(_kJsKF7t?WM9m=W>${N1C09ey z%HlzpQB>QEb;0u1fXY`ItTWo+WxZ$Bxhv8H<4Awq@I)!CrKj#GFggMzi^UXh7z_4H zW8(%ldUOjZ25j`8#Q&pmhn_4$WM{y46tKHIPvqis0&H+jT zeK`W(QuY9wV}WWyJnU4w-%YfmLf$?-Da4!-Yzh)1JrRj^xqiwK^?$ja(s+*qaq+!& zcNlMn4u!F*8{@?tMEdP(D7fayYv$uFgbAKNn*_oIzCgmdYayoLeW&yxm&YGST03`V zUpSq8R^!v$uhDQBbokgltl_H8*R?))G)L|`a^w#_#Be+~BKMQ@jAS%iI(|mwLb9y6 zFVavK@<(EmW>ur!lf3~Ki%RurI1U}PAKQlAxuElPP5(7~Gc}2zE@21{+0S@xj|Xq@ z=U9O-X5}$U0Ez9stcC9P;k^ztKjI#hb9z!oe2M22#uFENN26zI5krW$LbJLm+1%u` zI*s5DqqG)n=Qc=}eUVq(b$iQ!oi@OTy4I3Hi_0zYc|$$^O541N9XlplIDw_rtCy6H z1~jXDa)5DO*3lS$Ij*JwoRyjMa7dRgRqC!_6>U&FJ>+A~cUnNsAZmXcs4o8m`6!lu$p=Ob>CXLBvCyV9!%F#HUikUmcQYAO>bZ4TP<9 zOfvdvSiVA9k@oxgVA9Q)fN;~$X+&&=vPu_0(M))aX2{E~f!qN8iP5^O;qZdR#=y`R z~Cl}lmm+I+Zs+rIF`ROlX%AB}qRy(R7CMIy_qR4VY{ zH$$&@c4;yNR*z)qIR__*9$`K6dY;Rpw^m92xVCugs2BjOM%4z&+d8v{crBm}%4rHA zaJ{GV(L1^hZ7=Ux(C7r#aC~?uzo35F>h3}%q`_CG7oUFNMnNgvF;n_}fUd05@;^m1 z1kn7qi9JizQXPnop)hJHUPi!DFe*7mNZ4l!_E1s++*?&ah99J1sfm70fP$|cy{G1LP{S9D%Rd0UUud_KUPoH1| zX8;ZI)Lu`E<0i-fuZg}_&*)1v>4h+|qdfD0uP_n(#HRD*x8(tq^o_+5^tYP-x?OMa z1xFd5pQCW+0S&B(ge&OjrrQcCAB@&Wv%E!2g}0(0m}0#(k#G`Z*i6Jv<3tiByJigOz~oF zBt@Ss7`B4ZkeP6ArG;TsypA)$CxK?E@p6qxwPEUPpaQS&G@Come-9<81=WU()Wlas z=zpG3YO5=0sUlpI2R5j6*D?!F7W<%={}G)m1I9-mmp*PB-X$${nkTGx7B~-IX$Boi z{&86Oqp9w&(rhqmM1_?;yYeNipvoBjOOQVOlV_yorr&2?(wdbhVGW(+^Q^3tl7`br z=H=-T&Vr(BBcm$jeh&7Om(#@>=_%FR&Sk&^EXy+wOkMaatS)e_pI~-6%~u{aGJLNd z+4mTUU4Xd!7{SZMqp7T3N(KQd$LG{>y;yQerNyur>VYqeVV=Tb*b)l6kzj=v-LP7b zJpAH;R0dXJ>^pD!!=HBS-2TPR?g?JLq3zIzr$EO^Z$o9|SNrzqT=`=+4KLBt>GX&# zla^%1ww)L*z`_?7`F-~2vg$5JOP+TH_`$pT4jkC`?#_Sg@YH3Tf4~31Pd|Nda+@|V zv-PO-+HAmjZ@mAFA9fD)?f*V}=XCXX>8aMWn}R~ut+rHkaGbr^Z5Us*;I<{TZHs#S zW0ASTPDQ9Fnoq|O4<1B)jLW$Tz&IHMCE1&z3E&kkR)drg&lX{kO%ja*0& zN)IPvdExaS?3oG@g&!Oc-6}G54&3fNFE-9~@!?oFXx0>{83k($Y#o1Wq>*J*ngW%@ zkFM~Ut>U#%p*Ls}I)A2kSfprpQO2)JXbn0AycU4Lt6|rOtbS5P;Pj%#B?>kJoGy&^ zkD7R|f3z?i>hsJNmqyfc!gVfIjEZcbpmh7)=ucrTU`23t@H!Zv^r#(HpmxBmkdkr0 zWJM-|J4hUGS#$7UP}Xb8*)z$_BsZH(>R5vU%8n)y@f>(L-M;nhN{3RXGc}l8sruG> zO>pyQXVUpTuP|H9+qP}nwkDp~wrx8T+sP9@v8|nV zYv1>++O68%`{DGdb8mm?TXpa0?thK(sW3*xydMYL%wnEf8l88wnXm4nLs1$VF1F5C=m< z^0OsOTsTCI{6`A{st_D%kTm&^5=GJIW^Y9UkVbiu{i@sYG83~Ws2;<>qZe*P#G8E- znL~<9SX5X;dKeQTtz6N(br))Mh6VdCMgMcO#W zmlgCpAM%=GCZR~HrO(EF7dpp1UIy|O*d`jiF?{_kL z1iLIm-L>4YyV1XBb&_g~0#eCdAnMD8i*VTrp|`PkKI|1gfG%-7F4~ly&yMp6J@*j^ zgf%n|udr@K609@35ia==-(d&*d}L_dE}ZIJ4*uIfC2j>*fw}99)|254Hj4T&b3Rv# z0$21kaI*T-bA#ZnQ`R-QX|8A3&U@YXWKfAy0>@^B*~B#zv2wIgjsurBM#+4jTPdC_ z2>zH!lg84RpfJejhbqpwUihLt$mrnM#k!Zwb9I)v9bL!X8q?eJcfyu>K&S8F+K3wz z&9wRHP<(CyMfQ7L{*N7ws%>_QU${8E9;Y1_51SC~FOwW|5AY0mFUQdvx0B*=RFe@5 z8`tuwWr;T)>lFQ%7KD;nSlchSy0N`u<@yHKTzdR0DGDiyDVD6d(lsUa1z(;68z8@> z3bLPtSQquUnQ!nMxj5FXSXI-#d;V&v^wf&W8PO&0s}Oh?TMy`5Ow!K#9=gNsf>B1mqqc`#*k+b^Ux~g)Sd(nm z$5~c5?)IWe*|rJdwI;g^4V#6z`I*J)kXp@d*1Ee)XS0j_>tP_1(oAz4)XHck^{Fg{ zie54eQLKMM6jii_f()4k++#RJ8v)%kOA4IUmLeUDx@D=_6YtP)UE4eUGU}LmBMu!& zT7r>6(6m8f?%+oSHAYpGAB%lSSNV9)f}ZZhSDM95%IDZIpR4m_F|>g1^ZSC13-!Ta z-q;F6=$JOw-XwGt$9C(v$8^b!qwfRI)A+&i)b!aeI;-lLE~8HoK%MCBvKUR1CY8r( z`m{Fiw=l*xz{E<02Z?w4-{XIyUQC*D)}wPoQ$Go1EL*$TMoB6D5=ANd~KUtR;v!IxSJN+jziV| zmS!+_d%q7SKA*o(Wc3?OsotPuLo|Q3lkd7rk56#)xw<@NuWR=0$Fj*tjV_0DfbnvG zyBwIM=Pwyqi-q7hJm3~_Q3PQPi0d=`%7TrQ<*K}ZdX7op#|xOXc|VtU!aK#*`rgWE zGC$RqZIx3tuxO3II@?ky=`?k#cmQ)xwDVH2P*AW~bkDdjC6o@PHM(I8eC5 z8I&o#Ev{7R3FC&q{x{q#q1_uPteoE)z%kk|3)1)+%QR81$CeQ#vJyHUzr9c(yH*S; zXHLZdSwyZ2FY-5u!p3V)G=fi)m>%RoZb#D%+YQ&%(PgdS4gXT#p({qULZMb`r%^z-PN@ZHb(2E7iv4!K0)6>CNc(zsDhH6!AvTZT6rmJPP_DWbA z<{-5uZf0^$XDPj8qJcJ-r1G=wU7Mmj%QoY9+Cm zchaL}2pl7Ue5Miam&AHWELLunG}Nr4fjwI+!$>&!F36<1!w`^^vBS#M7O*wtpkhb~ zEvWUsQ{$fY?5Z6jlTxrWIZ*40yeg~qvSdZlw3RHZ?DYe#mEFCqeAIk=soNfQ9;c^M zxx={MY5G0Nt;8gaG`^j$24K&1CQYUVIAFsI4tYsRF@FEPdGmIC~zQRn?X4RF=L} zl@4f-N7CE;^LI?Jm*dDB6YfEailXZa(=H}RB7Oo(tBBQu5Q|j`4MiDnWA=4TtMFR} zMt*{0eRU)3hU&l-s(TSv=c|cD)S3>473l@#AB`e`g_X_5Y#im(eBKSc#gnwTp&~ zlF!RU3z|d$#`ZKws~>EdQ0&?#A_%mdDaM355}(EG)PU;IQD=d;9m%u2vb%`y+?bO5_m`8 zIV$y4{W($SWX(qM%LY!3X6gqGKBN#%7!zxm^O`try(?0&7mbvBgjZq2pOqoTcsVT- z&7z#6kAgeLNQ7mu3sVjL(hw&a8f|c6pk0G8A+D9}WR#wrp%BJ4oVNaL50q?waq3Ru zjIZV!x-p53+rR10fh#AXu=$cFzYbzK`KgI{?H3}W4@@;m@x+7P@!|~z!W~E_Aq(sf z+EkvGKl!ZWHH+dca#Faj9VQk6x}J_9hib5d7S58hx&31bZCBjU==_BZ-a9(jqxo?e zp63aJgUoMKgC5w{Uik1&YM(d!xravA`p>3$!Mft4X}qm>=9kA`7KHEje0f9Y41r|` zxjx4SSs1bwYiue4z*ovXTXY$Lp+*zL`iDGXa0ABvah3sSy!4qSvL zi4oE93d9LC*i5>_a_+(tc$zzf@x10>&N0em3BhB#c6tT=^LWnn*6%L>WKwNc)t+rQ zkvX0nkc1p}+fPDKlgnqO9))~2p-lM*`z|BV$i-YEE}aSNO5b-3KN@q}DT4K_e8v@J zcLrrGHc51`i^5~-k|M!FRatDw)EcxQZ_+9#A36He4}Vxf4U7Y~&V>G!-fxDO-rHqT z49hO&!@6W1nW-*_a65r-gHijG7F%WJ&PnDs4N6qIG_BK1dj2Ij$ls2GK=nD86DlE} z)ch#Ma*jpZxhi_$I$FNdDtsm{(_*Kc?$L#rFgvNyqE_m8fvOEKtffn6<|f~ZUFvqm z)b^(V^&w#d3JKzS(pSqET;bRPbt9iW%8Mcp$(^51!Dc4_W$#ZX+`eD*3W!IIiy+2l zD?Td@N0H288#Eot5>7@&Mh!*DRkrcz+R6#ivDOeX$ z)r)yslFRGsKoOETT0CzL#$Jp0YU$Am4w@A6o}`NGmU0W;>aj3~KVNevfj`oz9VcEu zmN1ni_8b=S$d9fU$xOiXxBPV?NrQfa>+JujpvU(BTkFc>9Ve7{^%xEVZFYmkgiY&j zF)B|@7A?`Hw_iK|4j~sqdvFsUeY?8O0~PTv$~ZcgHMsBHX89__fSgS@o_2p`JIv@^ z`K)BP)XgRa|6S1?fC@WRh3PH4+TVd?V~LjU6~amUI6>4ADv_EatsJgD8`DD_XAqUO z%F6$^p%QDu9t|r5+m6z#o3+RuUS|I$>;3Wj7Z@63K<~Sn$mCiBUATtF_1hleo)I?u z2b!c*o0P!UInl@<>?5-xXl44EbtHN8Yj7r+J6whffhCiU9Q1rvT!eE6qqxD&WC{NmYTtXg0En8yr=}tO&trS7RpmF} zm4iOSkheF&p*0^;{Kzkz%|K8Q{Z5Ub0pn818f8dO2Z(;g6L=R>%s*bN?Ecy!x04*X zJ~yLj(YU3t@v#Ih+f8G6|K>o6oThpgg;KcB7u{-|Z!0-I?DD~R=h7DTUM}}~*L?x2 z#~f`_w99r|T!csB9MikdVOx{FE@#Ibd7vzPR;Uc0M@=0Z&#zhLW&yD5f8!s$-yg}D z`15IuLN;VTcpeL^5P&cy)Em1tby%qDy_X$!o4H_6GX?W0sU5{Gp(~6Tgd-2JlHS6z zq0oHM78NAiE$jba(d6!?1zqlIe{F6@c)m?u52=}_ihpo4lLROP&QO;Sy^|q?rb-fC3u?Hum6}s)Tmt{n3h{6Sd{7)xQHHS!S%gy8ZU&)D*t)a|wNOZ$`f=!i|Ni>o z!3?37a%L9klEJSXt3OyDo8)`&^$AeAA6X_>bdmEw?6{i}Yo5Di2$~{3=t~y}yxZp4 zxoj2h!xhm=u&n(4v;?VJRf(n+^c1LimCvDbfEe!M*<4ZLuIQS(aD_^ClPjaT0y2u{p+(<*hh?%h%(_ zK#dOnhyax5Z8}}xp2j=G*;58Nz;x)LbTgGUW>?McY-p>E25LQQBjC%U> zM%^=QTm=pXCbK=zY1vHA*;G3|)tJCu9-V8Dr{89Jn`!D*yp+F`t|$BthDSB>Rs2s+ zZPgOX!V$mKC-+a(zw>0(LJ;D=ruj%HIB|Rsy+T_+hf_6Qjdn-4M(g+BX!QLU&dYob zTY(fG%8A@n(HO;B4(^NR6WB5S^L;1hZ~gO@f7(dGGtW<2Ykj(DLA1sfQ%L&WP`<%{ z0Yc0O)&&#mvRFbG95)zsGQIadoZmYjTYgj_KWb;&l2R{7DSjeQr!0QTl*B?8;c7BP z720x2N={`-XZ_B*VPy(!#u6j8@Cpe)il?1c<5QdFlVbxmm!4whdzVV6-<=bm@JUPv z*na4&(xb8K}*;B3G0 z%6Yo^-@om)2Obx`rMD+hQ@DkCi#iSk>NwusJ*@e>N22Dx zonqnruw*?;pna+wO2w5>%jvD@TavZq^rY-c>HB6k+N8O+$ApOAu5)oZd-O*-2pwt^oc0$s$ehCgF^23VTTP8AltR8*&y@ zX{3Sf@nyAAuLnCzB98C!h)-v0ObGJrxV|e`eXmX}?F@SmP`Pkq)tk}a4{#7otu~VQ+i4YY*KcJ@` zf=7@mnTkFSK1|$ss=)5_=PlK_x8`Huw8yDd!aYt?fK&#)0<(F|iDfE1n>?v01h44d z2Wq#&*Oc4T9$$*Q3xl2jJBJW?`AoP)+xs`TvEV5j`ClET-h+hXJDtW*g>m$_rKTtyg+W9LQRHvN%fB< zwg}ZRZ_z`aN8%2ugfmIWXlrk?}X-m{v@I0SmU z?iT@oLMxczO-(N~wV}#1bz81VH8upLTQ6Ex%2I~l2R1@ozexcHh$M1aACKc?DwbV6 z?puFBKYF`#L7U_f@;ZH~c+gu4LMXE5s+W=Y52u5qh4Uh-5;6tsMM^f=?L6NdpqBO*+v+=?4;;Qq< zO5d?>(xm&yk4(g$neRl&W~{Q=V!I+cu?a`!Z~|M~2Ku1RTp*it${|M_{{1}^6aP|l zqsXiKYe5wp))f_G!x%wU?|-rYF0@+M<qQ{w`ezR;XuXcRGlEj- zJrJhYv9mija`6^MNF&d{{o`tFl^$KT>>nNyfjEyKRK%14g@VrweM}>od3JkU`wdw154l}2Th+A32y-zT&N$i4k5(th4d*~>pKcBZ#rz!x)e$@xayog3zro17Sh z4_m2sCTc}db1WZ}+>C^~bgj^j@#$yP3Z~^!XR%ObVf`HpgoE0R&nHeFd-44E0C)B< zjVM_AP8$n)6f>P&1`?WA(BeGpbf2V74}Y!Uf?|PUQ4lD?oU0NcUpT*pv2jcr5rgVW7ji>ZjPw{= z09}|c@xBHM&xf|1h__r<;lbOq+6kp6z!Rh zak@|q(|V<7k>YuHHcGvBDwHp&CV!jj&QYy!+`+-0x3f`5kH5Jm@?lXu)|*E87xMO% z>FoZr@B^JP8~GuGhZte780f!AgQHB6E|7KC&ecmY$HJ=?OPON5Sa@+OxDNJpI!mhe8s!VE8o>vVW zDLkZzK&(EdtJ0jn5oAfUS{utL;JK0sQ9pnt@r9g)paR(*m;RNw3oHo>scyh;qdi&Ueddl z6GS9FX$2Zt9Q#Ft!&^9nF`~z6N&}1Y7ll7eF@OLJAM;m#1#b5V5wHn!P~I~ zp&O_>{Rt=6$rYknGe4aEnVE3~wisT{wlYUs4@%kAf}h6UL2F>AF>eSn7yL2`k>lP~ z%H?`FodpY9Am%XZ!pTal5IgAe9$SakZJWAS=1>70+bL@;zRTdLKh!h!728;-pHM)K z60cIB$O#o2j?VvrHYY?L*fGV;J-r?TNu-{{A;NM?EXr;Qf(tPM`~g)%tT~3{>%}b= z)?h%!QB*V!WnrT?M6PO=WwHSLR98s(rD%XQ#bUEeT~G4*VNlFa?7$!3O91;&iIkN7 z4S@yKIgtF1iZ#i!8Q}au@sDxy#CzfiWoQ1VQ6D%sT)gYUK2RL1}Qe!8lCUuDg@ z(Dkhz*?kX6*3Sk=%0&W8qjfiitY7# zS|aE%cYJtU`_jp(igde#%Q0SLQgHV6Kgo4@x4)PiBZc>|)gs{YO~G9@{A!&?KkZR!982U0^cF{&Z~jzY+)mifl<-j` z3We66@JaEvr^H1E^Q}NE;&IrVrn;#A(Hev$iT;;B456MqC0l;q(JnHxKqV!o2im)A z2@3>zB-7iKj^xjBf{+1#SYN=i?KcPZ2Ns6FMfH!ee44xf3CeS%(YX(HNWUx{#yYCa zz0rDBbeKho@BIyFSo(sxqv}@??{kUsl5f^7tzPz_U z?(cqu9~GEdb`U4#LBWre^vx_IMB6MX=p1m@ti1h`5b0?Fe^C8^dxa@-eZlGi!!%Wh z>TnMHLOBBY%y-6fA3afIUZ4SAWIm!+-54175ZeevSF_&xQWQo9AMubGn@NY^3m#m$ zM_7UIEgLIF;teZh$-lEdt;wfG-snS0F_*K%JaU=W48o|g5E37Fl zexM%cm+P?W*e@%rt&(-egFq1_9CjEq)o>TL6j#~txmn$UL`Zl#-5UR z*Z~btbX}lpktV87Kn2416yyrcm7^=zmeiI+mQerEZL5}imL!(2AL7;^%Me1%B#m%% z_Vc}PqOqDUu3@tHTtq{Ol!MihHOQ1rnFetv?)h@vlw&9v43&Ix8ndQrASFZYsLvQa=k&x5{9vkjk<6^pWHP87tNU<<#jYv znbf(9aSU~ix?wq%gfg$xG5)z_n3hZzD7^msX3Hfi57UBWBt(qgCYjsFr~$B(UaklT zGvK;~>r*jyCsP=hU>vuZo*4}lZ2tB?E#}T`S?wGLf8*?6&X>;<+dwZBNo|=5OQa&R zqKgRQM7WHziA-WDXc_lfJJdiHfY^0~_ymDBepGuYnQZ$AU;_cmAMqMRnoqn|IN za~5cmttM`bMh{(>n++McGkmb4wQi_r&0YN68-%W1mvG?TRPjH;nShV&IOWU&^E6^i zN9yQlA(pw=hwCN^d^ovaLCC^_V3`F4scH>)@R}j$Krd1guI5t9g8NbUw!nfWY|Giz zU^SSQxYY<*gGv!08%d{c{u0CEmC zqok%mO-#iVmW;4C=~~2oe2uyG*T##|jMb)Jk@DM7S%|93wgz14Twi~sZ8ioGGkWbp z3yORQbnWRE3);vfRE5%n84FjZFsWX_(j~acSh&Lb9Um+ zT(o7eA1e2gH68;%RAKj8K|nw}vrP<54Gj&Ac=`5x#Y}norZph#-64_MjeS>sihqB9 z=LIGGfge6HG&BY|0|7Dp1-ts6eN0|v`}_MRZU}#JVq*uAj0alLfcU^b%>26_t1e@M zCWKV$^}rjGMH`OJ2Cgn8n@k&34ir1CC+LYJfQuyA7b6L#aIyZt{z4om>XYuSQDaf# z+igy&mf^4L>g?QEPMTV@*f)4fqu{ah)-Rb*R5{YA;H^=x4L}?7bWTJM#gafp<|CtL8URQHJHfb(q8bfIkzRjPi8E zbMR8VCO%i53l-dWqL7W)!85X@iGZepxh#AXr{ft}G->vWSuNRN5^Sw(N`&AoGqn9r zW?ij-z1>BhXKWad5}>P%oBA zee$ustjIrTy}3#J#9{C~Y)5W=Y{|Lsq2}=SZQL~v=p;qh+u$8)mV&;8?DObZjaP?d zlSB6~;@#)mi!BFgbrwVU_U8reVvKW{6N?`>pSwu^2S(U{NFC~>B%(N9H}Y74d)g)3 zZJyx0)xE9r9{sy>F>AL-$z3zT{X(7kOKIbUt*QE8b(Ac`mrjq_)4BW?`0gpA#!?^R zkwYi?Y|@*RgA1-ktcN#ujrZ5qnNnSaRw&rL)@L3|>%ge;r`OcE3{eEXz}`L0uWR9$ zs+ecrFX_+T8gJ`TsFpW^kRx`87d^oqHBq`g#R&IletSSyj9WiXNXv@G^Ckpvi9n&I z4$vcKCa%>x*Oa_^sk>$?m=jV1}dKxp*&ViPG*)QjrQ0uzjuF1Jv zXGJC_;B;)tT=x;mtF7=;xK9G%(raUopur&}_j*-Cr>VT}>l7Yvy|L{Je$yw0GAkws z({puNd#LNzjcUrfjpn^`&F~20d+V89lIo*6Yk@bmJ9{8c-w}?4V>K=O$21DbnD_uG zx`U<3DoZZ>w^kZ?h1vH@zsRmWeMk51_3XW$ z{6b#f#CIbAjt z6P>vW21pQAs1%~f%33&g=J&z!b^+caq?CVV3j*9fQAU+`x8@}IG0l)>+R6Fti~k1A0lx}g3RIM5(;_7glACnP7_}~@6adqq0^mZA6_}&IxmpA;=6qmVEhr4nnmS-`F-5tm1q#+j|T$?PMrAf4f?AwxMiXNosq8}vUMXb zO`+a0>pD>$lj&N#?|pz-XI2J@AsF-4AGtIctJG(tjw|X1J|rzDx6bg_HqON@584r< zZc|Lq_EOpBkDkrB*Ct?F95?v3fxF_~cBU9v>67Lk8?xJUOB=z2I$RMtdpWW@?E7s4 zRz7b!7l9HmnI44>nA{#J4u~vU5rpqI)&d{OrzugpP&YRq+=%-DI2Ppa{1HI6NbZOV z7w~^1K$(ciykWeO6D3!?kO0V*xT0^)d!C>bR9=OJ1JZMfd0!X>`KADzz8Szf_T3C~ znXIct;U1pN3BZlOVRmTmN3U+a1V(og!1vEuG_X4~b@D>*III1~NmaGMP};d=`%K4p z_yPRB1M`8-@OGgG!g<>(#&uv95$5idQ|kA=?2g4XXfLnm;xA{ydwjlu2#OnDX@CBm z6P0spi+!#h{kf(v3&y2fMW^`Xc_EpyySuzem+avva!P373*kzO% zl_qADVt-W;Q=It8RE7v|s-@)V&Q^_Q!@4(ySBYEcx6a~{oy=xa2p%K;wjYhRLrr=r z77@>iBZKV3){V2?f=e;$Lo@GGbC8v0RKa-^SP_sOL=)`tW?($rhr}C{%F=MY@l1lx zHMwQV;v%(cmeSo`3ck-X3-R*wmleSZnow{;6?L)nx(bQ>1kkf=1LpV?$&=d&9N#JN zkT#PDdb&ZFdgd2!uipR;g!@BtTbKl&Yq0T2rwVmnRLo$2S7@2RsvD@tE+Kwr2f|e81 zE+oC^^0xGLvMDEMoV3PPxY<;up%>MRqbW0p9*sgXbiaTc%6nWs6u>0DDT?#%zDM^< zh)WBOgN6$R%B>l^?#f*+M$b90FYcN2Lvr5_mcU-jgn7qtHvRI#VQd#aI|3gl6Qly; z=ds|hid)~BrR{SQz<~EW=pexLp5a05jgbFJ^ock~2EP;0Z}f&|#DG67vF97}hW)@h zW2^9wR74!uvp97M*E8dsI;kB;w{2;6uscO&$Bo==Vl=lyuYwL=8lCv-==e5ZFR zy!huiUgZs5Qt=-RU1QtKdIbboKn$bhhxrV3AJTRgj%B^?yMef*`D&QH_A62X}V0M)&MAU{=7&Be%INeD`-&=u28+3{x3agKlm6|5oa`0x?IBu!8}8&wv||)m$zgk@UH3RJ<@01ORv*&UQkbKZ zZfy{tOt4F&Jx3=#pY~UA&gvR}OT30%#Xtzm^tUHcX(ijzM!xP7WCy{w+cyKNn2&qT zcNFx8dVwhWAp8I`>&bKdul$mGigY4>2IPmV;MC7hI5-4DelQSxN>I6fxnfGvt~II< z+GyW)v7Ak@;kwz^R<2@y`;CGj<-SRPrt(_rwGn1Hl`JVH!fg zZp`inHE_ZK2MQC^24OkLV-AbskJp)Xi26(3u#nfWG2BUnzb~fiV$i#^n2v}7beKx+ z1lsxor7CUR((g;o&WoEq=slB!NlQ#ikGxR3$aC@ytiRrm4@;Gf`0*F6 z2Rn6_6BSmEXX&E2NVFqL?KGOhnypc<6EAf|rP`0X;wmy!tPo7orDiHVlDfB8)wZs14g`Y`>YFE8D+t!j+#PKjUg{YS{_IVdIx7*Li&5~fuqR0}m zzAGQmTp66he@C8Tn*nY3D&PF|^*Q6OM^3**Z@4PFG*A}3z6qH=LB+^39&TZ0qt}o< zv;8z6To1+@-PAISDX=w5+oqD&QnP6l3^Ou%8n;{7Qt4ue7$>LxUGW)DOnrV+Q}yu~ zmBml8#~&{K@(ZNfz1w~c8dOxWpM3%^IG728XeIX2dU>7nZYF1`OEnd^%55d~kl?|r zrbMt@<3mVj`9Fske-zcjr4GSpLgNmM)xpM!UhllAr@tXx~~U`uE&^(fCUJ*|D+F>0Vub_ z(MQk#q}yR?!)*ZC?Fh9IxB&5XX!~#-fOaQlMw zLhlAU40!;$ZunmKKS2C{3Ir1lDFDiDSYEh3e)vQ81se=G0NQRKKM?#80|EsG^8m9q zm@hOR@LveufdPYkfZZFy7lu+Kq(6+Y*i*&`_Z9e#KVdb8jqnDPbi*f|AZmwW9Zj~t zIYy=(UABI-4c9o@Y(egZZtlCc^IZkaTm^US+qd&v1^Mjjw{u*DyzgVhnLtl! z3W3R0?}N+l`?m`a1VZf#c`_0NS2@CzIYC<7D)Pc1j{Ulkb9hyV;bA#OM^}k_s)b)6cL5H!@E`bJ1pi*tu)tp4EyIh(2ksaCchL86z+T_2z>9%2G7^eXCUbHL-jP)# zjB2qFPJxp4zZG|gn&MbXlZ{aJl4(nqjo{Ye8cUmv@Ey_31@~sYOF^Cm`DT_&;jRVy zW}ZtSp9TG9j!TjE1*}+=-+xt!Lu4x#z~vVFn+5O%p%#Q(8S#ayETc-T!p%<=xnmH@ zegP%9qvA?UfSTNKab>7LQSRUJr7A#G?pXOU7N9J5^h~J>P`7g4%Ty@`XNgpd&RQkH z_Marcxm?1}d7_BzP(_efj8)>kSunaeb*2m!DBKxIUn&Ds?u?-?qX9~HM%9+u0JS^g zYRhne;+?4oAQcgO!-c<^e;jOAp@-*WH(wHowq-r4&E}|dwA5}^t$+IJb}32PSEayTxbHfb z@3pcNI6&mMj$Kyp&X!uIqLzwul`Ztzutj8D`R?w8!<|6o*d9uyG`zcc6acwajBAYE z;U$>L%BmSps#5EM<@Hlh6oBoq_MJzXmp>dzPu;e9VPITpQ6E)fS5=neh_Mzf|DBY) z#kE&CI#btGv20oVz$`wm-JF)0Z~Cwwy}$HNx6|Z1(m74tM11X7oZ2WjT8lL<#~9R> zSih9ljNH6;XSqOo(dsgAQKi9?&xBt_Ofit%fO6p*q$JkM887nJ=fm-`sDDg`61e8k{}G z`>9v^#``})6gz_nC!#`fF-pL7zinD_@~BO&Hr&-;HY6hwgPf=E>z}Dv{lVdNssh0F zy~uE~+JE(Y7O0nMzVfYJdwB@!iqcsR)DDx}4^K}Te(nE4A-r||;ZsxDLNbQEa+zmm924D!y}qE`j0(cw%8g>VjGXG;^1eHX19qvnK|DWGdK8c;mYF~m^km2)N0G# z+acU}PYg(|{q}wgT&0F;lYKVrSRjl7lNxi@9^vdHWg?@vcaFqzy6{h%&cHL9i4I0^ zunBdDzvHr9I&{JlzVJ_-=$SEYuwxP7yA?vg4<$dSM|^QS>cupPrVuR(napy9y@iF& z*m3l)U$td+VLy|BqiP&^Sr`Z9m_Yn-#`>yUkNa}-cG~HjZ7dSkG6IELDI8(8bQPDi z->SP6)om(@U@EphzTquVyJbk4Yq$<6@~4ehvUCsYYDLX`=Y(f>B2;}2z7bE!i$%n3 zSG^`2y*!wcqk|%&^;%qCdxm+4;CJSFXCtSu;x8C2>3D^aJLB&)eeU{WRiT+Ob&DeR zb*I`{|G{yg)xF5QO+9pX&p~$!%Ki4k`{t-sMGw{RX&VmCDT&xCq{;E~y>p(jCZx9f;keo|<~ zil$7BWv7x}^->yY{Ab&MC zA-*>H_b7*h`X`Tzw!zGC_{SwFmVX8BH?Qx_6Fpe6KXXQc5g>dSC)2|FIpOG_Llzjy zAr$P53h7~iWY=cF1Pr8$`&G+jxo3wPc;~!T87GXG?<5SnD0jz}TahBLT^$)GEXNmS zTvo5fSW%e6bzGAxBRu$loav+!B)xs7kP;2VL6V&p()C6fr8XsJrcP4kRFKHKlD)mH zW36##Qqcxkl!!j_8!gW6t=5$C`OF1)2f#OTy04qFwZB$z2qO;t&twuT~;5c*ENEE=ZfA)zq*8CZ8#0$}| zor^Y6snM;KG=gJrW{*Ad{?(bJZ6$y=Y{*8|KT-!_@pPpp&x8KY|ZxgYgGfzq(Ts9l~Usv*3=Q|~qX4|Ok4XkqnWEbrn~>>AO|v9ZsgUe*QZ5OCj3PM> z-8;ci^6--vmFzz01Gd}o;Wf#`_5Gks8WA$8zsiy7sNra(XlhjC#pzRGe(!U)Y9_ub zE1dDNFqVz9dZ2PJmdb)jKQhtg4oy4Nv7?dQtWt_8Wt61MvvAVlsKnHwpsB!F`N_k0 z@iFJx14n6;v6O!r>mnTlW3Ad`5iGU7pG)U0YM`u37CmX*QjNW-B- z!1H4e7ZZ^~5SNzA!WcIu+NT&}ucK{65&jgGHL9m-$4VtL|5vc?zk|>Q;#x>%Ldg)s1dM-!%YPPQiF<5k9X{l5jPOl+jaRu*E8bLP8QGBqUD665Mi zu%~&7yewF+|5wyQ{C>uAM{Am=%FBZ7y81Y0xw|RTL;ZdxN`;*5w3<9;xwt9QRXu6O SdSQM28?+M|D(2r_;{O0|uQ74} diff --git a/static/kevin-master/assets/fonts/fontawesome-webfont.woff2 b/static/kevin-master/assets/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 4d13fc60404b91e398a37200c4a77b645cfd9586..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77160 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 diff --git a/static/kevin-master/assets/fonts/material-icons.min.css b/static/kevin-master/assets/fonts/material-icons.min.css deleted file mode 100644 index a14ee13..0000000 --- a/static/kevin-master/assets/fonts/material-icons.min.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:'Material Icons';font-style:normal;font-weight:400;src:url(MaterialIcons-Regular.eot);src:local('Material Icons'),local('MaterialIcons-Regular'),url(MaterialIcons-Regular.woff2) format('woff2'),url(MaterialIcons-Regular.woff) format('woff'),url(MaterialIcons-Regular.ttf) format('truetype')}.material-icons{font-family:'Material Icons';font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga'} \ No newline at end of file diff --git a/static/kevin-master/assets/fonts/simple-line-icons.min.css b/static/kevin-master/assets/fonts/simple-line-icons.min.css deleted file mode 100644 index df0e45f..0000000 --- a/static/kevin-master/assets/fonts/simple-line-icons.min.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:simple-line-icons;src:url(../fonts/Simple-Line-Icons.eot?v=2.4.0);src:url(../fonts/Simple-Line-Icons.eot?v=2.4.0#iefix) format('embedded-opentype'),url(../fonts/Simple-Line-Icons.woff2?v=2.4.0) format('woff2'),url(../fonts/Simple-Line-Icons.ttf?v=2.4.0) format('truetype'),url(../fonts/Simple-Line-Icons.woff?v=2.4.0) format('woff'),url(../fonts/Simple-Line-Icons.svg?v=2.4.0#simple-line-icons) format('svg');font-weight:400;font-style:normal}.icon-action-redo,.icon-action-undo,.icon-anchor,.icon-arrow-down,.icon-arrow-down-circle,.icon-arrow-left,.icon-arrow-left-circle,.icon-arrow-right,.icon-arrow-right-circle,.icon-arrow-up,.icon-arrow-up-circle,.icon-badge,.icon-bag,.icon-ban,.icon-basket,.icon-basket-loaded,.icon-bell,.icon-book-open,.icon-briefcase,.icon-bubble,.icon-bubbles,.icon-bulb,.icon-calculator,.icon-calendar,.icon-call-end,.icon-call-in,.icon-call-out,.icon-camera,.icon-camrecorder,.icon-chart,.icon-check,.icon-chemistry,.icon-clock,.icon-close,.icon-cloud-download,.icon-cloud-upload,.icon-compass,.icon-control-end,.icon-control-forward,.icon-control-pause,.icon-control-play,.icon-control-rewind,.icon-control-start,.icon-credit-card,.icon-crop,.icon-cup,.icon-cursor,.icon-cursor-move,.icon-diamond,.icon-direction,.icon-directions,.icon-disc,.icon-dislike,.icon-doc,.icon-docs,.icon-drawer,.icon-drop,.icon-earphones,.icon-earphones-alt,.icon-emotsmile,.icon-energy,.icon-envelope,.icon-envelope-letter,.icon-envelope-open,.icon-equalizer,.icon-event,.icon-exclamation,.icon-eye,.icon-eyeglass,.icon-feed,.icon-film,.icon-fire,.icon-flag,.icon-folder,.icon-folder-alt,.icon-frame,.icon-game-controller,.icon-ghost,.icon-globe,.icon-globe-alt,.icon-graduation,.icon-graph,.icon-grid,.icon-handbag,.icon-heart,.icon-home,.icon-hourglass,.icon-info,.icon-key,.icon-layers,.icon-like,.icon-link,.icon-list,.icon-location-pin,.icon-lock,.icon-lock-open,.icon-login,.icon-logout,.icon-loop,.icon-magic-wand,.icon-magnet,.icon-magnifier,.icon-magnifier-add,.icon-magnifier-remove,.icon-map,.icon-menu,.icon-microphone,.icon-minus,.icon-mouse,.icon-music-tone,.icon-music-tone-alt,.icon-mustache,.icon-note,.icon-notebook,.icon-options,.icon-options-vertical,.icon-organization,.icon-paper-clip,.icon-paper-plane,.icon-paypal,.icon-pencil,.icon-people,.icon-phone,.icon-picture,.icon-pie-chart,.icon-pin,.icon-plane,.icon-playlist,.icon-plus,.icon-power,.icon-present,.icon-printer,.icon-puzzle,.icon-question,.icon-refresh,.icon-reload,.icon-rocket,.icon-screen-desktop,.icon-screen-smartphone,.icon-screen-tablet,.icon-settings,.icon-share,.icon-share-alt,.icon-shield,.icon-shuffle,.icon-size-actual,.icon-size-fullscreen,.icon-social-behance,.icon-social-dribbble,.icon-social-dropbox,.icon-social-facebook,.icon-social-foursqare,.icon-social-github,.icon-social-google,.icon-social-instagram,.icon-social-linkedin,.icon-social-pinterest,.icon-social-reddit,.icon-social-skype,.icon-social-soundcloud,.icon-social-spotify,.icon-social-steam,.icon-social-stumbleupon,.icon-social-tumblr,.icon-social-twitter,.icon-social-vkontakte,.icon-social-youtube,.icon-speech,.icon-speedometer,.icon-star,.icon-support,.icon-symbol-female,.icon-symbol-male,.icon-tag,.icon-target,.icon-trash,.icon-trophy,.icon-umbrella,.icon-user,.icon-user-female,.icon-user-follow,.icon-user-following,.icon-user-unfollow,.icon-vector,.icon-volume-1,.icon-volume-2,.icon-volume-off,.icon-wallet,.icon-wrench{font-family:simple-line-icons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-user:before{content:"\e005"}.icon-people:before{content:"\e001"}.icon-user-female:before{content:"\e000"}.icon-user-follow:before{content:"\e002"}.icon-user-following:before{content:"\e003"}.icon-user-unfollow:before{content:"\e004"}.icon-login:before{content:"\e066"}.icon-logout:before{content:"\e065"}.icon-emotsmile:before{content:"\e021"}.icon-phone:before{content:"\e600"}.icon-call-end:before{content:"\e048"}.icon-call-in:before{content:"\e047"}.icon-call-out:before{content:"\e046"}.icon-map:before{content:"\e033"}.icon-location-pin:before{content:"\e096"}.icon-direction:before{content:"\e042"}.icon-directions:before{content:"\e041"}.icon-compass:before{content:"\e045"}.icon-layers:before{content:"\e034"}.icon-menu:before{content:"\e601"}.icon-list:before{content:"\e067"}.icon-options-vertical:before{content:"\e602"}.icon-options:before{content:"\e603"}.icon-arrow-down:before{content:"\e604"}.icon-arrow-left:before{content:"\e605"}.icon-arrow-right:before{content:"\e606"}.icon-arrow-up:before{content:"\e607"}.icon-arrow-up-circle:before{content:"\e078"}.icon-arrow-left-circle:before{content:"\e07a"}.icon-arrow-right-circle:before{content:"\e079"}.icon-arrow-down-circle:before{content:"\e07b"}.icon-check:before{content:"\e080"}.icon-clock:before{content:"\e081"}.icon-plus:before{content:"\e095"}.icon-minus:before{content:"\e615"}.icon-close:before{content:"\e082"}.icon-event:before{content:"\e619"}.icon-exclamation:before{content:"\e617"}.icon-organization:before{content:"\e616"}.icon-trophy:before{content:"\e006"}.icon-screen-smartphone:before{content:"\e010"}.icon-screen-desktop:before{content:"\e011"}.icon-plane:before{content:"\e012"}.icon-notebook:before{content:"\e013"}.icon-mustache:before{content:"\e014"}.icon-mouse:before{content:"\e015"}.icon-magnet:before{content:"\e016"}.icon-energy:before{content:"\e020"}.icon-disc:before{content:"\e022"}.icon-cursor:before{content:"\e06e"}.icon-cursor-move:before{content:"\e023"}.icon-crop:before{content:"\e024"}.icon-chemistry:before{content:"\e026"}.icon-speedometer:before{content:"\e007"}.icon-shield:before{content:"\e00e"}.icon-screen-tablet:before{content:"\e00f"}.icon-magic-wand:before{content:"\e017"}.icon-hourglass:before{content:"\e018"}.icon-graduation:before{content:"\e019"}.icon-ghost:before{content:"\e01a"}.icon-game-controller:before{content:"\e01b"}.icon-fire:before{content:"\e01c"}.icon-eyeglass:before{content:"\e01d"}.icon-envelope-open:before{content:"\e01e"}.icon-envelope-letter:before{content:"\e01f"}.icon-bell:before{content:"\e027"}.icon-badge:before{content:"\e028"}.icon-anchor:before{content:"\e029"}.icon-wallet:before{content:"\e02a"}.icon-vector:before{content:"\e02b"}.icon-speech:before{content:"\e02c"}.icon-puzzle:before{content:"\e02d"}.icon-printer:before{content:"\e02e"}.icon-present:before{content:"\e02f"}.icon-playlist:before{content:"\e030"}.icon-pin:before{content:"\e031"}.icon-picture:before{content:"\e032"}.icon-handbag:before{content:"\e035"}.icon-globe-alt:before{content:"\e036"}.icon-globe:before{content:"\e037"}.icon-folder-alt:before{content:"\e039"}.icon-folder:before{content:"\e089"}.icon-film:before{content:"\e03a"}.icon-feed:before{content:"\e03b"}.icon-drop:before{content:"\e03e"}.icon-drawer:before{content:"\e03f"}.icon-docs:before{content:"\e040"}.icon-doc:before{content:"\e085"}.icon-diamond:before{content:"\e043"}.icon-cup:before{content:"\e044"}.icon-calculator:before{content:"\e049"}.icon-bubbles:before{content:"\e04a"}.icon-briefcase:before{content:"\e04b"}.icon-book-open:before{content:"\e04c"}.icon-basket-loaded:before{content:"\e04d"}.icon-basket:before{content:"\e04e"}.icon-bag:before{content:"\e04f"}.icon-action-undo:before{content:"\e050"}.icon-action-redo:before{content:"\e051"}.icon-wrench:before{content:"\e052"}.icon-umbrella:before{content:"\e053"}.icon-trash:before{content:"\e054"}.icon-tag:before{content:"\e055"}.icon-support:before{content:"\e056"}.icon-frame:before{content:"\e038"}.icon-size-fullscreen:before{content:"\e057"}.icon-size-actual:before{content:"\e058"}.icon-shuffle:before{content:"\e059"}.icon-share-alt:before{content:"\e05a"}.icon-share:before{content:"\e05b"}.icon-rocket:before{content:"\e05c"}.icon-question:before{content:"\e05d"}.icon-pie-chart:before{content:"\e05e"}.icon-pencil:before{content:"\e05f"}.icon-note:before{content:"\e060"}.icon-loop:before{content:"\e064"}.icon-home:before{content:"\e069"}.icon-grid:before{content:"\e06a"}.icon-graph:before{content:"\e06b"}.icon-microphone:before{content:"\e063"}.icon-music-tone-alt:before{content:"\e061"}.icon-music-tone:before{content:"\e062"}.icon-earphones-alt:before{content:"\e03c"}.icon-earphones:before{content:"\e03d"}.icon-equalizer:before{content:"\e06c"}.icon-like:before{content:"\e068"}.icon-dislike:before{content:"\e06d"}.icon-control-start:before{content:"\e06f"}.icon-control-rewind:before{content:"\e070"}.icon-control-play:before{content:"\e071"}.icon-control-pause:before{content:"\e072"}.icon-control-forward:before{content:"\e073"}.icon-control-end:before{content:"\e074"}.icon-volume-1:before{content:"\e09f"}.icon-volume-2:before{content:"\e0a0"}.icon-volume-off:before{content:"\e0a1"}.icon-calendar:before{content:"\e075"}.icon-bulb:before{content:"\e076"}.icon-chart:before{content:"\e077"}.icon-ban:before{content:"\e07c"}.icon-bubble:before{content:"\e07d"}.icon-camrecorder:before{content:"\e07e"}.icon-camera:before{content:"\e07f"}.icon-cloud-download:before{content:"\e083"}.icon-cloud-upload:before{content:"\e084"}.icon-envelope:before{content:"\e086"}.icon-eye:before{content:"\e087"}.icon-flag:before{content:"\e088"}.icon-heart:before{content:"\e08a"}.icon-info:before{content:"\e08b"}.icon-key:before{content:"\e08c"}.icon-link:before{content:"\e08d"}.icon-lock:before{content:"\e08e"}.icon-lock-open:before{content:"\e08f"}.icon-magnifier:before{content:"\e090"}.icon-magnifier-add:before{content:"\e091"}.icon-magnifier-remove:before{content:"\e092"}.icon-paper-clip:before{content:"\e093"}.icon-paper-plane:before{content:"\e094"}.icon-power:before{content:"\e097"}.icon-refresh:before{content:"\e098"}.icon-reload:before{content:"\e099"}.icon-settings:before{content:"\e09a"}.icon-star:before{content:"\e09b"}.icon-symbol-female:before{content:"\e09c"}.icon-symbol-male:before{content:"\e09d"}.icon-target:before{content:"\e09e"}.icon-credit-card:before{content:"\e025"}.icon-paypal:before{content:"\e608"}.icon-social-tumblr:before{content:"\e00a"}.icon-social-twitter:before{content:"\e009"}.icon-social-facebook:before{content:"\e00b"}.icon-social-instagram:before{content:"\e609"}.icon-social-linkedin:before{content:"\e60a"}.icon-social-pinterest:before{content:"\e60b"}.icon-social-github:before{content:"\e60c"}.icon-social-google:before{content:"\e60d"}.icon-social-reddit:before{content:"\e60e"}.icon-social-skype:before{content:"\e60f"}.icon-social-dribbble:before{content:"\e00d"}.icon-social-behance:before{content:"\e610"}.icon-social-foursqare:before{content:"\e611"}.icon-social-soundcloud:before{content:"\e612"}.icon-social-spotify:before{content:"\e613"}.icon-social-stumbleupon:before{content:"\e614"}.icon-social-youtube:before{content:"\e008"}.icon-social-dropbox:before{content:"\e00c"}.icon-social-vkontakte:before{content:"\e618"}.icon-social-steam:before{content:"\e620"} \ No newline at end of file diff --git a/static/kevin-master/assets/js/RTCMultiConnection.js b/static/kevin-master/assets/js/RTCMultiConnection.js deleted file mode 100644 index 5d4ffd9..0000000 --- a/static/kevin-master/assets/js/RTCMultiConnection.js +++ /dev/null @@ -1,5856 +0,0 @@ -'use strict'; - -// Last time updated: 2020-12-21 6:32:02 AM UTC - -// _________________________ -// RTCMultiConnection v3.7.0 - -// Open-Sourced: https://github.com/muaz-khan/RTCMultiConnection - -// -------------------------------------------------- -// Muaz Khan - www.MuazKhan.com -// MIT License - www.WebRTC-Experiment.com/licence -// -------------------------------------------------- - -var RTCMultiConnection = function(roomid, forceOptions) { - - var browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45'; - - (function(that) { - if (!that) { - return; - } - - if (typeof window !== 'undefined') { - return; - } - - if (typeof global === 'undefined') { - return; - } - - global.navigator = { - userAgent: browserFakeUserAgent, - getUserMedia: function() {} - }; - - if (!global.console) { - global.console = {}; - } - - if (typeof global.console.debug === 'undefined') { - global.console.debug = global.console.info = global.console.error = global.console.log = global.console.log || function() { - console.log(arguments); - }; - } - - if (typeof document === 'undefined') { - /*global document:true */ - that.document = {}; - - document.createElement = document.captureStream = document.mozCaptureStream = function() { - var obj = { - getContext: function() { - return obj; - }, - play: function() {}, - pause: function() {}, - drawImage: function() {}, - toDataURL: function() { - return ''; - } - }; - return obj; - }; - - document.addEventListener = document.removeEventListener = that.addEventListener = that.removeEventListener = function() {}; - - that.HTMLVideoElement = that.HTMLMediaElement = function() {}; - } - - if (typeof io === 'undefined') { - that.io = function() { - return { - on: function(eventName, callback) { - callback = callback || function() {}; - - if (eventName === 'connect') { - callback(); - } - }, - emit: function(eventName, data, callback) { - callback = callback || function() {}; - if (eventName === 'open-room' || eventName === 'join-room') { - callback(true, data.sessionid, null); - } - } - }; - }; - } - - if (typeof location === 'undefined') { - /*global location:true */ - that.location = { - protocol: 'file:', - href: '', - hash: '', - origin: 'self' - }; - } - - if (typeof screen === 'undefined') { - /*global screen:true */ - that.screen = { - width: 0, - height: 0 - }; - } - - if (typeof URL === 'undefined') { - /*global screen:true */ - that.URL = { - createObjectURL: function() { - return ''; - }, - revokeObjectURL: function() { - return ''; - } - }; - } - - /*global window:true */ - that.window = global; - })(typeof global !== 'undefined' ? global : null); - - function SocketConnection(connection, connectCallback) { - function isData(session) { - return !session.audio && !session.video && !session.screen && session.data; - } - - var parameters = ''; - - parameters += '?userid=' + connection.userid; - parameters += '&sessionid=' + connection.sessionid; - parameters += '&msgEvent=' + connection.socketMessageEvent; - parameters += '&socketCustomEvent=' + connection.socketCustomEvent; - parameters += '&autoCloseEntireSession=' + !!connection.autoCloseEntireSession; - - if (connection.session.broadcast === true) { - parameters += '&oneToMany=true'; - } - - parameters += '&maxParticipantsAllowed=' + connection.maxParticipantsAllowed; - - if (connection.enableScalableBroadcast) { - parameters += '&enableScalableBroadcast=true'; - parameters += '&maxRelayLimitPerUser=' + (connection.maxRelayLimitPerUser || 2); - } - - parameters += '&extra=' + JSON.stringify(connection.extra || {}); - - if (connection.socketCustomParameters) { - parameters += connection.socketCustomParameters; - } - - try { - io.sockets = {}; - } catch (e) {}; - - if (!connection.socketURL) { - connection.socketURL = '/'; - } - - if (connection.socketURL.substr(connection.socketURL.length - 1, 1) != '/') { - // connection.socketURL = 'https://domain.com:9001/'; - throw '"socketURL" MUST end with a slash.'; - } - - if (connection.enableLogs) { - if (connection.socketURL == '/') { - console.info('socket.io url is: ', location.origin + '/'); - } else { - console.info('socket.io url is: ', connection.socketURL); - } - } - - try { - connection.socket = io(connection.socketURL + parameters); - } catch (e) { - connection.socket = io.connect(connection.socketURL + parameters, connection.socketOptions); - } - - var mPeer = connection.multiPeersHandler; - - connection.socket.on('extra-data-updated', function(remoteUserId, extra) { - if (!connection.peers[remoteUserId]) return; - connection.peers[remoteUserId].extra = extra; - - connection.onExtraDataUpdated({ - userid: remoteUserId, - extra: extra - }); - - updateExtraBackup(remoteUserId, extra); - }); - - function updateExtraBackup(remoteUserId, extra) { - if (!connection.peersBackup[remoteUserId]) { - connection.peersBackup[remoteUserId] = { - userid: remoteUserId, - extra: {} - }; - } - - connection.peersBackup[remoteUserId].extra = extra; - } - - function onMessageEvent(message) { - if (message.remoteUserId != connection.userid) return; - - if (connection.peers[message.sender] && connection.peers[message.sender].extra != message.message.extra) { - connection.peers[message.sender].extra = message.extra; - connection.onExtraDataUpdated({ - userid: message.sender, - extra: message.extra - }); - - updateExtraBackup(message.sender, message.extra); - } - - if (message.message.streamSyncNeeded && connection.peers[message.sender]) { - var stream = connection.streamEvents[message.message.streamid]; - if (!stream || !stream.stream) { - return; - } - - var action = message.message.action; - - if (action === 'ended' || action === 'inactive' || action === 'stream-removed') { - if (connection.peersBackup[stream.userid]) { - stream.extra = connection.peersBackup[stream.userid].extra; - } - connection.onstreamended(stream); - return; - } - - var type = message.message.type != 'both' ? message.message.type : null; - - if (typeof stream.stream[action] == 'function') { - stream.stream[action](type); - } - return; - } - - if (message.message === 'dropPeerConnection') { - connection.deletePeer(message.sender); - return; - } - - if (message.message.allParticipants) { - if (message.message.allParticipants.indexOf(message.sender) === -1) { - message.message.allParticipants.push(message.sender); - } - - message.message.allParticipants.forEach(function(participant) { - mPeer[!connection.peers[participant] ? 'createNewPeer' : 'renegotiatePeer'](participant, { - localPeerSdpConstraints: { - OfferToReceiveAudio: connection.sdpConstraints.mandatory.OfferToReceiveAudio, - OfferToReceiveVideo: connection.sdpConstraints.mandatory.OfferToReceiveVideo - }, - remotePeerSdpConstraints: { - OfferToReceiveAudio: connection.session.oneway ? !!connection.session.audio : connection.sdpConstraints.mandatory.OfferToReceiveAudio, - OfferToReceiveVideo: connection.session.oneway ? !!connection.session.video || !!connection.session.screen : connection.sdpConstraints.mandatory.OfferToReceiveVideo - }, - isOneWay: !!connection.session.oneway || connection.direction === 'one-way', - isDataOnly: isData(connection.session) - }); - }); - return; - } - - if (message.message.newParticipant) { - if (message.message.newParticipant == connection.userid) return; - if (!!connection.peers[message.message.newParticipant]) return; - - mPeer.createNewPeer(message.message.newParticipant, message.message.userPreferences || { - localPeerSdpConstraints: { - OfferToReceiveAudio: connection.sdpConstraints.mandatory.OfferToReceiveAudio, - OfferToReceiveVideo: connection.sdpConstraints.mandatory.OfferToReceiveVideo - }, - remotePeerSdpConstraints: { - OfferToReceiveAudio: connection.session.oneway ? !!connection.session.audio : connection.sdpConstraints.mandatory.OfferToReceiveAudio, - OfferToReceiveVideo: connection.session.oneway ? !!connection.session.video || !!connection.session.screen : connection.sdpConstraints.mandatory.OfferToReceiveVideo - }, - isOneWay: !!connection.session.oneway || connection.direction === 'one-way', - isDataOnly: isData(connection.session) - }); - return; - } - - if (message.message.readyForOffer) { - if (connection.attachStreams.length) { - connection.waitingForLocalMedia = false; - } - - if (connection.waitingForLocalMedia) { - // if someone is waiting to join you - // make sure that we've local media before making a handshake - setTimeout(function() { - onMessageEvent(message); - }, 1); - return; - } - } - - if (message.message.newParticipationRequest && message.sender !== connection.userid) { - if (connection.peers[message.sender]) { - connection.deletePeer(message.sender); - } - - var userPreferences = { - extra: message.extra || {}, - localPeerSdpConstraints: message.message.remotePeerSdpConstraints || { - OfferToReceiveAudio: connection.sdpConstraints.mandatory.OfferToReceiveAudio, - OfferToReceiveVideo: connection.sdpConstraints.mandatory.OfferToReceiveVideo - }, - remotePeerSdpConstraints: message.message.localPeerSdpConstraints || { - OfferToReceiveAudio: connection.session.oneway ? !!connection.session.audio : connection.sdpConstraints.mandatory.OfferToReceiveAudio, - OfferToReceiveVideo: connection.session.oneway ? !!connection.session.video || !!connection.session.screen : connection.sdpConstraints.mandatory.OfferToReceiveVideo - }, - isOneWay: typeof message.message.isOneWay !== 'undefined' ? message.message.isOneWay : !!connection.session.oneway || connection.direction === 'one-way', - isDataOnly: typeof message.message.isDataOnly !== 'undefined' ? message.message.isDataOnly : isData(connection.session), - dontGetRemoteStream: typeof message.message.isOneWay !== 'undefined' ? message.message.isOneWay : !!connection.session.oneway || connection.direction === 'one-way', - dontAttachLocalStream: !!message.message.dontGetRemoteStream, - connectionDescription: message, - successCallback: function() {} - }; - - connection.onNewParticipant(message.sender, userPreferences); - return; - } - - if (message.message.changedUUID) { - if (connection.peers[message.message.oldUUID]) { - connection.peers[message.message.newUUID] = connection.peers[message.message.oldUUID]; - delete connection.peers[message.message.oldUUID]; - } - } - - if (message.message.userLeft) { - mPeer.onUserLeft(message.sender); - - if (!!message.message.autoCloseEntireSession) { - connection.leave(); - } - - return; - } - - mPeer.addNegotiatedMessage(message.message, message.sender); - } - - connection.socket.on(connection.socketMessageEvent, onMessageEvent); - - var alreadyConnected = false; - - connection.socket.resetProps = function() { - alreadyConnected = false; - }; - - connection.socket.on('connect', function() { - if (alreadyConnected) { - return; - } - alreadyConnected = true; - - if (connection.enableLogs) { - console.info('socket.io connection is opened.'); - } - - setTimeout(function() { - connection.socket.emit('extra-data-updated', connection.extra); - }, 1000); - - if (connectCallback) { - connectCallback(connection.socket); - } - }); - - connection.socket.on('disconnect', function(event) { - connection.onSocketDisconnect(event); - }); - - connection.socket.on('error', function(event) { - connection.onSocketError(event); - }); - - connection.socket.on('user-disconnected', function(remoteUserId) { - if (remoteUserId === connection.userid) { - return; - } - - connection.onUserStatusChanged({ - userid: remoteUserId, - status: 'offline', - extra: connection.peers[remoteUserId] ? connection.peers[remoteUserId].extra || {} : {} - }); - - connection.deletePeer(remoteUserId); - }); - - connection.socket.on('user-connected', function(userid) { - if (userid === connection.userid) { - return; - } - - connection.onUserStatusChanged({ - userid: userid, - status: 'online', - extra: connection.peers[userid] ? connection.peers[userid].extra || {} : {} - }); - }); - - connection.socket.on('closed-entire-session', function(sessionid, extra) { - connection.leave(); - connection.onEntireSessionClosed({ - sessionid: sessionid, - userid: sessionid, - extra: extra - }); - }); - - connection.socket.on('userid-already-taken', function(useridAlreadyTaken, yourNewUserId) { - connection.onUserIdAlreadyTaken(useridAlreadyTaken, yourNewUserId); - }); - - connection.socket.on('logs', function(log) { - if (!connection.enableLogs) return; - console.debug('server-logs', log); - }); - - connection.socket.on('number-of-broadcast-viewers-updated', function(data) { - connection.onNumberOfBroadcastViewersUpdated(data); - }); - - connection.socket.on('set-isInitiator-true', function(sessionid) { - if (sessionid != connection.sessionid) return; - connection.isInitiator = true; - }); - } - - function MultiPeers(connection) { - var self = this; - - var skipPeers = ['getAllParticipants', 'getLength', 'selectFirst', 'streams', 'send', 'forEach']; - connection.peers = { - getLength: function() { - var numberOfPeers = 0; - for (var peer in this) { - if (skipPeers.indexOf(peer) == -1) { - numberOfPeers++; - } - } - return numberOfPeers; - }, - selectFirst: function() { - var firstPeer; - for (var peer in this) { - if (skipPeers.indexOf(peer) == -1) { - firstPeer = this[peer]; - } - } - return firstPeer; - }, - getAllParticipants: function(sender) { - var allPeers = []; - for (var peer in this) { - if (skipPeers.indexOf(peer) == -1 && peer != sender) { - allPeers.push(peer); - } - } - return allPeers; - }, - forEach: function(callback) { - this.getAllParticipants().forEach(function(participant) { - callback(connection.peers[participant]); - }); - }, - send: function(data, remoteUserId) { - var that = this; - - if (!isNull(data.size) && !isNull(data.type)) { - if (connection.enableFileSharing) { - self.shareFile(data, remoteUserId); - return; - } - - if (typeof data !== 'string') { - data = JSON.stringify(data); - } - } - - if (data.type !== 'text' && !(data instanceof ArrayBuffer) && !(data instanceof DataView)) { - TextSender.send({ - text: data, - channel: this, - connection: connection, - remoteUserId: remoteUserId - }); - return; - } - - if (data.type === 'text') { - data = JSON.stringify(data); - } - - if (remoteUserId) { - var remoteUser = connection.peers[remoteUserId]; - if (remoteUser) { - if (!remoteUser.channels.length) { - connection.peers[remoteUserId].createDataChannel(); - connection.renegotiate(remoteUserId); - setTimeout(function() { - that.send(data, remoteUserId); - }, 3000); - return; - } - - remoteUser.channels.forEach(function(channel) { - channel.send(data); - }); - return; - } - } - - this.getAllParticipants().forEach(function(participant) { - if (!that[participant].channels.length) { - connection.peers[participant].createDataChannel(); - connection.renegotiate(participant); - setTimeout(function() { - that[participant].channels.forEach(function(channel) { - channel.send(data); - }); - }, 3000); - return; - } - - that[participant].channels.forEach(function(channel) { - channel.send(data); - }); - }); - } - }; - - this.uuid = connection.userid; - - this.getLocalConfig = function(remoteSdp, remoteUserId, userPreferences) { - if (!userPreferences) { - userPreferences = {}; - } - - return { - streamsToShare: userPreferences.streamsToShare || {}, - rtcMultiConnection: connection, - connectionDescription: userPreferences.connectionDescription, - userid: remoteUserId, - localPeerSdpConstraints: userPreferences.localPeerSdpConstraints, - remotePeerSdpConstraints: userPreferences.remotePeerSdpConstraints, - dontGetRemoteStream: !!userPreferences.dontGetRemoteStream, - dontAttachLocalStream: !!userPreferences.dontAttachLocalStream, - renegotiatingPeer: !!userPreferences.renegotiatingPeer, - peerRef: userPreferences.peerRef, - channels: userPreferences.channels || [], - onLocalSdp: function(localSdp) { - self.onNegotiationNeeded(localSdp, remoteUserId); - }, - onLocalCandidate: function(localCandidate) { - localCandidate = OnIceCandidateHandler.processCandidates(connection, localCandidate) - if (localCandidate) { - self.onNegotiationNeeded(localCandidate, remoteUserId); - } - }, - remoteSdp: remoteSdp, - onDataChannelMessage: function(message) { - if (!connection.fbr && connection.enableFileSharing) initFileBufferReader(); - - if (typeof message == 'string' || !connection.enableFileSharing) { - self.onDataChannelMessage(message, remoteUserId); - return; - } - - var that = this; - - if (message instanceof ArrayBuffer || message instanceof DataView) { - connection.fbr.convertToObject(message, function(object) { - that.onDataChannelMessage(object); - }); - return; - } - - if (message.readyForNextChunk) { - connection.fbr.getNextChunk(message, function(nextChunk, isLastChunk) { - connection.peers[remoteUserId].channels.forEach(function(channel) { - channel.send(nextChunk); - }); - }, remoteUserId); - return; - } - - if (message.chunkMissing) { - connection.fbr.chunkMissing(message); - return; - } - - connection.fbr.addChunk(message, function(promptNextChunk) { - connection.peers[remoteUserId].peer.channel.send(promptNextChunk); - }); - }, - onDataChannelError: function(error) { - self.onDataChannelError(error, remoteUserId); - }, - onDataChannelOpened: function(channel) { - self.onDataChannelOpened(channel, remoteUserId); - }, - onDataChannelClosed: function(event) { - self.onDataChannelClosed(event, remoteUserId); - }, - onRemoteStream: function(stream) { - if (connection.peers[remoteUserId]) { - connection.peers[remoteUserId].streams.push(stream); - } - - self.onGettingRemoteMedia(stream, remoteUserId); - }, - onRemoteStreamRemoved: function(stream) { - self.onRemovingRemoteMedia(stream, remoteUserId); - }, - onPeerStateChanged: function(states) { - self.onPeerStateChanged(states); - - if (states.iceConnectionState === 'new') { - self.onNegotiationStarted(remoteUserId, states); - } - - if (states.iceConnectionState === 'connected') { - self.onNegotiationCompleted(remoteUserId, states); - } - - if (states.iceConnectionState.search(/closed|failed/gi) !== -1) { - self.onUserLeft(remoteUserId); - self.disconnectWith(remoteUserId); - } - } - }; - }; - - this.createNewPeer = function(remoteUserId, userPreferences) { - if (connection.maxParticipantsAllowed <= connection.getAllParticipants().length) { - return; - } - - userPreferences = userPreferences || {}; - - if (connection.isInitiator && !!connection.session.audio && connection.session.audio === 'two-way' && !userPreferences.streamsToShare) { - userPreferences.isOneWay = false; - userPreferences.isDataOnly = false; - userPreferences.session = connection.session; - } - - if (!userPreferences.isOneWay && !userPreferences.isDataOnly) { - userPreferences.isOneWay = true; - this.onNegotiationNeeded({ - enableMedia: true, - userPreferences: userPreferences - }, remoteUserId); - return; - } - - userPreferences = connection.setUserPreferences(userPreferences, remoteUserId); - var localConfig = this.getLocalConfig(null, remoteUserId, userPreferences); - connection.peers[remoteUserId] = new PeerInitiator(localConfig); - }; - - this.createAnsweringPeer = function(remoteSdp, remoteUserId, userPreferences) { - userPreferences = connection.setUserPreferences(userPreferences || {}, remoteUserId); - - var localConfig = this.getLocalConfig(remoteSdp, remoteUserId, userPreferences); - connection.peers[remoteUserId] = new PeerInitiator(localConfig); - }; - - this.renegotiatePeer = function(remoteUserId, userPreferences, remoteSdp) { - if (!connection.peers[remoteUserId]) { - if (connection.enableLogs) { - console.error('Peer (' + remoteUserId + ') does not exist. Renegotiation skipped.'); - } - return; - } - - if (!userPreferences) { - userPreferences = {}; - } - - userPreferences.renegotiatingPeer = true; - userPreferences.peerRef = connection.peers[remoteUserId].peer; - userPreferences.channels = connection.peers[remoteUserId].channels; - - var localConfig = this.getLocalConfig(remoteSdp, remoteUserId, userPreferences); - - connection.peers[remoteUserId] = new PeerInitiator(localConfig); - }; - - this.replaceTrack = function(track, remoteUserId, isVideoTrack) { - if (!connection.peers[remoteUserId]) { - throw 'This peer (' + remoteUserId + ') does not exist.'; - } - - var peer = connection.peers[remoteUserId].peer; - - if (!!peer.getSenders && typeof peer.getSenders === 'function' && peer.getSenders().length) { - peer.getSenders().forEach(function(rtpSender) { - if (isVideoTrack && rtpSender.track.kind === 'video') { - connection.peers[remoteUserId].peer.lastVideoTrack = rtpSender.track; - rtpSender.replaceTrack(track); - } - - if (!isVideoTrack && rtpSender.track.kind === 'audio') { - connection.peers[remoteUserId].peer.lastAudioTrack = rtpSender.track; - rtpSender.replaceTrack(track); - } - }); - return; - } - - console.warn('RTPSender.replaceTrack is NOT supported.'); - this.renegotiatePeer(remoteUserId); - }; - - this.onNegotiationNeeded = function(message, remoteUserId) {}; - this.addNegotiatedMessage = function(message, remoteUserId) { - if (message.type && message.sdp) { - if (message.type == 'answer') { - if (connection.peers[remoteUserId]) { - connection.peers[remoteUserId].addRemoteSdp(message); - } - } - - if (message.type == 'offer') { - if (message.renegotiatingPeer) { - this.renegotiatePeer(remoteUserId, null, message); - } else { - this.createAnsweringPeer(message, remoteUserId); - } - } - - if (connection.enableLogs) { - console.log('Remote peer\'s sdp:', message.sdp); - } - return; - } - - if (message.candidate) { - if (connection.peers[remoteUserId]) { - connection.peers[remoteUserId].addRemoteCandidate(message); - } - - if (connection.enableLogs) { - console.log('Remote peer\'s candidate pairs:', message.candidate); - } - return; - } - - if (message.enableMedia) { - connection.session = message.userPreferences.session || connection.session; - - if (connection.session.oneway && connection.attachStreams.length) { - connection.attachStreams = []; - } - - if (message.userPreferences.isDataOnly && connection.attachStreams.length) { - connection.attachStreams.length = []; - } - - var streamsToShare = {}; - connection.attachStreams.forEach(function(stream) { - streamsToShare[stream.streamid] = { - isAudio: !!stream.isAudio, - isVideo: !!stream.isVideo, - isScreen: !!stream.isScreen - }; - }); - message.userPreferences.streamsToShare = streamsToShare; - - self.onNegotiationNeeded({ - readyForOffer: true, - userPreferences: message.userPreferences - }, remoteUserId); - } - - if (message.readyForOffer) { - connection.onReadyForOffer(remoteUserId, message.userPreferences); - } - - function cb(stream) { - gumCallback(stream, message, remoteUserId); - } - }; - - function gumCallback(stream, message, remoteUserId) { - var streamsToShare = {}; - connection.attachStreams.forEach(function(stream) { - streamsToShare[stream.streamid] = { - isAudio: !!stream.isAudio, - isVideo: !!stream.isVideo, - isScreen: !!stream.isScreen - }; - }); - message.userPreferences.streamsToShare = streamsToShare; - - self.onNegotiationNeeded({ - readyForOffer: true, - userPreferences: message.userPreferences - }, remoteUserId); - } - - this.onGettingRemoteMedia = function(stream, remoteUserId) {}; - this.onRemovingRemoteMedia = function(stream, remoteUserId) {}; - this.onGettingLocalMedia = function(localStream) {}; - this.onLocalMediaError = function(error, constraints) { - connection.onMediaError(error, constraints); - }; - - function initFileBufferReader() { - connection.fbr = new FileBufferReader(); - connection.fbr.onProgress = function(chunk) { - connection.onFileProgress(chunk); - }; - connection.fbr.onBegin = function(file) { - connection.onFileStart(file); - }; - connection.fbr.onEnd = function(file) { - connection.onFileEnd(file); - }; - } - - this.shareFile = function(file, remoteUserId) { - initFileBufferReader(); - - connection.fbr.readAsArrayBuffer(file, function(uuid) { - var arrayOfUsers = connection.getAllParticipants(); - - if (remoteUserId) { - arrayOfUsers = [remoteUserId]; - } - - arrayOfUsers.forEach(function(participant) { - connection.fbr.getNextChunk(uuid, function(nextChunk) { - connection.peers[participant].channels.forEach(function(channel) { - channel.send(nextChunk); - }); - }, participant); - }); - }, { - userid: connection.userid, - // extra: connection.extra, - chunkSize: DetectRTC.browser.name === 'Firefox' ? 15 * 1000 : connection.chunkSize || 0 - }); - }; - - if (typeof 'TextReceiver' !== 'undefined') { - var textReceiver = new TextReceiver(connection); - } - - this.onDataChannelMessage = function(message, remoteUserId) { - textReceiver.receive(JSON.parse(message), remoteUserId, connection.peers[remoteUserId] ? connection.peers[remoteUserId].extra : {}); - }; - - this.onDataChannelClosed = function(event, remoteUserId) { - event.userid = remoteUserId; - event.extra = connection.peers[remoteUserId] ? connection.peers[remoteUserId].extra : {}; - connection.onclose(event); - }; - - this.onDataChannelError = function(error, remoteUserId) { - error.userid = remoteUserId; - event.extra = connection.peers[remoteUserId] ? connection.peers[remoteUserId].extra : {}; - connection.onerror(error); - }; - - this.onDataChannelOpened = function(channel, remoteUserId) { - // keep last channel only; we are not expecting parallel/channels channels - if (connection.peers[remoteUserId].channels.length) { - connection.peers[remoteUserId].channels = [channel]; - return; - } - - connection.peers[remoteUserId].channels.push(channel); - connection.onopen({ - userid: remoteUserId, - extra: connection.peers[remoteUserId] ? connection.peers[remoteUserId].extra : {}, - channel: channel - }); - }; - - this.onPeerStateChanged = function(state) { - connection.onPeerStateChanged(state); - }; - - this.onNegotiationStarted = function(remoteUserId, states) {}; - this.onNegotiationCompleted = function(remoteUserId, states) {}; - - this.getRemoteStreams = function(remoteUserId) { - remoteUserId = remoteUserId || connection.peers.getAllParticipants()[0]; - return connection.peers[remoteUserId] ? connection.peers[remoteUserId].streams : []; - }; - } - - 'use strict'; - - // Last Updated On: 2020-08-12 11:18:41 AM UTC - - // ________________ - // DetectRTC v1.4.1 - - // Open-Sourced: https://github.com/muaz-khan/DetectRTC - - // -------------------------------------------------- - // Muaz Khan - www.MuazKhan.com - // MIT License - www.WebRTC-Experiment.com/licence - // -------------------------------------------------- - - (function() { - - var browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45'; - - var isNodejs = typeof process === 'object' && typeof process.versions === 'object' && process.versions.node && /*node-process*/ !process.browser; - if (isNodejs) { - var version = process.versions.node.toString().replace('v', ''); - browserFakeUserAgent = 'Nodejs/' + version + ' (NodeOS) AppleWebKit/' + version + ' (KHTML, like Gecko) Nodejs/' + version + ' Nodejs/' + version - } - - (function(that) { - if (typeof window !== 'undefined') { - return; - } - - if (typeof window === 'undefined' && typeof global !== 'undefined') { - global.navigator = { - userAgent: browserFakeUserAgent, - getUserMedia: function() {} - }; - - /*global window:true */ - that.window = global; - } else if (typeof window === 'undefined') { - // window = this; - } - - if (typeof location === 'undefined') { - /*global location:true */ - that.location = { - protocol: 'file:', - href: '', - hash: '' - }; - } - - if (typeof screen === 'undefined') { - /*global screen:true */ - that.screen = { - width: 0, - height: 0 - }; - } - })(typeof global !== 'undefined' ? global : window); - - /*global navigator:true */ - var navigator = window.navigator; - - if (typeof navigator !== 'undefined') { - if (typeof navigator.webkitGetUserMedia !== 'undefined') { - navigator.getUserMedia = navigator.webkitGetUserMedia; - } - - if (typeof navigator.mozGetUserMedia !== 'undefined') { - navigator.getUserMedia = navigator.mozGetUserMedia; - } - } else { - navigator = { - getUserMedia: function() {}, - userAgent: browserFakeUserAgent - }; - } - - var isMobileDevice = !!(/Android|webOS|iPhone|iPad|iPod|BB10|BlackBerry|IEMobile|Opera Mini|Mobile|mobile/i.test(navigator.userAgent || '')); - - var isEdge = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveOrOpenBlob || !!navigator.msSaveBlob); - - var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; - var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1 && ('netscape' in window) && / rv:/.test(navigator.userAgent); - var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); - var isChrome = !!window.chrome && !isOpera; - var isIE = typeof document !== 'undefined' && !!document.documentMode && !isEdge; - - // this one can also be used: - // https://www.websocket.org/js/stuff.js (DetectBrowser.js) - - function getBrowserInfo() { - var nVer = navigator.appVersion; - var nAgt = navigator.userAgent; - var browserName = navigator.appName; - var fullVersion = '' + parseFloat(navigator.appVersion); - var majorVersion = parseInt(navigator.appVersion, 10); - var nameOffset, verOffset, ix; - - // In Opera, the true version is after 'Opera' or after 'Version' - if (isOpera) { - browserName = 'Opera'; - try { - fullVersion = navigator.userAgent.split('OPR/')[1].split(' ')[0]; - majorVersion = fullVersion.split('.')[0]; - } catch (e) { - fullVersion = '0.0.0.0'; - majorVersion = 0; - } - } - // In MSIE version <=10, the true version is after 'MSIE' in userAgent - // In IE 11, look for the string after 'rv:' - else if (isIE) { - verOffset = nAgt.indexOf('rv:'); - if (verOffset > 0) { //IE 11 - fullVersion = nAgt.substring(verOffset + 3); - } else { //IE 10 or earlier - verOffset = nAgt.indexOf('MSIE'); - fullVersion = nAgt.substring(verOffset + 5); - } - browserName = 'IE'; - } - // In Chrome, the true version is after 'Chrome' - else if (isChrome) { - verOffset = nAgt.indexOf('Chrome'); - browserName = 'Chrome'; - fullVersion = nAgt.substring(verOffset + 7); - } - // In Safari, the true version is after 'Safari' or after 'Version' - else if (isSafari) { - // both and safri and chrome has same userAgent - if (nAgt.indexOf('CriOS') !== -1) { - verOffset = nAgt.indexOf('CriOS'); - browserName = 'Chrome'; - fullVersion = nAgt.substring(verOffset + 6); - } else if (nAgt.indexOf('FxiOS') !== -1) { - verOffset = nAgt.indexOf('FxiOS'); - browserName = 'Firefox'; - fullVersion = nAgt.substring(verOffset + 6); - } else { - verOffset = nAgt.indexOf('Safari'); - - browserName = 'Safari'; - fullVersion = nAgt.substring(verOffset + 7); - - if ((verOffset = nAgt.indexOf('Version')) !== -1) { - fullVersion = nAgt.substring(verOffset + 8); - } - - if (navigator.userAgent.indexOf('Version/') !== -1) { - fullVersion = navigator.userAgent.split('Version/')[1].split(' ')[0]; - } - } - } - // In Firefox, the true version is after 'Firefox' - else if (isFirefox) { - verOffset = nAgt.indexOf('Firefox'); - browserName = 'Firefox'; - fullVersion = nAgt.substring(verOffset + 8); - } - - // In most other browsers, 'name/version' is at the end of userAgent - else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) { - browserName = nAgt.substring(nameOffset, verOffset); - fullVersion = nAgt.substring(verOffset + 1); - - if (browserName.toLowerCase() === browserName.toUpperCase()) { - browserName = navigator.appName; - } - } - - if (isEdge) { - browserName = 'Edge'; - fullVersion = navigator.userAgent.split('Edge/')[1]; - // fullVersion = parseInt(navigator.userAgent.match(/Edge\/(\d+).(\d+)$/)[2], 10).toString(); - } - - // trim the fullVersion string at semicolon/space/bracket if present - if ((ix = fullVersion.search(/[; \)]/)) !== -1) { - fullVersion = fullVersion.substring(0, ix); - } - - majorVersion = parseInt('' + fullVersion, 10); - - if (isNaN(majorVersion)) { - fullVersion = '' + parseFloat(navigator.appVersion); - majorVersion = parseInt(navigator.appVersion, 10); - } - - return { - fullVersion: fullVersion, - version: majorVersion, - name: browserName, - isPrivateBrowsing: false - }; - } - - // via: https://gist.github.com/cou929/7973956 - - function retry(isDone, next) { - var currentTrial = 0, - maxRetry = 50, - interval = 10, - isTimeout = false; - var id = window.setInterval( - function() { - if (isDone()) { - window.clearInterval(id); - next(isTimeout); - } - if (currentTrial++ > maxRetry) { - window.clearInterval(id); - isTimeout = true; - next(isTimeout); - } - }, - 10 - ); - } - - function isIE10OrLater(userAgent) { - var ua = userAgent.toLowerCase(); - if (ua.indexOf('msie') === 0 && ua.indexOf('trident') === 0) { - return false; - } - var match = /(?:msie|rv:)\s?([\d\.]+)/.exec(ua); - if (match && parseInt(match[1], 10) >= 10) { - return true; - } - return false; - } - - function detectPrivateMode(callback) { - var isPrivate; - - try { - - if (window.webkitRequestFileSystem) { - window.webkitRequestFileSystem( - window.TEMPORARY, 1, - function() { - isPrivate = false; - }, - function(e) { - isPrivate = true; - } - ); - } else if (window.indexedDB && /Firefox/.test(window.navigator.userAgent)) { - var db; - try { - db = window.indexedDB.open('test'); - db.onerror = function() { - return true; - }; - } catch (e) { - isPrivate = true; - } - - if (typeof isPrivate === 'undefined') { - retry( - function isDone() { - return db.readyState === 'done' ? true : false; - }, - function next(isTimeout) { - if (!isTimeout) { - isPrivate = db.result ? false : true; - } - } - ); - } - } else if (isIE10OrLater(window.navigator.userAgent)) { - isPrivate = false; - try { - if (!window.indexedDB) { - isPrivate = true; - } - } catch (e) { - isPrivate = true; - } - } else if (window.localStorage && /Safari/.test(window.navigator.userAgent)) { - try { - window.localStorage.setItem('test', 1); - } catch (e) { - isPrivate = true; - } - - if (typeof isPrivate === 'undefined') { - isPrivate = false; - window.localStorage.removeItem('test'); - } - } - - } catch (e) { - isPrivate = false; - } - - retry( - function isDone() { - return typeof isPrivate !== 'undefined' ? true : false; - }, - function next(isTimeout) { - callback(isPrivate); - } - ); - } - - var isMobile = { - Android: function() { - return navigator.userAgent.match(/Android/i); - }, - BlackBerry: function() { - return navigator.userAgent.match(/BlackBerry|BB10/i); - }, - iOS: function() { - return navigator.userAgent.match(/iPhone|iPad|iPod/i); - }, - Opera: function() { - return navigator.userAgent.match(/Opera Mini/i); - }, - Windows: function() { - return navigator.userAgent.match(/IEMobile/i); - }, - any: function() { - return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); - }, - getOsName: function() { - var osName = 'Unknown OS'; - if (isMobile.Android()) { - osName = 'Android'; - } - - if (isMobile.BlackBerry()) { - osName = 'BlackBerry'; - } - - if (isMobile.iOS()) { - osName = 'iOS'; - } - - if (isMobile.Opera()) { - osName = 'Opera Mini'; - } - - if (isMobile.Windows()) { - osName = 'Windows'; - } - - return osName; - } - }; - - // via: http://jsfiddle.net/ChristianL/AVyND/ - function detectDesktopOS() { - var unknown = '-'; - - var nVer = navigator.appVersion; - var nAgt = navigator.userAgent; - - var os = unknown; - var clientStrings = [{ - s: 'Chrome OS', - r: /CrOS/ - }, { - s: 'Windows 10', - r: /(Windows 10.0|Windows NT 10.0)/ - }, { - s: 'Windows 8.1', - r: /(Windows 8.1|Windows NT 6.3)/ - }, { - s: 'Windows 8', - r: /(Windows 8|Windows NT 6.2)/ - }, { - s: 'Windows 7', - r: /(Windows 7|Windows NT 6.1)/ - }, { - s: 'Windows Vista', - r: /Windows NT 6.0/ - }, { - s: 'Windows Server 2003', - r: /Windows NT 5.2/ - }, { - s: 'Windows XP', - r: /(Windows NT 5.1|Windows XP)/ - }, { - s: 'Windows 2000', - r: /(Windows NT 5.0|Windows 2000)/ - }, { - s: 'Windows ME', - r: /(Win 9x 4.90|Windows ME)/ - }, { - s: 'Windows 98', - r: /(Windows 98|Win98)/ - }, { - s: 'Windows 95', - r: /(Windows 95|Win95|Windows_95)/ - }, { - s: 'Windows NT 4.0', - r: /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/ - }, { - s: 'Windows CE', - r: /Windows CE/ - }, { - s: 'Windows 3.11', - r: /Win16/ - }, { - s: 'Android', - r: /Android/ - }, { - s: 'Open BSD', - r: /OpenBSD/ - }, { - s: 'Sun OS', - r: /SunOS/ - }, { - s: 'Linux', - r: /(Linux|X11)/ - }, { - s: 'iOS', - r: /(iPhone|iPad|iPod)/ - }, { - s: 'Mac OS X', - r: /Mac OS X/ - }, { - s: 'Mac OS', - r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ - }, { - s: 'QNX', - r: /QNX/ - }, { - s: 'UNIX', - r: /UNIX/ - }, { - s: 'BeOS', - r: /BeOS/ - }, { - s: 'OS/2', - r: /OS\/2/ - }, { - s: 'Search Bot', - r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ - }]; - for (var i = 0, cs; cs = clientStrings[i]; i++) { - if (cs.r.test(nAgt)) { - os = cs.s; - break; - } - } - - var osVersion = unknown; - - if (/Windows/.test(os)) { - if (/Windows (.*)/.test(os)) { - osVersion = /Windows (.*)/.exec(os)[1]; - } - os = 'Windows'; - } - - switch (os) { - case 'Mac OS X': - if (/Mac OS X (10[\.\_\d]+)/.test(nAgt)) { - osVersion = /Mac OS X (10[\.\_\d]+)/.exec(nAgt)[1]; - } - break; - case 'Android': - if (/Android ([\.\_\d]+)/.test(nAgt)) { - osVersion = /Android ([\.\_\d]+)/.exec(nAgt)[1]; - } - break; - case 'iOS': - if (/OS (\d+)_(\d+)_?(\d+)?/.test(nAgt)) { - osVersion = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer); - if (osVersion && osVersion.length > 3) { - osVersion = osVersion[1] + '.' + osVersion[2] + '.' + (osVersion[3] | 0); - } - } - break; - } - - return { - osName: os, - osVersion: osVersion - }; - } - - var osName = 'Unknown OS'; - var osVersion = 'Unknown OS Version'; - - function getAndroidVersion(ua) { - ua = (ua || navigator.userAgent).toLowerCase(); - var match = ua.match(/android\s([0-9\.]*)/); - return match ? match[1] : false; - } - - var osInfo = detectDesktopOS(); - - if (osInfo && osInfo.osName && osInfo.osName != '-') { - osName = osInfo.osName; - osVersion = osInfo.osVersion; - } else if (isMobile.any()) { - osName = isMobile.getOsName(); - - if (osName == 'Android') { - osVersion = getAndroidVersion(); - } - } - - var isNodejs = typeof process === 'object' && typeof process.versions === 'object' && process.versions.node; - - if (osName === 'Unknown OS' && isNodejs) { - osName = 'Nodejs'; - osVersion = process.versions.node.toString().replace('v', ''); - } - - var isCanvasSupportsStreamCapturing = false; - var isVideoSupportsStreamCapturing = false; - ['captureStream', 'mozCaptureStream', 'webkitCaptureStream'].forEach(function(item) { - if (typeof document === 'undefined' || typeof document.createElement !== 'function') { - return; - } - - if (!isCanvasSupportsStreamCapturing && item in document.createElement('canvas')) { - isCanvasSupportsStreamCapturing = true; - } - - if (!isVideoSupportsStreamCapturing && item in document.createElement('video')) { - isVideoSupportsStreamCapturing = true; - } - }); - - var regexIpv4Local = /^(192\.168\.|169\.254\.|10\.|172\.(1[6-9]|2\d|3[01]))/, - regexIpv4 = /([0-9]{1,3}(\.[0-9]{1,3}){3})/, - regexIpv6 = /[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7}/; - - // via: https://github.com/diafygi/webrtc-ips - function DetectLocalIPAddress(callback, stream) { - if (!DetectRTC.isWebRTCSupported) { - return; - } - - var isPublic = true, - isIpv4 = true; - getIPs(function(ip) { - if (!ip) { - callback(); // Pass nothing to tell that ICE-gathering-ended - } else if (ip.match(regexIpv4Local)) { - isPublic = false; - callback('Local: ' + ip, isPublic, isIpv4); - } else if (ip.match(regexIpv6)) { //via https://ourcodeworld.com/articles/read/257/how-to-get-the-client-ip-address-with-javascript-only - isIpv4 = false; - callback('Public: ' + ip, isPublic, isIpv4); - } else { - callback('Public: ' + ip, isPublic, isIpv4); - } - }, stream); - } - - function getIPs(callback, stream) { - if (typeof document === 'undefined' || typeof document.getElementById !== 'function') { - return; - } - - var ipDuplicates = {}; - - var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; - - if (!RTCPeerConnection) { - var iframe = document.getElementById('iframe'); - if (!iframe) { - return; - } - var win = iframe.contentWindow; - RTCPeerConnection = win.RTCPeerConnection || win.mozRTCPeerConnection || win.webkitRTCPeerConnection; - } - - if (!RTCPeerConnection) { - return; - } - - var peerConfig = null; - - if (DetectRTC.browser === 'Chrome' && DetectRTC.browser.version < 58) { - // todo: add support for older Opera - peerConfig = { - optional: [{ - RtpDataChannels: true - }] - }; - } - - var servers = { - iceServers: [{ - urls: 'stun:stun.l.google.com:19302' - }] - }; - - var pc = new RTCPeerConnection(servers, peerConfig); - - if (stream) { - if (pc.addStream) { - pc.addStream(stream); - } else if (pc.addTrack && stream.getTracks()[0]) { - pc.addTrack(stream.getTracks()[0], stream); - } - } - - function handleCandidate(candidate) { - if (!candidate) { - callback(); // Pass nothing to tell that ICE-gathering-ended - return; - } - - var match = regexIpv4.exec(candidate); - if (!match) { - return; - } - var ipAddress = match[1]; - var isPublic = (candidate.match(regexIpv4Local)), - isIpv4 = true; - - if (ipDuplicates[ipAddress] === undefined) { - callback(ipAddress, isPublic, isIpv4); - } - - ipDuplicates[ipAddress] = true; - } - - // listen for candidate events - pc.onicecandidate = function(event) { - if (event.candidate && event.candidate.candidate) { - handleCandidate(event.candidate.candidate); - } else { - handleCandidate(); // Pass nothing to tell that ICE-gathering-ended - } - }; - - // create data channel - if (!stream) { - try { - pc.createDataChannel('sctp', {}); - } catch (e) {} - } - - // create an offer sdp - if (DetectRTC.isPromisesSupported) { - pc.createOffer().then(function(result) { - pc.setLocalDescription(result).then(afterCreateOffer); - }); - } else { - pc.createOffer(function(result) { - pc.setLocalDescription(result, afterCreateOffer, function() {}); - }, function() {}); - } - - function afterCreateOffer() { - var lines = pc.localDescription.sdp.split('\n'); - - lines.forEach(function(line) { - if (line && line.indexOf('a=candidate:') === 0) { - handleCandidate(line); - } - }); - } - } - - var MediaDevices = []; - - var audioInputDevices = []; - var audioOutputDevices = []; - var videoInputDevices = []; - - if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) { - // Firefox 38+ seems having support of enumerateDevices - // Thanks @xdumaine/enumerateDevices - navigator.enumerateDevices = function(callback) { - var enumerateDevices = navigator.mediaDevices.enumerateDevices(); - if (enumerateDevices && enumerateDevices.then) { - navigator.mediaDevices.enumerateDevices().then(callback).catch(function() { - callback([]); - }); - } else { - callback([]); - } - }; - } - - // Media Devices detection - var canEnumerate = false; - - /*global MediaStreamTrack:true */ - if (typeof MediaStreamTrack !== 'undefined' && 'getSources' in MediaStreamTrack) { - canEnumerate = true; - } else if (navigator.mediaDevices && !!navigator.mediaDevices.enumerateDevices) { - canEnumerate = true; - } - - var hasMicrophone = false; - var hasSpeakers = false; - var hasWebcam = false; - - var isWebsiteHasMicrophonePermissions = false; - var isWebsiteHasWebcamPermissions = false; - - // http://dev.w3.org/2011/webrtc/editor/getusermedia.html#mediadevices - function checkDeviceSupport(callback) { - if (!canEnumerate) { - if (callback) { - callback(); - } - return; - } - - if (!navigator.enumerateDevices && window.MediaStreamTrack && window.MediaStreamTrack.getSources) { - navigator.enumerateDevices = window.MediaStreamTrack.getSources.bind(window.MediaStreamTrack); - } - - if (!navigator.enumerateDevices && navigator.enumerateDevices) { - navigator.enumerateDevices = navigator.enumerateDevices.bind(navigator); - } - - if (!navigator.enumerateDevices) { - if (callback) { - callback(); - } - return; - } - - MediaDevices = []; - - audioInputDevices = []; - audioOutputDevices = []; - videoInputDevices = []; - - hasMicrophone = false; - hasSpeakers = false; - hasWebcam = false; - - isWebsiteHasMicrophonePermissions = false; - isWebsiteHasWebcamPermissions = false; - - // to prevent duplication - var alreadyUsedDevices = {}; - - navigator.enumerateDevices(function(devices) { - MediaDevices = []; - - audioInputDevices = []; - audioOutputDevices = []; - videoInputDevices = []; - - devices.forEach(function(_device) { - var device = {}; - for (var d in _device) { - try { - if (typeof _device[d] !== 'function') { - device[d] = _device[d]; - } - } catch (e) {} - } - - if (alreadyUsedDevices[device.deviceId + device.label + device.kind]) { - return; - } - - // if it is MediaStreamTrack.getSources - if (device.kind === 'audio') { - device.kind = 'audioinput'; - } - - if (device.kind === 'video') { - device.kind = 'videoinput'; - } - - if (!device.deviceId) { - device.deviceId = device.id; - } - - if (!device.id) { - device.id = device.deviceId; - } - - if (!device.label) { - device.isCustomLabel = true; - - if (device.kind === 'videoinput') { - device.label = 'Camera ' + (videoInputDevices.length + 1); - } else if (device.kind === 'audioinput') { - device.label = 'Microphone ' + (audioInputDevices.length + 1); - } else if (device.kind === 'audiooutput') { - device.label = 'Speaker ' + (audioOutputDevices.length + 1); - } else { - device.label = 'Please invoke getUserMedia once.'; - } - - if (typeof DetectRTC !== 'undefined' && DetectRTC.browser.isChrome && DetectRTC.browser.version >= 46 && !/^(https:|chrome-extension:)$/g.test(location.protocol || '')) { - if (typeof document !== 'undefined' && typeof document.domain === 'string' && document.domain.search && document.domain.search(/localhost|127.0./g) === -1) { - device.label = 'HTTPs is required to get label of this ' + device.kind + ' device.'; - } - } - } else { - // Firefox on Android still returns empty label - if (device.kind === 'videoinput' && !isWebsiteHasWebcamPermissions) { - isWebsiteHasWebcamPermissions = true; - } - - if (device.kind === 'audioinput' && !isWebsiteHasMicrophonePermissions) { - isWebsiteHasMicrophonePermissions = true; - } - } - - if (device.kind === 'audioinput') { - hasMicrophone = true; - - if (audioInputDevices.indexOf(device) === -1) { - audioInputDevices.push(device); - } - } - - if (device.kind === 'audiooutput') { - hasSpeakers = true; - - if (audioOutputDevices.indexOf(device) === -1) { - audioOutputDevices.push(device); - } - } - - if (device.kind === 'videoinput') { - hasWebcam = true; - - if (videoInputDevices.indexOf(device) === -1) { - videoInputDevices.push(device); - } - } - - // there is no 'videoouput' in the spec. - MediaDevices.push(device); - - alreadyUsedDevices[device.deviceId + device.label + device.kind] = device; - }); - - if (typeof DetectRTC !== 'undefined') { - // to sync latest outputs - DetectRTC.MediaDevices = MediaDevices; - DetectRTC.hasMicrophone = hasMicrophone; - DetectRTC.hasSpeakers = hasSpeakers; - DetectRTC.hasWebcam = hasWebcam; - - DetectRTC.isWebsiteHasWebcamPermissions = isWebsiteHasWebcamPermissions; - DetectRTC.isWebsiteHasMicrophonePermissions = isWebsiteHasMicrophonePermissions; - - DetectRTC.audioInputDevices = audioInputDevices; - DetectRTC.audioOutputDevices = audioOutputDevices; - DetectRTC.videoInputDevices = videoInputDevices; - } - - if (callback) { - callback(); - } - }); - } - - var DetectRTC = window.DetectRTC || {}; - - // ---------- - // DetectRTC.browser.name || DetectRTC.browser.version || DetectRTC.browser.fullVersion - DetectRTC.browser = getBrowserInfo(); - - detectPrivateMode(function(isPrivateBrowsing) { - DetectRTC.browser.isPrivateBrowsing = !!isPrivateBrowsing; - }); - - // DetectRTC.isChrome || DetectRTC.isFirefox || DetectRTC.isEdge - DetectRTC.browser['is' + DetectRTC.browser.name] = true; - - // ----------- - DetectRTC.osName = osName; - DetectRTC.osVersion = osVersion; - - var isNodeWebkit = typeof process === 'object' && typeof process.versions === 'object' && process.versions['node-webkit']; - - // --------- Detect if system supports WebRTC 1.0 or WebRTC 1.1. - var isWebRTCSupported = false; - ['RTCPeerConnection', 'webkitRTCPeerConnection', 'mozRTCPeerConnection', 'RTCIceGatherer'].forEach(function(item) { - if (isWebRTCSupported) { - return; - } - - if (item in window) { - isWebRTCSupported = true; - } - }); - DetectRTC.isWebRTCSupported = isWebRTCSupported; - - //------- - DetectRTC.isORTCSupported = typeof RTCIceGatherer !== 'undefined'; - - // --------- Detect if system supports screen capturing API - var isScreenCapturingSupported = false; - if (DetectRTC.browser.isChrome && DetectRTC.browser.version >= 35) { - isScreenCapturingSupported = true; - } else if (DetectRTC.browser.isFirefox && DetectRTC.browser.version >= 34) { - isScreenCapturingSupported = true; - } else if (DetectRTC.browser.isEdge && DetectRTC.browser.version >= 17) { - isScreenCapturingSupported = true; - } else if (DetectRTC.osName === 'Android' && DetectRTC.browser.isChrome) { - isScreenCapturingSupported = true; - } - - if (!!navigator.getDisplayMedia || (navigator.mediaDevices && navigator.mediaDevices.getDisplayMedia)) { - isScreenCapturingSupported = true; - } - - if (!/^(https:|chrome-extension:)$/g.test(location.protocol || '')) { - var isNonLocalHost = typeof document !== 'undefined' && typeof document.domain === 'string' && document.domain.search && document.domain.search(/localhost|127.0./g) === -1; - if (isNonLocalHost && (DetectRTC.browser.isChrome || DetectRTC.browser.isEdge || DetectRTC.browser.isOpera)) { - isScreenCapturingSupported = false; - } else if (DetectRTC.browser.isFirefox) { - isScreenCapturingSupported = false; - } - } - DetectRTC.isScreenCapturingSupported = isScreenCapturingSupported; - - // --------- Detect if WebAudio API are supported - var webAudio = { - isSupported: false, - isCreateMediaStreamSourceSupported: false - }; - - ['AudioContext', 'webkitAudioContext', 'mozAudioContext', 'msAudioContext'].forEach(function(item) { - if (webAudio.isSupported) { - return; - } - - if (item in window) { - webAudio.isSupported = true; - - if (window[item] && 'createMediaStreamSource' in window[item].prototype) { - webAudio.isCreateMediaStreamSourceSupported = true; - } - } - }); - DetectRTC.isAudioContextSupported = webAudio.isSupported; - DetectRTC.isCreateMediaStreamSourceSupported = webAudio.isCreateMediaStreamSourceSupported; - - // ---------- Detect if SCTP/RTP channels are supported. - - var isRtpDataChannelsSupported = false; - if (DetectRTC.browser.isChrome && DetectRTC.browser.version > 31) { - isRtpDataChannelsSupported = true; - } - DetectRTC.isRtpDataChannelsSupported = isRtpDataChannelsSupported; - - var isSCTPSupportd = false; - if (DetectRTC.browser.isFirefox && DetectRTC.browser.version > 28) { - isSCTPSupportd = true; - } else if (DetectRTC.browser.isChrome && DetectRTC.browser.version > 25) { - isSCTPSupportd = true; - } else if (DetectRTC.browser.isOpera && DetectRTC.browser.version >= 11) { - isSCTPSupportd = true; - } - DetectRTC.isSctpDataChannelsSupported = isSCTPSupportd; - - // --------- - - DetectRTC.isMobileDevice = isMobileDevice; // "isMobileDevice" boolean is defined in "getBrowserInfo.js" - - // ------ - var isGetUserMediaSupported = false; - if (navigator.getUserMedia) { - isGetUserMediaSupported = true; - } else if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { - isGetUserMediaSupported = true; - } - - if (DetectRTC.browser.isChrome && DetectRTC.browser.version >= 46 && !/^(https:|chrome-extension:)$/g.test(location.protocol || '')) { - if (typeof document !== 'undefined' && typeof document.domain === 'string' && document.domain.search && document.domain.search(/localhost|127.0./g) === -1) { - isGetUserMediaSupported = 'Requires HTTPs'; - } - } - - if (DetectRTC.osName === 'Nodejs') { - isGetUserMediaSupported = false; - } - DetectRTC.isGetUserMediaSupported = isGetUserMediaSupported; - - var displayResolution = ''; - if (screen.width) { - var width = (screen.width) ? screen.width : ''; - var height = (screen.height) ? screen.height : ''; - displayResolution += '' + width + ' x ' + height; - } - DetectRTC.displayResolution = displayResolution; - - function getAspectRatio(w, h) { - function gcd(a, b) { - return (b == 0) ? a : gcd(b, a % b); - } - var r = gcd(w, h); - return (w / r) / (h / r); - } - - DetectRTC.displayAspectRatio = getAspectRatio(screen.width, screen.height).toFixed(2); - - // ---------- - DetectRTC.isCanvasSupportsStreamCapturing = isCanvasSupportsStreamCapturing; - DetectRTC.isVideoSupportsStreamCapturing = isVideoSupportsStreamCapturing; - - if (DetectRTC.browser.name == 'Chrome' && DetectRTC.browser.version >= 53) { - if (!DetectRTC.isCanvasSupportsStreamCapturing) { - DetectRTC.isCanvasSupportsStreamCapturing = 'Requires chrome flag: enable-experimental-web-platform-features'; - } - - if (!DetectRTC.isVideoSupportsStreamCapturing) { - DetectRTC.isVideoSupportsStreamCapturing = 'Requires chrome flag: enable-experimental-web-platform-features'; - } - } - - // ------ - DetectRTC.DetectLocalIPAddress = DetectLocalIPAddress; - - DetectRTC.isWebSocketsSupported = 'WebSocket' in window && 2 === window.WebSocket.CLOSING; - DetectRTC.isWebSocketsBlocked = !DetectRTC.isWebSocketsSupported; - - if (DetectRTC.osName === 'Nodejs') { - DetectRTC.isWebSocketsSupported = true; - DetectRTC.isWebSocketsBlocked = false; - } - - DetectRTC.checkWebSocketsSupport = function(callback) { - callback = callback || function() {}; - try { - var starttime; - var websocket = new WebSocket('wss://echo.websocket.org:443/'); - websocket.onopen = function() { - DetectRTC.isWebSocketsBlocked = false; - starttime = (new Date).getTime(); - websocket.send('ping'); - }; - websocket.onmessage = function() { - DetectRTC.WebsocketLatency = (new Date).getTime() - starttime + 'ms'; - callback(); - websocket.close(); - websocket = null; - }; - websocket.onerror = function() { - DetectRTC.isWebSocketsBlocked = true; - callback(); - }; - } catch (e) { - DetectRTC.isWebSocketsBlocked = true; - callback(); - } - }; - - // ------- - DetectRTC.load = function(callback) { - callback = callback || function() {}; - checkDeviceSupport(callback); - }; - - // check for microphone/camera support! - if (typeof checkDeviceSupport === 'function') { - // checkDeviceSupport(); - } - - if (typeof MediaDevices !== 'undefined') { - DetectRTC.MediaDevices = MediaDevices; - } else { - DetectRTC.MediaDevices = []; - } - - DetectRTC.hasMicrophone = hasMicrophone; - DetectRTC.hasSpeakers = hasSpeakers; - DetectRTC.hasWebcam = hasWebcam; - - DetectRTC.isWebsiteHasWebcamPermissions = isWebsiteHasWebcamPermissions; - DetectRTC.isWebsiteHasMicrophonePermissions = isWebsiteHasMicrophonePermissions; - - DetectRTC.audioInputDevices = audioInputDevices; - DetectRTC.audioOutputDevices = audioOutputDevices; - DetectRTC.videoInputDevices = videoInputDevices; - - // ------ - var isSetSinkIdSupported = false; - if (typeof document !== 'undefined' && typeof document.createElement === 'function' && 'setSinkId' in document.createElement('video')) { - isSetSinkIdSupported = true; - } - DetectRTC.isSetSinkIdSupported = isSetSinkIdSupported; - - // ----- - var isRTPSenderReplaceTracksSupported = false; - if (DetectRTC.browser.isFirefox && typeof mozRTCPeerConnection !== 'undefined' /*&& DetectRTC.browser.version > 39*/ ) { - /*global mozRTCPeerConnection:true */ - if ('getSenders' in mozRTCPeerConnection.prototype) { - isRTPSenderReplaceTracksSupported = true; - } - } else if (DetectRTC.browser.isChrome && typeof webkitRTCPeerConnection !== 'undefined') { - /*global webkitRTCPeerConnection:true */ - if ('getSenders' in webkitRTCPeerConnection.prototype) { - isRTPSenderReplaceTracksSupported = true; - } - } - DetectRTC.isRTPSenderReplaceTracksSupported = isRTPSenderReplaceTracksSupported; - - //------ - var isRemoteStreamProcessingSupported = false; - if (DetectRTC.browser.isFirefox && DetectRTC.browser.version > 38) { - isRemoteStreamProcessingSupported = true; - } - DetectRTC.isRemoteStreamProcessingSupported = isRemoteStreamProcessingSupported; - - //------- - var isApplyConstraintsSupported = false; - - /*global MediaStreamTrack:true */ - if (typeof MediaStreamTrack !== 'undefined' && 'applyConstraints' in MediaStreamTrack.prototype) { - isApplyConstraintsSupported = true; - } - DetectRTC.isApplyConstraintsSupported = isApplyConstraintsSupported; - - //------- - var isMultiMonitorScreenCapturingSupported = false; - if (DetectRTC.browser.isFirefox && DetectRTC.browser.version >= 43) { - // version 43 merely supports platforms for multi-monitors - // version 44 will support exact multi-monitor selection i.e. you can select any monitor for screen capturing. - isMultiMonitorScreenCapturingSupported = true; - } - DetectRTC.isMultiMonitorScreenCapturingSupported = isMultiMonitorScreenCapturingSupported; - - DetectRTC.isPromisesSupported = !!('Promise' in window); - - // version is generated by "grunt" - DetectRTC.version = '1.4.1'; - - if (typeof DetectRTC === 'undefined') { - window.DetectRTC = {}; - } - - var MediaStream = window.MediaStream; - - if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') { - MediaStream = webkitMediaStream; - } - - if (typeof MediaStream !== 'undefined' && typeof MediaStream === 'function') { - DetectRTC.MediaStream = Object.keys(MediaStream.prototype); - } else DetectRTC.MediaStream = false; - - if (typeof MediaStreamTrack !== 'undefined') { - DetectRTC.MediaStreamTrack = Object.keys(MediaStreamTrack.prototype); - } else DetectRTC.MediaStreamTrack = false; - - var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; - - if (typeof RTCPeerConnection !== 'undefined') { - DetectRTC.RTCPeerConnection = Object.keys(RTCPeerConnection.prototype); - } else DetectRTC.RTCPeerConnection = false; - - window.DetectRTC = DetectRTC; - - if (typeof module !== 'undefined' /* && !!module.exports*/ ) { - module.exports = DetectRTC; - } - - if (typeof define === 'function' && define.amd) { - define('DetectRTC', [], function() { - return DetectRTC; - }); - } - })(); - - // globals.js - - if (typeof cordova !== 'undefined') { - DetectRTC.isMobileDevice = true; - DetectRTC.browser.name = 'Chrome'; - } - - if (navigator && navigator.userAgent && navigator.userAgent.indexOf('Crosswalk') !== -1) { - DetectRTC.isMobileDevice = true; - DetectRTC.browser.name = 'Chrome'; - } - - function fireEvent(obj, eventName, args) { - if (typeof CustomEvent === 'undefined') { - return; - } - - var eventDetail = { - arguments: args, - __exposedProps__: args - }; - - var event = new CustomEvent(eventName, eventDetail); - obj.dispatchEvent(event); - } - - function setHarkEvents(connection, streamEvent) { - if (!streamEvent.stream || !getTracks(streamEvent.stream, 'audio').length) return; - - if (!connection || !streamEvent) { - throw 'Both arguments are required.'; - } - - if (!connection.onspeaking || !connection.onsilence) { - return; - } - - if (typeof hark === 'undefined') { - throw 'hark.js not found.'; - } - - hark(streamEvent.stream, { - onspeaking: function() { - connection.onspeaking(streamEvent); - }, - onsilence: function() { - connection.onsilence(streamEvent); - }, - onvolumechange: function(volume, threshold) { - if (!connection.onvolumechange) { - return; - } - connection.onvolumechange(merge({ - volume: volume, - threshold: threshold - }, streamEvent)); - } - }); - } - - function setMuteHandlers(connection, streamEvent) { - if (!streamEvent.stream || !streamEvent.stream || !streamEvent.stream.addEventListener) return; - - streamEvent.stream.addEventListener('mute', function(event) { - event = connection.streamEvents[streamEvent.streamid]; - - event.session = { - audio: event.muteType === 'audio', - video: event.muteType === 'video' - }; - - connection.onmute(event); - }, false); - - streamEvent.stream.addEventListener('unmute', function(event) { - event = connection.streamEvents[streamEvent.streamid]; - - event.session = { - audio: event.unmuteType === 'audio', - video: event.unmuteType === 'video' - }; - - connection.onunmute(event); - }, false); - } - - function getRandomString() { - if (window.crypto && window.crypto.getRandomValues && navigator.userAgent.indexOf('Safari') === -1) { - var a = window.crypto.getRandomValues(new Uint32Array(3)), - token = ''; - for (var i = 0, l = a.length; i < l; i++) { - token += a[i].toString(36); - } - return token; - } else { - return (Math.random() * new Date().getTime()).toString(36).replace(/\./g, ''); - } - } - - // Get HTMLAudioElement/HTMLVideoElement accordingly - // todo: add API documentation for connection.autoCreateMediaElement - - function getRMCMediaElement(stream, callback, connection) { - if (!connection.autoCreateMediaElement) { - callback({}); - return; - } - - var isAudioOnly = false; - if (!getTracks(stream, 'video').length && !stream.isVideo && !stream.isScreen) { - isAudioOnly = true; - } - - if (DetectRTC.browser.name === 'Firefox') { - if (connection.session.video || connection.session.screen) { - isAudioOnly = false; - } - } - - var mediaElement = document.createElement(isAudioOnly ? 'audio' : 'video'); - - mediaElement.srcObject = stream; - - mediaElement.setAttribute('autoplay', true); - mediaElement.setAttribute('playsinline', true); - mediaElement.setAttribute('controls', true); - mediaElement.setAttribute('muted', false); - mediaElement.setAttribute('volume', 1); - - // http://goo.gl/WZ5nFl - // Firefox don't yet support onended for any stream (remote/local) - if (DetectRTC.browser.name === 'Firefox') { - var streamEndedEvent = 'ended'; - - if ('oninactive' in mediaElement) { - streamEndedEvent = 'inactive'; - } - - mediaElement.addEventListener(streamEndedEvent, function() { - // fireEvent(stream, streamEndedEvent, stream); - currentUserMediaRequest.remove(stream.idInstance); - - if (stream.type === 'local') { - streamEndedEvent = 'ended'; - - if ('oninactive' in stream) { - streamEndedEvent = 'inactive'; - } - - StreamsHandler.onSyncNeeded(stream.streamid, streamEndedEvent); - - connection.attachStreams.forEach(function(aStream, idx) { - if (stream.streamid === aStream.streamid) { - delete connection.attachStreams[idx]; - } - }); - - var newStreamsArray = []; - connection.attachStreams.forEach(function(aStream) { - if (aStream) { - newStreamsArray.push(aStream); - } - }); - connection.attachStreams = newStreamsArray; - - var streamEvent = connection.streamEvents[stream.streamid]; - - if (streamEvent) { - connection.onstreamended(streamEvent); - return; - } - if (this.parentNode) { - this.parentNode.removeChild(this); - } - } - }, false); - } - - var played = mediaElement.play(); - if (typeof played !== 'undefined') { - var cbFired = false; - setTimeout(function() { - if (!cbFired) { - cbFired = true; - callback(mediaElement); - } - }, 1000); - played.then(function() { - if (cbFired) return; - cbFired = true; - callback(mediaElement); - }).catch(function(error) { - if (cbFired) return; - cbFired = true; - callback(mediaElement); - }); - } else { - callback(mediaElement); - } - } - - // if IE - if (!window.addEventListener) { - window.addEventListener = function(el, eventName, eventHandler) { - if (!el.attachEvent) { - return; - } - el.attachEvent('on' + eventName, eventHandler); - }; - } - - function listenEventHandler(eventName, eventHandler) { - window.removeEventListener(eventName, eventHandler); - window.addEventListener(eventName, eventHandler, false); - } - - window.attachEventListener = function(video, type, listener, useCapture) { - video.addEventListener(type, listener, useCapture); - }; - - function removeNullEntries(array) { - var newArray = []; - array.forEach(function(item) { - if (item) { - newArray.push(item); - } - }); - return newArray; - } - - - function isData(session) { - return !session.audio && !session.video && !session.screen && session.data; - } - - function isNull(obj) { - return typeof obj === 'undefined'; - } - - function isString(obj) { - return typeof obj === 'string'; - } - - var MediaStream = window.MediaStream; - - if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') { - MediaStream = webkitMediaStream; - } - - /*global MediaStream:true */ - if (typeof MediaStream !== 'undefined') { - if (!('stop' in MediaStream.prototype)) { - MediaStream.prototype.stop = function() { - this.getTracks().forEach(function(track) { - track.stop(); - }); - }; - } - } - - function isAudioPlusTab(connection, audioPlusTab) { - if (connection.session.audio && connection.session.audio === 'two-way') { - return false; - } - - if (DetectRTC.browser.name === 'Firefox' && audioPlusTab !== false) { - return true; - } - - if (DetectRTC.browser.name !== 'Chrome' || DetectRTC.browser.version < 50) return false; - - if (typeof audioPlusTab === true) { - return true; - } - - if (typeof audioPlusTab === 'undefined' && connection.session.audio && connection.session.screen && !connection.session.video) { - audioPlusTab = true; - return true; - } - - return false; - } - - function getAudioScreenConstraints(screen_constraints) { - if (DetectRTC.browser.name === 'Firefox') { - return true; - } - - if (DetectRTC.browser.name !== 'Chrome') return false; - - return { - mandatory: { - chromeMediaSource: screen_constraints.mandatory.chromeMediaSource, - chromeMediaSourceId: screen_constraints.mandatory.chromeMediaSourceId - } - }; - } - - window.iOSDefaultAudioOutputDevice = window.iOSDefaultAudioOutputDevice || 'speaker'; // earpiece or speaker - - function getTracks(stream, kind) { - if (!stream || !stream.getTracks) { - return []; - } - - return stream.getTracks().filter(function(t) { - return t.kind === (kind || 'audio'); - }); - } - - function isUnifiedPlanSupportedDefault() { - var canAddTransceiver = false; - - try { - if (typeof RTCRtpTransceiver === 'undefined') return false; - if (!('currentDirection' in RTCRtpTransceiver.prototype)) return false; - - var tempPc = new RTCPeerConnection(); - - try { - tempPc.addTransceiver('audio'); - canAddTransceiver = true; - } catch (e) {} - - tempPc.close(); - } catch (e) { - canAddTransceiver = false; - } - - return canAddTransceiver && isUnifiedPlanSuppored(); - } - - function isUnifiedPlanSuppored() { - var isUnifiedPlanSupported = false; - - try { - var pc = new RTCPeerConnection({ - sdpSemantics: 'unified-plan' - }); - - try { - var config = pc.getConfiguration(); - if (config.sdpSemantics == 'unified-plan') - isUnifiedPlanSupported = true; - else if (config.sdpSemantics == 'plan-b') - isUnifiedPlanSupported = false; - else - isUnifiedPlanSupported = false; - } catch (e) { - isUnifiedPlanSupported = false; - } - } catch (e) { - isUnifiedPlanSupported = false; - } - - return isUnifiedPlanSupported; - } - - // ios-hacks.js - - function setCordovaAPIs() { - // if (DetectRTC.osName !== 'iOS') return; - if (typeof cordova === 'undefined' || typeof cordova.plugins === 'undefined' || typeof cordova.plugins.iosrtc === 'undefined') return; - - var iosrtc = cordova.plugins.iosrtc; - window.webkitRTCPeerConnection = iosrtc.RTCPeerConnection; - window.RTCSessionDescription = iosrtc.RTCSessionDescription; - window.RTCIceCandidate = iosrtc.RTCIceCandidate; - window.MediaStream = iosrtc.MediaStream; - window.MediaStreamTrack = iosrtc.MediaStreamTrack; - navigator.getUserMedia = navigator.webkitGetUserMedia = iosrtc.getUserMedia; - - iosrtc.debug.enable('iosrtc*'); - if (typeof iosrtc.selectAudioOutput == 'function') { - iosrtc.selectAudioOutput(window.iOSDefaultAudioOutputDevice || 'speaker'); // earpiece or speaker - } - iosrtc.registerGlobals(); - } - - document.addEventListener('deviceready', setCordovaAPIs, false); - setCordovaAPIs(); - - // RTCPeerConnection.js - - var defaults = {}; - - function setSdpConstraints(config) { - var sdpConstraints = { - OfferToReceiveAudio: !!config.OfferToReceiveAudio, - OfferToReceiveVideo: !!config.OfferToReceiveVideo - }; - - return sdpConstraints; - } - - var RTCPeerConnection; - if (typeof window.RTCPeerConnection !== 'undefined') { - RTCPeerConnection = window.RTCPeerConnection; - } else if (typeof mozRTCPeerConnection !== 'undefined') { - RTCPeerConnection = mozRTCPeerConnection; - } else if (typeof webkitRTCPeerConnection !== 'undefined') { - RTCPeerConnection = webkitRTCPeerConnection; - } - - var RTCSessionDescription = window.RTCSessionDescription || window.mozRTCSessionDescription; - var RTCIceCandidate = window.RTCIceCandidate || window.mozRTCIceCandidate; - var MediaStreamTrack = window.MediaStreamTrack; - - function PeerInitiator(config) { - if (typeof window.RTCPeerConnection !== 'undefined') { - RTCPeerConnection = window.RTCPeerConnection; - } else if (typeof mozRTCPeerConnection !== 'undefined') { - RTCPeerConnection = mozRTCPeerConnection; - } else if (typeof webkitRTCPeerConnection !== 'undefined') { - RTCPeerConnection = webkitRTCPeerConnection; - } - - RTCSessionDescription = window.RTCSessionDescription || window.mozRTCSessionDescription; - RTCIceCandidate = window.RTCIceCandidate || window.mozRTCIceCandidate; - MediaStreamTrack = window.MediaStreamTrack; - - if (!RTCPeerConnection) { - throw 'WebRTC 1.0 (RTCPeerConnection) API are NOT available in this browser.'; - } - - var connection = config.rtcMultiConnection; - - this.extra = config.remoteSdp ? config.remoteSdp.extra : connection.extra; - this.userid = config.userid; - this.streams = []; - this.channels = config.channels || []; - this.connectionDescription = config.connectionDescription; - - this.addStream = function(session) { - connection.addStream(session, self.userid); - }; - - this.removeStream = function(streamid) { - connection.removeStream(streamid, self.userid); - }; - - var self = this; - - if (config.remoteSdp) { - this.connectionDescription = config.remoteSdp.connectionDescription; - } - - var allRemoteStreams = {}; - - defaults.sdpConstraints = setSdpConstraints({ - OfferToReceiveAudio: true, - OfferToReceiveVideo: true - }); - - var peer; - - var renegotiatingPeer = !!config.renegotiatingPeer; - if (config.remoteSdp) { - renegotiatingPeer = !!config.remoteSdp.renegotiatingPeer; - } - - var localStreams = []; - connection.attachStreams.forEach(function(stream) { - if (!!stream) { - localStreams.push(stream); - } - }); - - if (!renegotiatingPeer) { - var iceTransports = 'all'; - if (connection.candidates.turn || connection.candidates.relay) { - if (!connection.candidates.stun && !connection.candidates.reflexive && !connection.candidates.host) { - iceTransports = 'relay'; - } - } - - try { - // ref: developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration - var params = { - iceServers: connection.iceServers, - iceTransportPolicy: connection.iceTransportPolicy || iceTransports - }; - - if (typeof connection.iceCandidatePoolSize !== 'undefined') { - params.iceCandidatePoolSize = connection.iceCandidatePoolSize; - } - - if (typeof connection.bundlePolicy !== 'undefined') { - params.bundlePolicy = connection.bundlePolicy; - } - - if (typeof connection.rtcpMuxPolicy !== 'undefined') { - params.rtcpMuxPolicy = connection.rtcpMuxPolicy; - } - - if (!!connection.sdpSemantics) { - params.sdpSemantics = connection.sdpSemantics || 'unified-plan'; - } - - if (!connection.iceServers || !connection.iceServers.length) { - params = null; - connection.optionalArgument = null; - } - - peer = new RTCPeerConnection(params, connection.optionalArgument); - } catch (e) { - try { - var params = { - iceServers: connection.iceServers - }; - - peer = new RTCPeerConnection(params); - } catch (e) { - peer = new RTCPeerConnection(); - } - } - } else { - peer = config.peerRef; - } - - if (!peer.getRemoteStreams && peer.getReceivers) { - peer.getRemoteStreams = function() { - var stream = new MediaStream(); - peer.getReceivers().forEach(function(receiver) { - stream.addTrack(receiver.track); - }); - return [stream]; - }; - } - - if (!peer.getLocalStreams && peer.getSenders) { - peer.getLocalStreams = function() { - var stream = new MediaStream(); - peer.getSenders().forEach(function(sender) { - stream.addTrack(sender.track); - }); - return [stream]; - }; - } - - peer.onicecandidate = function(event) { - if (!event.candidate) { - if (!connection.trickleIce) { - var localSdp = peer.localDescription; - config.onLocalSdp({ - type: localSdp.type, - sdp: localSdp.sdp, - remotePeerSdpConstraints: config.remotePeerSdpConstraints || false, - renegotiatingPeer: !!config.renegotiatingPeer || false, - connectionDescription: self.connectionDescription, - dontGetRemoteStream: !!config.dontGetRemoteStream, - extra: connection ? connection.extra : {}, - streamsToShare: streamsToShare - }); - } - return; - } - - if (!connection.trickleIce) return; - config.onLocalCandidate({ - candidate: event.candidate.candidate, - sdpMid: event.candidate.sdpMid, - sdpMLineIndex: event.candidate.sdpMLineIndex - }); - }; - - localStreams.forEach(function(localStream) { - if (config.remoteSdp && config.remoteSdp.remotePeerSdpConstraints && config.remoteSdp.remotePeerSdpConstraints.dontGetRemoteStream) { - return; - } - - if (config.dontAttachLocalStream) { - return; - } - - localStream = connection.beforeAddingStream(localStream, self); - - if (!localStream) return; - - peer.getLocalStreams().forEach(function(stream) { - if (localStream && stream.id == localStream.id) { - localStream = null; - } - }); - - if (localStream && localStream.getTracks) { - localStream.getTracks().forEach(function(track) { - try { - // last parameter is redundant for unified-plan - // starting from chrome version 72 - peer.addTrack(track, localStream); - } catch (e) {} - }); - } - }); - - peer.oniceconnectionstatechange = peer.onsignalingstatechange = function() { - var extra = self.extra; - if (connection.peers[self.userid]) { - extra = connection.peers[self.userid].extra || extra; - } - - if (!peer) { - return; - } - - config.onPeerStateChanged({ - iceConnectionState: peer.iceConnectionState, - iceGatheringState: peer.iceGatheringState, - signalingState: peer.signalingState, - extra: extra, - userid: self.userid - }); - - if (peer && peer.iceConnectionState && peer.iceConnectionState.search(/closed|failed/gi) !== -1 && self.streams instanceof Array) { - self.streams.forEach(function(stream) { - var streamEvent = connection.streamEvents[stream.id] || { - streamid: stream.id, - stream: stream, - type: 'remote' - }; - - connection.onstreamended(streamEvent); - }); - } - }; - - var sdpConstraints = { - OfferToReceiveAudio: !!localStreams.length, - OfferToReceiveVideo: !!localStreams.length - }; - - if (config.localPeerSdpConstraints) sdpConstraints = config.localPeerSdpConstraints; - - defaults.sdpConstraints = setSdpConstraints(sdpConstraints); - - var streamObject; - var dontDuplicate = {}; - - peer.ontrack = function(event) { - if (!event || event.type !== 'track') return; - - event.stream = event.streams[event.streams.length - 1]; - - if (!event.stream.id) { - event.stream.id = event.track.id; - } - - if (dontDuplicate[event.stream.id] && DetectRTC.browser.name !== 'Safari') { - if (event.track) { - event.track.onended = function() { // event.track.onmute = - peer && peer.onremovestream(event); - }; - } - return; - } - - dontDuplicate[event.stream.id] = event.stream.id; - - var streamsToShare = {}; - if (config.remoteSdp && config.remoteSdp.streamsToShare) { - streamsToShare = config.remoteSdp.streamsToShare; - } else if (config.streamsToShare) { - streamsToShare = config.streamsToShare; - } - - var streamToShare = streamsToShare[event.stream.id]; - if (streamToShare) { - event.stream.isAudio = streamToShare.isAudio; - event.stream.isVideo = streamToShare.isVideo; - event.stream.isScreen = streamToShare.isScreen; - } else { - event.stream.isVideo = !!getTracks(event.stream, 'video').length; - event.stream.isAudio = !event.stream.isVideo; - event.stream.isScreen = false; - } - - event.stream.streamid = event.stream.id; - - allRemoteStreams[event.stream.id] = event.stream; - config.onRemoteStream(event.stream); - - event.stream.getTracks().forEach(function(track) { - track.onended = function() { // track.onmute = - peer && peer.onremovestream(event); - }; - }); - - event.stream.onremovetrack = function() { - peer && peer.onremovestream(event); - }; - }; - - peer.onremovestream = function(event) { - // this event doesn't works anymore - event.stream.streamid = event.stream.id; - - if (allRemoteStreams[event.stream.id]) { - delete allRemoteStreams[event.stream.id]; - } - - config.onRemoteStreamRemoved(event.stream); - }; - - if (typeof peer.removeStream !== 'function') { - // removeStream backward compatibility - peer.removeStream = function(stream) { - stream.getTracks().forEach(function(track) { - peer.removeTrack(track, stream); - }); - }; - } - - this.addRemoteCandidate = function(remoteCandidate) { - peer.addIceCandidate(new RTCIceCandidate(remoteCandidate)); - }; - - function oldAddRemoteSdp(remoteSdp, cb) { - cb = cb || function() {}; - - if (DetectRTC.browser.name !== 'Safari') { - remoteSdp.sdp = connection.processSdp(remoteSdp.sdp); - } - peer.setRemoteDescription(new RTCSessionDescription(remoteSdp), cb, function(error) { - if (!!connection.enableLogs) { - console.error('setRemoteDescription failed', '\n', error, '\n', remoteSdp.sdp); - } - - cb(); - }); - } - - this.addRemoteSdp = function(remoteSdp, cb) { - cb = cb || function() {}; - - if (DetectRTC.browser.name !== 'Safari') { - remoteSdp.sdp = connection.processSdp(remoteSdp.sdp); - } - - peer.setRemoteDescription(new RTCSessionDescription(remoteSdp)).then(cb, function(error) { - if (!!connection.enableLogs) { - console.error('setRemoteDescription failed', '\n', error, '\n', remoteSdp.sdp); - } - - cb(); - }).catch(function(error) { - if (!!connection.enableLogs) { - console.error('setRemoteDescription failed', '\n', error, '\n', remoteSdp.sdp); - } - - cb(); - }); - }; - - var isOfferer = true; - - if (config.remoteSdp) { - isOfferer = false; - } - - this.createDataChannel = function() { - var channel = peer.createDataChannel('sctp', {}); - setChannelEvents(channel); - }; - - if (connection.session.data === true && !renegotiatingPeer) { - if (!isOfferer) { - peer.ondatachannel = function(event) { - var channel = event.channel; - setChannelEvents(channel); - }; - } else { - this.createDataChannel(); - } - } - - this.enableDisableVideoEncoding = function(enable) { - var rtcp; - peer.getSenders().forEach(function(sender) { - if (!rtcp && sender.track.kind === 'video') { - rtcp = sender; - } - }); - - if (!rtcp || !rtcp.getParameters) return; - - var parameters = rtcp.getParameters(); - parameters.encodings[1] && (parameters.encodings[1].active = !!enable); - parameters.encodings[2] && (parameters.encodings[2].active = !!enable); - rtcp.setParameters(parameters); - }; - - if (config.remoteSdp) { - if (config.remoteSdp.remotePeerSdpConstraints) { - sdpConstraints = config.remoteSdp.remotePeerSdpConstraints; - } - defaults.sdpConstraints = setSdpConstraints(sdpConstraints); - this.addRemoteSdp(config.remoteSdp, function() { - createOfferOrAnswer('createAnswer'); - }); - } - - function setChannelEvents(channel) { - // force ArrayBuffer in Firefox; which uses "Blob" by default. - channel.binaryType = 'arraybuffer'; - - channel.onmessage = function(event) { - config.onDataChannelMessage(event.data); - }; - - channel.onopen = function() { - config.onDataChannelOpened(channel); - }; - - channel.onerror = function(error) { - config.onDataChannelError(error); - }; - - channel.onclose = function(event) { - config.onDataChannelClosed(event); - }; - - channel.internalSend = channel.send; - channel.send = function(data) { - if (channel.readyState !== 'open') { - return; - } - - channel.internalSend(data); - }; - - peer.channel = channel; - } - - if (connection.session.audio == 'two-way' || connection.session.video == 'two-way' || connection.session.screen == 'two-way') { - defaults.sdpConstraints = setSdpConstraints({ - OfferToReceiveAudio: connection.session.audio == 'two-way' || (config.remoteSdp && config.remoteSdp.remotePeerSdpConstraints && config.remoteSdp.remotePeerSdpConstraints.OfferToReceiveAudio), - OfferToReceiveVideo: connection.session.video == 'two-way' || connection.session.screen == 'two-way' || (config.remoteSdp && config.remoteSdp.remotePeerSdpConstraints && config.remoteSdp.remotePeerSdpConstraints.OfferToReceiveAudio) - }); - } - - var streamsToShare = {}; - peer.getLocalStreams().forEach(function(stream) { - streamsToShare[stream.streamid] = { - isAudio: !!stream.isAudio, - isVideo: !!stream.isVideo, - isScreen: !!stream.isScreen - }; - }); - - function oldCreateOfferOrAnswer(_method) { - peer[_method](function(localSdp) { - if (DetectRTC.browser.name !== 'Safari') { - localSdp.sdp = connection.processSdp(localSdp.sdp); - } - peer.setLocalDescription(localSdp, function() { - if (!connection.trickleIce) return; - - config.onLocalSdp({ - type: localSdp.type, - sdp: localSdp.sdp, - remotePeerSdpConstraints: config.remotePeerSdpConstraints || false, - renegotiatingPeer: !!config.renegotiatingPeer || false, - connectionDescription: self.connectionDescription, - dontGetRemoteStream: !!config.dontGetRemoteStream, - extra: connection ? connection.extra : {}, - streamsToShare: streamsToShare - }); - - connection.onSettingLocalDescription(self); - }, function(error) { - if (!!connection.enableLogs) { - console.error('setLocalDescription-error', error); - } - }); - }, function(error) { - if (!!connection.enableLogs) { - console.error('sdp-' + _method + '-error', error); - } - }, defaults.sdpConstraints); - } - - function createOfferOrAnswer(_method) { - peer[_method](defaults.sdpConstraints).then(function(localSdp) { - if (DetectRTC.browser.name !== 'Safari') { - localSdp.sdp = connection.processSdp(localSdp.sdp); - } - peer.setLocalDescription(localSdp).then(function() { - if (!connection.trickleIce) return; - - config.onLocalSdp({ - type: localSdp.type, - sdp: localSdp.sdp, - remotePeerSdpConstraints: config.remotePeerSdpConstraints || false, - renegotiatingPeer: !!config.renegotiatingPeer || false, - connectionDescription: self.connectionDescription, - dontGetRemoteStream: !!config.dontGetRemoteStream, - extra: connection ? connection.extra : {}, - streamsToShare: streamsToShare - }); - - connection.onSettingLocalDescription(self); - }, function(error) { - if (!connection.enableLogs) return; - console.error('setLocalDescription error', error); - }); - }, function(error) { - if (!!connection.enableLogs) { - console.error('sdp-error', error); - } - }); - } - - if (isOfferer) { - createOfferOrAnswer('createOffer'); - } - - peer.nativeClose = peer.close; - peer.close = function() { - if (!peer) { - return; - } - - try { - if (peer.nativeClose !== peer.close) { - peer.nativeClose(); - } - } catch (e) {} - - peer = null; - self.peer = null; - }; - - this.peer = peer; - } - - // CodecsHandler.js - - var CodecsHandler = (function() { - // use "RTCRtpTransceiver.setCodecPreferences" - function preferCodec(sdp, codecName) { - var info = splitLines(sdp); - - if (!info.videoCodecNumbers) { - return sdp; - } - - if (codecName === 'vp8' && info.vp8LineNumber === info.videoCodecNumbers[0]) { - return sdp; - } - - if (codecName === 'vp9' && info.vp9LineNumber === info.videoCodecNumbers[0]) { - return sdp; - } - - if (codecName === 'h264' && info.h264LineNumber === info.videoCodecNumbers[0]) { - return sdp; - } - - sdp = preferCodecHelper(sdp, codecName, info); - - return sdp; - } - - function preferCodecHelper(sdp, codec, info, ignore) { - var preferCodecNumber = ''; - - if (codec === 'vp8') { - if (!info.vp8LineNumber) { - return sdp; - } - preferCodecNumber = info.vp8LineNumber; - } - - if (codec === 'vp9') { - if (!info.vp9LineNumber) { - return sdp; - } - preferCodecNumber = info.vp9LineNumber; - } - - if (codec === 'h264') { - if (!info.h264LineNumber) { - return sdp; - } - - preferCodecNumber = info.h264LineNumber; - } - - var newLine = info.videoCodecNumbersOriginal.split('SAVPF')[0] + 'SAVPF '; - - var newOrder = [preferCodecNumber]; - - if (ignore) { - newOrder = []; - } - - info.videoCodecNumbers.forEach(function(codecNumber) { - if (codecNumber === preferCodecNumber) return; - newOrder.push(codecNumber); - }); - - newLine += newOrder.join(' '); - - sdp = sdp.replace(info.videoCodecNumbersOriginal, newLine); - return sdp; - } - - function splitLines(sdp) { - var info = {}; - sdp.split('\n').forEach(function(line) { - if (line.indexOf('m=video') === 0) { - info.videoCodecNumbers = []; - line.split('SAVPF')[1].split(' ').forEach(function(codecNumber) { - codecNumber = codecNumber.trim(); - if (!codecNumber || !codecNumber.length) return; - info.videoCodecNumbers.push(codecNumber); - info.videoCodecNumbersOriginal = line; - }); - } - - if (line.indexOf('VP8/90000') !== -1 && !info.vp8LineNumber) { - info.vp8LineNumber = line.replace('a=rtpmap:', '').split(' ')[0]; - } - - if (line.indexOf('VP9/90000') !== -1 && !info.vp9LineNumber) { - info.vp9LineNumber = line.replace('a=rtpmap:', '').split(' ')[0]; - } - - if (line.indexOf('H264/90000') !== -1 && !info.h264LineNumber) { - info.h264LineNumber = line.replace('a=rtpmap:', '').split(' ')[0]; - } - }); - - return info; - } - - function removeVPX(sdp) { - var info = splitLines(sdp); - - // last parameter below means: ignore these codecs - sdp = preferCodecHelper(sdp, 'vp9', info, true); - sdp = preferCodecHelper(sdp, 'vp8', info, true); - - return sdp; - } - - function disableNACK(sdp) { - if (!sdp || typeof sdp !== 'string') { - throw 'Invalid arguments.'; - } - - sdp = sdp.replace('a=rtcp-fb:126 nack\r\n', ''); - sdp = sdp.replace('a=rtcp-fb:126 nack pli\r\n', 'a=rtcp-fb:126 pli\r\n'); - sdp = sdp.replace('a=rtcp-fb:97 nack\r\n', ''); - sdp = sdp.replace('a=rtcp-fb:97 nack pli\r\n', 'a=rtcp-fb:97 pli\r\n'); - - return sdp; - } - - function prioritize(codecMimeType, peer) { - if (!peer || !peer.getSenders || !peer.getSenders().length) { - return; - } - - if (!codecMimeType || typeof codecMimeType !== 'string') { - throw 'Invalid arguments.'; - } - - peer.getSenders().forEach(function(sender) { - var params = sender.getParameters(); - for (var i = 0; i < params.codecs.length; i++) { - if (params.codecs[i].mimeType == codecMimeType) { - params.codecs.unshift(params.codecs.splice(i, 1)); - break; - } - } - sender.setParameters(params); - }); - } - - function removeNonG722(sdp) { - return sdp.replace(/m=audio ([0-9]+) RTP\/SAVPF ([0-9 ]*)/g, 'm=audio $1 RTP\/SAVPF 9'); - } - - function setBAS(sdp, bandwidth, isScreen) { - if (!bandwidth) { - return sdp; - } - - if (typeof isFirefox !== 'undefined' && isFirefox) { - return sdp; - } - - if (isScreen) { - if (!bandwidth.screen) { - console.warn('It seems that you are not using bandwidth for screen. Screen sharing is expected to fail.'); - } else if (bandwidth.screen < 300) { - console.warn('It seems that you are using wrong bandwidth value for screen. Screen sharing is expected to fail.'); - } - } - - // if screen; must use at least 300kbs - if (bandwidth.screen && isScreen) { - sdp = sdp.replace(/b=AS([^\r\n]+\r\n)/g, ''); - sdp = sdp.replace(/a=mid:video\r\n/g, 'a=mid:video\r\nb=AS:' + bandwidth.screen + '\r\n'); - } - - // remove existing bandwidth lines - if (bandwidth.audio || bandwidth.video) { - sdp = sdp.replace(/b=AS([^\r\n]+\r\n)/g, ''); - } - - if (bandwidth.audio) { - sdp = sdp.replace(/a=mid:audio\r\n/g, 'a=mid:audio\r\nb=AS:' + bandwidth.audio + '\r\n'); - } - - if (bandwidth.screen) { - sdp = sdp.replace(/a=mid:video\r\n/g, 'a=mid:video\r\nb=AS:' + bandwidth.screen + '\r\n'); - } else if (bandwidth.video) { - sdp = sdp.replace(/a=mid:video\r\n/g, 'a=mid:video\r\nb=AS:' + bandwidth.video + '\r\n'); - } - - return sdp; - } - - // Find the line in sdpLines that starts with |prefix|, and, if specified, - // contains |substr| (case-insensitive search). - function findLine(sdpLines, prefix, substr) { - return findLineInRange(sdpLines, 0, -1, prefix, substr); - } - - // Find the line in sdpLines[startLine...endLine - 1] that starts with |prefix| - // and, if specified, contains |substr| (case-insensitive search). - function findLineInRange(sdpLines, startLine, endLine, prefix, substr) { - var realEndLine = endLine !== -1 ? endLine : sdpLines.length; - for (var i = startLine; i < realEndLine; ++i) { - if (sdpLines[i].indexOf(prefix) === 0) { - if (!substr || - sdpLines[i].toLowerCase().indexOf(substr.toLowerCase()) !== -1) { - return i; - } - } - } - return null; - } - - // Gets the codec payload type from an a=rtpmap:X line. - function getCodecPayloadType(sdpLine) { - var pattern = new RegExp('a=rtpmap:(\\d+) \\w+\\/\\d+'); - var result = sdpLine.match(pattern); - return (result && result.length === 2) ? result[1] : null; - } - - function setVideoBitrates(sdp, params) { - params = params || {}; - var xgoogle_min_bitrate = params.min; - var xgoogle_max_bitrate = params.max; - - var sdpLines = sdp.split('\r\n'); - - // VP8 - var vp8Index = findLine(sdpLines, 'a=rtpmap', 'VP8/90000'); - var vp8Payload; - if (vp8Index) { - vp8Payload = getCodecPayloadType(sdpLines[vp8Index]); - } - - if (!vp8Payload) { - return sdp; - } - - var rtxIndex = findLine(sdpLines, 'a=rtpmap', 'rtx/90000'); - var rtxPayload; - if (rtxIndex) { - rtxPayload = getCodecPayloadType(sdpLines[rtxIndex]); - } - - if (!rtxIndex) { - return sdp; - } - - var rtxFmtpLineIndex = findLine(sdpLines, 'a=fmtp:' + rtxPayload.toString()); - if (rtxFmtpLineIndex !== null) { - var appendrtxNext = '\r\n'; - appendrtxNext += 'a=fmtp:' + vp8Payload + ' x-google-min-bitrate=' + (xgoogle_min_bitrate || '228') + '; x-google-max-bitrate=' + (xgoogle_max_bitrate || '228'); - sdpLines[rtxFmtpLineIndex] = sdpLines[rtxFmtpLineIndex].concat(appendrtxNext); - sdp = sdpLines.join('\r\n'); - } - - return sdp; - } - - function setOpusAttributes(sdp, params) { - params = params || {}; - - var sdpLines = sdp.split('\r\n'); - - // Opus - var opusIndex = findLine(sdpLines, 'a=rtpmap', 'opus/48000'); - var opusPayload; - if (opusIndex) { - opusPayload = getCodecPayloadType(sdpLines[opusIndex]); - } - - if (!opusPayload) { - return sdp; - } - - var opusFmtpLineIndex = findLine(sdpLines, 'a=fmtp:' + opusPayload.toString()); - if (opusFmtpLineIndex === null) { - return sdp; - } - - var appendOpusNext = ''; - appendOpusNext += '; stereo=' + (typeof params.stereo != 'undefined' ? params.stereo : '1'); - appendOpusNext += '; sprop-stereo=' + (typeof params['sprop-stereo'] != 'undefined' ? params['sprop-stereo'] : '1'); - - if (typeof params.maxaveragebitrate != 'undefined') { - appendOpusNext += '; maxaveragebitrate=' + (params.maxaveragebitrate || 128 * 1024 * 8); - } - - if (typeof params.maxplaybackrate != 'undefined') { - appendOpusNext += '; maxplaybackrate=' + (params.maxplaybackrate || 128 * 1024 * 8); - } - - if (typeof params.cbr != 'undefined') { - appendOpusNext += '; cbr=' + (typeof params.cbr != 'undefined' ? params.cbr : '1'); - } - - if (typeof params.useinbandfec != 'undefined') { - appendOpusNext += '; useinbandfec=' + params.useinbandfec; - } - - if (typeof params.usedtx != 'undefined') { - appendOpusNext += '; usedtx=' + params.usedtx; - } - - if (typeof params.maxptime != 'undefined') { - appendOpusNext += '\r\na=maxptime:' + params.maxptime; - } - - sdpLines[opusFmtpLineIndex] = sdpLines[opusFmtpLineIndex].concat(appendOpusNext); - - sdp = sdpLines.join('\r\n'); - return sdp; - } - - // forceStereoAudio => via webrtcexample.com - // requires getUserMedia => echoCancellation:false - function forceStereoAudio(sdp) { - var sdpLines = sdp.split('\r\n'); - var fmtpLineIndex = null; - for (var i = 0; i < sdpLines.length; i++) { - if (sdpLines[i].search('opus/48000') !== -1) { - var opusPayload = extractSdp(sdpLines[i], /:(\d+) opus\/48000/i); - break; - } - } - for (var i = 0; i < sdpLines.length; i++) { - if (sdpLines[i].search('a=fmtp') !== -1) { - var payload = extractSdp(sdpLines[i], /a=fmtp:(\d+)/); - if (payload === opusPayload) { - fmtpLineIndex = i; - break; - } - } - } - if (fmtpLineIndex === null) return sdp; - sdpLines[fmtpLineIndex] = sdpLines[fmtpLineIndex].concat('; stereo=1; sprop-stereo=1'); - sdp = sdpLines.join('\r\n'); - return sdp; - } - - return { - removeVPX: removeVPX, - disableNACK: disableNACK, - prioritize: prioritize, - removeNonG722: removeNonG722, - setApplicationSpecificBandwidth: function(sdp, bandwidth, isScreen) { - return setBAS(sdp, bandwidth, isScreen); - }, - setVideoBitrates: function(sdp, params) { - return setVideoBitrates(sdp, params); - }, - setOpusAttributes: function(sdp, params) { - return setOpusAttributes(sdp, params); - }, - preferVP9: function(sdp) { - return preferCodec(sdp, 'vp9'); - }, - preferCodec: preferCodec, - forceStereoAudio: forceStereoAudio - }; - })(); - - // backward compatibility - window.BandwidthHandler = CodecsHandler; - - // OnIceCandidateHandler.js - - var OnIceCandidateHandler = (function() { - function processCandidates(connection, icePair) { - var candidate = icePair.candidate; - - var iceRestrictions = connection.candidates; - var stun = iceRestrictions.stun; - var turn = iceRestrictions.turn; - - if (!isNull(iceRestrictions.reflexive)) { - stun = iceRestrictions.reflexive; - } - - if (!isNull(iceRestrictions.relay)) { - turn = iceRestrictions.relay; - } - - if (!iceRestrictions.host && !!candidate.match(/typ host/g)) { - return; - } - - if (!turn && !!candidate.match(/typ relay/g)) { - return; - } - - if (!stun && !!candidate.match(/typ srflx/g)) { - return; - } - - var protocol = connection.iceProtocols; - - if (!protocol.udp && !!candidate.match(/ udp /g)) { - return; - } - - if (!protocol.tcp && !!candidate.match(/ tcp /g)) { - return; - } - - if (connection.enableLogs) { - console.debug('Your candidate pairs:', candidate); - } - - return { - candidate: candidate, - sdpMid: icePair.sdpMid, - sdpMLineIndex: icePair.sdpMLineIndex - }; - } - - return { - processCandidates: processCandidates - }; - })(); - - // IceServersHandler.js - - var IceServersHandler = (function() { - function getIceServers(connection) { - // resiprocate: 3344+4433 - // pions: 7575 - var iceServers = [{ - 'urls': [ - 'stun:stun.l.google.com:19302', - 'stun:stun1.l.google.com:19302', - 'stun:stun2.l.google.com:19302', - 'stun:stun.l.google.com:19302?transport=udp', - ] - }]; - - return iceServers; - } - - return { - getIceServers: getIceServers - }; - })(); - - // getUserMediaHandler.js - - function setStreamType(constraints, stream) { - if (constraints.mandatory && constraints.mandatory.chromeMediaSource) { - stream.isScreen = true; - } else if (constraints.mozMediaSource || constraints.mediaSource) { - stream.isScreen = true; - } else if (constraints.video) { - stream.isVideo = true; - } else if (constraints.audio) { - stream.isAudio = true; - } - } - - // allow users to manage this object (to support re-capturing of screen/etc.) - window.currentUserMediaRequest = { - streams: [], - mutex: false, - queueRequests: [], - remove: function(idInstance) { - this.mutex = false; - - var stream = this.streams[idInstance]; - if (!stream) { - return; - } - - stream = stream.stream; - - var options = stream.currentUserMediaRequestOptions; - - if (this.queueRequests.indexOf(options)) { - delete this.queueRequests[this.queueRequests.indexOf(options)]; - this.queueRequests = removeNullEntries(this.queueRequests); - } - - this.streams[idInstance].stream = null; - delete this.streams[idInstance]; - } - }; - - function getUserMediaHandler(options) { - if (currentUserMediaRequest.mutex === true) { - currentUserMediaRequest.queueRequests.push(options); - return; - } - currentUserMediaRequest.mutex = true; - - // easy way to match - var idInstance = JSON.stringify(options.localMediaConstraints); - - function streaming(stream, returnBack) { - setStreamType(options.localMediaConstraints, stream); - - var streamEndedEvent = 'ended'; - - if ('oninactive' in stream) { - streamEndedEvent = 'inactive'; - } - stream.addEventListener(streamEndedEvent, function() { - delete currentUserMediaRequest.streams[idInstance]; - - currentUserMediaRequest.mutex = false; - if (currentUserMediaRequest.queueRequests.indexOf(options)) { - delete currentUserMediaRequest.queueRequests[currentUserMediaRequest.queueRequests.indexOf(options)]; - currentUserMediaRequest.queueRequests = removeNullEntries(currentUserMediaRequest.queueRequests); - } - }, false); - - currentUserMediaRequest.streams[idInstance] = { - stream: stream - }; - currentUserMediaRequest.mutex = false; - - if (currentUserMediaRequest.queueRequests.length) { - getUserMediaHandler(currentUserMediaRequest.queueRequests.shift()); - } - - // callback - options.onGettingLocalMedia(stream, returnBack); - } - - if (currentUserMediaRequest.streams[idInstance]) { - streaming(currentUserMediaRequest.streams[idInstance].stream, true); - } else { - var isBlackBerry = !!(/BB10|BlackBerry/i.test(navigator.userAgent || '')); - if (isBlackBerry || typeof navigator.mediaDevices === 'undefined' || typeof navigator.mediaDevices.getUserMedia !== 'function') { - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; - navigator.getUserMedia(options.localMediaConstraints, function(stream) { - stream.streamid = stream.streamid || stream.id || getRandomString(); - stream.idInstance = idInstance; - streaming(stream); - }, function(error) { - options.onLocalMediaError(error, options.localMediaConstraints); - }); - return; - } - - if (typeof navigator.mediaDevices === 'undefined') { - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; - var getUserMediaSuccess = function() {}; - var getUserMediaFailure = function() {}; - - var getUserMediaStream, getUserMediaError; - navigator.mediaDevices = { - getUserMedia: function(hints) { - navigator.getUserMedia(hints, function(getUserMediaSuccess) { - getUserMediaSuccess(stream); - getUserMediaStream = stream; - }, function(error) { - getUserMediaFailure(error); - getUserMediaError = error; - }); - - return { - then: function(successCB) { - if (getUserMediaStream) { - successCB(getUserMediaStream); - return; - } - - getUserMediaSuccess = successCB; - - return { - then: function(failureCB) { - if (getUserMediaError) { - failureCB(getUserMediaError); - return; - } - - getUserMediaFailure = failureCB; - } - } - } - } - } - }; - } - - if (options.localMediaConstraints.isScreen === true) { - if (navigator.mediaDevices.getDisplayMedia) { - navigator.mediaDevices.getDisplayMedia(options.localMediaConstraints).then(function(stream) { - stream.streamid = stream.streamid || stream.id || getRandomString(); - stream.idInstance = idInstance; - - streaming(stream); - }).catch(function(error) { - options.onLocalMediaError(error, options.localMediaConstraints); - }); - } else if (navigator.getDisplayMedia) { - navigator.getDisplayMedia(options.localMediaConstraints).then(function(stream) { - stream.streamid = stream.streamid || stream.id || getRandomString(); - stream.idInstance = idInstance; - - streaming(stream); - }).catch(function(error) { - options.onLocalMediaError(error, options.localMediaConstraints); - }); - } else { - throw new Error('getDisplayMedia API is not availabe in this browser.'); - } - return; - } - - navigator.mediaDevices.getUserMedia(options.localMediaConstraints).then(function(stream) { - stream.streamid = stream.streamid || stream.id || getRandomString(); - stream.idInstance = idInstance; - - streaming(stream); - }).catch(function(error) { - options.onLocalMediaError(error, options.localMediaConstraints); - }); - } - } - - // StreamsHandler.js - - var StreamsHandler = (function() { - function handleType(type) { - if (!type) { - return; - } - - if (typeof type === 'string' || typeof type === 'undefined') { - return type; - } - - if (type.audio && type.video) { - return null; - } - - if (type.audio) { - return 'audio'; - } - - if (type.video) { - return 'video'; - } - - return; - } - - function setHandlers(stream, syncAction, connection) { - if (!stream || !stream.addEventListener) return; - - if (typeof syncAction == 'undefined' || syncAction == true) { - var streamEndedEvent = 'ended'; - - if ('oninactive' in stream) { - streamEndedEvent = 'inactive'; - } - - stream.addEventListener(streamEndedEvent, function() { - StreamsHandler.onSyncNeeded(this.streamid, streamEndedEvent); - }, false); - } - - stream.mute = function(type, isSyncAction) { - type = handleType(type); - - if (typeof isSyncAction !== 'undefined') { - syncAction = isSyncAction; - } - - if (typeof type == 'undefined' || type == 'audio') { - getTracks(stream, 'audio').forEach(function(track) { - track.enabled = false; - connection.streamEvents[stream.streamid].isAudioMuted = true; - }); - } - - if (typeof type == 'undefined' || type == 'video') { - getTracks(stream, 'video').forEach(function(track) { - track.enabled = false; - }); - } - - if (typeof syncAction == 'undefined' || syncAction == true) { - StreamsHandler.onSyncNeeded(stream.streamid, 'mute', type); - } - - connection.streamEvents[stream.streamid].muteType = type || 'both'; - - fireEvent(stream, 'mute', type); - }; - - stream.unmute = function(type, isSyncAction) { - type = handleType(type); - - if (typeof isSyncAction !== 'undefined') { - syncAction = isSyncAction; - } - - graduallyIncreaseVolume(); - - if (typeof type == 'undefined' || type == 'audio') { - getTracks(stream, 'audio').forEach(function(track) { - track.enabled = true; - connection.streamEvents[stream.streamid].isAudioMuted = false; - }); - } - - if (typeof type == 'undefined' || type == 'video') { - getTracks(stream, 'video').forEach(function(track) { - track.enabled = true; - }); - - // make sure that video unmute doesn't affects audio - if (typeof type !== 'undefined' && type == 'video' && connection.streamEvents[stream.streamid].isAudioMuted) { - (function looper(times) { - if (!times) { - times = 0; - } - - times++; - - // check until five-seconds - if (times < 100 && connection.streamEvents[stream.streamid].isAudioMuted) { - stream.mute('audio'); - - setTimeout(function() { - looper(times); - }, 50); - } - })(); - } - } - - if (typeof syncAction == 'undefined' || syncAction == true) { - StreamsHandler.onSyncNeeded(stream.streamid, 'unmute', type); - } - - connection.streamEvents[stream.streamid].unmuteType = type || 'both'; - - fireEvent(stream, 'unmute', type); - }; - - function graduallyIncreaseVolume() { - if (!connection.streamEvents[stream.streamid].mediaElement) { - return; - } - - var mediaElement = connection.streamEvents[stream.streamid].mediaElement; - mediaElement.volume = 0; - afterEach(200, 5, function() { - try { - mediaElement.volume += .20; - } catch (e) { - mediaElement.volume = 1; - } - }); - } - } - - function afterEach(setTimeoutInteval, numberOfTimes, callback, startedTimes) { - startedTimes = (startedTimes || 0) + 1; - if (startedTimes >= numberOfTimes) return; - - setTimeout(function() { - callback(); - afterEach(setTimeoutInteval, numberOfTimes, callback, startedTimes); - }, setTimeoutInteval); - } - - return { - setHandlers: setHandlers, - onSyncNeeded: function(streamid, action, type) {} - }; - })(); - - // TextReceiver.js & TextSender.js - - function TextReceiver(connection) { - var content = {}; - - function receive(data, userid, extra) { - // uuid is used to uniquely identify sending instance - var uuid = data.uuid; - if (!content[uuid]) { - content[uuid] = []; - } - - content[uuid].push(data.message); - - if (data.last) { - var message = content[uuid].join(''); - if (data.isobject) { - message = JSON.parse(message); - } - - // latency detection - var receivingTime = new Date().getTime(); - var latency = receivingTime - data.sendingTime; - - var e = { - data: message, - userid: userid, - extra: extra, - latency: latency - }; - - if (connection.autoTranslateText) { - e.original = e.data; - connection.Translator.TranslateText(e.data, function(translatedText) { - e.data = translatedText; - connection.onmessage(e); - }); - } else { - connection.onmessage(e); - } - - delete content[uuid]; - } - } - - return { - receive: receive - }; - } - - // TextSender.js - var TextSender = { - send: function(config) { - var connection = config.connection; - - var channel = config.channel, - remoteUserId = config.remoteUserId, - initialText = config.text, - packetSize = connection.chunkSize || 1000, - textToTransfer = '', - isobject = false; - - if (!isString(initialText)) { - isobject = true; - initialText = JSON.stringify(initialText); - } - - // uuid is used to uniquely identify sending instance - var uuid = getRandomString(); - var sendingTime = new Date().getTime(); - - sendText(initialText); - - function sendText(textMessage, text) { - var data = { - type: 'text', - uuid: uuid, - sendingTime: sendingTime - }; - - if (textMessage) { - text = textMessage; - data.packets = parseInt(text.length / packetSize); - } - - if (text.length > packetSize) { - data.message = text.slice(0, packetSize); - } else { - data.message = text; - data.last = true; - data.isobject = isobject; - } - - channel.send(data, remoteUserId); - - textToTransfer = text.slice(data.message.length); - - if (textToTransfer.length) { - setTimeout(function() { - sendText(null, textToTransfer); - }, connection.chunkInterval || 100); - } - } - } - }; - - // FileProgressBarHandler.js - - var FileProgressBarHandler = (function() { - function handle(connection) { - var progressHelper = {}; - - // www.RTCMultiConnection.org/docs/onFileStart/ - connection.onFileStart = function(file) { - var div = document.createElement('div'); - div.title = file.name; - div.innerHTML = ' '; - - if (file.remoteUserId) { - div.innerHTML += ' (Sharing with:' + file.remoteUserId + ')'; - } - - if (!connection.filesContainer) { - connection.filesContainer = document.body || document.documentElement; - } - - connection.filesContainer.insertBefore(div, connection.filesContainer.firstChild); - - if (!file.remoteUserId) { - progressHelper[file.uuid] = { - div: div, - progress: div.querySelector('progress'), - label: div.querySelector('label') - }; - progressHelper[file.uuid].progress.max = file.maxChunks; - return; - } - - if (!progressHelper[file.uuid]) { - progressHelper[file.uuid] = {}; - } - - progressHelper[file.uuid][file.remoteUserId] = { - div: div, - progress: div.querySelector('progress'), - label: div.querySelector('label') - }; - progressHelper[file.uuid][file.remoteUserId].progress.max = file.maxChunks; - }; - - // www.RTCMultiConnection.org/docs/onFileProgress/ - connection.onFileProgress = function(chunk) { - var helper = progressHelper[chunk.uuid]; - if (!helper) { - return; - } - if (chunk.remoteUserId) { - helper = progressHelper[chunk.uuid][chunk.remoteUserId]; - if (!helper) { - return; - } - } - - helper.progress.value = chunk.currentPosition || chunk.maxChunks || helper.progress.max; - updateLabel(helper.progress, helper.label); - }; - - // www.RTCMultiConnection.org/docs/onFileEnd/ - connection.onFileEnd = function(file) { - var helper = progressHelper[file.uuid]; - if (!helper) { - console.error('No such progress-helper element exist.', file); - return; - } - - if (file.remoteUserId) { - helper = progressHelper[file.uuid][file.remoteUserId]; - if (!helper) { - return; - } - } - - var div = helper.div; - if (file.type.indexOf('image') != -1) { - div.innerHTML = 'Download ' + file.name + '
'; - } else { - div.innerHTML = 'Download ' + file.name + '
'; - } - }; - - function updateLabel(progress, label) { - if (progress.position === -1) { - return; - } - - var position = +progress.position.toFixed(2).split('.')[1] || 100; - label.innerHTML = position + '%'; - } - } - - return { - handle: handle - }; - })(); - - // _____________________ - // RTCMultiConnection.js - - (function(connection) { - forceOptions = forceOptions || { - useDefaultDevices: true - }; - - connection.channel = connection.sessionid = (roomid || location.href.replace(/\/|:|#|\?|\$|\^|%|\.|`|~|!|\+|@|\[|\||]|\|*. /g, '').split('\n').join('').split('\r').join('')) + ''; - - var mPeer = new MultiPeers(connection); - - var preventDuplicateOnStreamEvents = {}; - mPeer.onGettingLocalMedia = function(stream, callback) { - callback = callback || function() {}; - - if (preventDuplicateOnStreamEvents[stream.streamid]) { - callback(); - return; - } - preventDuplicateOnStreamEvents[stream.streamid] = true; - - try { - stream.type = 'local'; - } catch (e) {} - - connection.setStreamEndHandler(stream); - - getRMCMediaElement(stream, function(mediaElement) { - mediaElement.id = stream.streamid; - mediaElement.muted = true; - mediaElement.volume = 0; - - if (connection.attachStreams.indexOf(stream) === -1) { - connection.attachStreams.push(stream); - } - - if (typeof StreamsHandler !== 'undefined') { - StreamsHandler.setHandlers(stream, true, connection); - } - var isAudioMuted = stream.getAudioTracks().filter(function(track) { - return track.enabled; - }).length === 0; - - connection.streamEvents[stream.streamid] = { - stream: stream, - type: 'local', - mediaElement: mediaElement, - userid: connection.userid, - extra: connection.extra, - streamid: stream.streamid, - isAudioMuted: isAudioMuted - }; - - try { - setHarkEvents(connection, connection.streamEvents[stream.streamid]); - setMuteHandlers(connection, connection.streamEvents[stream.streamid]); - - connection.onstream(connection.streamEvents[stream.streamid]); - } catch (e) { - // - } - - callback(); - }, connection); - }; - - mPeer.onGettingRemoteMedia = function(stream, remoteUserId) { - try { - stream.type = 'remote'; - } catch (e) {} - - connection.setStreamEndHandler(stream, 'remote-stream'); - - getRMCMediaElement(stream, function(mediaElement) { - mediaElement.id = stream.streamid; - - if (typeof StreamsHandler !== 'undefined') { - StreamsHandler.setHandlers(stream, false, connection); - } - - connection.streamEvents[stream.streamid] = { - stream: stream, - type: 'remote', - userid: remoteUserId, - extra: connection.peers[remoteUserId] ? connection.peers[remoteUserId].extra : {}, - mediaElement: mediaElement, - streamid: stream.streamid - }; - - setMuteHandlers(connection, connection.streamEvents[stream.streamid]); - - connection.onstream(connection.streamEvents[stream.streamid]); - }, connection); - }; - - mPeer.onRemovingRemoteMedia = function(stream, remoteUserId) { - var streamEvent = connection.streamEvents[stream.streamid]; - if (!streamEvent) { - streamEvent = { - stream: stream, - type: 'remote', - userid: remoteUserId, - extra: connection.peers[remoteUserId] ? connection.peers[remoteUserId].extra : {}, - streamid: stream.streamid, - mediaElement: connection.streamEvents[stream.streamid] ? connection.streamEvents[stream.streamid].mediaElement : null - }; - } - - if (connection.peersBackup[streamEvent.userid]) { - streamEvent.extra = connection.peersBackup[streamEvent.userid].extra; - } - - connection.onstreamended(streamEvent); - - delete connection.streamEvents[stream.streamid]; - }; - - mPeer.onNegotiationNeeded = function(message, remoteUserId, callback) { - callback = callback || function() {}; - - remoteUserId = remoteUserId || message.remoteUserId; - message = message || ''; - - // usually a message looks like this - var messageToDeliver = { - remoteUserId: remoteUserId, - message: message, - sender: connection.userid - }; - - if (message.remoteUserId && message.message && message.sender) { - // if a code is manually passing required data - messageToDeliver = message; - } - - connectSocket(function() { - connection.socket.emit(connection.socketMessageEvent, messageToDeliver, callback); - }); - }; - - function onUserLeft(remoteUserId) { - connection.deletePeer(remoteUserId); - } - - mPeer.onUserLeft = onUserLeft; - mPeer.disconnectWith = function(remoteUserId, callback) { - if (connection.socket) { - connection.socket.emit('disconnect-with', remoteUserId, callback || function() {}); - } - - connection.deletePeer(remoteUserId); - }; - - connection.socketOptions = { - // 'force new connection': true, // For SocketIO version < 1.0 - // 'forceNew': true, // For SocketIO version >= 1.0 - 'transport': 'polling' // fixing transport:unknown issues - }; - - function connectSocket(connectCallback) { - connection.socketAutoReConnect = true; - - if (connection.socket) { // todo: check here readySate/etc. to make sure socket is still opened - if (connectCallback) { - connectCallback(connection.socket); - } - return; - } - - if (typeof SocketConnection === 'undefined') { - if (typeof FirebaseConnection !== 'undefined') { - window.SocketConnection = FirebaseConnection; - } else if (typeof PubNubConnection !== 'undefined') { - window.SocketConnection = PubNubConnection; - } else { - throw 'SocketConnection.js seems missed.'; - } - } - - new SocketConnection(connection, function(s) { - if (connectCallback) { - connectCallback(connection.socket); - } - }); - } - - // 1st paramter is roomid - // 2rd paramter is a callback function - connection.openOrJoin = function(roomid, callback) { - callback = callback || function() {}; - - connection.checkPresence(roomid, function(isRoomExist, roomid) { - if (isRoomExist) { - connection.sessionid = roomid; - - var localPeerSdpConstraints = false; - var remotePeerSdpConstraints = false; - var isOneWay = !!connection.session.oneway; - var isDataOnly = isData(connection.session); - - remotePeerSdpConstraints = { - OfferToReceiveAudio: connection.sdpConstraints.mandatory.OfferToReceiveAudio, - OfferToReceiveVideo: connection.sdpConstraints.mandatory.OfferToReceiveVideo - } - - localPeerSdpConstraints = { - OfferToReceiveAudio: isOneWay ? !!connection.session.audio : connection.sdpConstraints.mandatory.OfferToReceiveAudio, - OfferToReceiveVideo: isOneWay ? !!connection.session.video || !!connection.session.screen : connection.sdpConstraints.mandatory.OfferToReceiveVideo - } - - var connectionDescription = { - remoteUserId: connection.sessionid, - message: { - newParticipationRequest: true, - isOneWay: isOneWay, - isDataOnly: isDataOnly, - localPeerSdpConstraints: localPeerSdpConstraints, - remotePeerSdpConstraints: remotePeerSdpConstraints - }, - sender: connection.userid - }; - - beforeJoin(connectionDescription.message, function() { - joinRoom(connectionDescription, callback); - }); - return; - } - - connection.waitingForLocalMedia = true; - connection.isInitiator = true; - - connection.sessionid = roomid || connection.sessionid; - - if (isData(connection.session)) { - openRoom(callback); - return; - } - - connection.captureUserMedia(function() { - openRoom(callback); - }); - }); - }; - - // don't allow someone to join this person until he has the media - connection.waitingForLocalMedia = false; - - connection.open = function(roomid, callback) { - callback = callback || function() {}; - - connection.waitingForLocalMedia = true; - connection.isInitiator = true; - - connection.sessionid = roomid || connection.sessionid; - - connectSocket(function() { - if (isData(connection.session)) { - openRoom(callback); - return; - } - - connection.captureUserMedia(function() { - openRoom(callback); - }); - }); - }; - - // this object keeps extra-data records for all connected users - // this object is never cleared so you can always access extra-data even if a user left - connection.peersBackup = {}; - - connection.deletePeer = function(remoteUserId) { - if (!remoteUserId || !connection.peers[remoteUserId]) { - return; - } - - var eventObject = { - userid: remoteUserId, - extra: connection.peers[remoteUserId] ? connection.peers[remoteUserId].extra : {} - }; - - if (connection.peersBackup[eventObject.userid]) { - eventObject.extra = connection.peersBackup[eventObject.userid].extra; - } - - connection.onleave(eventObject); - - if (!!connection.peers[remoteUserId]) { - connection.peers[remoteUserId].streams.forEach(function(stream) { - stream.stop(); - }); - - var peer = connection.peers[remoteUserId].peer; - if (peer && peer.iceConnectionState !== 'closed') { - try { - peer.close(); - } catch (e) {} - } - - if (connection.peers[remoteUserId]) { - connection.peers[remoteUserId].peer = null; - delete connection.peers[remoteUserId]; - } - } - } - - connection.rejoin = function(connectionDescription) { - if (connection.isInitiator || !connectionDescription || !Object.keys(connectionDescription).length) { - return; - } - - var extra = {}; - - if (connection.peers[connectionDescription.remoteUserId]) { - extra = connection.peers[connectionDescription.remoteUserId].extra; - connection.deletePeer(connectionDescription.remoteUserId); - } - - if (connectionDescription && connectionDescription.remoteUserId) { - connection.join(connectionDescription.remoteUserId); - - connection.onReConnecting({ - userid: connectionDescription.remoteUserId, - extra: extra - }); - } - }; - - connection.join = function(remoteUserId, options) { - connection.sessionid = (remoteUserId ? remoteUserId.sessionid || remoteUserId.remoteUserId || remoteUserId : false) || connection.sessionid; - connection.sessionid += ''; - - var localPeerSdpConstraints = false; - var remotePeerSdpConstraints = false; - var isOneWay = false; - var isDataOnly = false; - - if ((remoteUserId && remoteUserId.session) || !remoteUserId || typeof remoteUserId === 'string') { - var session = remoteUserId ? remoteUserId.session || connection.session : connection.session; - - isOneWay = !!session.oneway; - isDataOnly = isData(session); - - remotePeerSdpConstraints = { - OfferToReceiveAudio: connection.sdpConstraints.mandatory.OfferToReceiveAudio, - OfferToReceiveVideo: connection.sdpConstraints.mandatory.OfferToReceiveVideo - }; - - localPeerSdpConstraints = { - OfferToReceiveAudio: isOneWay ? !!connection.session.audio : connection.sdpConstraints.mandatory.OfferToReceiveAudio, - OfferToReceiveVideo: isOneWay ? !!connection.session.video || !!connection.session.screen : connection.sdpConstraints.mandatory.OfferToReceiveVideo - }; - } - - options = options || {}; - - var cb = function() {}; - if (typeof options === 'function') { - cb = options; - options = {}; - } - - if (typeof options.localPeerSdpConstraints !== 'undefined') { - localPeerSdpConstraints = options.localPeerSdpConstraints; - } - - if (typeof options.remotePeerSdpConstraints !== 'undefined') { - remotePeerSdpConstraints = options.remotePeerSdpConstraints; - } - - if (typeof options.isOneWay !== 'undefined') { - isOneWay = options.isOneWay; - } - - if (typeof options.isDataOnly !== 'undefined') { - isDataOnly = options.isDataOnly; - } - - var connectionDescription = { - remoteUserId: connection.sessionid, - message: { - newParticipationRequest: true, - isOneWay: isOneWay, - isDataOnly: isDataOnly, - localPeerSdpConstraints: localPeerSdpConstraints, - remotePeerSdpConstraints: remotePeerSdpConstraints - }, - sender: connection.userid - }; - - beforeJoin(connectionDescription.message, function() { - connectSocket(function() { - joinRoom(connectionDescription, cb); - }); - }); - return connectionDescription; - }; - - function joinRoom(connectionDescription, cb) { - connection.socket.emit('join-room', { - sessionid: connection.sessionid, - session: connection.session, - mediaConstraints: connection.mediaConstraints, - sdpConstraints: connection.sdpConstraints, - streams: getStreamInfoForAdmin(), - extra: connection.extra, - password: typeof connection.password !== 'undefined' && typeof connection.password !== 'object' ? connection.password : '' - }, function(isRoomJoined, error) { - if (isRoomJoined === true) { - if (connection.enableLogs) { - console.log('isRoomJoined: ', isRoomJoined, ' roomid: ', connection.sessionid); - } - - if (!!connection.peers[connection.sessionid]) { - // on socket disconnect & reconnect - return; - } - - mPeer.onNegotiationNeeded(connectionDescription); - } - - if (isRoomJoined === false) { - if (connection.enableLogs) { - console.warn('isRoomJoined: ', error, ' roomid: ', connection.sessionid); - } - - // [disabled] retry after 3 seconds - false && setTimeout(function() { - joinRoom(connectionDescription, cb); - }, 3000); - } - - cb(isRoomJoined, connection.sessionid, error); - }); - } - - connection.publicRoomIdentifier = ''; - - function openRoom(callback) { - if (connection.enableLogs) { - console.log('Sending open-room signal to socket.io'); - } - - connection.waitingForLocalMedia = false; - connection.socket.emit('open-room', { - sessionid: connection.sessionid, - session: connection.session, - mediaConstraints: connection.mediaConstraints, - sdpConstraints: connection.sdpConstraints, - streams: getStreamInfoForAdmin(), - extra: connection.extra, - identifier: connection.publicRoomIdentifier, - password: typeof connection.password !== 'undefined' && typeof connection.password !== 'object' ? connection.password : '' - }, function(isRoomOpened, error) { - if (isRoomOpened === true) { - if (connection.enableLogs) { - console.log('isRoomOpened: ', isRoomOpened, ' roomid: ', connection.sessionid); - } - callback(isRoomOpened, connection.sessionid); - } - - if (isRoomOpened === false) { - if (connection.enableLogs) { - console.warn('isRoomOpened: ', error, ' roomid: ', connection.sessionid); - } - - callback(isRoomOpened, connection.sessionid, error); - } - }); - } - - function getStreamInfoForAdmin() { - try { - return connection.streamEvents.selectAll('local').map(function(event) { - return { - streamid: event.streamid, - tracks: event.stream.getTracks().length - }; - }); - } catch (e) { - return []; - } - } - - function beforeJoin(userPreferences, callback) { - if (connection.dontCaptureUserMedia || userPreferences.isDataOnly) { - callback(); - return; - } - - var localMediaConstraints = {}; - - if (userPreferences.localPeerSdpConstraints.OfferToReceiveAudio) { - localMediaConstraints.audio = connection.mediaConstraints.audio; - } - - if (userPreferences.localPeerSdpConstraints.OfferToReceiveVideo) { - localMediaConstraints.video = connection.mediaConstraints.video; - } - - var session = userPreferences.session || connection.session; - - if (session.oneway && session.audio !== 'two-way' && session.video !== 'two-way' && session.screen !== 'two-way') { - callback(); - return; - } - - if (session.oneway && session.audio && session.audio === 'two-way') { - session = { - audio: true - }; - } - - if (session.audio || session.video || session.screen) { - if (session.screen) { - if (DetectRTC.browser.name === 'Edge') { - navigator.getDisplayMedia({ - video: true, - audio: isAudioPlusTab(connection) - }).then(function(screen) { - screen.isScreen = true; - mPeer.onGettingLocalMedia(screen); - - if ((session.audio || session.video) && !isAudioPlusTab(connection)) { - connection.invokeGetUserMedia(null, callback); - } else { - callback(screen); - } - }, function(error) { - console.error('Unable to capture screen on Edge. HTTPs and version 17+ is required.'); - }); - } else { - connection.invokeGetUserMedia({ - audio: isAudioPlusTab(connection), - video: true, - isScreen: true - }, (session.audio || session.video) && !isAudioPlusTab(connection) ? connection.invokeGetUserMedia(null, callback) : callback); - } - } else if (session.audio || session.video) { - connection.invokeGetUserMedia(null, callback, session); - } - } - } - - connection.getUserMedia = connection.captureUserMedia = function(callback, sessionForced) { - callback = callback || function() {}; - var session = sessionForced || connection.session; - - if (connection.dontCaptureUserMedia || isData(session)) { - callback(); - return; - } - - if (session.audio || session.video || session.screen) { - if (session.screen) { - if (DetectRTC.browser.name === 'Edge') { - navigator.getDisplayMedia({ - video: true, - audio: isAudioPlusTab(connection) - }).then(function(screen) { - screen.isScreen = true; - mPeer.onGettingLocalMedia(screen); - - if ((session.audio || session.video) && !isAudioPlusTab(connection)) { - var nonScreenSession = {}; - for (var s in session) { - if (s !== 'screen') { - nonScreenSession[s] = session[s]; - } - } - connection.invokeGetUserMedia(sessionForced, callback, nonScreenSession); - return; - } - callback(screen); - }, function(error) { - console.error('Unable to capture screen on Edge. HTTPs and version 17+ is required.'); - }); - } else { - connection.invokeGetUserMedia({ - audio: isAudioPlusTab(connection), - video: true, - isScreen: true - }, function(stream) { - if ((session.audio || session.video) && !isAudioPlusTab(connection)) { - var nonScreenSession = {}; - for (var s in session) { - if (s !== 'screen') { - nonScreenSession[s] = session[s]; - } - } - connection.invokeGetUserMedia(sessionForced, callback, nonScreenSession); - return; - } - callback(stream); - }); - } - } else if (session.audio || session.video) { - connection.invokeGetUserMedia(sessionForced, callback, session); - } - } - }; - - connection.onbeforeunload = function(arg1, dontCloseSocket) { - if (!connection.closeBeforeUnload) { - return; - } - - connection.peers.getAllParticipants().forEach(function(participant) { - mPeer.onNegotiationNeeded({ - userLeft: true - }, participant); - - if (connection.peers[participant] && connection.peers[participant].peer) { - connection.peers[participant].peer.close(); - } - - delete connection.peers[participant]; - }); - - if (!dontCloseSocket) { - connection.closeSocket(); - } - - connection.isInitiator = false; - }; - - if (!window.ignoreBeforeUnload) { - // user can implement its own version of window.onbeforeunload - connection.closeBeforeUnload = true; - window.addEventListener('beforeunload', connection.onbeforeunload, false); - } else { - connection.closeBeforeUnload = false; - } - - connection.userid = getRandomString(); - connection.changeUserId = function(newUserId, callback) { - callback = callback || function() {}; - connection.userid = newUserId || getRandomString(); - connection.socket.emit('changed-uuid', connection.userid, callback); - }; - - connection.extra = {}; - connection.attachStreams = []; - - connection.session = { - audio: true, - video: true - }; - - connection.enableFileSharing = false; - - // all values in kbps - connection.bandwidth = { - screen: false, - audio: false, - video: false - }; - - connection.codecs = { - audio: 'opus', - video: 'VP9' - }; - - connection.processSdp = function(sdp) { - // ignore SDP modification if unified-pan is supported - if (isUnifiedPlanSupportedDefault()) { - return sdp; - } - - if (DetectRTC.browser.name === 'Safari') { - return sdp; - } - - if (connection.codecs.video.toUpperCase() === 'VP8') { - sdp = CodecsHandler.preferCodec(sdp, 'vp8'); - } - - if (connection.codecs.video.toUpperCase() === 'VP9') { - sdp = CodecsHandler.preferCodec(sdp, 'vp9'); - } - - if (connection.codecs.video.toUpperCase() === 'H264') { - sdp = CodecsHandler.preferCodec(sdp, 'h264'); - } - - if (connection.codecs.audio === 'G722') { - sdp = CodecsHandler.removeNonG722(sdp); - } - - if (DetectRTC.browser.name === 'Firefox') { - return sdp; - } - - if (connection.bandwidth.video || connection.bandwidth.screen) { - sdp = CodecsHandler.setApplicationSpecificBandwidth(sdp, connection.bandwidth, !!connection.session.screen); - } - - if (connection.bandwidth.video) { - sdp = CodecsHandler.setVideoBitrates(sdp, { - min: connection.bandwidth.video * 8 * 1024, - max: connection.bandwidth.video * 8 * 1024 - }); - } - - if (connection.bandwidth.audio) { - sdp = CodecsHandler.setOpusAttributes(sdp, { - maxaveragebitrate: connection.bandwidth.audio * 8 * 1024, - maxplaybackrate: connection.bandwidth.audio * 8 * 1024, - stereo: 1, - maxptime: 3 - }); - } - - return sdp; - }; - - if (typeof CodecsHandler !== 'undefined') { - connection.BandwidthHandler = connection.CodecsHandler = CodecsHandler; - } - - connection.mediaConstraints = { - audio: { - mandatory: {}, - optional: connection.bandwidth.audio ? [{ - bandwidth: connection.bandwidth.audio * 8 * 1024 || 128 * 8 * 1024 - }] : [] - }, - video: { - mandatory: {}, - optional: connection.bandwidth.video ? [{ - bandwidth: connection.bandwidth.video * 8 * 1024 || 128 * 8 * 1024 - }, { - facingMode: 'user' - }] : [{ - facingMode: 'user' - }] - } - }; - - if (DetectRTC.browser.name === 'Firefox') { - connection.mediaConstraints = { - audio: true, - video: true - }; - } - - if (!forceOptions.useDefaultDevices && !DetectRTC.isMobileDevice) { - DetectRTC.load(function() { - var lastAudioDevice, lastVideoDevice; - // it will force RTCMultiConnection to capture last-devices - // i.e. if external microphone is attached to system, we should prefer it over built-in devices. - DetectRTC.MediaDevices.forEach(function(device) { - if (device.kind === 'audioinput' && connection.mediaConstraints.audio !== false) { - lastAudioDevice = device; - } - - if (device.kind === 'videoinput' && connection.mediaConstraints.video !== false) { - lastVideoDevice = device; - } - }); - - if (lastAudioDevice) { - if (DetectRTC.browser.name === 'Firefox') { - if (connection.mediaConstraints.audio !== true) { - connection.mediaConstraints.audio.deviceId = lastAudioDevice.id; - } else { - connection.mediaConstraints.audio = { - deviceId: lastAudioDevice.id - } - } - return; - } - - if (connection.mediaConstraints.audio == true) { - connection.mediaConstraints.audio = { - mandatory: {}, - optional: [] - } - } - - if (!connection.mediaConstraints.audio.optional) { - connection.mediaConstraints.audio.optional = []; - } - - var optional = [{ - sourceId: lastAudioDevice.id - }]; - - connection.mediaConstraints.audio.optional = optional.concat(connection.mediaConstraints.audio.optional); - } - - if (lastVideoDevice) { - if (DetectRTC.browser.name === 'Firefox') { - if (connection.mediaConstraints.video !== true) { - connection.mediaConstraints.video.deviceId = lastVideoDevice.id; - } else { - connection.mediaConstraints.video = { - deviceId: lastVideoDevice.id - } - } - return; - } - - if (connection.mediaConstraints.video == true) { - connection.mediaConstraints.video = { - mandatory: {}, - optional: [] - } - } - - if (!connection.mediaConstraints.video.optional) { - connection.mediaConstraints.video.optional = []; - } - - var optional = [{ - sourceId: lastVideoDevice.id - }]; - - connection.mediaConstraints.video.optional = optional.concat(connection.mediaConstraints.video.optional); - } - }); - } - - connection.sdpConstraints = { - mandatory: { - OfferToReceiveAudio: true, - OfferToReceiveVideo: true - }, - optional: [{ - VoiceActivityDetection: false - }] - }; - - connection.sdpSemantics = null; // "unified-plan" or "plan-b", ref: webrtc.org/web-apis/chrome/unified-plan/ - connection.iceCandidatePoolSize = null; // 0 - connection.bundlePolicy = null; // max-bundle - connection.rtcpMuxPolicy = null; // "require" or "negotiate" - connection.iceTransportPolicy = null; // "relay" or "all" - connection.optionalArgument = { - optional: [{ - DtlsSrtpKeyAgreement: true - }, { - googImprovedWifiBwe: true - }, { - googScreencastMinBitrate: 300 - }, { - googIPv6: true - }, { - googDscp: true - }, { - googCpuUnderuseThreshold: 55 - }, { - googCpuOveruseThreshold: 85 - }, { - googSuspendBelowMinBitrate: true - }, { - googCpuOveruseDetection: true - }], - mandatory: {} - }; - - connection.iceServers = IceServersHandler.getIceServers(connection); - - connection.candidates = { - host: true, - stun: true, - turn: true - }; - - connection.iceProtocols = { - tcp: true, - udp: true - }; - - // EVENTs - connection.onopen = function(event) { - if (!!connection.enableLogs) { - console.info('Data connection has been opened between you & ', event.userid); - } - }; - - connection.onclose = function(event) { - if (!!connection.enableLogs) { - console.warn('Data connection has been closed between you & ', event.userid); - } - }; - - connection.onerror = function(error) { - if (!!connection.enableLogs) { - console.error(error.userid, 'data-error', error); - } - }; - - connection.onmessage = function(event) { - if (!!connection.enableLogs) { - console.debug('data-message', event.userid, event.data); - } - }; - - connection.send = function(data, remoteUserId) { - connection.peers.send(data, remoteUserId); - }; - - connection.close = connection.disconnect = connection.leave = function() { - connection.onbeforeunload(false, true); - }; - - connection.closeEntireSession = function(callback) { - callback = callback || function() {}; - connection.socket.emit('close-entire-session', function looper() { - if (connection.getAllParticipants().length) { - setTimeout(looper, 100); - return; - } - - connection.onEntireSessionClosed({ - sessionid: connection.sessionid, - userid: connection.userid, - extra: connection.extra - }); - - connection.changeUserId(null, function() { - connection.close(); - callback(); - }); - }); - }; - - connection.onEntireSessionClosed = function(event) { - if (!connection.enableLogs) return; - console.info('Entire session is closed: ', event.sessionid, event.extra); - }; - - connection.onstream = function(e) { - var parentNode = connection.videosContainer; - parentNode.insertBefore(e.mediaElement, parentNode.firstChild); - var played = e.mediaElement.play(); - - if (typeof played !== 'undefined') { - played.catch(function() { - /*** iOS 11 doesn't allow automatic play and rejects ***/ - }).then(function() { - setTimeout(function() { - e.mediaElement.play(); - }, 2000); - }); - return; - } - - setTimeout(function() { - e.mediaElement.play(); - }, 2000); - }; - - connection.onstreamended = function(e) { - if (!e.mediaElement) { - e.mediaElement = document.getElementById(e.streamid); - } - - if (!e.mediaElement || !e.mediaElement.parentNode) { - return; - } - - e.mediaElement.parentNode.removeChild(e.mediaElement); - }; - - connection.direction = 'many-to-many'; - - connection.removeStream = function(streamid, remoteUserId) { - var stream; - connection.attachStreams.forEach(function(localStream) { - if (localStream.id === streamid) { - stream = localStream; - } - }); - - if (!stream) { - console.warn('No such stream exist.', streamid); - return; - } - - connection.peers.getAllParticipants().forEach(function(participant) { - if (remoteUserId && participant !== remoteUserId) { - return; - } - - var user = connection.peers[participant]; - try { - user.peer.removeStream(stream); - } catch (e) {} - }); - - connection.renegotiate(); - }; - - connection.addStream = function(session, remoteUserId) { - if (!!session.getTracks) { - if (connection.attachStreams.indexOf(session) === -1) { - if (!session.streamid) { - session.streamid = session.id; - } - - connection.attachStreams.push(session); - } - connection.renegotiate(remoteUserId); - return; - } - - if (isData(session)) { - connection.renegotiate(remoteUserId); - return; - } - - if (session.audio || session.video || session.screen) { - if (session.screen) { - if (DetectRTC.browser.name === 'Edge') { - navigator.getDisplayMedia({ - video: true, - audio: isAudioPlusTab(connection) - }).then(function(screen) { - screen.isScreen = true; - mPeer.onGettingLocalMedia(screen); - - if ((session.audio || session.video) && !isAudioPlusTab(connection)) { - connection.invokeGetUserMedia(null, function(stream) { - gumCallback(stream); - }); - } else { - gumCallback(screen); - } - }, function(error) { - console.error('Unable to capture screen on Edge. HTTPs and version 17+ is required.'); - }); - } else { - connection.invokeGetUserMedia({ - audio: isAudioPlusTab(connection), - video: true, - isScreen: true - }, function(stream) { - if ((session.audio || session.video) && !isAudioPlusTab(connection)) { - connection.invokeGetUserMedia(null, function(stream) { - gumCallback(stream); - }); - } else { - gumCallback(stream); - } - }); - } - } else if (session.audio || session.video) { - connection.invokeGetUserMedia(null, gumCallback); - } - } - - function gumCallback(stream) { - if (session.streamCallback) { - session.streamCallback(stream); - } - - connection.renegotiate(remoteUserId); - } - }; - - connection.invokeGetUserMedia = function(localMediaConstraints, callback, session) { - if (!session) { - session = connection.session; - } - - if (!localMediaConstraints) { - localMediaConstraints = connection.mediaConstraints; - } - - getUserMediaHandler({ - onGettingLocalMedia: function(stream) { - var videoConstraints = localMediaConstraints.video; - if (videoConstraints) { - if (videoConstraints.mediaSource || videoConstraints.mozMediaSource) { - stream.isScreen = true; - } else if (videoConstraints.mandatory && videoConstraints.mandatory.chromeMediaSource) { - stream.isScreen = true; - } - } - - if (!stream.isScreen) { - stream.isVideo = !!getTracks(stream, 'video').length; - stream.isAudio = !stream.isVideo && getTracks(stream, 'audio').length; - } - - mPeer.onGettingLocalMedia(stream, function() { - if (typeof callback === 'function') { - callback(stream); - } - }); - }, - onLocalMediaError: function(error, constraints) { - mPeer.onLocalMediaError(error, constraints); - }, - localMediaConstraints: localMediaConstraints || { - audio: session.audio ? localMediaConstraints.audio : false, - video: session.video ? localMediaConstraints.video : false - } - }); - }; - - function applyConstraints(stream, mediaConstraints) { - if (!stream) { - if (!!connection.enableLogs) { - console.error('No stream to applyConstraints.'); - } - return; - } - - if (mediaConstraints.audio) { - getTracks(stream, 'audio').forEach(function(track) { - track.applyConstraints(mediaConstraints.audio); - }); - } - - if (mediaConstraints.video) { - getTracks(stream, 'video').forEach(function(track) { - track.applyConstraints(mediaConstraints.video); - }); - } - } - - connection.applyConstraints = function(mediaConstraints, streamid) { - if (!MediaStreamTrack || !MediaStreamTrack.prototype.applyConstraints) { - alert('track.applyConstraints is NOT supported in your browser.'); - return; - } - - if (streamid) { - var stream; - if (connection.streamEvents[streamid]) { - stream = connection.streamEvents[streamid].stream; - } - applyConstraints(stream, mediaConstraints); - return; - } - - connection.attachStreams.forEach(function(stream) { - applyConstraints(stream, mediaConstraints); - }); - }; - - function replaceTrack(track, remoteUserId, isVideoTrack) { - if (remoteUserId) { - mPeer.replaceTrack(track, remoteUserId, isVideoTrack); - return; - } - - connection.peers.getAllParticipants().forEach(function(participant) { - mPeer.replaceTrack(track, participant, isVideoTrack); - }); - } - - connection.replaceTrack = function(session, remoteUserId, isVideoTrack) { - session = session || {}; - - if (!RTCPeerConnection.prototype.getSenders) { - connection.addStream(session); - return; - } - - if (session instanceof MediaStreamTrack) { - replaceTrack(session, remoteUserId, isVideoTrack); - return; - } - - if (session instanceof MediaStream) { - if (getTracks(session, 'video').length) { - replaceTrack(getTracks(session, 'video')[0], remoteUserId, true); - } - - if (getTracks(session, 'audio').length) { - replaceTrack(getTracks(session, 'audio')[0], remoteUserId, false); - } - return; - } - - if (isData(session)) { - throw 'connection.replaceTrack requires audio and/or video and/or screen.'; - return; - } - - if (session.audio || session.video || session.screen) { - if (session.screen) { - if (DetectRTC.browser.name === 'Edge') { - navigator.getDisplayMedia({ - video: true, - audio: isAudioPlusTab(connection) - }).then(function(screen) { - screen.isScreen = true; - mPeer.onGettingLocalMedia(screen); - - if ((session.audio || session.video) && !isAudioPlusTab(connection)) { - connection.invokeGetUserMedia(null, gumCallback); - } else { - gumCallback(screen); - } - }, function(error) { - console.error('Unable to capture screen on Edge. HTTPs and version 17+ is required.'); - }); - } else { - connection.invokeGetUserMedia({ - audio: isAudioPlusTab(connection), - video: true, - isScreen: true - }, (session.audio || session.video) && !isAudioPlusTab(connection) ? connection.invokeGetUserMedia(null, gumCallback) : gumCallback); - } - } else if (session.audio || session.video) { - connection.invokeGetUserMedia(null, gumCallback); - } - } - - function gumCallback(stream) { - connection.replaceTrack(stream, remoteUserId, isVideoTrack || session.video || session.screen); - } - }; - - connection.resetTrack = function(remoteUsersIds, isVideoTrack) { - if (!remoteUsersIds) { - remoteUsersIds = connection.getAllParticipants(); - } - - if (typeof remoteUsersIds == 'string') { - remoteUsersIds = [remoteUsersIds]; - } - - remoteUsersIds.forEach(function(participant) { - var peer = connection.peers[participant].peer; - - if ((typeof isVideoTrack === 'undefined' || isVideoTrack === true) && peer.lastVideoTrack) { - connection.replaceTrack(peer.lastVideoTrack, participant, true); - } - - if ((typeof isVideoTrack === 'undefined' || isVideoTrack === false) && peer.lastAudioTrack) { - connection.replaceTrack(peer.lastAudioTrack, participant, false); - } - }); - }; - - connection.renegotiate = function(remoteUserId) { - if (remoteUserId) { - mPeer.renegotiatePeer(remoteUserId); - return; - } - - connection.peers.getAllParticipants().forEach(function(participant) { - mPeer.renegotiatePeer(participant); - }); - }; - - connection.setStreamEndHandler = function(stream, isRemote) { - if (!stream || !stream.addEventListener) return; - - isRemote = !!isRemote; - - if (stream.alreadySetEndHandler) { - return; - } - stream.alreadySetEndHandler = true; - - var streamEndedEvent = 'ended'; - - if ('oninactive' in stream) { - streamEndedEvent = 'inactive'; - } - - stream.addEventListener(streamEndedEvent, function() { - if (stream.idInstance) { - currentUserMediaRequest.remove(stream.idInstance); - } - - if (!isRemote) { - // reset attachStreams - var streams = []; - connection.attachStreams.forEach(function(s) { - if (s.id != stream.id) { - streams.push(s); - } - }); - connection.attachStreams = streams; - } - - // connection.renegotiate(); - - var streamEvent = connection.streamEvents[stream.streamid]; - if (!streamEvent) { - streamEvent = { - stream: stream, - streamid: stream.streamid, - type: isRemote ? 'remote' : 'local', - userid: connection.userid, - extra: connection.extra, - mediaElement: connection.streamEvents[stream.streamid] ? connection.streamEvents[stream.streamid].mediaElement : null - }; - } - - if (isRemote && connection.peers[streamEvent.userid]) { - // reset remote "streams" - var peer = connection.peers[streamEvent.userid].peer; - var streams = []; - peer.getRemoteStreams().forEach(function(s) { - if (s.id != stream.id) { - streams.push(s); - } - }); - connection.peers[streamEvent.userid].streams = streams; - } - - if (streamEvent.userid === connection.userid && streamEvent.type === 'remote') { - return; - } - - if (connection.peersBackup[streamEvent.userid]) { - streamEvent.extra = connection.peersBackup[streamEvent.userid].extra; - } - - connection.onstreamended(streamEvent); - - delete connection.streamEvents[stream.streamid]; - }, false); - }; - - connection.onMediaError = function(error, constraints) { - if (!!connection.enableLogs) { - console.error(error, constraints); - } - }; - - connection.autoCloseEntireSession = false; - - connection.filesContainer = connection.videosContainer = document.body || document.documentElement; - connection.isInitiator = false; - - connection.shareFile = mPeer.shareFile; - if (typeof FileProgressBarHandler !== 'undefined') { - FileProgressBarHandler.handle(connection); - } - - if (typeof TranslationHandler !== 'undefined') { - TranslationHandler.handle(connection); - } - - connection.token = getRandomString; - - connection.onNewParticipant = function(participantId, userPreferences) { - connection.acceptParticipationRequest(participantId, userPreferences); - }; - - connection.acceptParticipationRequest = function(participantId, userPreferences) { - if (userPreferences.successCallback) { - userPreferences.successCallback(); - delete userPreferences.successCallback; - } - - mPeer.createNewPeer(participantId, userPreferences); - }; - - if (typeof StreamsHandler !== 'undefined') { - connection.StreamsHandler = StreamsHandler; - } - - connection.onleave = function(userid) {}; - - connection.invokeSelectFileDialog = function(callback) { - var selector = new FileSelector(); - selector.accept = '*.*'; - selector.selectSingleFile(callback); - }; - - connection.onmute = function(e) { - if (!e || !e.mediaElement) { - return; - } - - if (e.muteType === 'both' || e.muteType === 'video') { - e.mediaElement.src = null; - var paused = e.mediaElement.pause(); - if (typeof paused !== 'undefined') { - paused.then(function() { - e.mediaElement.poster = e.snapshot || 'https://cdn.webrtc-experiment.com/images/muted.png'; - }); - } else { - e.mediaElement.poster = e.snapshot || 'https://cdn.webrtc-experiment.com/images/muted.png'; - } - } else if (e.muteType === 'audio') { - e.mediaElement.muted = true; - } - }; - - connection.onunmute = function(e) { - if (!e || !e.mediaElement || !e.stream) { - return; - } - - if (e.unmuteType === 'both' || e.unmuteType === 'video') { - e.mediaElement.poster = null; - e.mediaElement.srcObject = e.stream; - e.mediaElement.play(); - } else if (e.unmuteType === 'audio') { - e.mediaElement.muted = false; - } - }; - - connection.onExtraDataUpdated = function(event) { - event.status = 'online'; - connection.onUserStatusChanged(event, true); - }; - - connection.getAllParticipants = function(sender) { - return connection.peers.getAllParticipants(sender); - }; - - if (typeof StreamsHandler !== 'undefined') { - StreamsHandler.onSyncNeeded = function(streamid, action, type) { - connection.peers.getAllParticipants().forEach(function(participant) { - mPeer.onNegotiationNeeded({ - streamid: streamid, - action: action, - streamSyncNeeded: true, - type: type || 'both' - }, participant); - }); - }; - } - - connection.connectSocket = function(callback) { - connectSocket(callback); - }; - - connection.closeSocket = function() { - try { - io.sockets = {}; - } catch (e) {}; - - if (!connection.socket) return; - - if (typeof connection.socket.disconnect === 'function') { - connection.socket.disconnect(); - } - - if (typeof connection.socket.resetProps === 'function') { - connection.socket.resetProps(); - } - - connection.socket = null; - }; - - connection.getSocket = function(callback) { - if (!callback && connection.enableLogs) { - console.warn('getSocket.callback paramter is required.'); - } - - callback = callback || function() {}; - - if (!connection.socket) { - connectSocket(function() { - callback(connection.socket); - }); - } else { - callback(connection.socket); - } - - return connection.socket; // callback is preferred over return-statement - }; - - connection.getRemoteStreams = mPeer.getRemoteStreams; - - var skipStreams = ['selectFirst', 'selectAll', 'forEach']; - - connection.streamEvents = { - selectFirst: function(options) { - return connection.streamEvents.selectAll(options)[0]; - }, - selectAll: function(options) { - if (!options) { - // default will always be all streams - options = { - local: true, - remote: true, - isScreen: true, - isAudio: true, - isVideo: true - }; - } - - if (options == 'local') { - options = { - local: true - }; - } - - if (options == 'remote') { - options = { - remote: true - }; - } - - if (options == 'screen') { - options = { - isScreen: true - }; - } - - if (options == 'audio') { - options = { - isAudio: true - }; - } - - if (options == 'video') { - options = { - isVideo: true - }; - } - - var streams = []; - Object.keys(connection.streamEvents).forEach(function(key) { - var event = connection.streamEvents[key]; - - if (skipStreams.indexOf(key) !== -1) return; - var ignore = true; - - if (options.local && event.type === 'local') { - ignore = false; - } - - if (options.remote && event.type === 'remote') { - ignore = false; - } - - if (options.isScreen && event.stream.isScreen) { - ignore = false; - } - - if (options.isVideo && event.stream.isVideo) { - ignore = false; - } - - if (options.isAudio && event.stream.isAudio) { - ignore = false; - } - - if (options.userid && event.userid === options.userid) { - ignore = false; - } - - if (ignore === false) { - streams.push(event); - } - }); - - return streams; - } - }; - - connection.socketURL = '/'; // generated via config.json - connection.socketMessageEvent = 'RTCMultiConnection-Message'; // generated via config.json - connection.socketCustomEvent = 'RTCMultiConnection-Custom-Message'; // generated via config.json - connection.DetectRTC = DetectRTC; - - connection.setCustomSocketEvent = function(customEvent) { - if (customEvent) { - connection.socketCustomEvent = customEvent; - } - - if (!connection.socket) { - return; - } - - connection.socket.emit('set-custom-socket-event-listener', connection.socketCustomEvent); - }; - - connection.getNumberOfBroadcastViewers = function(broadcastId, callback) { - if (!connection.socket || !broadcastId || !callback) return; - - connection.socket.emit('get-number-of-users-in-specific-broadcast', broadcastId, callback); - }; - - connection.onNumberOfBroadcastViewersUpdated = function(event) { - if (!connection.enableLogs || !connection.isInitiator) return; - console.info('Number of broadcast (', event.broadcastId, ') viewers', event.numberOfBroadcastViewers); - }; - - connection.onUserStatusChanged = function(event, dontWriteLogs) { - if (!!connection.enableLogs && !dontWriteLogs) { - console.info(event.userid, event.status); - } - }; - - connection.getUserMediaHandler = getUserMediaHandler; - connection.multiPeersHandler = mPeer; - connection.enableLogs = true; - connection.setCustomSocketHandler = function(customSocketHandler) { - if (typeof SocketConnection !== 'undefined') { - SocketConnection = customSocketHandler; - } - }; - - // default value should be 15k because [old]Firefox's receiving limit is 16k! - // however 64k works chrome-to-chrome - connection.chunkSize = 40 * 1000; - - connection.maxParticipantsAllowed = 1000; - - // eject or leave single user - connection.disconnectWith = mPeer.disconnectWith; - - // check if room exist on server - // we will pass roomid to the server and wait for callback (i.e. server's response) - connection.checkPresence = function(roomid, callback) { - roomid = roomid || connection.sessionid; - - if (SocketConnection.name === 'SSEConnection') { - SSEConnection.checkPresence(roomid, function(isRoomExist, _roomid, extra) { - if (!connection.socket) { - if (!isRoomExist) { - connection.userid = _roomid; - } - - connection.connectSocket(function() { - callback(isRoomExist, _roomid, extra); - }); - return; - } - callback(isRoomExist, _roomid); - }); - return; - } - - if (!connection.socket) { - connection.connectSocket(function() { - connection.checkPresence(roomid, callback); - }); - return; - } - - connection.socket.emit('check-presence', roomid + '', function(isRoomExist, _roomid, extra) { - if (connection.enableLogs) { - console.log('checkPresence.isRoomExist: ', isRoomExist, ' roomid: ', _roomid); - } - callback(isRoomExist, _roomid, extra); - }); - }; - - connection.onReadyForOffer = function(remoteUserId, userPreferences) { - connection.multiPeersHandler.createNewPeer(remoteUserId, userPreferences); - }; - - connection.setUserPreferences = function(userPreferences) { - if (connection.dontAttachStream) { - userPreferences.dontAttachLocalStream = true; - } - - if (connection.dontGetRemoteStream) { - userPreferences.dontGetRemoteStream = true; - } - - return userPreferences; - }; - - connection.updateExtraData = function() { - connection.socket.emit('extra-data-updated', connection.extra); - }; - - connection.enableScalableBroadcast = false; - connection.maxRelayLimitPerUser = 3; // each broadcast should serve only 3 users - - connection.dontCaptureUserMedia = false; - connection.dontAttachStream = false; - connection.dontGetRemoteStream = false; - - connection.onReConnecting = function(event) { - if (connection.enableLogs) { - console.info('ReConnecting with', event.userid, '...'); - } - }; - - connection.beforeAddingStream = function(stream) { - return stream; - }; - - connection.beforeRemovingStream = function(stream) { - return stream; - }; - - if (typeof isChromeExtensionAvailable !== 'undefined') { - connection.checkIfChromeExtensionAvailable = isChromeExtensionAvailable; - } - - if (typeof isFirefoxExtensionAvailable !== 'undefined') { - connection.checkIfChromeExtensionAvailable = isFirefoxExtensionAvailable; - } - - if (typeof getChromeExtensionStatus !== 'undefined') { - connection.getChromeExtensionStatus = getChromeExtensionStatus; - } - - connection.modifyScreenConstraints = function(screen_constraints) { - return screen_constraints; - }; - - connection.onPeerStateChanged = function(state) { - if (connection.enableLogs) { - if (state.iceConnectionState.search(/closed|failed/gi) !== -1) { - console.error('Peer connection is closed between you & ', state.userid, state.extra, 'state:', state.iceConnectionState); - } - } - }; - - connection.isOnline = true; - - listenEventHandler('online', function() { - connection.isOnline = true; - }); - - listenEventHandler('offline', function() { - connection.isOnline = false; - }); - - connection.isLowBandwidth = false; - if (navigator && navigator.connection && navigator.connection.type) { - connection.isLowBandwidth = navigator.connection.type.toString().toLowerCase().search(/wifi|cell/g) !== -1; - if (connection.isLowBandwidth) { - connection.bandwidth = { - audio: false, - video: false, - screen: false - }; - - if (connection.mediaConstraints.audio && connection.mediaConstraints.audio.optional && connection.mediaConstraints.audio.optional.length) { - var newArray = []; - connection.mediaConstraints.audio.optional.forEach(function(opt) { - if (typeof opt.bandwidth === 'undefined') { - newArray.push(opt); - } - }); - connection.mediaConstraints.audio.optional = newArray; - } - - if (connection.mediaConstraints.video && connection.mediaConstraints.video.optional && connection.mediaConstraints.video.optional.length) { - var newArray = []; - connection.mediaConstraints.video.optional.forEach(function(opt) { - if (typeof opt.bandwidth === 'undefined') { - newArray.push(opt); - } - }); - connection.mediaConstraints.video.optional = newArray; - } - } - } - - connection.getExtraData = function(remoteUserId, callback) { - if (!remoteUserId) throw 'remoteUserId is required.'; - - if (typeof callback === 'function') { - connection.socket.emit('get-remote-user-extra-data', remoteUserId, function(extra, remoteUserId, error) { - callback(extra, remoteUserId, error); - }); - return; - } - - if (!connection.peers[remoteUserId]) { - if (connection.peersBackup[remoteUserId]) { - return connection.peersBackup[remoteUserId].extra; - } - return {}; - } - - return connection.peers[remoteUserId].extra; - }; - - if (!!forceOptions.autoOpenOrJoin) { - connection.openOrJoin(connection.sessionid); - } - - connection.onUserIdAlreadyTaken = function(useridAlreadyTaken, yourNewUserId) { - // via #683 - connection.close(); - connection.closeSocket(); - - connection.isInitiator = false; - connection.userid = connection.token(); - - connection.join(connection.sessionid); - - if (connection.enableLogs) { - console.warn('Userid already taken.', useridAlreadyTaken, 'Your new userid:', connection.userid); - } - }; - - connection.trickleIce = true; - connection.version = '3.7.0'; - - connection.onSettingLocalDescription = function(event) { - if (connection.enableLogs) { - console.info('Set local description for remote user', event.userid); - } - }; - - connection.resetScreen = function() { - sourceId = null; - if (DetectRTC && DetectRTC.screen) { - delete DetectRTC.screen.sourceId; - } - - currentUserMediaRequest = { - streams: [], - mutex: false, - queueRequests: [] - }; - }; - - // if disabled, "event.mediaElement" for "onstream" will be NULL - connection.autoCreateMediaElement = true; - - // set password - connection.password = null; - - // set password - connection.setPassword = function(password, callback) { - callback = callback || function() {}; - if (connection.socket) { - connection.socket.emit('set-password', password, callback); - } else { - connection.password = password; - callback(true, connection.sessionid, null); - } - }; - - connection.onSocketDisconnect = function(event) { - if (connection.enableLogs) { - console.warn('socket.io connection is closed'); - } - }; - - connection.onSocketError = function(event) { - if (connection.enableLogs) { - console.warn('socket.io connection is failed'); - } - }; - - // error messages - connection.errors = { - ROOM_NOT_AVAILABLE: 'Room not available', - INVALID_PASSWORD: 'Invalid password', - USERID_NOT_AVAILABLE: 'User ID does not exist', - ROOM_PERMISSION_DENIED: 'Room permission denied', - ROOM_FULL: 'Room full', - DID_NOT_JOIN_ANY_ROOM: 'Did not join any room yet', - INVALID_SOCKET: 'Invalid socket', - PUBLIC_IDENTIFIER_MISSING: 'publicRoomIdentifier is required', - INVALID_ADMIN_CREDENTIAL: 'Invalid username or password attempted' - }; - })(this); - -}; - -if (typeof module !== 'undefined' /* && !!module.exports*/ ) { - module.exports = exports = RTCMultiConnection; -} - -if (typeof define === 'function' && define.amd) { - define('RTCMultiConnection', [], function() { - return RTCMultiConnection; - }); -} diff --git a/static/kevin-master/assets/js/RecordRTC.js b/static/kevin-master/assets/js/RecordRTC.js deleted file mode 100644 index be4c5a4..0000000 --- a/static/kevin-master/assets/js/RecordRTC.js +++ /dev/null @@ -1,6208 +0,0 @@ -'use strict'; - -// Last time updated: 2020-05-17 5:04:38 PM UTC - -// ________________ -// RecordRTC v5.6.1 - -// Open-Sourced: https://github.com/muaz-khan/RecordRTC - -// -------------------------------------------------- -// Muaz Khan - www.MuazKhan.com -// MIT License - www.WebRTC-Experiment.com/licence -// -------------------------------------------------- - -// ____________ -// RecordRTC.js - -/** - * {@link https://github.com/muaz-khan/RecordRTC|RecordRTC} is a WebRTC JavaScript library for audio/video as well as screen activity recording. It supports Chrome, Firefox, Opera, Android, and Microsoft Edge. Platforms: Linux, Mac and Windows. - * @summary Record audio, video or screen inside the browser. - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @typedef RecordRTC - * @class - * @example - * var recorder = RecordRTC(mediaStream or [arrayOfMediaStream], { - * type: 'video', // audio or video or gif or canvas - * recorderType: MediaStreamRecorder || CanvasRecorder || StereoAudioRecorder || Etc - * }); - * recorder.startRecording(); - * @see For further information: - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc. - * @param {object} config - {type:"video", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, desiredSampRate: 16000, video: HTMLVideoElement, etc.} - */ - -function RecordRTC(mediaStream, config) { - if (!mediaStream) { - throw 'First parameter is required.'; - } - - config = config || { - type: 'video' - }; - - config = new RecordRTCConfiguration(mediaStream, config); - - // a reference to user's recordRTC object - var self = this; - - function startRecording(config2) { - if (!config.disableLogs) { - console.log('RecordRTC version: ', self.version); - } - - if (!!config2) { - // allow users to set options using startRecording method - // config2 is similar to main "config" object (second parameter over RecordRTC constructor) - config = new RecordRTCConfiguration(mediaStream, config2); - } - - if (!config.disableLogs) { - console.log('started recording ' + config.type + ' stream.'); - } - - if (mediaRecorder) { - mediaRecorder.clearRecordedData(); - mediaRecorder.record(); - - setState('recording'); - - if (self.recordingDuration) { - handleRecordingDuration(); - } - return self; - } - - initRecorder(function() { - if (self.recordingDuration) { - handleRecordingDuration(); - } - }); - - return self; - } - - function initRecorder(initCallback) { - if (initCallback) { - config.initCallback = function() { - initCallback(); - initCallback = config.initCallback = null; // recorder.initRecorder should be call-backed once. - }; - } - - var Recorder = new GetRecorderType(mediaStream, config); - - mediaRecorder = new Recorder(mediaStream, config); - mediaRecorder.record(); - - setState('recording'); - - if (!config.disableLogs) { - console.log('Initialized recorderType:', mediaRecorder.constructor.name, 'for output-type:', config.type); - } - } - - function stopRecording(callback) { - callback = callback || function() {}; - - if (!mediaRecorder) { - warningLog(); - return; - } - - if (self.state === 'paused') { - self.resumeRecording(); - - setTimeout(function() { - stopRecording(callback); - }, 1); - return; - } - - if (self.state !== 'recording' && !config.disableLogs) { - console.warn('Recording state should be: "recording", however current state is: ', self.state); - } - - if (!config.disableLogs) { - console.log('Stopped recording ' + config.type + ' stream.'); - } - - if (config.type !== 'gif') { - mediaRecorder.stop(_callback); - } else { - mediaRecorder.stop(); - _callback(); - } - - setState('stopped'); - - function _callback(__blob) { - if (!mediaRecorder) { - if (typeof callback.call === 'function') { - callback.call(self, ''); - } else { - callback(''); - } - return; - } - - Object.keys(mediaRecorder).forEach(function(key) { - if (typeof mediaRecorder[key] === 'function') { - return; - } - - self[key] = mediaRecorder[key]; - }); - - var blob = mediaRecorder.blob; - - if (!blob) { - if (__blob) { - mediaRecorder.blob = blob = __blob; - } else { - throw 'Recording failed.'; - } - } - - if (blob && !config.disableLogs) { - console.log(blob.type, '->', bytesToSize(blob.size)); - } - - if (callback) { - var url; - - try { - url = URL.createObjectURL(blob); - } catch (e) {} - - if (typeof callback.call === 'function') { - callback.call(self, url); - } else { - callback(url); - } - } - - if (!config.autoWriteToDisk) { - return; - } - - getDataURL(function(dataURL) { - var parameter = {}; - parameter[config.type + 'Blob'] = dataURL; - DiskStorage.Store(parameter); - }); - } - } - - function pauseRecording() { - if (!mediaRecorder) { - warningLog(); - return; - } - - if (self.state !== 'recording') { - if (!config.disableLogs) { - console.warn('Unable to pause the recording. Recording state: ', self.state); - } - return; - } - - setState('paused'); - - mediaRecorder.pause(); - - if (!config.disableLogs) { - console.log('Paused recording.'); - } - } - - function resumeRecording() { - if (!mediaRecorder) { - warningLog(); - return; - } - - if (self.state !== 'paused') { - if (!config.disableLogs) { - console.warn('Unable to resume the recording. Recording state: ', self.state); - } - return; - } - - setState('recording'); - - // not all libs have this method yet - mediaRecorder.resume(); - - if (!config.disableLogs) { - console.log('Resumed recording.'); - } - } - - function readFile(_blob) { - postMessage(new FileReaderSync().readAsDataURL(_blob)); - } - - function getDataURL(callback, _mediaRecorder) { - if (!callback) { - throw 'Pass a callback function over getDataURL.'; - } - - var blob = _mediaRecorder ? _mediaRecorder.blob : (mediaRecorder || {}).blob; - - if (!blob) { - if (!config.disableLogs) { - console.warn('Blob encoder did not finish its job yet.'); - } - - setTimeout(function() { - getDataURL(callback, _mediaRecorder); - }, 1000); - return; - } - - if (typeof Worker !== 'undefined' && !navigator.mozGetUserMedia) { - var webWorker = processInWebWorker(readFile); - - webWorker.onmessage = function(event) { - callback(event.data); - }; - - webWorker.postMessage(blob); - } else { - var reader = new FileReader(); - reader.readAsDataURL(blob); - reader.onload = function(event) { - callback(event.target.result); - }; - } - - function processInWebWorker(_function) { - try { - var blob = URL.createObjectURL(new Blob([_function.toString(), - 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}' - ], { - type: 'application/javascript' - })); - - var worker = new Worker(blob); - URL.revokeObjectURL(blob); - return worker; - } catch (e) {} - } - } - - function handleRecordingDuration(counter) { - counter = counter || 0; - - if (self.state === 'paused') { - setTimeout(function() { - handleRecordingDuration(counter); - }, 1000); - return; - } - - if (self.state === 'stopped') { - return; - } - - if (counter >= self.recordingDuration) { - stopRecording(self.onRecordingStopped); - return; - } - - counter += 1000; // 1-second - - setTimeout(function() { - handleRecordingDuration(counter); - }, 1000); - } - - function setState(state) { - if (!self) { - return; - } - - self.state = state; - - if (typeof self.onStateChanged.call === 'function') { - self.onStateChanged.call(self, state); - } else { - self.onStateChanged(state); - } - } - - var WARNING = 'It seems that recorder is destroyed or "startRecording" is not invoked for ' + config.type + ' recorder.'; - - function warningLog() { - if (config.disableLogs === true) { - return; - } - - console.warn(WARNING); - } - - var mediaRecorder; - - var returnObject = { - /** - * This method starts the recording. - * @method - * @memberof RecordRTC - * @instance - * @example - * var recorder = RecordRTC(mediaStream, { - * type: 'video' - * }); - * recorder.startRecording(); - */ - startRecording: startRecording, - - /** - * This method stops the recording. It is strongly recommended to get "blob" or "URI" inside the callback to make sure all recorders finished their job. - * @param {function} callback - Callback to get the recorded blob. - * @method - * @memberof RecordRTC - * @instance - * @example - * recorder.stopRecording(function() { - * // use either "this" or "recorder" object; both are identical - * video.src = this.toURL(); - * var blob = this.getBlob(); - * }); - */ - stopRecording: stopRecording, - - /** - * This method pauses the recording. You can resume recording using "resumeRecording" method. - * @method - * @memberof RecordRTC - * @instance - * @todo Firefox is unable to pause the recording. Fix it. - * @example - * recorder.pauseRecording(); // pause the recording - * recorder.resumeRecording(); // resume again - */ - pauseRecording: pauseRecording, - - /** - * This method resumes the recording. - * @method - * @memberof RecordRTC - * @instance - * @example - * recorder.pauseRecording(); // first of all, pause the recording - * recorder.resumeRecording(); // now resume it - */ - resumeRecording: resumeRecording, - - /** - * This method initializes the recording. - * @method - * @memberof RecordRTC - * @instance - * @todo This method should be deprecated. - * @example - * recorder.initRecorder(); - */ - initRecorder: initRecorder, - - /** - * Ask RecordRTC to auto-stop the recording after 5 minutes. - * @method - * @memberof RecordRTC - * @instance - * @example - * var fiveMinutes = 5 * 1000 * 60; - * recorder.setRecordingDuration(fiveMinutes, function() { - * var blob = this.getBlob(); - * video.src = this.toURL(); - * }); - * - * // or otherwise - * recorder.setRecordingDuration(fiveMinutes).onRecordingStopped(function() { - * var blob = this.getBlob(); - * video.src = this.toURL(); - * }); - */ - setRecordingDuration: function(recordingDuration, callback) { - if (typeof recordingDuration === 'undefined') { - throw 'recordingDuration is required.'; - } - - if (typeof recordingDuration !== 'number') { - throw 'recordingDuration must be a number.'; - } - - self.recordingDuration = recordingDuration; - self.onRecordingStopped = callback || function() {}; - - return { - onRecordingStopped: function(callback) { - self.onRecordingStopped = callback; - } - }; - }, - - /** - * This method can be used to clear/reset all the recorded data. - * @method - * @memberof RecordRTC - * @instance - * @todo Figure out the difference between "reset" and "clearRecordedData" methods. - * @example - * recorder.clearRecordedData(); - */ - clearRecordedData: function() { - if (!mediaRecorder) { - warningLog(); - return; - } - - mediaRecorder.clearRecordedData(); - - if (!config.disableLogs) { - console.log('Cleared old recorded data.'); - } - }, - - /** - * Get the recorded blob. Use this method inside the "stopRecording" callback. - * @method - * @memberof RecordRTC - * @instance - * @example - * recorder.stopRecording(function() { - * var blob = this.getBlob(); - * - * var file = new File([blob], 'filename.webm', { - * type: 'video/webm' - * }); - * - * var formData = new FormData(); - * formData.append('file', file); // upload "File" object rather than a "Blob" - * uploadToServer(formData); - * }); - * @returns {Blob} Returns recorded data as "Blob" object. - */ - getBlob: function() { - if (!mediaRecorder) { - warningLog(); - return; - } - - return mediaRecorder.blob; - }, - - /** - * Get data-URI instead of Blob. - * @param {function} callback - Callback to get the Data-URI. - * @method - * @memberof RecordRTC - * @instance - * @example - * recorder.stopRecording(function() { - * recorder.getDataURL(function(dataURI) { - * video.src = dataURI; - * }); - * }); - */ - getDataURL: getDataURL, - - /** - * Get virtual/temporary URL. Usage of this URL is limited to current tab. - * @method - * @memberof RecordRTC - * @instance - * @example - * recorder.stopRecording(function() { - * video.src = this.toURL(); - * }); - * @returns {String} Returns a virtual/temporary URL for the recorded "Blob". - */ - toURL: function() { - if (!mediaRecorder) { - warningLog(); - return; - } - - return URL.createObjectURL(mediaRecorder.blob); - }, - - /** - * Get internal recording object (i.e. internal module) e.g. MutliStreamRecorder, MediaStreamRecorder, StereoAudioRecorder or WhammyRecorder etc. - * @method - * @memberof RecordRTC - * @instance - * @example - * var internalRecorder = recorder.getInternalRecorder(); - * if(internalRecorder instanceof MultiStreamRecorder) { - * internalRecorder.addStreams([newAudioStream]); - * internalRecorder.resetVideoStreams([screenStream]); - * } - * @returns {Object} Returns internal recording object. - */ - getInternalRecorder: function() { - return mediaRecorder; - }, - - /** - * Invoke save-as dialog to save the recorded blob into your disk. - * @param {string} fileName - Set your own file name. - * @method - * @memberof RecordRTC - * @instance - * @example - * recorder.stopRecording(function() { - * this.save('file-name'); - * - * // or manually: - * invokeSaveAsDialog(this.getBlob(), 'filename.webm'); - * }); - */ - save: function(fileName) { - if (!mediaRecorder) { - warningLog(); - return; - } - - invokeSaveAsDialog(mediaRecorder.blob, fileName); - }, - - /** - * This method gets a blob from indexed-DB storage. - * @param {function} callback - Callback to get the recorded blob. - * @method - * @memberof RecordRTC - * @instance - * @example - * recorder.getFromDisk(function(dataURL) { - * video.src = dataURL; - * }); - */ - getFromDisk: function(callback) { - if (!mediaRecorder) { - warningLog(); - return; - } - - RecordRTC.getFromDisk(config.type, callback); - }, - - /** - * This method appends an array of webp images to the recorded video-blob. It takes an "array" object. - * @type {Array.} - * @param {Array} arrayOfWebPImages - Array of webp images. - * @method - * @memberof RecordRTC - * @instance - * @todo This method should be deprecated. - * @example - * var arrayOfWebPImages = []; - * arrayOfWebPImages.push({ - * duration: index, - * image: 'data:image/webp;base64,...' - * }); - * recorder.setAdvertisementArray(arrayOfWebPImages); - */ - setAdvertisementArray: function(arrayOfWebPImages) { - config.advertisement = []; - - var length = arrayOfWebPImages.length; - for (var i = 0; i < length; i++) { - config.advertisement.push({ - duration: i, - image: arrayOfWebPImages[i] - }); - } - }, - - /** - * It is equivalent to "recorder.getBlob()" method. Usage of "getBlob" is recommended, though. - * @property {Blob} blob - Recorded Blob can be accessed using this property. - * @memberof RecordRTC - * @instance - * @readonly - * @example - * recorder.stopRecording(function() { - * var blob = this.blob; - * - * // below one is recommended - * var blob = this.getBlob(); - * }); - */ - blob: null, - - /** - * This works only with {recorderType:StereoAudioRecorder}. Use this property on "stopRecording" to verify the encoder's sample-rates. - * @property {number} bufferSize - Buffer-size used to encode the WAV container - * @memberof RecordRTC - * @instance - * @readonly - * @example - * recorder.stopRecording(function() { - * alert('Recorder used this buffer-size: ' + this.bufferSize); - * }); - */ - bufferSize: 0, - - /** - * This works only with {recorderType:StereoAudioRecorder}. Use this property on "stopRecording" to verify the encoder's sample-rates. - * @property {number} sampleRate - Sample-rates used to encode the WAV container - * @memberof RecordRTC - * @instance - * @readonly - * @example - * recorder.stopRecording(function() { - * alert('Recorder used these sample-rates: ' + this.sampleRate); - * }); - */ - sampleRate: 0, - - /** - * {recorderType:StereoAudioRecorder} returns ArrayBuffer object. - * @property {ArrayBuffer} buffer - Audio ArrayBuffer, supported only in Chrome. - * @memberof RecordRTC - * @instance - * @readonly - * @example - * recorder.stopRecording(function() { - * var arrayBuffer = this.buffer; - * alert(arrayBuffer.byteLength); - * }); - */ - buffer: null, - - /** - * This method resets the recorder. So that you can reuse single recorder instance many times. - * @method - * @memberof RecordRTC - * @instance - * @example - * recorder.reset(); - * recorder.startRecording(); - */ - reset: function() { - if (self.state === 'recording' && !config.disableLogs) { - console.warn('Stop an active recorder.'); - } - - if (mediaRecorder && typeof mediaRecorder.clearRecordedData === 'function') { - mediaRecorder.clearRecordedData(); - } - mediaRecorder = null; - setState('inactive'); - self.blob = null; - }, - - /** - * This method is called whenever recorder's state changes. Use this as an "event". - * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive. - * @method - * @memberof RecordRTC - * @instance - * @example - * recorder.onStateChanged = function(state) { - * console.log('Recorder state: ', state); - * }; - */ - onStateChanged: function(state) { - if (!config.disableLogs) { - console.log('Recorder state changed:', state); - } - }, - - /** - * A recorder can have inactive, recording, paused or stopped states. - * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive. - * @memberof RecordRTC - * @static - * @readonly - * @example - * // this looper function will keep you updated about the recorder's states. - * (function looper() { - * document.querySelector('h1').innerHTML = 'Recorder\'s state is: ' + recorder.state; - * if(recorder.state === 'stopped') return; // ignore+stop - * setTimeout(looper, 1000); // update after every 3-seconds - * })(); - * recorder.startRecording(); - */ - state: 'inactive', - - /** - * Get recorder's readonly state. - * @method - * @memberof RecordRTC - * @example - * var state = recorder.getState(); - * @returns {String} Returns recording state. - */ - getState: function() { - return self.state; - }, - - /** - * Destroy RecordRTC instance. Clear all recorders and objects. - * @method - * @memberof RecordRTC - * @example - * recorder.destroy(); - */ - destroy: function() { - var disableLogsCache = config.disableLogs; - - config = { - disableLogs: true - }; - self.reset(); - setState('destroyed'); - returnObject = self = null; - - if (Storage.AudioContextConstructor) { - Storage.AudioContextConstructor.close(); - Storage.AudioContextConstructor = null; - } - - config.disableLogs = disableLogsCache; - - if (!config.disableLogs) { - console.log('RecordRTC is destroyed.'); - } - }, - - /** - * RecordRTC version number - * @property {String} version - Release version number. - * @memberof RecordRTC - * @static - * @readonly - * @example - * alert(recorder.version); - */ - version: '5.6.1' - }; - - if (!this) { - self = returnObject; - return returnObject; - } - - // if someone wants to use RecordRTC with the "new" keyword. - for (var prop in returnObject) { - this[prop] = returnObject[prop]; - } - - self = this; - - return returnObject; -} - -RecordRTC.version = '5.6.1'; - -if (typeof module !== 'undefined' /* && !!module.exports*/ ) { - module.exports = RecordRTC; -} - -if (typeof define === 'function' && define.amd) { - define('RecordRTC', [], function() { - return RecordRTC; - }); -} - -RecordRTC.getFromDisk = function(type, callback) { - if (!callback) { - throw 'callback is mandatory.'; - } - - console.log('Getting recorded ' + (type === 'all' ? 'blobs' : type + ' blob ') + ' from disk!'); - DiskStorage.Fetch(function(dataURL, _type) { - if (type !== 'all' && _type === type + 'Blob' && callback) { - callback(dataURL); - } - - if (type === 'all' && callback) { - callback(dataURL, _type.replace('Blob', '')); - } - }); -}; - -/** - * This method can be used to store recorded blobs into IndexedDB storage. - * @param {object} options - {audio: Blob, video: Blob, gif: Blob} - * @method - * @memberof RecordRTC - * @example - * RecordRTC.writeToDisk({ - * audio: audioBlob, - * video: videoBlob, - * gif : gifBlob - * }); - */ -RecordRTC.writeToDisk = function(options) { - console.log('Writing recorded blob(s) to disk!'); - options = options || {}; - if (options.audio && options.video && options.gif) { - options.audio.getDataURL(function(audioDataURL) { - options.video.getDataURL(function(videoDataURL) { - options.gif.getDataURL(function(gifDataURL) { - DiskStorage.Store({ - audioBlob: audioDataURL, - videoBlob: videoDataURL, - gifBlob: gifDataURL - }); - }); - }); - }); - } else if (options.audio && options.video) { - options.audio.getDataURL(function(audioDataURL) { - options.video.getDataURL(function(videoDataURL) { - DiskStorage.Store({ - audioBlob: audioDataURL, - videoBlob: videoDataURL - }); - }); - }); - } else if (options.audio && options.gif) { - options.audio.getDataURL(function(audioDataURL) { - options.gif.getDataURL(function(gifDataURL) { - DiskStorage.Store({ - audioBlob: audioDataURL, - gifBlob: gifDataURL - }); - }); - }); - } else if (options.video && options.gif) { - options.video.getDataURL(function(videoDataURL) { - options.gif.getDataURL(function(gifDataURL) { - DiskStorage.Store({ - videoBlob: videoDataURL, - gifBlob: gifDataURL - }); - }); - }); - } else if (options.audio) { - options.audio.getDataURL(function(audioDataURL) { - DiskStorage.Store({ - audioBlob: audioDataURL - }); - }); - } else if (options.video) { - options.video.getDataURL(function(videoDataURL) { - DiskStorage.Store({ - videoBlob: videoDataURL - }); - }); - } else if (options.gif) { - options.gif.getDataURL(function(gifDataURL) { - DiskStorage.Store({ - gifBlob: gifDataURL - }); - }); - } -}; - -// __________________________ -// RecordRTC-Configuration.js - -/** - * {@link RecordRTCConfiguration} is an inner/private helper for {@link RecordRTC}. - * @summary It configures the 2nd parameter passed over {@link RecordRTC} and returns a valid "config" object. - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @typedef RecordRTCConfiguration - * @class - * @example - * var options = RecordRTCConfiguration(mediaStream, options); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API. - * @param {object} config - {type:"video", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, getNativeBlob:true, etc.} - */ - -function RecordRTCConfiguration(mediaStream, config) { - if (!config.recorderType && !config.type) { - if (!!config.audio && !!config.video) { - config.type = 'video'; - } else if (!!config.audio && !config.video) { - config.type = 'audio'; - } - } - - if (config.recorderType && !config.type) { - if (config.recorderType === WhammyRecorder || config.recorderType === CanvasRecorder || (typeof WebAssemblyRecorder !== 'undefined' && config.recorderType === WebAssemblyRecorder)) { - config.type = 'video'; - } else if (config.recorderType === GifRecorder) { - config.type = 'gif'; - } else if (config.recorderType === StereoAudioRecorder) { - config.type = 'audio'; - } else if (config.recorderType === MediaStreamRecorder) { - if (getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) { - config.type = 'video'; - } else if (!getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) { - config.type = 'video'; - } else if (getTracks(mediaStream, 'audio').length && !getTracks(mediaStream, 'video').length) { - config.type = 'audio'; - } else { - // config.type = 'UnKnown'; - } - } - } - - if (typeof MediaStreamRecorder !== 'undefined' && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) { - if (!config.mimeType) { - config.mimeType = 'video/webm'; - } - - if (!config.type) { - config.type = config.mimeType.split('/')[0]; - } - - if (!config.bitsPerSecond) { - // config.bitsPerSecond = 128000; - } - } - - // consider default type=audio - if (!config.type) { - if (config.mimeType) { - config.type = config.mimeType.split('/')[0]; - } - if (!config.type) { - config.type = 'audio'; - } - } - - return config; -} - -// __________________ -// GetRecorderType.js - -/** - * {@link GetRecorderType} is an inner/private helper for {@link RecordRTC}. - * @summary It returns best recorder-type available for your browser. - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @typedef GetRecorderType - * @class - * @example - * var RecorderType = GetRecorderType(options); - * var recorder = new RecorderType(options); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API. - * @param {object} config - {type:"video", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.} - */ - -function GetRecorderType(mediaStream, config) { - var recorder; - - // StereoAudioRecorder can work with all three: Edge, Firefox and Chrome - // todo: detect if it is Edge, then auto use: StereoAudioRecorder - if (isChrome || isEdge || isOpera) { - // Media Stream Recording API has not been implemented in chrome yet; - // That's why using WebAudio API to record stereo audio in WAV format - recorder = StereoAudioRecorder; - } - - if (typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype && !isChrome) { - recorder = MediaStreamRecorder; - } - - // video recorder (in WebM format) - if (config.type === 'video' && (isChrome || isOpera)) { - recorder = WhammyRecorder; - - if (typeof WebAssemblyRecorder !== 'undefined' && typeof ReadableStream !== 'undefined') { - recorder = WebAssemblyRecorder; - } - } - - // video recorder (in Gif format) - if (config.type === 'gif') { - recorder = GifRecorder; - } - - // html2canvas recording! - if (config.type === 'canvas') { - recorder = CanvasRecorder; - } - - if (isMediaRecorderCompatible() && recorder !== CanvasRecorder && recorder !== GifRecorder && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) { - if (getTracks(mediaStream, 'video').length || getTracks(mediaStream, 'audio').length) { - // audio-only recording - if (config.type === 'audio') { - if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('audio/webm')) { - recorder = MediaStreamRecorder; - } - // else recorder = StereoAudioRecorder; - } else { - // video or screen tracks - if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('video/webm')) { - recorder = MediaStreamRecorder; - } - } - } - } - - if (mediaStream instanceof Array && mediaStream.length) { - recorder = MultiStreamRecorder; - } - - if (config.recorderType) { - recorder = config.recorderType; - } - - if (!config.disableLogs && !!recorder && !!recorder.name) { - console.log('Using recorderType:', recorder.name || recorder.constructor.name); - } - - if (!recorder && isSafari) { - recorder = MediaStreamRecorder; - } - - return recorder; -} - -// _____________ -// MRecordRTC.js - -/** - * MRecordRTC runs on top of {@link RecordRTC} to bring multiple recordings in a single place, by providing simple API. - * @summary MRecordRTC stands for "Multiple-RecordRTC". - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @typedef MRecordRTC - * @class - * @example - * var recorder = new MRecordRTC(); - * recorder.addStream(MediaStream); - * recorder.mediaType = { - * audio: true, // or StereoAudioRecorder or MediaStreamRecorder - * video: true, // or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder - * gif: true // or GifRecorder - * }; - * // mimeType is optional and should be set only in advance cases. - * recorder.mimeType = { - * audio: 'audio/wav', - * video: 'video/webm', - * gif: 'image/gif' - * }; - * recorder.startRecording(); - * @see For further information: - * @see {@link https://github.com/muaz-khan/RecordRTC/tree/master/MRecordRTC|MRecordRTC Source Code} - * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API. - * @requires {@link RecordRTC} - */ - -function MRecordRTC(mediaStream) { - - /** - * This method attaches MediaStream object to {@link MRecordRTC}. - * @param {MediaStream} mediaStream - A MediaStream object, either fetched using getUserMedia API, or generated using captureStreamUntilEnded or WebAudio API. - * @method - * @memberof MRecordRTC - * @example - * recorder.addStream(MediaStream); - */ - this.addStream = function(_mediaStream) { - if (_mediaStream) { - mediaStream = _mediaStream; - } - }; - - /** - * This property can be used to set the recording type e.g. audio, or video, or gif, or canvas. - * @property {object} mediaType - {audio: true, video: true, gif: true} - * @memberof MRecordRTC - * @example - * var recorder = new MRecordRTC(); - * recorder.mediaType = { - * audio: true, // TRUE or StereoAudioRecorder or MediaStreamRecorder - * video: true, // TRUE or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder - * gif : true // TRUE or GifRecorder - * }; - */ - this.mediaType = { - audio: true, - video: true - }; - - /** - * This method starts recording. - * @method - * @memberof MRecordRTC - * @example - * recorder.startRecording(); - */ - this.startRecording = function() { - var mediaType = this.mediaType; - var recorderType; - var mimeType = this.mimeType || { - audio: null, - video: null, - gif: null - }; - - if (typeof mediaType.audio !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'audio').length) { - mediaType.audio = false; - } - - if (typeof mediaType.video !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) { - mediaType.video = false; - } - - if (typeof mediaType.gif !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) { - mediaType.gif = false; - } - - if (!mediaType.audio && !mediaType.video && !mediaType.gif) { - throw 'MediaStream must have either audio or video tracks.'; - } - - if (!!mediaType.audio) { - recorderType = null; - if (typeof mediaType.audio === 'function') { - recorderType = mediaType.audio; - } - - this.audioRecorder = new RecordRTC(mediaStream, { - type: 'audio', - bufferSize: this.bufferSize, - sampleRate: this.sampleRate, - numberOfAudioChannels: this.numberOfAudioChannels || 2, - disableLogs: this.disableLogs, - recorderType: recorderType, - mimeType: mimeType.audio, - timeSlice: this.timeSlice, - onTimeStamp: this.onTimeStamp - }); - - if (!mediaType.video) { - this.audioRecorder.startRecording(); - } - } - - if (!!mediaType.video) { - recorderType = null; - if (typeof mediaType.video === 'function') { - recorderType = mediaType.video; - } - - var newStream = mediaStream; - - if (isMediaRecorderCompatible() && !!mediaType.audio && typeof mediaType.audio === 'function') { - var videoTrack = getTracks(mediaStream, 'video')[0]; - - if (isFirefox) { - newStream = new MediaStream(); - newStream.addTrack(videoTrack); - - if (recorderType && recorderType === WhammyRecorder) { - // Firefox does NOT supports webp-encoding yet - // But Firefox do supports WebAssemblyRecorder - recorderType = MediaStreamRecorder; - } - } else { - newStream = new MediaStream(); - newStream.addTrack(videoTrack); - } - } - - this.videoRecorder = new RecordRTC(newStream, { - type: 'video', - video: this.video, - canvas: this.canvas, - frameInterval: this.frameInterval || 10, - disableLogs: this.disableLogs, - recorderType: recorderType, - mimeType: mimeType.video, - timeSlice: this.timeSlice, - onTimeStamp: this.onTimeStamp, - workerPath: this.workerPath, - webAssemblyPath: this.webAssemblyPath, - frameRate: this.frameRate, // used by WebAssemblyRecorder; values: usually 30; accepts any. - bitrate: this.bitrate // used by WebAssemblyRecorder; values: 0 to 1000+ - }); - - if (!mediaType.audio) { - this.videoRecorder.startRecording(); - } - } - - if (!!mediaType.audio && !!mediaType.video) { - var self = this; - - var isSingleRecorder = isMediaRecorderCompatible() === true; - - if (mediaType.audio instanceof StereoAudioRecorder && !!mediaType.video) { - isSingleRecorder = false; - } else if (mediaType.audio !== true && mediaType.video !== true && mediaType.audio !== mediaType.video) { - isSingleRecorder = false; - } - - if (isSingleRecorder === true) { - self.audioRecorder = null; - self.videoRecorder.startRecording(); - } else { - self.videoRecorder.initRecorder(function() { - self.audioRecorder.initRecorder(function() { - // Both recorders are ready to record things accurately - self.videoRecorder.startRecording(); - self.audioRecorder.startRecording(); - }); - }); - } - } - - if (!!mediaType.gif) { - recorderType = null; - if (typeof mediaType.gif === 'function') { - recorderType = mediaType.gif; - } - this.gifRecorder = new RecordRTC(mediaStream, { - type: 'gif', - frameRate: this.frameRate || 200, - quality: this.quality || 10, - disableLogs: this.disableLogs, - recorderType: recorderType, - mimeType: mimeType.gif - }); - this.gifRecorder.startRecording(); - } - }; - - /** - * This method stops recording. - * @param {function} callback - Callback function is invoked when all encoders finished their jobs. - * @method - * @memberof MRecordRTC - * @example - * recorder.stopRecording(function(recording){ - * var audioBlob = recording.audio; - * var videoBlob = recording.video; - * var gifBlob = recording.gif; - * }); - */ - this.stopRecording = function(callback) { - callback = callback || function() {}; - - if (this.audioRecorder) { - this.audioRecorder.stopRecording(function(blobURL) { - callback(blobURL, 'audio'); - }); - } - - if (this.videoRecorder) { - this.videoRecorder.stopRecording(function(blobURL) { - callback(blobURL, 'video'); - }); - } - - if (this.gifRecorder) { - this.gifRecorder.stopRecording(function(blobURL) { - callback(blobURL, 'gif'); - }); - } - }; - - /** - * This method pauses recording. - * @method - * @memberof MRecordRTC - * @example - * recorder.pauseRecording(); - */ - this.pauseRecording = function() { - if (this.audioRecorder) { - this.audioRecorder.pauseRecording(); - } - - if (this.videoRecorder) { - this.videoRecorder.pauseRecording(); - } - - if (this.gifRecorder) { - this.gifRecorder.pauseRecording(); - } - }; - - /** - * This method resumes recording. - * @method - * @memberof MRecordRTC - * @example - * recorder.resumeRecording(); - */ - this.resumeRecording = function() { - if (this.audioRecorder) { - this.audioRecorder.resumeRecording(); - } - - if (this.videoRecorder) { - this.videoRecorder.resumeRecording(); - } - - if (this.gifRecorder) { - this.gifRecorder.resumeRecording(); - } - }; - - /** - * This method can be used to manually get all recorded blobs. - * @param {function} callback - All recorded blobs are passed back to the "callback" function. - * @method - * @memberof MRecordRTC - * @example - * recorder.getBlob(function(recording){ - * var audioBlob = recording.audio; - * var videoBlob = recording.video; - * var gifBlob = recording.gif; - * }); - * // or - * var audioBlob = recorder.getBlob().audio; - * var videoBlob = recorder.getBlob().video; - */ - this.getBlob = function(callback) { - var output = {}; - - if (this.audioRecorder) { - output.audio = this.audioRecorder.getBlob(); - } - - if (this.videoRecorder) { - output.video = this.videoRecorder.getBlob(); - } - - if (this.gifRecorder) { - output.gif = this.gifRecorder.getBlob(); - } - - if (callback) { - callback(output); - } - - return output; - }; - - /** - * Destroy all recorder instances. - * @method - * @memberof MRecordRTC - * @example - * recorder.destroy(); - */ - this.destroy = function() { - if (this.audioRecorder) { - this.audioRecorder.destroy(); - this.audioRecorder = null; - } - - if (this.videoRecorder) { - this.videoRecorder.destroy(); - this.videoRecorder = null; - } - - if (this.gifRecorder) { - this.gifRecorder.destroy(); - this.gifRecorder = null; - } - }; - - /** - * This method can be used to manually get all recorded blobs' DataURLs. - * @param {function} callback - All recorded blobs' DataURLs are passed back to the "callback" function. - * @method - * @memberof MRecordRTC - * @example - * recorder.getDataURL(function(recording){ - * var audioDataURL = recording.audio; - * var videoDataURL = recording.video; - * var gifDataURL = recording.gif; - * }); - */ - this.getDataURL = function(callback) { - this.getBlob(function(blob) { - if (blob.audio && blob.video) { - getDataURL(blob.audio, function(_audioDataURL) { - getDataURL(blob.video, function(_videoDataURL) { - callback({ - audio: _audioDataURL, - video: _videoDataURL - }); - }); - }); - } else if (blob.audio) { - getDataURL(blob.audio, function(_audioDataURL) { - callback({ - audio: _audioDataURL - }); - }); - } else if (blob.video) { - getDataURL(blob.video, function(_videoDataURL) { - callback({ - video: _videoDataURL - }); - }); - } - }); - - function getDataURL(blob, callback00) { - if (typeof Worker !== 'undefined') { - var webWorker = processInWebWorker(function readFile(_blob) { - postMessage(new FileReaderSync().readAsDataURL(_blob)); - }); - - webWorker.onmessage = function(event) { - callback00(event.data); - }; - - webWorker.postMessage(blob); - } else { - var reader = new FileReader(); - reader.readAsDataURL(blob); - reader.onload = function(event) { - callback00(event.target.result); - }; - } - } - - function processInWebWorker(_function) { - var blob = URL.createObjectURL(new Blob([_function.toString(), - 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}' - ], { - type: 'application/javascript' - })); - - var worker = new Worker(blob); - var url; - if (typeof URL !== 'undefined') { - url = URL; - } else if (typeof webkitURL !== 'undefined') { - url = webkitURL; - } else { - throw 'Neither URL nor webkitURL detected.'; - } - url.revokeObjectURL(blob); - return worker; - } - }; - - /** - * This method can be used to ask {@link MRecordRTC} to write all recorded blobs into IndexedDB storage. - * @method - * @memberof MRecordRTC - * @example - * recorder.writeToDisk(); - */ - this.writeToDisk = function() { - RecordRTC.writeToDisk({ - audio: this.audioRecorder, - video: this.videoRecorder, - gif: this.gifRecorder - }); - }; - - /** - * This method can be used to invoke a save-as dialog for all recorded blobs. - * @param {object} args - {audio: 'audio-name', video: 'video-name', gif: 'gif-name'} - * @method - * @memberof MRecordRTC - * @example - * recorder.save({ - * audio: 'audio-file-name', - * video: 'video-file-name', - * gif : 'gif-file-name' - * }); - */ - this.save = function(args) { - args = args || { - audio: true, - video: true, - gif: true - }; - - if (!!args.audio && this.audioRecorder) { - this.audioRecorder.save(typeof args.audio === 'string' ? args.audio : ''); - } - - if (!!args.video && this.videoRecorder) { - this.videoRecorder.save(typeof args.video === 'string' ? args.video : ''); - } - if (!!args.gif && this.gifRecorder) { - this.gifRecorder.save(typeof args.gif === 'string' ? args.gif : ''); - } - }; -} - -/** - * This method can be used to get all recorded blobs from IndexedDB storage. - * @param {string} type - 'all' or 'audio' or 'video' or 'gif' - * @param {function} callback - Callback function to get all stored blobs. - * @method - * @memberof MRecordRTC - * @example - * MRecordRTC.getFromDisk('all', function(dataURL, type){ - * if(type === 'audio') { } - * if(type === 'video') { } - * if(type === 'gif') { } - * }); - */ -MRecordRTC.getFromDisk = RecordRTC.getFromDisk; - -/** - * This method can be used to store recorded blobs into IndexedDB storage. - * @param {object} options - {audio: Blob, video: Blob, gif: Blob} - * @method - * @memberof MRecordRTC - * @example - * MRecordRTC.writeToDisk({ - * audio: audioBlob, - * video: videoBlob, - * gif : gifBlob - * }); - */ -MRecordRTC.writeToDisk = RecordRTC.writeToDisk; - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.MRecordRTC = MRecordRTC; -} - -var browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45'; - -(function(that) { - if (!that) { - return; - } - - if (typeof window !== 'undefined') { - return; - } - - if (typeof global === 'undefined') { - return; - } - - global.navigator = { - userAgent: browserFakeUserAgent, - getUserMedia: function() {} - }; - - if (!global.console) { - global.console = {}; - } - - if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') { - global.console.error = global.console.log = global.console.log || function() { - console.log(arguments); - }; - } - - if (typeof document === 'undefined') { - /*global document:true */ - that.document = { - documentElement: { - appendChild: function() { - return ''; - } - } - }; - - document.createElement = document.captureStream = document.mozCaptureStream = function() { - var obj = { - getContext: function() { - return obj; - }, - play: function() {}, - pause: function() {}, - drawImage: function() {}, - toDataURL: function() { - return ''; - }, - style: {} - }; - return obj; - }; - - that.HTMLVideoElement = function() {}; - } - - if (typeof location === 'undefined') { - /*global location:true */ - that.location = { - protocol: 'file:', - href: '', - hash: '' - }; - } - - if (typeof screen === 'undefined') { - /*global screen:true */ - that.screen = { - width: 0, - height: 0 - }; - } - - if (typeof URL === 'undefined') { - /*global screen:true */ - that.URL = { - createObjectURL: function() { - return ''; - }, - revokeObjectURL: function() { - return ''; - } - }; - } - - /*global window:true */ - that.window = global; -})(typeof global !== 'undefined' ? global : null); - -// _____________________________ -// Cross-Browser-Declarations.js - -// animation-frame used in WebM recording - -/*jshint -W079 */ -var requestAnimationFrame = window.requestAnimationFrame; -if (typeof requestAnimationFrame === 'undefined') { - if (typeof webkitRequestAnimationFrame !== 'undefined') { - /*global requestAnimationFrame:true */ - requestAnimationFrame = webkitRequestAnimationFrame; - } else if (typeof mozRequestAnimationFrame !== 'undefined') { - /*global requestAnimationFrame:true */ - requestAnimationFrame = mozRequestAnimationFrame; - } else if (typeof msRequestAnimationFrame !== 'undefined') { - /*global requestAnimationFrame:true */ - requestAnimationFrame = msRequestAnimationFrame; - } else if (typeof requestAnimationFrame === 'undefined') { - // via: https://gist.github.com/paulirish/1579671 - var lastTime = 0; - - /*global requestAnimationFrame:true */ - requestAnimationFrame = function(callback, element) { - var currTime = new Date().getTime(); - var timeToCall = Math.max(0, 16 - (currTime - lastTime)); - var id = setTimeout(function() { - callback(currTime + timeToCall); - }, timeToCall); - lastTime = currTime + timeToCall; - return id; - }; - } -} - -/*jshint -W079 */ -var cancelAnimationFrame = window.cancelAnimationFrame; -if (typeof cancelAnimationFrame === 'undefined') { - if (typeof webkitCancelAnimationFrame !== 'undefined') { - /*global cancelAnimationFrame:true */ - cancelAnimationFrame = webkitCancelAnimationFrame; - } else if (typeof mozCancelAnimationFrame !== 'undefined') { - /*global cancelAnimationFrame:true */ - cancelAnimationFrame = mozCancelAnimationFrame; - } else if (typeof msCancelAnimationFrame !== 'undefined') { - /*global cancelAnimationFrame:true */ - cancelAnimationFrame = msCancelAnimationFrame; - } else if (typeof cancelAnimationFrame === 'undefined') { - /*global cancelAnimationFrame:true */ - cancelAnimationFrame = function(id) { - clearTimeout(id); - }; - } -} - -// WebAudio API representer -var AudioContext = window.AudioContext; - -if (typeof AudioContext === 'undefined') { - if (typeof webkitAudioContext !== 'undefined') { - /*global AudioContext:true */ - AudioContext = webkitAudioContext; - } - - if (typeof mozAudioContext !== 'undefined') { - /*global AudioContext:true */ - AudioContext = mozAudioContext; - } -} - -/*jshint -W079 */ -var URL = window.URL; - -if (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') { - /*global URL:true */ - URL = webkitURL; -} - -if (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator? - if (typeof navigator.webkitGetUserMedia !== 'undefined') { - navigator.getUserMedia = navigator.webkitGetUserMedia; - } - - if (typeof navigator.mozGetUserMedia !== 'undefined') { - navigator.getUserMedia = navigator.mozGetUserMedia; - } -} - -var isEdge = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveBlob || !!navigator.msSaveOrOpenBlob); -var isOpera = !!window.opera || navigator.userAgent.indexOf('OPR/') !== -1; -var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1 && ('netscape' in window) && / rv:/.test(navigator.userAgent); -var isChrome = (!isOpera && !isEdge && !!navigator.webkitGetUserMedia) || isElectron() || navigator.userAgent.toLowerCase().indexOf('chrome/') !== -1; - -var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); - -if (isSafari && !isChrome && navigator.userAgent.indexOf('CriOS') !== -1) { - isSafari = false; - isChrome = true; -} - -var MediaStream = window.MediaStream; - -if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') { - MediaStream = webkitMediaStream; -} - -/*global MediaStream:true */ -if (typeof MediaStream !== 'undefined') { - // override "stop" method for all browsers - if (typeof MediaStream.prototype.stop === 'undefined') { - MediaStream.prototype.stop = function() { - this.getTracks().forEach(function(track) { - track.stop(); - }); - }; - } -} - -// below function via: http://goo.gl/B3ae8c -/** - * Return human-readable file size. - * @param {number} bytes - Pass bytes and get formatted string. - * @returns {string} - formatted string - * @example - * bytesToSize(1024*1024*5) === '5 GB' - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - */ -function bytesToSize(bytes) { - var k = 1000; - var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; - if (bytes === 0) { - return '0 Bytes'; - } - var i = parseInt(Math.floor(Math.log(bytes) / Math.log(k)), 10); - return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i]; -} - -/** - * @param {Blob} file - File or Blob object. This parameter is required. - * @param {string} fileName - Optional file name e.g. "Recorded-Video.webm" - * @example - * invokeSaveAsDialog(blob or file, [optional] fileName); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - */ -function invokeSaveAsDialog(file, fileName) { - if (!file) { - throw 'Blob object is required.'; - } - - if (!file.type) { - try { - file.type = 'video/webm'; - } catch (e) {} - } - - var fileExtension = (file.type || 'video/webm').split('/')[1]; - - if (fileName && fileName.indexOf('.') !== -1) { - var splitted = fileName.split('.'); - fileName = splitted[0]; - fileExtension = splitted[1]; - } - - var fileFullName = (fileName || (Math.round(Math.random() * 9999999999) + 888888888)) + '.' + fileExtension; - - if (typeof navigator.msSaveOrOpenBlob !== 'undefined') { - return navigator.msSaveOrOpenBlob(file, fileFullName); - } else if (typeof navigator.msSaveBlob !== 'undefined') { - return navigator.msSaveBlob(file, fileFullName); - } - - var hyperlink = document.createElement('a'); - hyperlink.href = URL.createObjectURL(file); - hyperlink.download = fileFullName; - - hyperlink.style = 'display:none;opacity:0;color:transparent;'; - (document.body || document.documentElement).appendChild(hyperlink); - - if (typeof hyperlink.click === 'function') { - hyperlink.click(); - } else { - hyperlink.target = '_blank'; - hyperlink.dispatchEvent(new MouseEvent('click', { - view: window, - bubbles: true, - cancelable: true - })); - } - - URL.revokeObjectURL(hyperlink.href); -} - -/** - * from: https://github.com/cheton/is-electron/blob/master/index.js - **/ -function isElectron() { - // Renderer process - if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') { - return true; - } - - // Main process - if (typeof process !== 'undefined' && typeof process.versions === 'object' && !!process.versions.electron) { - return true; - } - - // Detect the user agent when the `nodeIntegration` option is set to true - if (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) { - return true; - } - - return false; -} - -function getTracks(stream, kind) { - if (!stream || !stream.getTracks) { - return []; - } - - return stream.getTracks().filter(function(t) { - return t.kind === (kind || 'audio'); - }); -} - -function setSrcObject(stream, element) { - if ('srcObject' in element) { - element.srcObject = stream; - } else if ('mozSrcObject' in element) { - element.mozSrcObject = stream; - } else { - element.srcObject = stream; - } -} - -/** - * @param {Blob} file - File or Blob object. - * @param {function} callback - Callback function. - * @example - * getSeekableBlob(blob or file, callback); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - */ -function getSeekableBlob(inputBlob, callback) { - // EBML.js copyrights goes to: https://github.com/legokichi/ts-ebml - if (typeof EBML === 'undefined') { - throw new Error('Please link: https://www.webrtc-experiment.com/EBML.js'); - } - - var reader = new EBML.Reader(); - var decoder = new EBML.Decoder(); - var tools = EBML.tools; - - var fileReader = new FileReader(); - fileReader.onload = function(e) { - var ebmlElms = decoder.decode(this.result); - ebmlElms.forEach(function(element) { - reader.read(element); - }); - reader.stop(); - var refinedMetadataBuf = tools.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues); - var body = this.result.slice(reader.metadataSize); - var newBlob = new Blob([refinedMetadataBuf, body], { - type: 'video/webm' - }); - - callback(newBlob); - }; - fileReader.readAsArrayBuffer(inputBlob); -} - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.invokeSaveAsDialog = invokeSaveAsDialog; - RecordRTC.getTracks = getTracks; - RecordRTC.getSeekableBlob = getSeekableBlob; - RecordRTC.bytesToSize = bytesToSize; - RecordRTC.isElectron = isElectron; -} - -// __________ (used to handle stuff like http://goo.gl/xmE5eg) issue #129 -// Storage.js - -/** - * Storage is a standalone object used by {@link RecordRTC} to store reusable objects e.g. "new AudioContext". - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @example - * Storage.AudioContext === webkitAudioContext - * @property {webkitAudioContext} AudioContext - Keeps a reference to AudioContext object. - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - */ - -var Storage = {}; - -if (typeof AudioContext !== 'undefined') { - Storage.AudioContext = AudioContext; -} else if (typeof webkitAudioContext !== 'undefined') { - Storage.AudioContext = webkitAudioContext; -} - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.Storage = Storage; -} - -function isMediaRecorderCompatible() { - if (isFirefox || isSafari || isEdge) { - return true; - } - - var nVer = navigator.appVersion; - var nAgt = navigator.userAgent; - var fullVersion = '' + parseFloat(navigator.appVersion); - var majorVersion = parseInt(navigator.appVersion, 10); - var nameOffset, verOffset, ix; - - if (isChrome || isOpera) { - verOffset = nAgt.indexOf('Chrome'); - fullVersion = nAgt.substring(verOffset + 7); - } - - // trim the fullVersion string at semicolon/space if present - if ((ix = fullVersion.indexOf(';')) !== -1) { - fullVersion = fullVersion.substring(0, ix); - } - - if ((ix = fullVersion.indexOf(' ')) !== -1) { - fullVersion = fullVersion.substring(0, ix); - } - - majorVersion = parseInt('' + fullVersion, 10); - - if (isNaN(majorVersion)) { - fullVersion = '' + parseFloat(navigator.appVersion); - majorVersion = parseInt(navigator.appVersion, 10); - } - - return majorVersion >= 49; -} - -// ______________________ -// MediaStreamRecorder.js - -/** - * MediaStreamRecorder is an abstraction layer for {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}. It is used by {@link RecordRTC} to record MediaStream(s) in both Chrome and Firefox. - * @summary Runs top over {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}. - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://github.com/muaz-khan|Muaz Khan} - * @typedef MediaStreamRecorder - * @class - * @example - * var config = { - * mimeType: 'video/webm', // vp8, vp9, h264, mkv, opus/vorbis - * audioBitsPerSecond : 256 * 8 * 1024, - * videoBitsPerSecond : 256 * 8 * 1024, - * bitsPerSecond: 256 * 8 * 1024, // if this is provided, skip above two - * checkForInactiveTracks: true, - * timeSlice: 1000, // concatenate intervals based blobs - * ondataavailable: function() {} // get intervals based blobs - * } - * var recorder = new MediaStreamRecorder(mediaStream, config); - * recorder.record(); - * recorder.stop(function(blob) { - * video.src = URL.createObjectURL(blob); - * - * // or - * var blob = recorder.blob; - * }); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API. - * @param {object} config - {disableLogs:true, initCallback: function, mimeType: "video/webm", timeSlice: 1000} - * @throws Will throw an error if first argument "MediaStream" is missing. Also throws error if "MediaRecorder API" are not supported by the browser. - */ - -function MediaStreamRecorder(mediaStream, config) { - var self = this; - - if (typeof mediaStream === 'undefined') { - throw 'First argument "MediaStream" is required.'; - } - - if (typeof MediaRecorder === 'undefined') { - throw 'Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.'; - } - - config = config || { - // bitsPerSecond: 256 * 8 * 1024, - mimeType: 'video/webm' - }; - - if (config.type === 'audio') { - if (getTracks(mediaStream, 'video').length && getTracks(mediaStream, 'audio').length) { - var stream; - if (!!navigator.mozGetUserMedia) { - stream = new MediaStream(); - stream.addTrack(getTracks(mediaStream, 'audio')[0]); - } else { - // webkitMediaStream - stream = new MediaStream(getTracks(mediaStream, 'audio')); - } - mediaStream = stream; - } - - if (!config.mimeType || config.mimeType.toString().toLowerCase().indexOf('audio') === -1) { - config.mimeType = isChrome ? 'audio/webm' : 'audio/ogg'; - } - - if (config.mimeType && config.mimeType.toString().toLowerCase() !== 'audio/ogg' && !!navigator.mozGetUserMedia) { - // forcing better codecs on Firefox (via #166) - config.mimeType = 'audio/ogg'; - } - } - - var arrayOfBlobs = []; - - /** - * This method returns array of blobs. Use only with "timeSlice". Its useful to preview recording anytime, without using the "stop" method. - * @method - * @memberof MediaStreamRecorder - * @example - * var arrayOfBlobs = recorder.getArrayOfBlobs(); - * @returns {Array} Returns array of recorded blobs. - */ - this.getArrayOfBlobs = function() { - return arrayOfBlobs; - }; - - /** - * This method records MediaStream. - * @method - * @memberof MediaStreamRecorder - * @example - * recorder.record(); - */ - this.record = function() { - // set defaults - self.blob = null; - self.clearRecordedData(); - self.timestamps = []; - allStates = []; - arrayOfBlobs = []; - - var recorderHints = config; - - if (!config.disableLogs) { - console.log('Passing following config over MediaRecorder API.', recorderHints); - } - - if (mediaRecorder) { - // mandatory to make sure Firefox doesn't fails to record streams 3-4 times without reloading the page. - mediaRecorder = null; - } - - if (isChrome && !isMediaRecorderCompatible()) { - // to support video-only recording on stable - recorderHints = 'video/vp8'; - } - - if (typeof MediaRecorder.isTypeSupported === 'function' && recorderHints.mimeType) { - if (!MediaRecorder.isTypeSupported(recorderHints.mimeType)) { - if (!config.disableLogs) { - console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType); - } - - recorderHints.mimeType = config.type === 'audio' ? 'audio/webm' : 'video/webm'; - } - } - - // using MediaRecorder API here - try { - mediaRecorder = new MediaRecorder(mediaStream, recorderHints); - - // reset - config.mimeType = recorderHints.mimeType; - } catch (e) { - // chrome-based fallback - mediaRecorder = new MediaRecorder(mediaStream); - } - - // old hack? - if (recorderHints.mimeType && !MediaRecorder.isTypeSupported && 'canRecordMimeType' in mediaRecorder && mediaRecorder.canRecordMimeType(recorderHints.mimeType) === false) { - if (!config.disableLogs) { - console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType); - } - } - - // Dispatching OnDataAvailable Handler - mediaRecorder.ondataavailable = function(e) { - if (e.data) { - allStates.push('ondataavailable: ' + bytesToSize(e.data.size)); - } - - if (typeof config.timeSlice === 'number') { - if (e.data && e.data.size && e.data.size > 100) { - arrayOfBlobs.push(e.data); - updateTimeStamp(); - - if (typeof config.ondataavailable === 'function') { - // intervals based blobs - var blob = config.getNativeBlob ? e.data : new Blob([e.data], { - type: getMimeType(recorderHints) - }); - config.ondataavailable(blob); - } - } - return; - } - - if (!e.data || !e.data.size || e.data.size < 100 || self.blob) { - // make sure that stopRecording always getting fired - // even if there is invalid data - if (self.recordingCallback) { - self.recordingCallback(new Blob([], { - type: getMimeType(recorderHints) - })); - self.recordingCallback = null; - } - return; - } - - self.blob = config.getNativeBlob ? e.data : new Blob([e.data], { - type: getMimeType(recorderHints) - }); - - if (self.recordingCallback) { - self.recordingCallback(self.blob); - self.recordingCallback = null; - } - }; - - mediaRecorder.onstart = function() { - allStates.push('started'); - }; - - mediaRecorder.onpause = function() { - allStates.push('paused'); - }; - - mediaRecorder.onresume = function() { - allStates.push('resumed'); - }; - - mediaRecorder.onstop = function() { - allStates.push('stopped'); - }; - - mediaRecorder.onerror = function(error) { - if (!error) { - return; - } - - if (!error.name) { - error.name = 'UnknownError'; - } - - allStates.push('error: ' + error); - - if (!config.disableLogs) { - // via: https://w3c.github.io/mediacapture-record/MediaRecorder.html#exception-summary - if (error.name.toString().toLowerCase().indexOf('invalidstate') !== -1) { - console.error('The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.', error); - } else if (error.name.toString().toLowerCase().indexOf('notsupported') !== -1) { - console.error('MIME type (', recorderHints.mimeType, ') is not supported.', error); - } else if (error.name.toString().toLowerCase().indexOf('security') !== -1) { - console.error('MediaRecorder security error', error); - } - - // older code below - else if (error.name === 'OutOfMemory') { - console.error('The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.', error); - } else if (error.name === 'IllegalStreamModification') { - console.error('A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.', error); - } else if (error.name === 'OtherRecordingError') { - console.error('Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.', error); - } else if (error.name === 'GenericError') { - console.error('The UA cannot provide the codec or recording option that has been requested.', error); - } else { - console.error('MediaRecorder Error', error); - } - } - - (function(looper) { - if (!self.manuallyStopped && mediaRecorder && mediaRecorder.state === 'inactive') { - delete config.timeslice; - - // 10 minutes, enough? - mediaRecorder.start(10 * 60 * 1000); - return; - } - - setTimeout(looper, 1000); - })(); - - if (mediaRecorder.state !== 'inactive' && mediaRecorder.state !== 'stopped') { - mediaRecorder.stop(); - } - }; - - if (typeof config.timeSlice === 'number') { - updateTimeStamp(); - mediaRecorder.start(config.timeSlice); - } else { - // default is 60 minutes; enough? - // use config => {timeSlice: 1000} otherwise - - mediaRecorder.start(3.6e+6); - } - - if (config.initCallback) { - config.initCallback(); // old code - } - }; - - /** - * @property {Array} timestamps - Array of time stamps - * @memberof MediaStreamRecorder - * @example - * console.log(recorder.timestamps); - */ - this.timestamps = []; - - function updateTimeStamp() { - self.timestamps.push(new Date().getTime()); - - if (typeof config.onTimeStamp === 'function') { - config.onTimeStamp(self.timestamps[self.timestamps.length - 1], self.timestamps); - } - } - - function getMimeType(secondObject) { - if (mediaRecorder && mediaRecorder.mimeType) { - return mediaRecorder.mimeType; - } - - return secondObject.mimeType || 'video/webm'; - } - - /** - * This method stops recording MediaStream. - * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee. - * @method - * @memberof MediaStreamRecorder - * @example - * recorder.stop(function(blob) { - * video.src = URL.createObjectURL(blob); - * }); - */ - this.stop = function(callback) { - callback = callback || function() {}; - - self.manuallyStopped = true; // used inside the mediaRecorder.onerror - - if (!mediaRecorder) { - return; - } - - this.recordingCallback = callback; - - if (mediaRecorder.state === 'recording') { - mediaRecorder.stop(); - } - - if (typeof config.timeSlice === 'number') { - setTimeout(function() { - self.blob = new Blob(arrayOfBlobs, { - type: getMimeType(config) - }); - - self.recordingCallback(self.blob); - }, 100); - } - }; - - /** - * This method pauses the recording process. - * @method - * @memberof MediaStreamRecorder - * @example - * recorder.pause(); - */ - this.pause = function() { - if (!mediaRecorder) { - return; - } - - if (mediaRecorder.state === 'recording') { - mediaRecorder.pause(); - } - }; - - /** - * This method resumes the recording process. - * @method - * @memberof MediaStreamRecorder - * @example - * recorder.resume(); - */ - this.resume = function() { - if (!mediaRecorder) { - return; - } - - if (mediaRecorder.state === 'paused') { - mediaRecorder.resume(); - } - }; - - /** - * This method resets currently recorded data. - * @method - * @memberof MediaStreamRecorder - * @example - * recorder.clearRecordedData(); - */ - this.clearRecordedData = function() { - if (mediaRecorder && mediaRecorder.state === 'recording') { - self.stop(clearRecordedDataCB); - } - - clearRecordedDataCB(); - }; - - function clearRecordedDataCB() { - arrayOfBlobs = []; - mediaRecorder = null; - self.timestamps = []; - } - - // Reference to "MediaRecorder" object - var mediaRecorder; - - /** - * Access to native MediaRecorder API - * @method - * @memberof MediaStreamRecorder - * @instance - * @example - * var internal = recorder.getInternalRecorder(); - * internal.ondataavailable = function() {}; // override - * internal.stream, internal.onpause, internal.onstop, etc. - * @returns {Object} Returns internal recording object. - */ - this.getInternalRecorder = function() { - return mediaRecorder; - }; - - function isMediaStreamActive() { - if ('active' in mediaStream) { - if (!mediaStream.active) { - return false; - } - } else if ('ended' in mediaStream) { // old hack - if (mediaStream.ended) { - return false; - } - } - return true; - } - - /** - * @property {Blob} blob - Recorded data as "Blob" object. - * @memberof MediaStreamRecorder - * @example - * recorder.stop(function() { - * var blob = recorder.blob; - * }); - */ - this.blob = null; - - - /** - * Get MediaRecorder readonly state. - * @method - * @memberof MediaStreamRecorder - * @example - * var state = recorder.getState(); - * @returns {String} Returns recording state. - */ - this.getState = function() { - if (!mediaRecorder) { - return 'inactive'; - } - - return mediaRecorder.state || 'inactive'; - }; - - // list of all recording states - var allStates = []; - - /** - * Get MediaRecorder all recording states. - * @method - * @memberof MediaStreamRecorder - * @example - * var state = recorder.getAllStates(); - * @returns {Array} Returns all recording states - */ - this.getAllStates = function() { - return allStates; - }; - - // if any Track within the MediaStream is muted or not enabled at any time, - // the browser will only record black frames - // or silence since that is the content produced by the Track - // so we need to stopRecording as soon as any single track ends. - if (typeof config.checkForInactiveTracks === 'undefined') { - config.checkForInactiveTracks = false; // disable to minimize CPU usage - } - - var self = this; - - // this method checks if media stream is stopped - // or if any track is ended. - (function looper() { - if (!mediaRecorder || config.checkForInactiveTracks === false) { - return; - } - - if (isMediaStreamActive() === false) { - if (!config.disableLogs) { - console.log('MediaStream seems stopped.'); - } - self.stop(); - return; - } - - setTimeout(looper, 1000); // check every second - })(); - - // for debugging - this.name = 'MediaStreamRecorder'; - this.toString = function() { - return this.name; - }; -} - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.MediaStreamRecorder = MediaStreamRecorder; -} - -// source code from: http://typedarray.org/wp-content/projects/WebAudioRecorder/script.js -// https://github.com/mattdiamond/Recorderjs#license-mit -// ______________________ -// StereoAudioRecorder.js - -/** - * StereoAudioRecorder is a standalone class used by {@link RecordRTC} to bring "stereo" audio-recording in chrome. - * @summary JavaScript standalone object for stereo audio recording. - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @typedef StereoAudioRecorder - * @class - * @example - * var recorder = new StereoAudioRecorder(MediaStream, { - * sampleRate: 44100, - * bufferSize: 4096 - * }); - * recorder.record(); - * recorder.stop(function(blob) { - * video.src = URL.createObjectURL(blob); - * }); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API. - * @param {object} config - {sampleRate: 44100, bufferSize: 4096, numberOfAudioChannels: 1, etc.} - */ - -function StereoAudioRecorder(mediaStream, config) { - if (!getTracks(mediaStream, 'audio').length) { - throw 'Your stream has no audio tracks.'; - } - - config = config || {}; - - var self = this; - - // variables - var leftchannel = []; - var rightchannel = []; - var recording = false; - var recordingLength = 0; - var jsAudioNode; - - var numberOfAudioChannels = 2; - - /** - * Set sample rates such as 8K or 16K. Reference: http://stackoverflow.com/a/28977136/552182 - * @property {number} desiredSampRate - Desired Bits per sample * 1000 - * @memberof StereoAudioRecorder - * @instance - * @example - * var recorder = StereoAudioRecorder(mediaStream, { - * desiredSampRate: 16 * 1000 // bits-per-sample * 1000 - * }); - */ - var desiredSampRate = config.desiredSampRate; - - // backward compatibility - if (config.leftChannel === true) { - numberOfAudioChannels = 1; - } - - if (config.numberOfAudioChannels === 1) { - numberOfAudioChannels = 1; - } - - if (!numberOfAudioChannels || numberOfAudioChannels < 1) { - numberOfAudioChannels = 2; - } - - if (!config.disableLogs) { - console.log('StereoAudioRecorder is set to record number of channels: ' + numberOfAudioChannels); - } - - // if any Track within the MediaStream is muted or not enabled at any time, - // the browser will only record black frames - // or silence since that is the content produced by the Track - // so we need to stopRecording as soon as any single track ends. - if (typeof config.checkForInactiveTracks === 'undefined') { - config.checkForInactiveTracks = true; - } - - function isMediaStreamActive() { - if (config.checkForInactiveTracks === false) { - // always return "true" - return true; - } - - if ('active' in mediaStream) { - if (!mediaStream.active) { - return false; - } - } else if ('ended' in mediaStream) { // old hack - if (mediaStream.ended) { - return false; - } - } - return true; - } - - /** - * This method records MediaStream. - * @method - * @memberof StereoAudioRecorder - * @example - * recorder.record(); - */ - this.record = function() { - if (isMediaStreamActive() === false) { - throw 'Please make sure MediaStream is active.'; - } - - resetVariables(); - - isAudioProcessStarted = isPaused = false; - recording = true; - - if (typeof config.timeSlice !== 'undefined') { - looper(); - } - }; - - function mergeLeftRightBuffers(config, callback) { - function mergeAudioBuffers(config, cb) { - var numberOfAudioChannels = config.numberOfAudioChannels; - - // todo: "slice(0)" --- is it causes loop? Should be removed? - var leftBuffers = config.leftBuffers.slice(0); - var rightBuffers = config.rightBuffers.slice(0); - var sampleRate = config.sampleRate; - var internalInterleavedLength = config.internalInterleavedLength; - var desiredSampRate = config.desiredSampRate; - - if (numberOfAudioChannels === 2) { - leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength); - rightBuffers = mergeBuffers(rightBuffers, internalInterleavedLength); - - if (desiredSampRate) { - leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate); - rightBuffers = interpolateArray(rightBuffers, desiredSampRate, sampleRate); - } - } - - if (numberOfAudioChannels === 1) { - leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength); - - if (desiredSampRate) { - leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate); - } - } - - // set sample rate as desired sample rate - if (desiredSampRate) { - sampleRate = desiredSampRate; - } - - // for changing the sampling rate, reference: - // http://stackoverflow.com/a/28977136/552182 - function interpolateArray(data, newSampleRate, oldSampleRate) { - var fitCount = Math.round(data.length * (newSampleRate / oldSampleRate)); - var newData = []; - var springFactor = Number((data.length - 1) / (fitCount - 1)); - newData[0] = data[0]; - for (var i = 1; i < fitCount - 1; i++) { - var tmp = i * springFactor; - var before = Number(Math.floor(tmp)).toFixed(); - var after = Number(Math.ceil(tmp)).toFixed(); - var atPoint = tmp - before; - newData[i] = linearInterpolate(data[before], data[after], atPoint); - } - newData[fitCount - 1] = data[data.length - 1]; - return newData; - } - - function linearInterpolate(before, after, atPoint) { - return before + (after - before) * atPoint; - } - - function mergeBuffers(channelBuffer, rLength) { - var result = new Float64Array(rLength); - var offset = 0; - var lng = channelBuffer.length; - - for (var i = 0; i < lng; i++) { - var buffer = channelBuffer[i]; - result.set(buffer, offset); - offset += buffer.length; - } - - return result; - } - - function interleave(leftChannel, rightChannel) { - var length = leftChannel.length + rightChannel.length; - - var result = new Float64Array(length); - - var inputIndex = 0; - - for (var index = 0; index < length;) { - result[index++] = leftChannel[inputIndex]; - result[index++] = rightChannel[inputIndex]; - inputIndex++; - } - return result; - } - - function writeUTFBytes(view, offset, string) { - var lng = string.length; - for (var i = 0; i < lng; i++) { - view.setUint8(offset + i, string.charCodeAt(i)); - } - } - - // interleave both channels together - var interleaved; - - if (numberOfAudioChannels === 2) { - interleaved = interleave(leftBuffers, rightBuffers); - } - - if (numberOfAudioChannels === 1) { - interleaved = leftBuffers; - } - - var interleavedLength = interleaved.length; - - // create wav file - var resultingBufferLength = 44 + interleavedLength * 2; - - var buffer = new ArrayBuffer(resultingBufferLength); - - var view = new DataView(buffer); - - // RIFF chunk descriptor/identifier - writeUTFBytes(view, 0, 'RIFF'); - - // RIFF chunk length - // changed "44" to "36" via #401 - view.setUint32(4, 36 + interleavedLength * 2, true); - - // RIFF type - writeUTFBytes(view, 8, 'WAVE'); - - // format chunk identifier - // FMT sub-chunk - writeUTFBytes(view, 12, 'fmt '); - - // format chunk length - view.setUint32(16, 16, true); - - // sample format (raw) - view.setUint16(20, 1, true); - - // stereo (2 channels) - view.setUint16(22, numberOfAudioChannels, true); - - // sample rate - view.setUint32(24, sampleRate, true); - - // byte rate (sample rate * block align) - view.setUint32(28, sampleRate * 2, true); - - // block align (channel count * bytes per sample) - view.setUint16(32, numberOfAudioChannels * 2, true); - - // bits per sample - view.setUint16(34, 16, true); - - // data sub-chunk - // data chunk identifier - writeUTFBytes(view, 36, 'data'); - - // data chunk length - view.setUint32(40, interleavedLength * 2, true); - - // write the PCM samples - var lng = interleavedLength; - var index = 44; - var volume = 1; - for (var i = 0; i < lng; i++) { - view.setInt16(index, interleaved[i] * (0x7FFF * volume), true); - index += 2; - } - - if (cb) { - return cb({ - buffer: buffer, - view: view - }); - } - - postMessage({ - buffer: buffer, - view: view - }); - } - - if (config.noWorker) { - mergeAudioBuffers(config, function(data) { - callback(data.buffer, data.view); - }); - return; - } - - - var webWorker = processInWebWorker(mergeAudioBuffers); - - webWorker.onmessage = function(event) { - callback(event.data.buffer, event.data.view); - - // release memory - URL.revokeObjectURL(webWorker.workerURL); - - // kill webworker (or Chrome will kill your page after ~25 calls) - webWorker.terminate(); - }; - - webWorker.postMessage(config); - } - - function processInWebWorker(_function) { - var workerURL = URL.createObjectURL(new Blob([_function.toString(), - ';this.onmessage = function (eee) {' + _function.name + '(eee.data);}' - ], { - type: 'application/javascript' - })); - - var worker = new Worker(workerURL); - worker.workerURL = workerURL; - return worker; - } - - /** - * This method stops recording MediaStream. - * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee. - * @method - * @memberof StereoAudioRecorder - * @example - * recorder.stop(function(blob) { - * video.src = URL.createObjectURL(blob); - * }); - */ - this.stop = function(callback) { - callback = callback || function() {}; - - // stop recording - recording = false; - - mergeLeftRightBuffers({ - desiredSampRate: desiredSampRate, - sampleRate: sampleRate, - numberOfAudioChannels: numberOfAudioChannels, - internalInterleavedLength: recordingLength, - leftBuffers: leftchannel, - rightBuffers: numberOfAudioChannels === 1 ? [] : rightchannel, - noWorker: config.noWorker - }, function(buffer, view) { - /** - * @property {Blob} blob - The recorded blob object. - * @memberof StereoAudioRecorder - * @example - * recorder.stop(function(){ - * var blob = recorder.blob; - * }); - */ - self.blob = new Blob([view], { - type: 'audio/wav' - }); - - /** - * @property {ArrayBuffer} buffer - The recorded buffer object. - * @memberof StereoAudioRecorder - * @example - * recorder.stop(function(){ - * var buffer = recorder.buffer; - * }); - */ - self.buffer = new ArrayBuffer(view.buffer.byteLength); - - /** - * @property {DataView} view - The recorded data-view object. - * @memberof StereoAudioRecorder - * @example - * recorder.stop(function(){ - * var view = recorder.view; - * }); - */ - self.view = view; - - self.sampleRate = desiredSampRate || sampleRate; - self.bufferSize = bufferSize; - - // recorded audio length - self.length = recordingLength; - - isAudioProcessStarted = false; - - if (callback) { - callback(self.blob); - } - }); - }; - - if (typeof RecordRTC.Storage === 'undefined') { - RecordRTC.Storage = { - AudioContextConstructor: null, - AudioContext: window.AudioContext || window.webkitAudioContext - }; - } - - if (!RecordRTC.Storage.AudioContextConstructor || RecordRTC.Storage.AudioContextConstructor.state === 'closed') { - RecordRTC.Storage.AudioContextConstructor = new RecordRTC.Storage.AudioContext(); - } - - var context = RecordRTC.Storage.AudioContextConstructor; - - // creates an audio node from the microphone incoming stream - var audioInput = context.createMediaStreamSource(mediaStream); - - var legalBufferValues = [0, 256, 512, 1024, 2048, 4096, 8192, 16384]; - - /** - * From the spec: This value controls how frequently the audioprocess event is - * dispatched and how many sample-frames need to be processed each call. - * Lower values for buffer size will result in a lower (better) latency. - * Higher values will be necessary to avoid audio breakup and glitches - * The size of the buffer (in sample-frames) which needs to - * be processed each time onprocessaudio is called. - * Legal values are (256, 512, 1024, 2048, 4096, 8192, 16384). - * @property {number} bufferSize - Buffer-size for how frequently the audioprocess event is dispatched. - * @memberof StereoAudioRecorder - * @example - * recorder = new StereoAudioRecorder(mediaStream, { - * bufferSize: 4096 - * }); - */ - - // "0" means, let chrome decide the most accurate buffer-size for current platform. - var bufferSize = typeof config.bufferSize === 'undefined' ? 4096 : config.bufferSize; - - if (legalBufferValues.indexOf(bufferSize) === -1) { - if (!config.disableLogs) { - console.log('Legal values for buffer-size are ' + JSON.stringify(legalBufferValues, null, '\t')); - } - } - - if (context.createJavaScriptNode) { - jsAudioNode = context.createJavaScriptNode(bufferSize, numberOfAudioChannels, numberOfAudioChannels); - } else if (context.createScriptProcessor) { - jsAudioNode = context.createScriptProcessor(bufferSize, numberOfAudioChannels, numberOfAudioChannels); - } else { - throw 'WebAudio API has no support on this browser.'; - } - - // connect the stream to the script processor - audioInput.connect(jsAudioNode); - - if (!config.bufferSize) { - bufferSize = jsAudioNode.bufferSize; // device buffer-size - } - - /** - * The sample rate (in sample-frames per second) at which the - * AudioContext handles audio. It is assumed that all AudioNodes - * in the context run at this rate. In making this assumption, - * sample-rate converters or "varispeed" processors are not supported - * in real-time processing. - * The sampleRate parameter describes the sample-rate of the - * linear PCM audio data in the buffer in sample-frames per second. - * An implementation must support sample-rates in at least - * the range 22050 to 96000. - * @property {number} sampleRate - Buffer-size for how frequently the audioprocess event is dispatched. - * @memberof StereoAudioRecorder - * @example - * recorder = new StereoAudioRecorder(mediaStream, { - * sampleRate: 44100 - * }); - */ - var sampleRate = typeof config.sampleRate !== 'undefined' ? config.sampleRate : context.sampleRate || 44100; - - if (sampleRate < 22050 || sampleRate > 96000) { - // Ref: http://stackoverflow.com/a/26303918/552182 - if (!config.disableLogs) { - console.log('sample-rate must be under range 22050 and 96000.'); - } - } - - if (!config.disableLogs) { - if (config.desiredSampRate) { - console.log('Desired sample-rate: ' + config.desiredSampRate); - } - } - - var isPaused = false; - /** - * This method pauses the recording process. - * @method - * @memberof StereoAudioRecorder - * @example - * recorder.pause(); - */ - this.pause = function() { - isPaused = true; - }; - - /** - * This method resumes the recording process. - * @method - * @memberof StereoAudioRecorder - * @example - * recorder.resume(); - */ - this.resume = function() { - if (isMediaStreamActive() === false) { - throw 'Please make sure MediaStream is active.'; - } - - if (!recording) { - if (!config.disableLogs) { - console.log('Seems recording has been restarted.'); - } - this.record(); - return; - } - - isPaused = false; - }; - - /** - * This method resets currently recorded data. - * @method - * @memberof StereoAudioRecorder - * @example - * recorder.clearRecordedData(); - */ - this.clearRecordedData = function() { - config.checkForInactiveTracks = false; - - if (recording) { - this.stop(clearRecordedDataCB); - } - - clearRecordedDataCB(); - }; - - function resetVariables() { - leftchannel = []; - rightchannel = []; - recordingLength = 0; - isAudioProcessStarted = false; - recording = false; - isPaused = false; - context = null; - - self.leftchannel = leftchannel; - self.rightchannel = rightchannel; - self.numberOfAudioChannels = numberOfAudioChannels; - self.desiredSampRate = desiredSampRate; - self.sampleRate = sampleRate; - self.recordingLength = recordingLength; - - intervalsBasedBuffers = { - left: [], - right: [], - recordingLength: 0 - }; - } - - function clearRecordedDataCB() { - if (jsAudioNode) { - jsAudioNode.onaudioprocess = null; - jsAudioNode.disconnect(); - jsAudioNode = null; - } - - if (audioInput) { - audioInput.disconnect(); - audioInput = null; - } - - resetVariables(); - } - - // for debugging - this.name = 'StereoAudioRecorder'; - this.toString = function() { - return this.name; - }; - - var isAudioProcessStarted = false; - - function onAudioProcessDataAvailable(e) { - if (isPaused) { - return; - } - - if (isMediaStreamActive() === false) { - if (!config.disableLogs) { - console.log('MediaStream seems stopped.'); - } - jsAudioNode.disconnect(); - recording = false; - } - - if (!recording) { - if (audioInput) { - audioInput.disconnect(); - audioInput = null; - } - return; - } - - /** - * This method is called on "onaudioprocess" event's first invocation. - * @method {function} onAudioProcessStarted - * @memberof StereoAudioRecorder - * @example - * recorder.onAudioProcessStarted: function() { }; - */ - if (!isAudioProcessStarted) { - isAudioProcessStarted = true; - if (config.onAudioProcessStarted) { - config.onAudioProcessStarted(); - } - - if (config.initCallback) { - config.initCallback(); - } - } - - var left = e.inputBuffer.getChannelData(0); - - // we clone the samples - var chLeft = new Float32Array(left); - leftchannel.push(chLeft); - - if (numberOfAudioChannels === 2) { - var right = e.inputBuffer.getChannelData(1); - var chRight = new Float32Array(right); - rightchannel.push(chRight); - } - - recordingLength += bufferSize; - - // export raw PCM - self.recordingLength = recordingLength; - - if (typeof config.timeSlice !== 'undefined') { - intervalsBasedBuffers.recordingLength += bufferSize; - intervalsBasedBuffers.left.push(chLeft); - - if (numberOfAudioChannels === 2) { - intervalsBasedBuffers.right.push(chRight); - } - } - } - - jsAudioNode.onaudioprocess = onAudioProcessDataAvailable; - - // to prevent self audio to be connected with speakers - if (context.createMediaStreamDestination) { - jsAudioNode.connect(context.createMediaStreamDestination()); - } else { - jsAudioNode.connect(context.destination); - } - - // export raw PCM - this.leftchannel = leftchannel; - this.rightchannel = rightchannel; - this.numberOfAudioChannels = numberOfAudioChannels; - this.desiredSampRate = desiredSampRate; - this.sampleRate = sampleRate; - self.recordingLength = recordingLength; - - // helper for intervals based blobs - var intervalsBasedBuffers = { - left: [], - right: [], - recordingLength: 0 - }; - - // this looper is used to support intervals based blobs (via timeSlice+ondataavailable) - function looper() { - if (!recording || typeof config.ondataavailable !== 'function' || typeof config.timeSlice === 'undefined') { - return; - } - - if (intervalsBasedBuffers.left.length) { - mergeLeftRightBuffers({ - desiredSampRate: desiredSampRate, - sampleRate: sampleRate, - numberOfAudioChannels: numberOfAudioChannels, - internalInterleavedLength: intervalsBasedBuffers.recordingLength, - leftBuffers: intervalsBasedBuffers.left, - rightBuffers: numberOfAudioChannels === 1 ? [] : intervalsBasedBuffers.right - }, function(buffer, view) { - var blob = new Blob([view], { - type: 'audio/wav' - }); - config.ondataavailable(blob); - - setTimeout(looper, config.timeSlice); - }); - - intervalsBasedBuffers = { - left: [], - right: [], - recordingLength: 0 - }; - } else { - setTimeout(looper, config.timeSlice); - } - } -} - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.StereoAudioRecorder = StereoAudioRecorder; -} - -// _________________ -// CanvasRecorder.js - -/** - * CanvasRecorder is a standalone class used by {@link RecordRTC} to bring HTML5-Canvas recording into video WebM. It uses HTML2Canvas library and runs top over {@link Whammy}. - * @summary HTML2Canvas recording into video WebM. - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @typedef CanvasRecorder - * @class - * @example - * var recorder = new CanvasRecorder(htmlElement, { disableLogs: true, useWhammyRecorder: true }); - * recorder.record(); - * recorder.stop(function(blob) { - * video.src = URL.createObjectURL(blob); - * }); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - * @param {HTMLElement} htmlElement - querySelector/getElementById/getElementsByTagName[0]/etc. - * @param {object} config - {disableLogs:true, initCallback: function} - */ - -function CanvasRecorder(htmlElement, config) { - if (typeof html2canvas === 'undefined') { - throw 'Please link: https://www.webrtc-experiment.com/screenshot.js'; - } - - config = config || {}; - if (!config.frameInterval) { - config.frameInterval = 10; - } - - // via DetectRTC.js - var isCanvasSupportsStreamCapturing = false; - ['captureStream', 'mozCaptureStream', 'webkitCaptureStream'].forEach(function(item) { - if (item in document.createElement('canvas')) { - isCanvasSupportsStreamCapturing = true; - } - }); - - var _isChrome = (!!window.webkitRTCPeerConnection || !!window.webkitGetUserMedia) && !!window.chrome; - - var chromeVersion = 50; - var matchArray = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./); - if (_isChrome && matchArray && matchArray[2]) { - chromeVersion = parseInt(matchArray[2], 10); - } - - if (_isChrome && chromeVersion < 52) { - isCanvasSupportsStreamCapturing = false; - } - - if (config.useWhammyRecorder) { - isCanvasSupportsStreamCapturing = false; - } - - var globalCanvas, mediaStreamRecorder; - - if (isCanvasSupportsStreamCapturing) { - if (!config.disableLogs) { - console.log('Your browser supports both MediRecorder API and canvas.captureStream!'); - } - - if (htmlElement instanceof HTMLCanvasElement) { - globalCanvas = htmlElement; - } else if (htmlElement instanceof CanvasRenderingContext2D) { - globalCanvas = htmlElement.canvas; - } else { - throw 'Please pass either HTMLCanvasElement or CanvasRenderingContext2D.'; - } - } else if (!!navigator.mozGetUserMedia) { - if (!config.disableLogs) { - console.error('Canvas recording is NOT supported in Firefox.'); - } - } - - var isRecording; - - /** - * This method records Canvas. - * @method - * @memberof CanvasRecorder - * @example - * recorder.record(); - */ - this.record = function() { - isRecording = true; - - if (isCanvasSupportsStreamCapturing && !config.useWhammyRecorder) { - // CanvasCaptureMediaStream - var canvasMediaStream; - if ('captureStream' in globalCanvas) { - canvasMediaStream = globalCanvas.captureStream(25); // 25 FPS - } else if ('mozCaptureStream' in globalCanvas) { - canvasMediaStream = globalCanvas.mozCaptureStream(25); - } else if ('webkitCaptureStream' in globalCanvas) { - canvasMediaStream = globalCanvas.webkitCaptureStream(25); - } - - try { - var mdStream = new MediaStream(); - mdStream.addTrack(getTracks(canvasMediaStream, 'video')[0]); - canvasMediaStream = mdStream; - } catch (e) {} - - if (!canvasMediaStream) { - throw 'captureStream API are NOT available.'; - } - - // Note: Jan 18, 2016 status is that, - // Firefox MediaRecorder API can't record CanvasCaptureMediaStream object. - mediaStreamRecorder = new MediaStreamRecorder(canvasMediaStream, { - mimeType: config.mimeType || 'video/webm' - }); - mediaStreamRecorder.record(); - } else { - whammy.frames = []; - lastTime = new Date().getTime(); - drawCanvasFrame(); - } - - if (config.initCallback) { - config.initCallback(); - } - }; - - this.getWebPImages = function(callback) { - if (htmlElement.nodeName.toLowerCase() !== 'canvas') { - callback(); - return; - } - - var framesLength = whammy.frames.length; - whammy.frames.forEach(function(frame, idx) { - var framesRemaining = framesLength - idx; - if (!config.disableLogs) { - console.log(framesRemaining + '/' + framesLength + ' frames remaining'); - } - - if (config.onEncodingCallback) { - config.onEncodingCallback(framesRemaining, framesLength); - } - - var webp = frame.image.toDataURL('image/webp', 1); - whammy.frames[idx].image = webp; - }); - - if (!config.disableLogs) { - console.log('Generating WebM'); - } - - callback(); - }; - - /** - * This method stops recording Canvas. - * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee. - * @method - * @memberof CanvasRecorder - * @example - * recorder.stop(function(blob) { - * video.src = URL.createObjectURL(blob); - * }); - */ - this.stop = function(callback) { - isRecording = false; - - var that = this; - - if (isCanvasSupportsStreamCapturing && mediaStreamRecorder) { - mediaStreamRecorder.stop(callback); - return; - } - - this.getWebPImages(function() { - /** - * @property {Blob} blob - Recorded frames in video/webm blob. - * @memberof CanvasRecorder - * @example - * recorder.stop(function() { - * var blob = recorder.blob; - * }); - */ - whammy.compile(function(blob) { - if (!config.disableLogs) { - console.log('Recording finished!'); - } - - that.blob = blob; - - if (that.blob.forEach) { - that.blob = new Blob([], { - type: 'video/webm' - }); - } - - if (callback) { - callback(that.blob); - } - - whammy.frames = []; - }); - }); - }; - - var isPausedRecording = false; - - /** - * This method pauses the recording process. - * @method - * @memberof CanvasRecorder - * @example - * recorder.pause(); - */ - this.pause = function() { - isPausedRecording = true; - - if (mediaStreamRecorder instanceof MediaStreamRecorder) { - mediaStreamRecorder.pause(); - return; - } - }; - - /** - * This method resumes the recording process. - * @method - * @memberof CanvasRecorder - * @example - * recorder.resume(); - */ - this.resume = function() { - isPausedRecording = false; - - if (mediaStreamRecorder instanceof MediaStreamRecorder) { - mediaStreamRecorder.resume(); - return; - } - - if (!isRecording) { - this.record(); - } - }; - - /** - * This method resets currently recorded data. - * @method - * @memberof CanvasRecorder - * @example - * recorder.clearRecordedData(); - */ - this.clearRecordedData = function() { - if (isRecording) { - this.stop(clearRecordedDataCB); - } - clearRecordedDataCB(); - }; - - function clearRecordedDataCB() { - whammy.frames = []; - isRecording = false; - isPausedRecording = false; - } - - // for debugging - this.name = 'CanvasRecorder'; - this.toString = function() { - return this.name; - }; - - function cloneCanvas() { - //create a new canvas - var newCanvas = document.createElement('canvas'); - var context = newCanvas.getContext('2d'); - - //set dimensions - newCanvas.width = htmlElement.width; - newCanvas.height = htmlElement.height; - - //apply the old canvas to the new one - context.drawImage(htmlElement, 0, 0); - - //return the new canvas - return newCanvas; - } - - function drawCanvasFrame() { - if (isPausedRecording) { - lastTime = new Date().getTime(); - return setTimeout(drawCanvasFrame, 500); - } - - if (htmlElement.nodeName.toLowerCase() === 'canvas') { - var duration = new Date().getTime() - lastTime; - // via #206, by Jack i.e. @Seymourr - lastTime = new Date().getTime(); - - whammy.frames.push({ - image: cloneCanvas(), - duration: duration - }); - - if (isRecording) { - setTimeout(drawCanvasFrame, config.frameInterval); - } - return; - } - - html2canvas(htmlElement, { - grabMouse: typeof config.showMousePointer === 'undefined' || config.showMousePointer, - onrendered: function(canvas) { - var duration = new Date().getTime() - lastTime; - if (!duration) { - return setTimeout(drawCanvasFrame, config.frameInterval); - } - - // via #206, by Jack i.e. @Seymourr - lastTime = new Date().getTime(); - - whammy.frames.push({ - image: canvas.toDataURL('image/webp', 1), - duration: duration - }); - - if (isRecording) { - setTimeout(drawCanvasFrame, config.frameInterval); - } - } - }); - } - - var lastTime = new Date().getTime(); - - var whammy = new Whammy.Video(100); -} - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.CanvasRecorder = CanvasRecorder; -} - -// _________________ -// WhammyRecorder.js - -/** - * WhammyRecorder is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It runs top over {@link Whammy}. - * @summary Video recording feature in Chrome. - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @typedef WhammyRecorder - * @class - * @example - * var recorder = new WhammyRecorder(mediaStream); - * recorder.record(); - * recorder.stop(function(blob) { - * video.src = URL.createObjectURL(blob); - * }); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API. - * @param {object} config - {disableLogs: true, initCallback: function, video: HTMLVideoElement, etc.} - */ - -function WhammyRecorder(mediaStream, config) { - - config = config || {}; - - if (!config.frameInterval) { - config.frameInterval = 10; - } - - if (!config.disableLogs) { - console.log('Using frames-interval:', config.frameInterval); - } - - /** - * This method records video. - * @method - * @memberof WhammyRecorder - * @example - * recorder.record(); - */ - this.record = function() { - if (!config.width) { - config.width = 320; - } - - if (!config.height) { - config.height = 240; - } - - if (!config.video) { - config.video = { - width: config.width, - height: config.height - }; - } - - if (!config.canvas) { - config.canvas = { - width: config.width, - height: config.height - }; - } - - canvas.width = config.canvas.width || 320; - canvas.height = config.canvas.height || 240; - - context = canvas.getContext('2d'); - - // setting defaults - if (config.video && config.video instanceof HTMLVideoElement) { - video = config.video.cloneNode(); - - if (config.initCallback) { - config.initCallback(); - } - } else { - video = document.createElement('video'); - - setSrcObject(mediaStream, video); - - video.onloadedmetadata = function() { // "onloadedmetadata" may NOT work in FF? - if (config.initCallback) { - config.initCallback(); - } - }; - - video.width = config.video.width; - video.height = config.video.height; - } - - video.muted = true; - video.play(); - - lastTime = new Date().getTime(); - whammy = new Whammy.Video(); - - if (!config.disableLogs) { - console.log('canvas resolutions', canvas.width, '*', canvas.height); - console.log('video width/height', video.width || canvas.width, '*', video.height || canvas.height); - } - - drawFrames(config.frameInterval); - }; - - /** - * Draw and push frames to Whammy - * @param {integer} frameInterval - set minimum interval (in milliseconds) between each time we push a frame to Whammy - */ - function drawFrames(frameInterval) { - frameInterval = typeof frameInterval !== 'undefined' ? frameInterval : 10; - - var duration = new Date().getTime() - lastTime; - if (!duration) { - return setTimeout(drawFrames, frameInterval, frameInterval); - } - - if (isPausedRecording) { - lastTime = new Date().getTime(); - return setTimeout(drawFrames, 100); - } - - // via #206, by Jack i.e. @Seymourr - lastTime = new Date().getTime(); - - if (video.paused) { - // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316 - // Tweak for Android Chrome - video.play(); - } - - context.drawImage(video, 0, 0, canvas.width, canvas.height); - whammy.frames.push({ - duration: duration, - image: canvas.toDataURL('image/webp') - }); - - if (!isStopDrawing) { - setTimeout(drawFrames, frameInterval, frameInterval); - } - } - - function asyncLoop(o) { - var i = -1, - length = o.length; - - (function loop() { - i++; - if (i === length) { - o.callback(); - return; - } - - // "setTimeout" added by Jim McLeod - setTimeout(function() { - o.functionToLoop(loop, i); - }, 1); - })(); - } - - - /** - * remove black frames from the beginning to the specified frame - * @param {Array} _frames - array of frames to be checked - * @param {number} _framesToCheck - number of frame until check will be executed (-1 - will drop all frames until frame not matched will be found) - * @param {number} _pixTolerance - 0 - very strict (only black pixel color) ; 1 - all - * @param {number} _frameTolerance - 0 - very strict (only black frame color) ; 1 - all - * @returns {Array} - array of frames - */ - // pull#293 by @volodalexey - function dropBlackFrames(_frames, _framesToCheck, _pixTolerance, _frameTolerance, callback) { - var localCanvas = document.createElement('canvas'); - localCanvas.width = canvas.width; - localCanvas.height = canvas.height; - var context2d = localCanvas.getContext('2d'); - var resultFrames = []; - - var checkUntilNotBlack = _framesToCheck === -1; - var endCheckFrame = (_framesToCheck && _framesToCheck > 0 && _framesToCheck <= _frames.length) ? - _framesToCheck : _frames.length; - var sampleColor = { - r: 0, - g: 0, - b: 0 - }; - var maxColorDifference = Math.sqrt( - Math.pow(255, 2) + - Math.pow(255, 2) + - Math.pow(255, 2) - ); - var pixTolerance = _pixTolerance && _pixTolerance >= 0 && _pixTolerance <= 1 ? _pixTolerance : 0; - var frameTolerance = _frameTolerance && _frameTolerance >= 0 && _frameTolerance <= 1 ? _frameTolerance : 0; - var doNotCheckNext = false; - - asyncLoop({ - length: endCheckFrame, - functionToLoop: function(loop, f) { - var matchPixCount, endPixCheck, maxPixCount; - - var finishImage = function() { - if (!doNotCheckNext && maxPixCount - matchPixCount <= maxPixCount * frameTolerance) { - // console.log('removed black frame : ' + f + ' ; frame duration ' + _frames[f].duration); - } else { - // console.log('frame is passed : ' + f); - if (checkUntilNotBlack) { - doNotCheckNext = true; - } - resultFrames.push(_frames[f]); - } - loop(); - }; - - if (!doNotCheckNext) { - var image = new Image(); - image.onload = function() { - context2d.drawImage(image, 0, 0, canvas.width, canvas.height); - var imageData = context2d.getImageData(0, 0, canvas.width, canvas.height); - matchPixCount = 0; - endPixCheck = imageData.data.length; - maxPixCount = imageData.data.length / 4; - - for (var pix = 0; pix < endPixCheck; pix += 4) { - var currentColor = { - r: imageData.data[pix], - g: imageData.data[pix + 1], - b: imageData.data[pix + 2] - }; - var colorDifference = Math.sqrt( - Math.pow(currentColor.r - sampleColor.r, 2) + - Math.pow(currentColor.g - sampleColor.g, 2) + - Math.pow(currentColor.b - sampleColor.b, 2) - ); - // difference in color it is difference in color vectors (r1,g1,b1) <=> (r2,g2,b2) - if (colorDifference <= maxColorDifference * pixTolerance) { - matchPixCount++; - } - } - finishImage(); - }; - image.src = _frames[f].image; - } else { - finishImage(); - } - }, - callback: function() { - resultFrames = resultFrames.concat(_frames.slice(endCheckFrame)); - - if (resultFrames.length <= 0) { - // at least one last frame should be available for next manipulation - // if total duration of all frames will be < 1000 than ffmpeg doesn't work well... - resultFrames.push(_frames[_frames.length - 1]); - } - callback(resultFrames); - } - }); - } - - var isStopDrawing = false; - - /** - * This method stops recording video. - * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee. - * @method - * @memberof WhammyRecorder - * @example - * recorder.stop(function(blob) { - * video.src = URL.createObjectURL(blob); - * }); - */ - this.stop = function(callback) { - callback = callback || function() {}; - - isStopDrawing = true; - - var _this = this; - // analyse of all frames takes some time! - setTimeout(function() { - // e.g. dropBlackFrames(frames, 10, 1, 1) - will cut all 10 frames - // e.g. dropBlackFrames(frames, 10, 0.5, 0.5) - will analyse 10 frames - // e.g. dropBlackFrames(frames, 10) === dropBlackFrames(frames, 10, 0, 0) - will analyse 10 frames with strict black color - dropBlackFrames(whammy.frames, -1, null, null, function(frames) { - whammy.frames = frames; - - // to display advertisement images! - if (config.advertisement && config.advertisement.length) { - whammy.frames = config.advertisement.concat(whammy.frames); - } - - /** - * @property {Blob} blob - Recorded frames in video/webm blob. - * @memberof WhammyRecorder - * @example - * recorder.stop(function() { - * var blob = recorder.blob; - * }); - */ - whammy.compile(function(blob) { - _this.blob = blob; - - if (_this.blob.forEach) { - _this.blob = new Blob([], { - type: 'video/webm' - }); - } - - if (callback) { - callback(_this.blob); - } - }); - }); - }, 10); - }; - - var isPausedRecording = false; - - /** - * This method pauses the recording process. - * @method - * @memberof WhammyRecorder - * @example - * recorder.pause(); - */ - this.pause = function() { - isPausedRecording = true; - }; - - /** - * This method resumes the recording process. - * @method - * @memberof WhammyRecorder - * @example - * recorder.resume(); - */ - this.resume = function() { - isPausedRecording = false; - - if (isStopDrawing) { - this.record(); - } - }; - - /** - * This method resets currently recorded data. - * @method - * @memberof WhammyRecorder - * @example - * recorder.clearRecordedData(); - */ - this.clearRecordedData = function() { - if (!isStopDrawing) { - this.stop(clearRecordedDataCB); - } - clearRecordedDataCB(); - }; - - function clearRecordedDataCB() { - whammy.frames = []; - isStopDrawing = true; - isPausedRecording = false; - } - - // for debugging - this.name = 'WhammyRecorder'; - this.toString = function() { - return this.name; - }; - - var canvas = document.createElement('canvas'); - var context = canvas.getContext('2d'); - - var video; - var lastTime; - var whammy; -} - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.WhammyRecorder = WhammyRecorder; -} - -// https://github.com/antimatter15/whammy/blob/master/LICENSE -// _________ -// Whammy.js - -// todo: Firefox now supports webp for webm containers! -// their MediaRecorder implementation works well! -// should we provide an option to record via Whammy.js or MediaRecorder API is a better solution? - -/** - * Whammy is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It is written by {@link https://github.com/antimatter15|antimatter15} - * @summary A real time javascript webm encoder based on a canvas hack. - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @typedef Whammy - * @class - * @example - * var recorder = new Whammy().Video(15); - * recorder.add(context || canvas || dataURL); - * var output = recorder.compile(); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - */ - -var Whammy = (function() { - // a more abstract-ish API - - function WhammyVideo(duration) { - this.frames = []; - this.duration = duration || 1; - this.quality = 0.8; - } - - /** - * Pass Canvas or Context or image/webp(string) to {@link Whammy} encoder. - * @method - * @memberof Whammy - * @example - * recorder = new Whammy().Video(0.8, 100); - * recorder.add(canvas || context || 'image/webp'); - * @param {string} frame - Canvas || Context || image/webp - * @param {number} duration - Stick a duration (in milliseconds) - */ - WhammyVideo.prototype.add = function(frame, duration) { - if ('canvas' in frame) { //CanvasRenderingContext2D - frame = frame.canvas; - } - - if ('toDataURL' in frame) { - frame = frame.toDataURL('image/webp', this.quality); - } - - if (!(/^data:image\/webp;base64,/ig).test(frame)) { - throw 'Input must be formatted properly as a base64 encoded DataURI of type image/webp'; - } - this.frames.push({ - image: frame, - duration: duration || this.duration - }); - }; - - function processInWebWorker(_function) { - var blob = URL.createObjectURL(new Blob([_function.toString(), - 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}' - ], { - type: 'application/javascript' - })); - - var worker = new Worker(blob); - URL.revokeObjectURL(blob); - return worker; - } - - function whammyInWebWorker(frames) { - function ArrayToWebM(frames) { - var info = checkFrames(frames); - if (!info) { - return []; - } - - var clusterMaxDuration = 30000; - - var EBML = [{ - 'id': 0x1a45dfa3, // EBML - 'data': [{ - 'data': 1, - 'id': 0x4286 // EBMLVersion - }, { - 'data': 1, - 'id': 0x42f7 // EBMLReadVersion - }, { - 'data': 4, - 'id': 0x42f2 // EBMLMaxIDLength - }, { - 'data': 8, - 'id': 0x42f3 // EBMLMaxSizeLength - }, { - 'data': 'webm', - 'id': 0x4282 // DocType - }, { - 'data': 2, - 'id': 0x4287 // DocTypeVersion - }, { - 'data': 2, - 'id': 0x4285 // DocTypeReadVersion - }] - }, { - 'id': 0x18538067, // Segment - 'data': [{ - 'id': 0x1549a966, // Info - 'data': [{ - 'data': 1e6, //do things in millisecs (num of nanosecs for duration scale) - 'id': 0x2ad7b1 // TimecodeScale - }, { - 'data': 'whammy', - 'id': 0x4d80 // MuxingApp - }, { - 'data': 'whammy', - 'id': 0x5741 // WritingApp - }, { - 'data': doubleToString(info.duration), - 'id': 0x4489 // Duration - }] - }, { - 'id': 0x1654ae6b, // Tracks - 'data': [{ - 'id': 0xae, // TrackEntry - 'data': [{ - 'data': 1, - 'id': 0xd7 // TrackNumber - }, { - 'data': 1, - 'id': 0x73c5 // TrackUID - }, { - 'data': 0, - 'id': 0x9c // FlagLacing - }, { - 'data': 'und', - 'id': 0x22b59c // Language - }, { - 'data': 'V_VP8', - 'id': 0x86 // CodecID - }, { - 'data': 'VP8', - 'id': 0x258688 // CodecName - }, { - 'data': 1, - 'id': 0x83 // TrackType - }, { - 'id': 0xe0, // Video - 'data': [{ - 'data': info.width, - 'id': 0xb0 // PixelWidth - }, { - 'data': info.height, - 'id': 0xba // PixelHeight - }] - }] - }] - }] - }]; - - //Generate clusters (max duration) - var frameNumber = 0; - var clusterTimecode = 0; - while (frameNumber < frames.length) { - - var clusterFrames = []; - var clusterDuration = 0; - do { - clusterFrames.push(frames[frameNumber]); - clusterDuration += frames[frameNumber].duration; - frameNumber++; - } while (frameNumber < frames.length && clusterDuration < clusterMaxDuration); - - var clusterCounter = 0; - var cluster = { - 'id': 0x1f43b675, // Cluster - 'data': getClusterData(clusterTimecode, clusterCounter, clusterFrames) - }; //Add cluster to segment - EBML[1].data.push(cluster); - clusterTimecode += clusterDuration; - } - - return generateEBML(EBML); - } - - function getClusterData(clusterTimecode, clusterCounter, clusterFrames) { - return [{ - 'data': clusterTimecode, - 'id': 0xe7 // Timecode - }].concat(clusterFrames.map(function(webp) { - var block = makeSimpleBlock({ - discardable: 0, - frame: webp.data.slice(4), - invisible: 0, - keyframe: 1, - lacing: 0, - trackNum: 1, - timecode: Math.round(clusterCounter) - }); - clusterCounter += webp.duration; - return { - data: block, - id: 0xa3 - }; - })); - } - - // sums the lengths of all the frames and gets the duration - - function checkFrames(frames) { - if (!frames[0]) { - postMessage({ - error: 'Something went wrong. Maybe WebP format is not supported in the current browser.' - }); - return; - } - - var width = frames[0].width, - height = frames[0].height, - duration = frames[0].duration; - - for (var i = 1; i < frames.length; i++) { - duration += frames[i].duration; - } - return { - duration: duration, - width: width, - height: height - }; - } - - function numToBuffer(num) { - var parts = []; - while (num > 0) { - parts.push(num & 0xff); - num = num >> 8; - } - return new Uint8Array(parts.reverse()); - } - - function strToBuffer(str) { - return new Uint8Array(str.split('').map(function(e) { - return e.charCodeAt(0); - })); - } - - function bitsToBuffer(bits) { - var data = []; - var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : ''; - bits = pad + bits; - for (var i = 0; i < bits.length; i += 8) { - data.push(parseInt(bits.substr(i, 8), 2)); - } - return new Uint8Array(data); - } - - function generateEBML(json) { - var ebml = []; - for (var i = 0; i < json.length; i++) { - var data = json[i].data; - - if (typeof data === 'object') { - data = generateEBML(data); - } - - if (typeof data === 'number') { - data = bitsToBuffer(data.toString(2)); - } - - if (typeof data === 'string') { - data = strToBuffer(data); - } - - var len = data.size || data.byteLength || data.length; - var zeroes = Math.ceil(Math.ceil(Math.log(len) / Math.log(2)) / 8); - var sizeToString = len.toString(2); - var padded = (new Array((zeroes * 7 + 7 + 1) - sizeToString.length)).join('0') + sizeToString; - var size = (new Array(zeroes)).join('0') + '1' + padded; - - ebml.push(numToBuffer(json[i].id)); - ebml.push(bitsToBuffer(size)); - ebml.push(data); - } - - return new Blob(ebml, { - type: 'video/webm' - }); - } - - function toBinStrOld(bits) { - var data = ''; - var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : ''; - bits = pad + bits; - for (var i = 0; i < bits.length; i += 8) { - data += String.fromCharCode(parseInt(bits.substr(i, 8), 2)); - } - return data; - } - - function makeSimpleBlock(data) { - var flags = 0; - - if (data.keyframe) { - flags |= 128; - } - - if (data.invisible) { - flags |= 8; - } - - if (data.lacing) { - flags |= (data.lacing << 1); - } - - if (data.discardable) { - flags |= 1; - } - - if (data.trackNum > 127) { - throw 'TrackNumber > 127 not supported'; - } - - var out = [data.trackNum | 0x80, data.timecode >> 8, data.timecode & 0xff, flags].map(function(e) { - return String.fromCharCode(e); - }).join('') + data.frame; - - return out; - } - - function parseWebP(riff) { - var VP8 = riff.RIFF[0].WEBP[0]; - - var frameStart = VP8.indexOf('\x9d\x01\x2a'); // A VP8 keyframe starts with the 0x9d012a header - for (var i = 0, c = []; i < 4; i++) { - c[i] = VP8.charCodeAt(frameStart + 3 + i); - } - - var width, height, tmp; - - //the code below is literally copied verbatim from the bitstream spec - tmp = (c[1] << 8) | c[0]; - width = tmp & 0x3FFF; - tmp = (c[3] << 8) | c[2]; - height = tmp & 0x3FFF; - return { - width: width, - height: height, - data: VP8, - riff: riff - }; - } - - function getStrLength(string, offset) { - return parseInt(string.substr(offset + 4, 4).split('').map(function(i) { - var unpadded = i.charCodeAt(0).toString(2); - return (new Array(8 - unpadded.length + 1)).join('0') + unpadded; - }).join(''), 2); - } - - function parseRIFF(string) { - var offset = 0; - var chunks = {}; - - while (offset < string.length) { - var id = string.substr(offset, 4); - var len = getStrLength(string, offset); - var data = string.substr(offset + 4 + 4, len); - offset += 4 + 4 + len; - chunks[id] = chunks[id] || []; - - if (id === 'RIFF' || id === 'LIST') { - chunks[id].push(parseRIFF(data)); - } else { - chunks[id].push(data); - } - } - return chunks; - } - - function doubleToString(num) { - return [].slice.call( - new Uint8Array((new Float64Array([num])).buffer), 0).map(function(e) { - return String.fromCharCode(e); - }).reverse().join(''); - } - - var webm = new ArrayToWebM(frames.map(function(frame) { - var webp = parseWebP(parseRIFF(atob(frame.image.slice(23)))); - webp.duration = frame.duration; - return webp; - })); - - postMessage(webm); - } - - /** - * Encodes frames in WebM container. It uses WebWorkinvoke to invoke 'ArrayToWebM' method. - * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee. - * @method - * @memberof Whammy - * @example - * recorder = new Whammy().Video(0.8, 100); - * recorder.compile(function(blob) { - * // blob.size - blob.type - * }); - */ - WhammyVideo.prototype.compile = function(callback) { - var webWorker = processInWebWorker(whammyInWebWorker); - - webWorker.onmessage = function(event) { - if (event.data.error) { - console.error(event.data.error); - return; - } - callback(event.data); - }; - - webWorker.postMessage(this.frames); - }; - - return { - /** - * A more abstract-ish API. - * @method - * @memberof Whammy - * @example - * recorder = new Whammy().Video(0.8, 100); - * @param {?number} speed - 0.8 - * @param {?number} quality - 100 - */ - Video: WhammyVideo - }; -})(); - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.Whammy = Whammy; -} - -// ______________ (indexed-db) -// DiskStorage.js - -/** - * DiskStorage is a standalone object used by {@link RecordRTC} to store recorded blobs in IndexedDB storage. - * @summary Writing blobs into IndexedDB. - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @example - * DiskStorage.Store({ - * audioBlob: yourAudioBlob, - * videoBlob: yourVideoBlob, - * gifBlob : yourGifBlob - * }); - * DiskStorage.Fetch(function(dataURL, type) { - * if(type === 'audioBlob') { } - * if(type === 'videoBlob') { } - * if(type === 'gifBlob') { } - * }); - * // DiskStorage.dataStoreName = 'recordRTC'; - * // DiskStorage.onError = function(error) { }; - * @property {function} init - This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally. - * @property {function} Fetch - This method fetches stored blobs from IndexedDB. - * @property {function} Store - This method stores blobs in IndexedDB. - * @property {function} onError - This function is invoked for any known/unknown error. - * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage. - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - */ - - -var DiskStorage = { - /** - * This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally. - * @method - * @memberof DiskStorage - * @internal - * @example - * DiskStorage.init(); - */ - init: function() { - var self = this; - - if (typeof indexedDB === 'undefined' || typeof indexedDB.open === 'undefined') { - console.error('IndexedDB API are not available in this browser.'); - return; - } - - var dbVersion = 1; - var dbName = this.dbName || location.href.replace(/\/|:|#|%|\.|\[|\]/g, ''), - db; - var request = indexedDB.open(dbName, dbVersion); - - function createObjectStore(dataBase) { - dataBase.createObjectStore(self.dataStoreName); - } - - function putInDB() { - var transaction = db.transaction([self.dataStoreName], 'readwrite'); - - if (self.videoBlob) { - transaction.objectStore(self.dataStoreName).put(self.videoBlob, 'videoBlob'); - } - - if (self.gifBlob) { - transaction.objectStore(self.dataStoreName).put(self.gifBlob, 'gifBlob'); - } - - if (self.audioBlob) { - transaction.objectStore(self.dataStoreName).put(self.audioBlob, 'audioBlob'); - } - - function getFromStore(portionName) { - transaction.objectStore(self.dataStoreName).get(portionName).onsuccess = function(event) { - if (self.callback) { - self.callback(event.target.result, portionName); - } - }; - } - - getFromStore('audioBlob'); - getFromStore('videoBlob'); - getFromStore('gifBlob'); - } - - request.onerror = self.onError; - - request.onsuccess = function() { - db = request.result; - db.onerror = self.onError; - - if (db.setVersion) { - if (db.version !== dbVersion) { - var setVersion = db.setVersion(dbVersion); - setVersion.onsuccess = function() { - createObjectStore(db); - putInDB(); - }; - } else { - putInDB(); - } - } else { - putInDB(); - } - }; - request.onupgradeneeded = function(event) { - createObjectStore(event.target.result); - }; - }, - /** - * This method fetches stored blobs from IndexedDB. - * @method - * @memberof DiskStorage - * @internal - * @example - * DiskStorage.Fetch(function(dataURL, type) { - * if(type === 'audioBlob') { } - * if(type === 'videoBlob') { } - * if(type === 'gifBlob') { } - * }); - */ - Fetch: function(callback) { - this.callback = callback; - this.init(); - - return this; - }, - /** - * This method stores blobs in IndexedDB. - * @method - * @memberof DiskStorage - * @internal - * @example - * DiskStorage.Store({ - * audioBlob: yourAudioBlob, - * videoBlob: yourVideoBlob, - * gifBlob : yourGifBlob - * }); - */ - Store: function(config) { - this.audioBlob = config.audioBlob; - this.videoBlob = config.videoBlob; - this.gifBlob = config.gifBlob; - - this.init(); - - return this; - }, - /** - * This function is invoked for any known/unknown error. - * @method - * @memberof DiskStorage - * @internal - * @example - * DiskStorage.onError = function(error){ - * alerot( JSON.stringify(error) ); - * }; - */ - onError: function(error) { - console.error(JSON.stringify(error, null, '\t')); - }, - - /** - * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage. - * @memberof DiskStorage - * @internal - * @example - * DiskStorage.dataStoreName = 'recordRTC'; - */ - dataStoreName: 'recordRTC', - dbName: null -}; - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.DiskStorage = DiskStorage; -} - -// ______________ -// GifRecorder.js - -/** - * GifRecorder is standalone calss used by {@link RecordRTC} to record video or canvas into animated gif. - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @typedef GifRecorder - * @class - * @example - * var recorder = new GifRecorder(mediaStream || canvas || context, { onGifPreview: function, onGifRecordingStarted: function, width: 1280, height: 720, frameRate: 200, quality: 10 }); - * recorder.record(); - * recorder.stop(function(blob) { - * img.src = URL.createObjectURL(blob); - * }); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - * @param {MediaStream} mediaStream - MediaStream object or HTMLCanvasElement or CanvasRenderingContext2D. - * @param {object} config - {disableLogs:true, initCallback: function, width: 320, height: 240, frameRate: 200, quality: 10} - */ - -function GifRecorder(mediaStream, config) { - if (typeof GIFEncoder === 'undefined') { - var script = document.createElement('script'); - script.src = 'https://www.webrtc-experiment.com/gif-recorder.js'; - (document.body || document.documentElement).appendChild(script); - } - - config = config || {}; - - var isHTMLObject = mediaStream instanceof CanvasRenderingContext2D || mediaStream instanceof HTMLCanvasElement; - - /** - * This method records MediaStream. - * @method - * @memberof GifRecorder - * @example - * recorder.record(); - */ - this.record = function() { - if (typeof GIFEncoder === 'undefined') { - setTimeout(self.record, 1000); - return; - } - - if (!isLoadedMetaData) { - setTimeout(self.record, 1000); - return; - } - - if (!isHTMLObject) { - if (!config.width) { - config.width = video.offsetWidth || 320; - } - - if (!config.height) { - config.height = video.offsetHeight || 240; - } - - if (!config.video) { - config.video = { - width: config.width, - height: config.height - }; - } - - if (!config.canvas) { - config.canvas = { - width: config.width, - height: config.height - }; - } - - canvas.width = config.canvas.width || 320; - canvas.height = config.canvas.height || 240; - - video.width = config.video.width || 320; - video.height = config.video.height || 240; - } - - // external library to record as GIF images - gifEncoder = new GIFEncoder(); - - // void setRepeat(int iter) - // Sets the number of times the set of GIF frames should be played. - // Default is 1; 0 means play indefinitely. - gifEncoder.setRepeat(0); - - // void setFrameRate(Number fps) - // Sets frame rate in frames per second. - // Equivalent to setDelay(1000/fps). - // Using "setDelay" instead of "setFrameRate" - gifEncoder.setDelay(config.frameRate || 200); - - // void setQuality(int quality) - // Sets quality of color quantization (conversion of images to the - // maximum 256 colors allowed by the GIF specification). - // Lower values (minimum = 1) produce better colors, - // but slow processing significantly. 10 is the default, - // and produces good color mapping at reasonable speeds. - // Values greater than 20 do not yield significant improvements in speed. - gifEncoder.setQuality(config.quality || 10); - - // Boolean start() - // This writes the GIF Header and returns false if it fails. - gifEncoder.start(); - - if (typeof config.onGifRecordingStarted === 'function') { - config.onGifRecordingStarted(); - } - - startTime = Date.now(); - - function drawVideoFrame(time) { - if (self.clearedRecordedData === true) { - return; - } - - if (isPausedRecording) { - return setTimeout(function() { - drawVideoFrame(time); - }, 100); - } - - lastAnimationFrame = requestAnimationFrame(drawVideoFrame); - - if (typeof lastFrameTime === undefined) { - lastFrameTime = time; - } - - // ~10 fps - if (time - lastFrameTime < 90) { - return; - } - - if (!isHTMLObject && video.paused) { - // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316 - // Tweak for Android Chrome - video.play(); - } - - if (!isHTMLObject) { - context.drawImage(video, 0, 0, canvas.width, canvas.height); - } - - if (config.onGifPreview) { - config.onGifPreview(canvas.toDataURL('image/png')); - } - - gifEncoder.addFrame(context); - lastFrameTime = time; - } - - lastAnimationFrame = requestAnimationFrame(drawVideoFrame); - - if (config.initCallback) { - config.initCallback(); - } - }; - - /** - * This method stops recording MediaStream. - * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee. - * @method - * @memberof GifRecorder - * @example - * recorder.stop(function(blob) { - * img.src = URL.createObjectURL(blob); - * }); - */ - this.stop = function(callback) { - callback = callback || function() {}; - - if (lastAnimationFrame) { - cancelAnimationFrame(lastAnimationFrame); - } - - endTime = Date.now(); - - /** - * @property {Blob} blob - The recorded blob object. - * @memberof GifRecorder - * @example - * recorder.stop(function(){ - * var blob = recorder.blob; - * }); - */ - this.blob = new Blob([new Uint8Array(gifEncoder.stream().bin)], { - type: 'image/gif' - }); - - callback(this.blob); - - // bug: find a way to clear old recorded blobs - gifEncoder.stream().bin = []; - }; - - var isPausedRecording = false; - - /** - * This method pauses the recording process. - * @method - * @memberof GifRecorder - * @example - * recorder.pause(); - */ - this.pause = function() { - isPausedRecording = true; - }; - - /** - * This method resumes the recording process. - * @method - * @memberof GifRecorder - * @example - * recorder.resume(); - */ - this.resume = function() { - isPausedRecording = false; - }; - - /** - * This method resets currently recorded data. - * @method - * @memberof GifRecorder - * @example - * recorder.clearRecordedData(); - */ - this.clearRecordedData = function() { - self.clearedRecordedData = true; - clearRecordedDataCB(); - }; - - function clearRecordedDataCB() { - if (gifEncoder) { - gifEncoder.stream().bin = []; - } - } - - // for debugging - this.name = 'GifRecorder'; - this.toString = function() { - return this.name; - }; - - var canvas = document.createElement('canvas'); - var context = canvas.getContext('2d'); - - if (isHTMLObject) { - if (mediaStream instanceof CanvasRenderingContext2D) { - context = mediaStream; - canvas = context.canvas; - } else if (mediaStream instanceof HTMLCanvasElement) { - context = mediaStream.getContext('2d'); - canvas = mediaStream; - } - } - - var isLoadedMetaData = true; - - if (!isHTMLObject) { - var video = document.createElement('video'); - video.muted = true; - video.autoplay = true; - video.playsInline = true; - - isLoadedMetaData = false; - video.onloadedmetadata = function() { - isLoadedMetaData = true; - }; - - setSrcObject(mediaStream, video); - - video.play(); - } - - var lastAnimationFrame = null; - var startTime, endTime, lastFrameTime; - - var gifEncoder; - - var self = this; -} - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.GifRecorder = GifRecorder; -} - -// Last time updated: 2019-06-21 4:09:42 AM UTC - -// ________________________ -// MultiStreamsMixer v1.2.2 - -// Open-Sourced: https://github.com/muaz-khan/MultiStreamsMixer - -// -------------------------------------------------- -// Muaz Khan - www.MuazKhan.com -// MIT License - www.WebRTC-Experiment.com/licence -// -------------------------------------------------- - -function MultiStreamsMixer(arrayOfMediaStreams, elementClass) { - - var browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45'; - - (function(that) { - if (typeof RecordRTC !== 'undefined') { - return; - } - - if (!that) { - return; - } - - if (typeof window !== 'undefined') { - return; - } - - if (typeof global === 'undefined') { - return; - } - - global.navigator = { - userAgent: browserFakeUserAgent, - getUserMedia: function() {} - }; - - if (!global.console) { - global.console = {}; - } - - if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') { - global.console.error = global.console.log = global.console.log || function() { - console.log(arguments); - }; - } - - if (typeof document === 'undefined') { - /*global document:true */ - that.document = { - documentElement: { - appendChild: function() { - return ''; - } - } - }; - - document.createElement = document.captureStream = document.mozCaptureStream = function() { - var obj = { - getContext: function() { - return obj; - }, - play: function() {}, - pause: function() {}, - drawImage: function() {}, - toDataURL: function() { - return ''; - }, - style: {} - }; - return obj; - }; - - that.HTMLVideoElement = function() {}; - } - - if (typeof location === 'undefined') { - /*global location:true */ - that.location = { - protocol: 'file:', - href: '', - hash: '' - }; - } - - if (typeof screen === 'undefined') { - /*global screen:true */ - that.screen = { - width: 0, - height: 0 - }; - } - - if (typeof URL === 'undefined') { - /*global screen:true */ - that.URL = { - createObjectURL: function() { - return ''; - }, - revokeObjectURL: function() { - return ''; - } - }; - } - - /*global window:true */ - that.window = global; - })(typeof global !== 'undefined' ? global : null); - - // requires: chrome://flags/#enable-experimental-web-platform-features - - elementClass = elementClass || 'multi-streams-mixer'; - - var videos = []; - var isStopDrawingFrames = false; - - var canvas = document.createElement('canvas'); - var context = canvas.getContext('2d'); - canvas.style.opacity = 0; - canvas.style.position = 'absolute'; - canvas.style.zIndex = -1; - canvas.style.top = '-1000em'; - canvas.style.left = '-1000em'; - canvas.className = elementClass; - (document.body || document.documentElement).appendChild(canvas); - - this.disableLogs = false; - this.frameInterval = 10; - - this.width = 360; - this.height = 240; - - // use gain node to prevent echo - this.useGainNode = true; - - var self = this; - - // _____________________________ - // Cross-Browser-Declarations.js - - // WebAudio API representer - var AudioContext = window.AudioContext; - - if (typeof AudioContext === 'undefined') { - if (typeof webkitAudioContext !== 'undefined') { - /*global AudioContext:true */ - AudioContext = webkitAudioContext; - } - - if (typeof mozAudioContext !== 'undefined') { - /*global AudioContext:true */ - AudioContext = mozAudioContext; - } - } - - /*jshint -W079 */ - var URL = window.URL; - - if (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') { - /*global URL:true */ - URL = webkitURL; - } - - if (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator? - if (typeof navigator.webkitGetUserMedia !== 'undefined') { - navigator.getUserMedia = navigator.webkitGetUserMedia; - } - - if (typeof navigator.mozGetUserMedia !== 'undefined') { - navigator.getUserMedia = navigator.mozGetUserMedia; - } - } - - var MediaStream = window.MediaStream; - - if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') { - MediaStream = webkitMediaStream; - } - - /*global MediaStream:true */ - if (typeof MediaStream !== 'undefined') { - // override "stop" method for all browsers - if (typeof MediaStream.prototype.stop === 'undefined') { - MediaStream.prototype.stop = function() { - this.getTracks().forEach(function(track) { - track.stop(); - }); - }; - } - } - - var Storage = {}; - - if (typeof AudioContext !== 'undefined') { - Storage.AudioContext = AudioContext; - } else if (typeof webkitAudioContext !== 'undefined') { - Storage.AudioContext = webkitAudioContext; - } - - function setSrcObject(stream, element) { - if ('srcObject' in element) { - element.srcObject = stream; - } else if ('mozSrcObject' in element) { - element.mozSrcObject = stream; - } else { - element.srcObject = stream; - } - } - - this.startDrawingFrames = function() { - drawVideosToCanvas(); - }; - - function drawVideosToCanvas() { - if (isStopDrawingFrames) { - return; - } - - var videosLength = videos.length; - - var fullcanvas = false; - var remaining = []; - videos.forEach(function(video) { - if (!video.stream) { - video.stream = {}; - } - - if (video.stream.fullcanvas) { - fullcanvas = video; - } else { - // todo: video.stream.active or video.stream.live to fix blank frames issues? - remaining.push(video); - } - }); - - if (fullcanvas) { - canvas.width = fullcanvas.stream.width; - canvas.height = fullcanvas.stream.height; - } else if (remaining.length) { - canvas.width = videosLength > 1 ? remaining[0].width * 2 : remaining[0].width; - - var height = 1; - if (videosLength === 3 || videosLength === 4) { - height = 2; - } - if (videosLength === 5 || videosLength === 6) { - height = 3; - } - if (videosLength === 7 || videosLength === 8) { - height = 4; - } - if (videosLength === 9 || videosLength === 10) { - height = 5; - } - canvas.height = remaining[0].height * height; - } else { - canvas.width = self.width || 360; - canvas.height = self.height || 240; - } - - if (fullcanvas && fullcanvas instanceof HTMLVideoElement) { - drawImage(fullcanvas); - } - - remaining.forEach(function(video, idx) { - drawImage(video, idx); - }); - - setTimeout(drawVideosToCanvas, self.frameInterval); - } - - function drawImage(video, idx) { - if (isStopDrawingFrames) { - return; - } - - var x = 0; - var y = 0; - var width = video.width; - var height = video.height; - - if (idx === 1) { - x = video.width; - } - - if (idx === 2) { - y = video.height; - } - - if (idx === 3) { - x = video.width; - y = video.height; - } - - if (idx === 4) { - y = video.height * 2; - } - - if (idx === 5) { - x = video.width; - y = video.height * 2; - } - - if (idx === 6) { - y = video.height * 3; - } - - if (idx === 7) { - x = video.width; - y = video.height * 3; - } - - if (typeof video.stream.left !== 'undefined') { - x = video.stream.left; - } - - if (typeof video.stream.top !== 'undefined') { - y = video.stream.top; - } - - if (typeof video.stream.width !== 'undefined') { - width = video.stream.width; - } - - if (typeof video.stream.height !== 'undefined') { - height = video.stream.height; - } - - context.drawImage(video, x, y, width, height); - - if (typeof video.stream.onRender === 'function') { - video.stream.onRender(context, x, y, width, height, idx); - } - } - - function getMixedStream() { - isStopDrawingFrames = false; - var mixedVideoStream = getMixedVideoStream(); - - var mixedAudioStream = getMixedAudioStream(); - if (mixedAudioStream) { - mixedAudioStream.getTracks().filter(function(t) { - return t.kind === 'audio'; - }).forEach(function(track) { - mixedVideoStream.addTrack(track); - }); - } - - var fullcanvas; - arrayOfMediaStreams.forEach(function(stream) { - if (stream.fullcanvas) { - fullcanvas = true; - } - }); - - // mixedVideoStream.prototype.appendStreams = appendStreams; - // mixedVideoStream.prototype.resetVideoStreams = resetVideoStreams; - // mixedVideoStream.prototype.clearRecordedData = clearRecordedData; - - return mixedVideoStream; - } - - function getMixedVideoStream() { - resetVideoStreams(); - - var capturedStream; - - if ('captureStream' in canvas) { - capturedStream = canvas.captureStream(); - } else if ('mozCaptureStream' in canvas) { - capturedStream = canvas.mozCaptureStream(); - } else if (!self.disableLogs) { - console.error('Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features'); - } - - var videoStream = new MediaStream(); - - capturedStream.getTracks().filter(function(t) { - return t.kind === 'video'; - }).forEach(function(track) { - videoStream.addTrack(track); - }); - - canvas.stream = videoStream; - - return videoStream; - } - - function getMixedAudioStream() { - // via: @pehrsons - if (!Storage.AudioContextConstructor) { - Storage.AudioContextConstructor = new Storage.AudioContext(); - } - - self.audioContext = Storage.AudioContextConstructor; - - self.audioSources = []; - - if (self.useGainNode === true) { - self.gainNode = self.audioContext.createGain(); - self.gainNode.connect(self.audioContext.destination); - self.gainNode.gain.value = 0; // don't hear self - } - - var audioTracksLength = 0; - arrayOfMediaStreams.forEach(function(stream) { - if (!stream.getTracks().filter(function(t) { - return t.kind === 'audio'; - }).length) { - return; - } - - audioTracksLength++; - - var audioSource = self.audioContext.createMediaStreamSource(stream); - - if (self.useGainNode === true) { - audioSource.connect(self.gainNode); - } - - self.audioSources.push(audioSource); - }); - - if (!audioTracksLength) { - // because "self.audioContext" is not initialized - // that's why we've to ignore rest of the code - return; - } - - self.audioDestination = self.audioContext.createMediaStreamDestination(); - self.audioSources.forEach(function(audioSource) { - audioSource.connect(self.audioDestination); - }); - return self.audioDestination.stream; - } - - function getVideo(stream) { - var video = document.createElement('video'); - - setSrcObject(stream, video); - - video.className = elementClass; - - video.muted = true; - video.volume = 0; - - video.width = stream.width || self.width || 360; - video.height = stream.height || self.height || 240; - - video.play(); - - return video; - } - - this.appendStreams = function(streams) { - if (!streams) { - throw 'First parameter is required.'; - } - - if (!(streams instanceof Array)) { - streams = [streams]; - } - - streams.forEach(function(stream) { - var newStream = new MediaStream(); - - if (stream.getTracks().filter(function(t) { - return t.kind === 'video'; - }).length) { - var video = getVideo(stream); - video.stream = stream; - videos.push(video); - - newStream.addTrack(stream.getTracks().filter(function(t) { - return t.kind === 'video'; - })[0]); - } - - if (stream.getTracks().filter(function(t) { - return t.kind === 'audio'; - }).length) { - var audioSource = self.audioContext.createMediaStreamSource(stream); - self.audioDestination = self.audioContext.createMediaStreamDestination(); - audioSource.connect(self.audioDestination); - - newStream.addTrack(self.audioDestination.stream.getTracks().filter(function(t) { - return t.kind === 'audio'; - })[0]); - } - - arrayOfMediaStreams.push(newStream); - }); - }; - - this.releaseStreams = function() { - videos = []; - isStopDrawingFrames = true; - - if (self.gainNode) { - self.gainNode.disconnect(); - self.gainNode = null; - } - - if (self.audioSources.length) { - self.audioSources.forEach(function(source) { - source.disconnect(); - }); - self.audioSources = []; - } - - if (self.audioDestination) { - self.audioDestination.disconnect(); - self.audioDestination = null; - } - - if (self.audioContext) { - self.audioContext.close(); - } - - self.audioContext = null; - - context.clearRect(0, 0, canvas.width, canvas.height); - - if (canvas.stream) { - canvas.stream.stop(); - canvas.stream = null; - } - }; - - this.resetVideoStreams = function(streams) { - if (streams && !(streams instanceof Array)) { - streams = [streams]; - } - - resetVideoStreams(streams); - }; - - function resetVideoStreams(streams) { - videos = []; - streams = streams || arrayOfMediaStreams; - - // via: @adrian-ber - streams.forEach(function(stream) { - if (!stream.getTracks().filter(function(t) { - return t.kind === 'video'; - }).length) { - return; - } - - var video = getVideo(stream); - video.stream = stream; - videos.push(video); - }); - } - - // for debugging - this.name = 'MultiStreamsMixer'; - this.toString = function() { - return this.name; - }; - - this.getMixedStream = getMixedStream; - -} - -if (typeof RecordRTC === 'undefined') { - if (typeof module !== 'undefined' /* && !!module.exports*/ ) { - module.exports = MultiStreamsMixer; - } - - if (typeof define === 'function' && define.amd) { - define('MultiStreamsMixer', [], function() { - return MultiStreamsMixer; - }); - } -} - -// ______________________ -// MultiStreamRecorder.js - -/* - * Video conference recording, using captureStream API along with WebAudio and Canvas2D API. - */ - -/** - * MultiStreamRecorder can record multiple videos in single container. - * @summary Multi-videos recorder. - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @typedef MultiStreamRecorder - * @class - * @example - * var options = { - * mimeType: 'video/webm' - * } - * var recorder = new MultiStreamRecorder(ArrayOfMediaStreams, options); - * recorder.record(); - * recorder.stop(function(blob) { - * video.src = URL.createObjectURL(blob); - * - * // or - * var blob = recorder.blob; - * }); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - * @param {MediaStreams} mediaStreams - Array of MediaStreams. - * @param {object} config - {disableLogs:true, frameInterval: 1, mimeType: "video/webm"} - */ - -function MultiStreamRecorder(arrayOfMediaStreams, options) { - arrayOfMediaStreams = arrayOfMediaStreams || []; - var self = this; - - var mixer; - var mediaRecorder; - - options = options || { - elementClass: 'multi-streams-mixer', - mimeType: 'video/webm', - video: { - width: 360, - height: 240 - } - }; - - if (!options.frameInterval) { - options.frameInterval = 10; - } - - if (!options.video) { - options.video = {}; - } - - if (!options.video.width) { - options.video.width = 360; - } - - if (!options.video.height) { - options.video.height = 240; - } - - /** - * This method records all MediaStreams. - * @method - * @memberof MultiStreamRecorder - * @example - * recorder.record(); - */ - this.record = function() { - // github/muaz-khan/MultiStreamsMixer - mixer = new MultiStreamsMixer(arrayOfMediaStreams, options.elementClass || 'multi-streams-mixer'); - - if (getAllVideoTracks().length) { - mixer.frameInterval = options.frameInterval || 10; - mixer.width = options.video.width || 360; - mixer.height = options.video.height || 240; - mixer.startDrawingFrames(); - } - - if (options.previewStream && typeof options.previewStream === 'function') { - options.previewStream(mixer.getMixedStream()); - } - - // record using MediaRecorder API - mediaRecorder = new MediaStreamRecorder(mixer.getMixedStream(), options); - mediaRecorder.record(); - }; - - function getAllVideoTracks() { - var tracks = []; - arrayOfMediaStreams.forEach(function(stream) { - getTracks(stream, 'video').forEach(function(track) { - tracks.push(track); - }); - }); - return tracks; - } - - /** - * This method stops recording MediaStream. - * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee. - * @method - * @memberof MultiStreamRecorder - * @example - * recorder.stop(function(blob) { - * video.src = URL.createObjectURL(blob); - * }); - */ - this.stop = function(callback) { - if (!mediaRecorder) { - return; - } - - mediaRecorder.stop(function(blob) { - self.blob = blob; - - callback(blob); - - self.clearRecordedData(); - }); - }; - - /** - * This method pauses the recording process. - * @method - * @memberof MultiStreamRecorder - * @example - * recorder.pause(); - */ - this.pause = function() { - if (mediaRecorder) { - mediaRecorder.pause(); - } - }; - - /** - * This method resumes the recording process. - * @method - * @memberof MultiStreamRecorder - * @example - * recorder.resume(); - */ - this.resume = function() { - if (mediaRecorder) { - mediaRecorder.resume(); - } - }; - - /** - * This method resets currently recorded data. - * @method - * @memberof MultiStreamRecorder - * @example - * recorder.clearRecordedData(); - */ - this.clearRecordedData = function() { - if (mediaRecorder) { - mediaRecorder.clearRecordedData(); - mediaRecorder = null; - } - - if (mixer) { - mixer.releaseStreams(); - mixer = null; - } - }; - - /** - * Add extra media-streams to existing recordings. - * @method - * @memberof MultiStreamRecorder - * @param {MediaStreams} mediaStreams - Array of MediaStreams - * @example - * recorder.addStreams([newAudioStream, newVideoStream]); - */ - this.addStreams = function(streams) { - if (!streams) { - throw 'First parameter is required.'; - } - - if (!(streams instanceof Array)) { - streams = [streams]; - } - - arrayOfMediaStreams.concat(streams); - - if (!mediaRecorder || !mixer) { - return; - } - - mixer.appendStreams(streams); - - if (options.previewStream && typeof options.previewStream === 'function') { - options.previewStream(mixer.getMixedStream()); - } - }; - - /** - * Reset videos during live recording. Replace old videos e.g. replace cameras with full-screen. - * @method - * @memberof MultiStreamRecorder - * @param {MediaStreams} mediaStreams - Array of MediaStreams - * @example - * recorder.resetVideoStreams([newVideo1, newVideo2]); - */ - this.resetVideoStreams = function(streams) { - if (!mixer) { - return; - } - - if (streams && !(streams instanceof Array)) { - streams = [streams]; - } - - mixer.resetVideoStreams(streams); - }; - - /** - * Returns MultiStreamsMixer - * @method - * @memberof MultiStreamRecorder - * @example - * let mixer = recorder.getMixer(); - * mixer.appendStreams([newStream]); - */ - this.getMixer = function() { - return mixer; - }; - - // for debugging - this.name = 'MultiStreamRecorder'; - this.toString = function() { - return this.name; - }; -} - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.MultiStreamRecorder = MultiStreamRecorder; -} - -// _____________________ -// RecordRTC.promises.js - -/** - * RecordRTCPromisesHandler adds promises support in {@link RecordRTC}. Try a {@link https://github.com/muaz-khan/RecordRTC/blob/master/simple-demos/RecordRTCPromisesHandler.html|demo here} - * @summary Promises for {@link RecordRTC} - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @typedef RecordRTCPromisesHandler - * @class - * @example - * var recorder = new RecordRTCPromisesHandler(mediaStream, options); - * recorder.startRecording() - * .then(successCB) - * .catch(errorCB); - * // Note: You can access all RecordRTC API using "recorder.recordRTC" e.g. - * recorder.recordRTC.onStateChanged = function(state) {}; - * recorder.recordRTC.setRecordingDuration(5000); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc. - * @param {object} config - {type:"video", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.} - * @throws Will throw an error if "new" keyword is not used to initiate "RecordRTCPromisesHandler". Also throws error if first argument "MediaStream" is missing. - * @requires {@link RecordRTC} - */ - -function RecordRTCPromisesHandler(mediaStream, options) { - if (!this) { - throw 'Use "new RecordRTCPromisesHandler()"'; - } - - if (typeof mediaStream === 'undefined') { - throw 'First argument "MediaStream" is required.'; - } - - var self = this; - - /** - * @property {Blob} blob - Access/reach the native {@link RecordRTC} object. - * @memberof RecordRTCPromisesHandler - * @example - * let internal = recorder.recordRTC.getInternalRecorder(); - * alert(internal instanceof MediaStreamRecorder); - * recorder.recordRTC.onStateChanged = function(state) {}; - */ - self.recordRTC = new RecordRTC(mediaStream, options); - - /** - * This method records MediaStream. - * @method - * @memberof RecordRTCPromisesHandler - * @example - * recorder.startRecording() - * .then(successCB) - * .catch(errorCB); - */ - this.startRecording = function() { - return new Promise(function(resolve, reject) { - try { - self.recordRTC.startRecording(); - resolve(); - } catch (e) { - reject(e); - } - }); - }; - - /** - * This method stops the recording. - * @method - * @memberof RecordRTCPromisesHandler - * @example - * recorder.stopRecording().then(function() { - * var blob = recorder.getBlob(); - * }).catch(errorCB); - */ - this.stopRecording = function() { - return new Promise(function(resolve, reject) { - try { - self.recordRTC.stopRecording(function(url) { - self.blob = self.recordRTC.getBlob(); - - if (!self.blob || !self.blob.size) { - reject('Empty blob.', self.blob); - return; - } - - resolve(url); - }); - } catch (e) { - reject(e); - } - }); - }; - - /** - * This method pauses the recording. You can resume recording using "resumeRecording" method. - * @method - * @memberof RecordRTCPromisesHandler - * @example - * recorder.pauseRecording() - * .then(successCB) - * .catch(errorCB); - */ - this.pauseRecording = function() { - return new Promise(function(resolve, reject) { - try { - self.recordRTC.pauseRecording(); - resolve(); - } catch (e) { - reject(e); - } - }); - }; - - /** - * This method resumes the recording. - * @method - * @memberof RecordRTCPromisesHandler - * @example - * recorder.resumeRecording() - * .then(successCB) - * .catch(errorCB); - */ - this.resumeRecording = function() { - return new Promise(function(resolve, reject) { - try { - self.recordRTC.resumeRecording(); - resolve(); - } catch (e) { - reject(e); - } - }); - }; - - /** - * This method returns data-url for the recorded blob. - * @method - * @memberof RecordRTCPromisesHandler - * @example - * recorder.stopRecording().then(function() { - * recorder.getDataURL().then(function(dataURL) { - * window.open(dataURL); - * }).catch(errorCB);; - * }).catch(errorCB); - */ - this.getDataURL = function(callback) { - return new Promise(function(resolve, reject) { - try { - self.recordRTC.getDataURL(function(dataURL) { - resolve(dataURL); - }); - } catch (e) { - reject(e); - } - }); - }; - - /** - * This method returns the recorded blob. - * @method - * @memberof RecordRTCPromisesHandler - * @example - * recorder.stopRecording().then(function() { - * recorder.getBlob().then(function(blob) {}) - * }).catch(errorCB); - */ - this.getBlob = function() { - return new Promise(function(resolve, reject) { - try { - resolve(self.recordRTC.getBlob()); - } catch (e) { - reject(e); - } - }); - }; - - /** - * This method returns the internal recording object. - * @method - * @memberof RecordRTCPromisesHandler - * @example - * let internalRecorder = await recorder.getInternalRecorder(); - * if(internalRecorder instanceof MultiStreamRecorder) { - * internalRecorder.addStreams([newAudioStream]); - * internalRecorder.resetVideoStreams([screenStream]); - * } - * @returns {Object} - */ - this.getInternalRecorder = function() { - return new Promise(function(resolve, reject) { - try { - resolve(self.recordRTC.getInternalRecorder()); - } catch (e) { - reject(e); - } - }); - }; - - /** - * This method resets the recorder. So that you can reuse single recorder instance many times. - * @method - * @memberof RecordRTCPromisesHandler - * @example - * await recorder.reset(); - * recorder.startRecording(); // record again - */ - this.reset = function() { - return new Promise(function(resolve, reject) { - try { - resolve(self.recordRTC.reset()); - } catch (e) { - reject(e); - } - }); - }; - - /** - * Destroy RecordRTC instance. Clear all recorders and objects. - * @method - * @memberof RecordRTCPromisesHandler - * @example - * recorder.destroy().then(successCB).catch(errorCB); - */ - this.destroy = function() { - return new Promise(function(resolve, reject) { - try { - resolve(self.recordRTC.destroy()); - } catch (e) { - reject(e); - } - }); - }; - - /** - * Get recorder's readonly state. - * @method - * @memberof RecordRTCPromisesHandler - * @example - * let state = await recorder.getState(); - * // or - * recorder.getState().then(state => { console.log(state); }) - * @returns {String} Returns recording state. - */ - this.getState = function() { - return new Promise(function(resolve, reject) { - try { - resolve(self.recordRTC.getState()); - } catch (e) { - reject(e); - } - }); - }; - - /** - * @property {Blob} blob - Recorded data as "Blob" object. - * @memberof RecordRTCPromisesHandler - * @example - * await recorder.stopRecording(); - * let blob = recorder.getBlob(); // or "recorder.recordRTC.blob" - * invokeSaveAsDialog(blob); - */ - this.blob = null; - - /** - * RecordRTC version number - * @property {String} version - Release version number. - * @memberof RecordRTCPromisesHandler - * @static - * @readonly - * @example - * alert(recorder.version); - */ - this.version = '5.6.1'; -} - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.RecordRTCPromisesHandler = RecordRTCPromisesHandler; -} - -// ______________________ -// WebAssemblyRecorder.js - -/** - * WebAssemblyRecorder lets you create webm videos in JavaScript via WebAssembly. The library consumes raw RGBA32 buffers (4 bytes per pixel) and turns them into a webm video with the given framerate and quality. This makes it compatible out-of-the-box with ImageData from a CANVAS. With realtime mode you can also use webm-wasm for streaming webm videos. - * @summary Video recording feature in Chrome, Firefox and maybe Edge. - * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} - * @author {@link https://MuazKhan.com|Muaz Khan} - * @typedef WebAssemblyRecorder - * @class - * @example - * var recorder = new WebAssemblyRecorder(mediaStream); - * recorder.record(); - * recorder.stop(function(blob) { - * video.src = URL.createObjectURL(blob); - * }); - * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} - * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API. - * @param {object} config - {webAssemblyPath:'webm-wasm.wasm',workerPath: 'webm-worker.js', frameRate: 30, width: 1920, height: 1080, bitrate: 1024, realtime: true} - */ -function WebAssemblyRecorder(stream, config) { - // based on: github.com/GoogleChromeLabs/webm-wasm - - if (typeof ReadableStream === 'undefined' || typeof WritableStream === 'undefined') { - // because it fixes readable/writable streams issues - console.error('Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js'); - } - - config = config || {}; - - config.width = config.width || 640; - config.height = config.height || 480; - config.frameRate = config.frameRate || 30; - config.bitrate = config.bitrate || 1200; - config.realtime = config.realtime || true; - - function createBufferURL(buffer, type) { - return URL.createObjectURL(new Blob([buffer], { - type: type || '' - })); - } - - var finished; - - function cameraStream() { - return new ReadableStream({ - start: function(controller) { - var cvs = document.createElement('canvas'); - var video = document.createElement('video'); - var first = true; - video.srcObject = stream; - video.muted = true; - video.height = config.height; - video.width = config.width; - video.volume = 0; - video.onplaying = function() { - cvs.width = config.width; - cvs.height = config.height; - var ctx = cvs.getContext('2d'); - var frameTimeout = 1000 / config.frameRate; - var cameraTimer = setInterval(function f() { - if (finished) { - clearInterval(cameraTimer); - controller.close(); - } - - if (first) { - first = false; - if (config.onVideoProcessStarted) { - config.onVideoProcessStarted(); - } - } - - ctx.drawImage(video, 0, 0); - if (controller._controlledReadableStream.state !== 'closed') { - try { - controller.enqueue( - ctx.getImageData(0, 0, config.width, config.height) - ); - } catch (e) {} - } - }, frameTimeout); - }; - video.play(); - } - }); - } - - var worker; - - function startRecording(stream, buffer) { - if (!config.workerPath && !buffer) { - finished = false; - - // is it safe to use @latest ? - - fetch( - 'https://unpkg.com/webm-wasm@latest/dist/webm-worker.js' - ).then(function(r) { - r.arrayBuffer().then(function(buffer) { - startRecording(stream, buffer); - }); - }); - return; - } - - if (!config.workerPath && buffer instanceof ArrayBuffer) { - var blob = new Blob([buffer], { - type: 'text/javascript' - }); - config.workerPath = URL.createObjectURL(blob); - } - - if (!config.workerPath) { - console.error('workerPath parameter is missing.'); - } - - worker = new Worker(config.workerPath); - - worker.postMessage(config.webAssemblyPath || 'https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm'); - worker.addEventListener('message', function(event) { - if (event.data === 'READY') { - worker.postMessage({ - width: config.width, - height: config.height, - bitrate: config.bitrate || 1200, - timebaseDen: config.frameRate || 30, - realtime: config.realtime - }); - - cameraStream().pipeTo(new WritableStream({ - write: function(image) { - if (finished) { - console.error('Got image, but recorder is finished!'); - return; - } - - worker.postMessage(image.data.buffer, [image.data.buffer]); - } - })); - } else if (!!event.data) { - if (!isPaused) { - arrayOfBuffers.push(event.data); - } - } - }); - } - - /** - * This method records video. - * @method - * @memberof WebAssemblyRecorder - * @example - * recorder.record(); - */ - this.record = function() { - arrayOfBuffers = []; - isPaused = false; - this.blob = null; - startRecording(stream); - - if (typeof config.initCallback === 'function') { - config.initCallback(); - } - }; - - var isPaused; - - /** - * This method pauses the recording process. - * @method - * @memberof WebAssemblyRecorder - * @example - * recorder.pause(); - */ - this.pause = function() { - isPaused = true; - }; - - /** - * This method resumes the recording process. - * @method - * @memberof WebAssemblyRecorder - * @example - * recorder.resume(); - */ - this.resume = function() { - isPaused = false; - }; - - function terminate(callback) { - if (!worker) { - if (callback) { - callback(); - } - - return; - } - - // Wait for null event data to indicate that the encoding is complete - worker.addEventListener('message', function(event) { - if (event.data === null) { - worker.terminate(); - worker = null; - - if (callback) { - callback(); - } - } - }); - - worker.postMessage(null); - } - - var arrayOfBuffers = []; - - /** - * This method stops recording video. - * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee. - * @method - * @memberof WebAssemblyRecorder - * @example - * recorder.stop(function(blob) { - * video.src = URL.createObjectURL(blob); - * }); - */ - this.stop = function(callback) { - finished = true; - - var recorder = this; - - terminate(function() { - recorder.blob = new Blob(arrayOfBuffers, { - type: 'video/webm' - }); - - callback(recorder.blob); - }); - }; - - // for debugging - this.name = 'WebAssemblyRecorder'; - this.toString = function() { - return this.name; - }; - - /** - * This method resets currently recorded data. - * @method - * @memberof WebAssemblyRecorder - * @example - * recorder.clearRecordedData(); - */ - this.clearRecordedData = function() { - arrayOfBuffers = []; - isPaused = false; - this.blob = null; - - // todo: if recording-ON then STOP it first - }; - - /** - * @property {Blob} blob - The recorded blob object. - * @memberof WebAssemblyRecorder - * @example - * recorder.stop(function(){ - * var blob = recorder.blob; - * }); - */ - this.blob = null; -} - -if (typeof RecordRTC !== 'undefined') { - RecordRTC.WebAssemblyRecorder = WebAssemblyRecorder; -} diff --git a/static/kevin-master/assets/js/adapter.js b/static/kevin-master/assets/js/adapter.js deleted file mode 100644 index 5d9dd40..0000000 --- a/static/kevin-master/assets/js/adapter.js +++ /dev/null @@ -1,5623 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.adapter = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0 && arguments[0] !== undefined ? arguments[0] : {}, - window = _ref.window; - - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { - shimChrome: true, - shimFirefox: true, - shimEdge: true, - shimSafari: true - }; - - // Utils. - var logging = utils.log; - var browserDetails = utils.detectBrowser(window); - - var adapter = { - browserDetails: browserDetails, - commonShim: commonShim, - extractVersion: utils.extractVersion, - disableLog: utils.disableLog, - disableWarnings: utils.disableWarnings - }; - - // Shim browser if found. - switch (browserDetails.browser) { - case 'chrome': - if (!chromeShim || !chromeShim.shimPeerConnection || !options.shimChrome) { - logging('Chrome shim is not included in this adapter release.'); - return adapter; - } - if (browserDetails.version === null) { - logging('Chrome shim can not determine version, not shimming.'); - return adapter; - } - logging('adapter.js shimming chrome.'); - // Export to the adapter global object visible in the browser. - adapter.browserShim = chromeShim; - - chromeShim.shimGetUserMedia(window); - chromeShim.shimMediaStream(window); - chromeShim.shimPeerConnection(window); - chromeShim.shimOnTrack(window); - chromeShim.shimAddTrackRemoveTrack(window); - chromeShim.shimGetSendersWithDtmf(window); - chromeShim.shimGetStats(window); - chromeShim.shimSenderReceiverGetStats(window); - chromeShim.fixNegotiationNeeded(window); - - commonShim.shimRTCIceCandidate(window); - commonShim.shimConnectionState(window); - commonShim.shimMaxMessageSize(window); - commonShim.shimSendThrowTypeError(window); - commonShim.removeAllowExtmapMixed(window); - break; - case 'firefox': - if (!firefoxShim || !firefoxShim.shimPeerConnection || !options.shimFirefox) { - logging('Firefox shim is not included in this adapter release.'); - return adapter; - } - logging('adapter.js shimming firefox.'); - // Export to the adapter global object visible in the browser. - adapter.browserShim = firefoxShim; - - firefoxShim.shimGetUserMedia(window); - firefoxShim.shimPeerConnection(window); - firefoxShim.shimOnTrack(window); - firefoxShim.shimRemoveStream(window); - firefoxShim.shimSenderGetStats(window); - firefoxShim.shimReceiverGetStats(window); - firefoxShim.shimRTCDataChannel(window); - firefoxShim.shimAddTransceiver(window); - firefoxShim.shimGetParameters(window); - firefoxShim.shimCreateOffer(window); - firefoxShim.shimCreateAnswer(window); - - commonShim.shimRTCIceCandidate(window); - commonShim.shimConnectionState(window); - commonShim.shimMaxMessageSize(window); - commonShim.shimSendThrowTypeError(window); - break; - case 'edge': - if (!edgeShim || !edgeShim.shimPeerConnection || !options.shimEdge) { - logging('MS edge shim is not included in this adapter release.'); - return adapter; - } - logging('adapter.js shimming edge.'); - // Export to the adapter global object visible in the browser. - adapter.browserShim = edgeShim; - - edgeShim.shimGetUserMedia(window); - edgeShim.shimGetDisplayMedia(window); - edgeShim.shimPeerConnection(window); - edgeShim.shimReplaceTrack(window); - - // the edge shim implements the full RTCIceCandidate object. - - commonShim.shimMaxMessageSize(window); - commonShim.shimSendThrowTypeError(window); - break; - case 'safari': - if (!safariShim || !options.shimSafari) { - logging('Safari shim is not included in this adapter release.'); - return adapter; - } - logging('adapter.js shimming safari.'); - // Export to the adapter global object visible in the browser. - adapter.browserShim = safariShim; - - safariShim.shimRTCIceServerUrls(window); - safariShim.shimCreateOfferLegacy(window); - safariShim.shimCallbacksAPI(window); - safariShim.shimLocalStreamsAPI(window); - safariShim.shimRemoteStreamsAPI(window); - safariShim.shimTrackEventTransceiver(window); - safariShim.shimGetUserMedia(window); - safariShim.shimAudioContext(window); - - commonShim.shimRTCIceCandidate(window); - commonShim.shimMaxMessageSize(window); - commonShim.shimSendThrowTypeError(window); - commonShim.removeAllowExtmapMixed(window); - break; - default: - logging('Unsupported browser!'); - break; - } - - return adapter; -} - -// Browser shims. - -},{"./chrome/chrome_shim":3,"./common_shim":6,"./edge/edge_shim":7,"./firefox/firefox_shim":11,"./safari/safari_shim":14,"./utils":15}],3:[function(require,module,exports){ -/* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -/* eslint-env node */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.shimGetDisplayMedia = exports.shimGetUserMedia = undefined; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _getusermedia = require('./getusermedia'); - -Object.defineProperty(exports, 'shimGetUserMedia', { - enumerable: true, - get: function get() { - return _getusermedia.shimGetUserMedia; - } -}); - -var _getdisplaymedia = require('./getdisplaymedia'); - -Object.defineProperty(exports, 'shimGetDisplayMedia', { - enumerable: true, - get: function get() { - return _getdisplaymedia.shimGetDisplayMedia; - } -}); -exports.shimMediaStream = shimMediaStream; -exports.shimOnTrack = shimOnTrack; -exports.shimGetSendersWithDtmf = shimGetSendersWithDtmf; -exports.shimGetStats = shimGetStats; -exports.shimSenderReceiverGetStats = shimSenderReceiverGetStats; -exports.shimAddTrackRemoveTrackWithNative = shimAddTrackRemoveTrackWithNative; -exports.shimAddTrackRemoveTrack = shimAddTrackRemoveTrack; -exports.shimPeerConnection = shimPeerConnection; -exports.fixNegotiationNeeded = fixNegotiationNeeded; - -var _utils = require('../utils.js'); - -var utils = _interopRequireWildcard(_utils); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function shimMediaStream(window) { - window.MediaStream = window.MediaStream || window.webkitMediaStream; -} - -function shimOnTrack(window) { - if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && !('ontrack' in window.RTCPeerConnection.prototype)) { - Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', { - get: function get() { - return this._ontrack; - }, - set: function set(f) { - if (this._ontrack) { - this.removeEventListener('track', this._ontrack); - } - this.addEventListener('track', this._ontrack = f); - }, - - enumerable: true, - configurable: true - }); - var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; - window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { - var _this = this; - - if (!this._ontrackpoly) { - this._ontrackpoly = function (e) { - // onaddstream does not fire when a track is added to an existing - // stream. But stream.onaddtrack is implemented so we use that. - e.stream.addEventListener('addtrack', function (te) { - var receiver = void 0; - if (window.RTCPeerConnection.prototype.getReceivers) { - receiver = _this.getReceivers().find(function (r) { - return r.track && r.track.id === te.track.id; - }); - } else { - receiver = { track: te.track }; - } - - var event = new Event('track'); - event.track = te.track; - event.receiver = receiver; - event.transceiver = { receiver: receiver }; - event.streams = [e.stream]; - _this.dispatchEvent(event); - }); - e.stream.getTracks().forEach(function (track) { - var receiver = void 0; - if (window.RTCPeerConnection.prototype.getReceivers) { - receiver = _this.getReceivers().find(function (r) { - return r.track && r.track.id === track.id; - }); - } else { - receiver = { track: track }; - } - var event = new Event('track'); - event.track = track; - event.receiver = receiver; - event.transceiver = { receiver: receiver }; - event.streams = [e.stream]; - _this.dispatchEvent(event); - }); - }; - this.addEventListener('addstream', this._ontrackpoly); - } - return origSetRemoteDescription.apply(this, arguments); - }; - } else { - // even if RTCRtpTransceiver is in window, it is only used and - // emitted in unified-plan. Unfortunately this means we need - // to unconditionally wrap the event. - utils.wrapPeerConnectionEvent(window, 'track', function (e) { - if (!e.transceiver) { - Object.defineProperty(e, 'transceiver', { value: { receiver: e.receiver } }); - } - return e; - }); - } -} - -function shimGetSendersWithDtmf(window) { - // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack. - if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && !('getSenders' in window.RTCPeerConnection.prototype) && 'createDTMFSender' in window.RTCPeerConnection.prototype) { - var shimSenderWithDtmf = function shimSenderWithDtmf(pc, track) { - return { - track: track, - get dtmf() { - if (this._dtmf === undefined) { - if (track.kind === 'audio') { - this._dtmf = pc.createDTMFSender(track); - } else { - this._dtmf = null; - } - } - return this._dtmf; - }, - _pc: pc - }; - }; - - // augment addTrack when getSenders is not available. - if (!window.RTCPeerConnection.prototype.getSenders) { - window.RTCPeerConnection.prototype.getSenders = function getSenders() { - this._senders = this._senders || []; - return this._senders.slice(); // return a copy of the internal state. - }; - var origAddTrack = window.RTCPeerConnection.prototype.addTrack; - window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { - var sender = origAddTrack.apply(this, arguments); - if (!sender) { - sender = shimSenderWithDtmf(this, track); - this._senders.push(sender); - } - return sender; - }; - - var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; - window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { - origRemoveTrack.apply(this, arguments); - var idx = this._senders.indexOf(sender); - if (idx !== -1) { - this._senders.splice(idx, 1); - } - }; - } - var origAddStream = window.RTCPeerConnection.prototype.addStream; - window.RTCPeerConnection.prototype.addStream = function addStream(stream) { - var _this2 = this; - - this._senders = this._senders || []; - origAddStream.apply(this, [stream]); - stream.getTracks().forEach(function (track) { - _this2._senders.push(shimSenderWithDtmf(_this2, track)); - }); - }; - - var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; - window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { - var _this3 = this; - - this._senders = this._senders || []; - origRemoveStream.apply(this, [stream]); - - stream.getTracks().forEach(function (track) { - var sender = _this3._senders.find(function (s) { - return s.track === track; - }); - if (sender) { - // remove sender - _this3._senders.splice(_this3._senders.indexOf(sender), 1); - } - }); - }; - } else if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && 'getSenders' in window.RTCPeerConnection.prototype && 'createDTMFSender' in window.RTCPeerConnection.prototype && window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) { - var origGetSenders = window.RTCPeerConnection.prototype.getSenders; - window.RTCPeerConnection.prototype.getSenders = function getSenders() { - var _this4 = this; - - var senders = origGetSenders.apply(this, []); - senders.forEach(function (sender) { - return sender._pc = _this4; - }); - return senders; - }; - - Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', { - get: function get() { - if (this._dtmf === undefined) { - if (this.track.kind === 'audio') { - this._dtmf = this._pc.createDTMFSender(this.track); - } else { - this._dtmf = null; - } - } - return this._dtmf; - } - }); - } -} - -function shimGetStats(window) { - if (!window.RTCPeerConnection) { - return; - } - - var origGetStats = window.RTCPeerConnection.prototype.getStats; - window.RTCPeerConnection.prototype.getStats = function getStats() { - var _this5 = this; - - var _arguments = Array.prototype.slice.call(arguments), - selector = _arguments[0], - onSucc = _arguments[1], - onErr = _arguments[2]; - - // If selector is a function then we are in the old style stats so just - // pass back the original getStats format to avoid breaking old users. - - - if (arguments.length > 0 && typeof selector === 'function') { - return origGetStats.apply(this, arguments); - } - - // When spec-style getStats is supported, return those when called with - // either no arguments or the selector argument is null. - if (origGetStats.length === 0 && (arguments.length === 0 || typeof selector !== 'function')) { - return origGetStats.apply(this, []); - } - - var fixChromeStats_ = function fixChromeStats_(response) { - var standardReport = {}; - var reports = response.result(); - reports.forEach(function (report) { - var standardStats = { - id: report.id, - timestamp: report.timestamp, - type: { - localcandidate: 'local-candidate', - remotecandidate: 'remote-candidate' - }[report.type] || report.type - }; - report.names().forEach(function (name) { - standardStats[name] = report.stat(name); - }); - standardReport[standardStats.id] = standardStats; - }); - - return standardReport; - }; - - // shim getStats with maplike support - var makeMapStats = function makeMapStats(stats) { - return new Map(Object.keys(stats).map(function (key) { - return [key, stats[key]]; - })); - }; - - if (arguments.length >= 2) { - var successCallbackWrapper_ = function successCallbackWrapper_(response) { - onSucc(makeMapStats(fixChromeStats_(response))); - }; - - return origGetStats.apply(this, [successCallbackWrapper_, selector]); - } - - // promise-support - return new Promise(function (resolve, reject) { - origGetStats.apply(_this5, [function (response) { - resolve(makeMapStats(fixChromeStats_(response))); - }, reject]); - }).then(onSucc, onErr); - }; -} - -function shimSenderReceiverGetStats(window) { - if (!((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && window.RTCRtpSender && window.RTCRtpReceiver)) { - return; - } - - // shim sender stats. - if (!('getStats' in window.RTCRtpSender.prototype)) { - var origGetSenders = window.RTCPeerConnection.prototype.getSenders; - if (origGetSenders) { - window.RTCPeerConnection.prototype.getSenders = function getSenders() { - var _this6 = this; - - var senders = origGetSenders.apply(this, []); - senders.forEach(function (sender) { - return sender._pc = _this6; - }); - return senders; - }; - } - - var origAddTrack = window.RTCPeerConnection.prototype.addTrack; - if (origAddTrack) { - window.RTCPeerConnection.prototype.addTrack = function addTrack() { - var sender = origAddTrack.apply(this, arguments); - sender._pc = this; - return sender; - }; - } - window.RTCRtpSender.prototype.getStats = function getStats() { - var sender = this; - return this._pc.getStats().then(function (result) { - return ( - /* Note: this will include stats of all senders that - * send a track with the same id as sender.track as - * it is not possible to identify the RTCRtpSender. - */ - utils.filterStats(result, sender.track, true) - ); - }); - }; - } - - // shim receiver stats. - if (!('getStats' in window.RTCRtpReceiver.prototype)) { - var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; - if (origGetReceivers) { - window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { - var _this7 = this; - - var receivers = origGetReceivers.apply(this, []); - receivers.forEach(function (receiver) { - return receiver._pc = _this7; - }); - return receivers; - }; - } - utils.wrapPeerConnectionEvent(window, 'track', function (e) { - e.receiver._pc = e.srcElement; - return e; - }); - window.RTCRtpReceiver.prototype.getStats = function getStats() { - var receiver = this; - return this._pc.getStats().then(function (result) { - return utils.filterStats(result, receiver.track, false); - }); - }; - } - - if (!('getStats' in window.RTCRtpSender.prototype && 'getStats' in window.RTCRtpReceiver.prototype)) { - return; - } - - // shim RTCPeerConnection.getStats(track). - var origGetStats = window.RTCPeerConnection.prototype.getStats; - window.RTCPeerConnection.prototype.getStats = function getStats() { - if (arguments.length > 0 && arguments[0] instanceof window.MediaStreamTrack) { - var track = arguments[0]; - var sender = void 0; - var receiver = void 0; - var err = void 0; - this.getSenders().forEach(function (s) { - if (s.track === track) { - if (sender) { - err = true; - } else { - sender = s; - } - } - }); - this.getReceivers().forEach(function (r) { - if (r.track === track) { - if (receiver) { - err = true; - } else { - receiver = r; - } - } - return r.track === track; - }); - if (err || sender && receiver) { - return Promise.reject(new DOMException('There are more than one sender or receiver for the track.', 'InvalidAccessError')); - } else if (sender) { - return sender.getStats(); - } else if (receiver) { - return receiver.getStats(); - } - return Promise.reject(new DOMException('There is no sender or receiver for the track.', 'InvalidAccessError')); - } - return origGetStats.apply(this, arguments); - }; -} - -function shimAddTrackRemoveTrackWithNative(window) { - // shim addTrack/removeTrack with native variants in order to make - // the interactions with legacy getLocalStreams behave as in other browsers. - // Keeps a mapping stream.id => [stream, rtpsenders...] - window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { - var _this8 = this; - - this._shimmedLocalStreams = this._shimmedLocalStreams || {}; - return Object.keys(this._shimmedLocalStreams).map(function (streamId) { - return _this8._shimmedLocalStreams[streamId][0]; - }); - }; - - var origAddTrack = window.RTCPeerConnection.prototype.addTrack; - window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { - if (!stream) { - return origAddTrack.apply(this, arguments); - } - this._shimmedLocalStreams = this._shimmedLocalStreams || {}; - - var sender = origAddTrack.apply(this, arguments); - if (!this._shimmedLocalStreams[stream.id]) { - this._shimmedLocalStreams[stream.id] = [stream, sender]; - } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) { - this._shimmedLocalStreams[stream.id].push(sender); - } - return sender; - }; - - var origAddStream = window.RTCPeerConnection.prototype.addStream; - window.RTCPeerConnection.prototype.addStream = function addStream(stream) { - var _this9 = this; - - this._shimmedLocalStreams = this._shimmedLocalStreams || {}; - - stream.getTracks().forEach(function (track) { - var alreadyExists = _this9.getSenders().find(function (s) { - return s.track === track; - }); - if (alreadyExists) { - throw new DOMException('Track already exists.', 'InvalidAccessError'); - } - }); - var existingSenders = this.getSenders(); - origAddStream.apply(this, arguments); - var newSenders = this.getSenders().filter(function (newSender) { - return existingSenders.indexOf(newSender) === -1; - }); - this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders); - }; - - var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; - window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { - this._shimmedLocalStreams = this._shimmedLocalStreams || {}; - delete this._shimmedLocalStreams[stream.id]; - return origRemoveStream.apply(this, arguments); - }; - - var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; - window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { - var _this10 = this; - - this._shimmedLocalStreams = this._shimmedLocalStreams || {}; - if (sender) { - Object.keys(this._shimmedLocalStreams).forEach(function (streamId) { - var idx = _this10._shimmedLocalStreams[streamId].indexOf(sender); - if (idx !== -1) { - _this10._shimmedLocalStreams[streamId].splice(idx, 1); - } - if (_this10._shimmedLocalStreams[streamId].length === 1) { - delete _this10._shimmedLocalStreams[streamId]; - } - }); - } - return origRemoveTrack.apply(this, arguments); - }; -} - -function shimAddTrackRemoveTrack(window) { - if (!window.RTCPeerConnection) { - return; - } - var browserDetails = utils.detectBrowser(window); - // shim addTrack and removeTrack. - if (window.RTCPeerConnection.prototype.addTrack && browserDetails.version >= 65) { - return shimAddTrackRemoveTrackWithNative(window); - } - - // also shim pc.getLocalStreams when addTrack is shimmed - // to return the original streams. - var origGetLocalStreams = window.RTCPeerConnection.prototype.getLocalStreams; - window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { - var _this11 = this; - - var nativeStreams = origGetLocalStreams.apply(this); - this._reverseStreams = this._reverseStreams || {}; - return nativeStreams.map(function (stream) { - return _this11._reverseStreams[stream.id]; - }); - }; - - var origAddStream = window.RTCPeerConnection.prototype.addStream; - window.RTCPeerConnection.prototype.addStream = function addStream(stream) { - var _this12 = this; - - this._streams = this._streams || {}; - this._reverseStreams = this._reverseStreams || {}; - - stream.getTracks().forEach(function (track) { - var alreadyExists = _this12.getSenders().find(function (s) { - return s.track === track; - }); - if (alreadyExists) { - throw new DOMException('Track already exists.', 'InvalidAccessError'); - } - }); - // Add identity mapping for consistency with addTrack. - // Unless this is being used with a stream from addTrack. - if (!this._reverseStreams[stream.id]) { - var newStream = new window.MediaStream(stream.getTracks()); - this._streams[stream.id] = newStream; - this._reverseStreams[newStream.id] = stream; - stream = newStream; - } - origAddStream.apply(this, [stream]); - }; - - var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; - window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { - this._streams = this._streams || {}; - this._reverseStreams = this._reverseStreams || {}; - - origRemoveStream.apply(this, [this._streams[stream.id] || stream]); - delete this._reverseStreams[this._streams[stream.id] ? this._streams[stream.id].id : stream.id]; - delete this._streams[stream.id]; - }; - - window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { - var _this13 = this; - - if (this.signalingState === 'closed') { - throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); - } - var streams = [].slice.call(arguments, 1); - if (streams.length !== 1 || !streams[0].getTracks().find(function (t) { - return t === track; - })) { - // this is not fully correct but all we can manage without - // [[associated MediaStreams]] internal slot. - throw new DOMException('The adapter.js addTrack polyfill only supports a single ' + ' stream which is associated with the specified track.', 'NotSupportedError'); - } - - var alreadyExists = this.getSenders().find(function (s) { - return s.track === track; - }); - if (alreadyExists) { - throw new DOMException('Track already exists.', 'InvalidAccessError'); - } - - this._streams = this._streams || {}; - this._reverseStreams = this._reverseStreams || {}; - var oldStream = this._streams[stream.id]; - if (oldStream) { - // this is using odd Chrome behaviour, use with caution: - // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815 - // Note: we rely on the high-level addTrack/dtmf shim to - // create the sender with a dtmf sender. - oldStream.addTrack(track); - - // Trigger ONN async. - Promise.resolve().then(function () { - _this13.dispatchEvent(new Event('negotiationneeded')); - }); - } else { - var newStream = new window.MediaStream([track]); - this._streams[stream.id] = newStream; - this._reverseStreams[newStream.id] = stream; - this.addStream(newStream); - } - return this.getSenders().find(function (s) { - return s.track === track; - }); - }; - - // replace the internal stream id with the external one and - // vice versa. - function replaceInternalStreamId(pc, description) { - var sdp = description.sdp; - Object.keys(pc._reverseStreams || []).forEach(function (internalId) { - var externalStream = pc._reverseStreams[internalId]; - var internalStream = pc._streams[externalStream.id]; - sdp = sdp.replace(new RegExp(internalStream.id, 'g'), externalStream.id); - }); - return new RTCSessionDescription({ - type: description.type, - sdp: sdp - }); - } - function replaceExternalStreamId(pc, description) { - var sdp = description.sdp; - Object.keys(pc._reverseStreams || []).forEach(function (internalId) { - var externalStream = pc._reverseStreams[internalId]; - var internalStream = pc._streams[externalStream.id]; - sdp = sdp.replace(new RegExp(externalStream.id, 'g'), internalStream.id); - }); - return new RTCSessionDescription({ - type: description.type, - sdp: sdp - }); - } - ['createOffer', 'createAnswer'].forEach(function (method) { - var nativeMethod = window.RTCPeerConnection.prototype[method]; - var methodObj = _defineProperty({}, method, function () { - var _this14 = this; - - var args = arguments; - var isLegacyCall = arguments.length && typeof arguments[0] === 'function'; - if (isLegacyCall) { - return nativeMethod.apply(this, [function (description) { - var desc = replaceInternalStreamId(_this14, description); - args[0].apply(null, [desc]); - }, function (err) { - if (args[1]) { - args[1].apply(null, err); - } - }, arguments[2]]); - } - return nativeMethod.apply(this, arguments).then(function (description) { - return replaceInternalStreamId(_this14, description); - }); - }); - window.RTCPeerConnection.prototype[method] = methodObj[method]; - }); - - var origSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; - window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { - if (!arguments.length || !arguments[0].type) { - return origSetLocalDescription.apply(this, arguments); - } - arguments[0] = replaceExternalStreamId(this, arguments[0]); - return origSetLocalDescription.apply(this, arguments); - }; - - // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier - - var origLocalDescription = Object.getOwnPropertyDescriptor(window.RTCPeerConnection.prototype, 'localDescription'); - Object.defineProperty(window.RTCPeerConnection.prototype, 'localDescription', { - get: function get() { - var description = origLocalDescription.get.apply(this); - if (description.type === '') { - return description; - } - return replaceInternalStreamId(this, description); - } - }); - - window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { - var _this15 = this; - - if (this.signalingState === 'closed') { - throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); - } - // We can not yet check for sender instanceof RTCRtpSender - // since we shim RTPSender. So we check if sender._pc is set. - if (!sender._pc) { - throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' + 'does not implement interface RTCRtpSender.', 'TypeError'); - } - var isLocal = sender._pc === this; - if (!isLocal) { - throw new DOMException('Sender was not created by this connection.', 'InvalidAccessError'); - } - - // Search for the native stream the senders track belongs to. - this._streams = this._streams || {}; - var stream = void 0; - Object.keys(this._streams).forEach(function (streamid) { - var hasTrack = _this15._streams[streamid].getTracks().find(function (track) { - return sender.track === track; - }); - if (hasTrack) { - stream = _this15._streams[streamid]; - } - }); - - if (stream) { - if (stream.getTracks().length === 1) { - // if this is the last track of the stream, remove the stream. This - // takes care of any shimmed _senders. - this.removeStream(this._reverseStreams[stream.id]); - } else { - // relying on the same odd chrome behaviour as above. - stream.removeTrack(sender.track); - } - this.dispatchEvent(new Event('negotiationneeded')); - } - }; -} - -function shimPeerConnection(window) { - var browserDetails = utils.detectBrowser(window); - - if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) { - // very basic support for old versions. - window.RTCPeerConnection = window.webkitRTCPeerConnection; - } - if (!window.RTCPeerConnection) { - return; - } - - var addIceCandidateNullSupported = window.RTCPeerConnection.prototype.addIceCandidate.length === 0; - - // shim implicit creation of RTCSessionDescription/RTCIceCandidate - if (browserDetails.version < 53) { - ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { - var nativeMethod = window.RTCPeerConnection.prototype[method]; - var methodObj = _defineProperty({}, method, function () { - arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); - return nativeMethod.apply(this, arguments); - }); - window.RTCPeerConnection.prototype[method] = methodObj[method]; - }); - } - - // support for addIceCandidate(null or undefined) - var nativeAddIceCandidate = window.RTCPeerConnection.prototype.addIceCandidate; - window.RTCPeerConnection.prototype.addIceCandidate = function addIceCandidate() { - if (!addIceCandidateNullSupported && !arguments[0]) { - if (arguments[1]) { - arguments[1].apply(null); - } - return Promise.resolve(); - } - // Firefox 68+ emits and processes {candidate: "", ...}, ignore - // in older versions. Native support planned for Chrome M77. - if (browserDetails.version < 78 && arguments[0] && arguments[0].candidate === '') { - return Promise.resolve(); - } - return nativeAddIceCandidate.apply(this, arguments); - }; -} - -// Attempt to fix ONN in plan-b mode. -function fixNegotiationNeeded(window) { - var browserDetails = utils.detectBrowser(window); - utils.wrapPeerConnectionEvent(window, 'negotiationneeded', function (e) { - var pc = e.target; - if (browserDetails.version < 72 || pc.getConfiguration && pc.getConfiguration().sdpSemantics === 'plan-b') { - if (pc.signalingState !== 'stable') { - return; - } - } - return e; - }); -} - -},{"../utils.js":15,"./getdisplaymedia":4,"./getusermedia":5}],4:[function(require,module,exports){ -/* - * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -/* eslint-env node */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.shimGetDisplayMedia = shimGetDisplayMedia; -function shimGetDisplayMedia(window, getSourceId) { - if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { - return; - } - if (!window.navigator.mediaDevices) { - return; - } - // getSourceId is a function that returns a promise resolving with - // the sourceId of the screen/window/tab to be shared. - if (typeof getSourceId !== 'function') { - console.error('shimGetDisplayMedia: getSourceId argument is not ' + 'a function'); - return; - } - window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { - return getSourceId(constraints).then(function (sourceId) { - var widthSpecified = constraints.video && constraints.video.width; - var heightSpecified = constraints.video && constraints.video.height; - var frameRateSpecified = constraints.video && constraints.video.frameRate; - constraints.video = { - mandatory: { - chromeMediaSource: 'desktop', - chromeMediaSourceId: sourceId, - maxFrameRate: frameRateSpecified || 3 - } - }; - if (widthSpecified) { - constraints.video.mandatory.maxWidth = widthSpecified; - } - if (heightSpecified) { - constraints.video.mandatory.maxHeight = heightSpecified; - } - return window.navigator.mediaDevices.getUserMedia(constraints); - }); - }; -} - -},{}],5:[function(require,module,exports){ -/* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -/* eslint-env node */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.shimGetUserMedia = shimGetUserMedia; - -var _utils = require('../utils.js'); - -var utils = _interopRequireWildcard(_utils); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var logging = utils.log; - -function shimGetUserMedia(window) { - var navigator = window && window.navigator; - - if (!navigator.mediaDevices) { - return; - } - - var browserDetails = utils.detectBrowser(window); - - var constraintsToChrome_ = function constraintsToChrome_(c) { - if ((typeof c === 'undefined' ? 'undefined' : _typeof(c)) !== 'object' || c.mandatory || c.optional) { - return c; - } - var cc = {}; - Object.keys(c).forEach(function (key) { - if (key === 'require' || key === 'advanced' || key === 'mediaSource') { - return; - } - var r = _typeof(c[key]) === 'object' ? c[key] : { ideal: c[key] }; - if (r.exact !== undefined && typeof r.exact === 'number') { - r.min = r.max = r.exact; - } - var oldname_ = function oldname_(prefix, name) { - if (prefix) { - return prefix + name.charAt(0).toUpperCase() + name.slice(1); - } - return name === 'deviceId' ? 'sourceId' : name; - }; - if (r.ideal !== undefined) { - cc.optional = cc.optional || []; - var oc = {}; - if (typeof r.ideal === 'number') { - oc[oldname_('min', key)] = r.ideal; - cc.optional.push(oc); - oc = {}; - oc[oldname_('max', key)] = r.ideal; - cc.optional.push(oc); - } else { - oc[oldname_('', key)] = r.ideal; - cc.optional.push(oc); - } - } - if (r.exact !== undefined && typeof r.exact !== 'number') { - cc.mandatory = cc.mandatory || {}; - cc.mandatory[oldname_('', key)] = r.exact; - } else { - ['min', 'max'].forEach(function (mix) { - if (r[mix] !== undefined) { - cc.mandatory = cc.mandatory || {}; - cc.mandatory[oldname_(mix, key)] = r[mix]; - } - }); - } - }); - if (c.advanced) { - cc.optional = (cc.optional || []).concat(c.advanced); - } - return cc; - }; - - var shimConstraints_ = function shimConstraints_(constraints, func) { - if (browserDetails.version >= 61) { - return func(constraints); - } - constraints = JSON.parse(JSON.stringify(constraints)); - if (constraints && _typeof(constraints.audio) === 'object') { - var remap = function remap(obj, a, b) { - if (a in obj && !(b in obj)) { - obj[b] = obj[a]; - delete obj[a]; - } - }; - constraints = JSON.parse(JSON.stringify(constraints)); - remap(constraints.audio, 'autoGainControl', 'googAutoGainControl'); - remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression'); - constraints.audio = constraintsToChrome_(constraints.audio); - } - if (constraints && _typeof(constraints.video) === 'object') { - // Shim facingMode for mobile & surface pro. - var face = constraints.video.facingMode; - face = face && ((typeof face === 'undefined' ? 'undefined' : _typeof(face)) === 'object' ? face : { ideal: face }); - var getSupportedFacingModeLies = browserDetails.version < 66; - - if (face && (face.exact === 'user' || face.exact === 'environment' || face.ideal === 'user' || face.ideal === 'environment') && !(navigator.mediaDevices.getSupportedConstraints && navigator.mediaDevices.getSupportedConstraints().facingMode && !getSupportedFacingModeLies)) { - delete constraints.video.facingMode; - var matches = void 0; - if (face.exact === 'environment' || face.ideal === 'environment') { - matches = ['back', 'rear']; - } else if (face.exact === 'user' || face.ideal === 'user') { - matches = ['front']; - } - if (matches) { - // Look for matches in label, or use last cam for back (typical). - return navigator.mediaDevices.enumerateDevices().then(function (devices) { - devices = devices.filter(function (d) { - return d.kind === 'videoinput'; - }); - var dev = devices.find(function (d) { - return matches.some(function (match) { - return d.label.toLowerCase().includes(match); - }); - }); - if (!dev && devices.length && matches.includes('back')) { - dev = devices[devices.length - 1]; // more likely the back cam - } - if (dev) { - constraints.video.deviceId = face.exact ? { exact: dev.deviceId } : { ideal: dev.deviceId }; - } - constraints.video = constraintsToChrome_(constraints.video); - logging('chrome: ' + JSON.stringify(constraints)); - return func(constraints); - }); - } - } - constraints.video = constraintsToChrome_(constraints.video); - } - logging('chrome: ' + JSON.stringify(constraints)); - return func(constraints); - }; - - var shimError_ = function shimError_(e) { - if (browserDetails.version >= 64) { - return e; - } - return { - name: { - PermissionDeniedError: 'NotAllowedError', - PermissionDismissedError: 'NotAllowedError', - InvalidStateError: 'NotAllowedError', - DevicesNotFoundError: 'NotFoundError', - ConstraintNotSatisfiedError: 'OverconstrainedError', - TrackStartError: 'NotReadableError', - MediaDeviceFailedDueToShutdown: 'NotAllowedError', - MediaDeviceKillSwitchOn: 'NotAllowedError', - TabCaptureError: 'AbortError', - ScreenCaptureError: 'AbortError', - DeviceCaptureError: 'AbortError' - }[e.name] || e.name, - message: e.message, - constraint: e.constraint || e.constraintName, - toString: function toString() { - return this.name + (this.message && ': ') + this.message; - } - }; - }; - - var getUserMedia_ = function getUserMedia_(constraints, onSuccess, onError) { - shimConstraints_(constraints, function (c) { - navigator.webkitGetUserMedia(c, onSuccess, function (e) { - if (onError) { - onError(shimError_(e)); - } - }); - }); - }; - navigator.getUserMedia = getUserMedia_.bind(navigator); - - // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia - // function which returns a Promise, it does not accept spec-style - // constraints. - if (navigator.mediaDevices.getUserMedia) { - var origGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); - navigator.mediaDevices.getUserMedia = function (cs) { - return shimConstraints_(cs, function (c) { - return origGetUserMedia(c).then(function (stream) { - if (c.audio && !stream.getAudioTracks().length || c.video && !stream.getVideoTracks().length) { - stream.getTracks().forEach(function (track) { - track.stop(); - }); - throw new DOMException('', 'NotFoundError'); - } - return stream; - }, function (e) { - return Promise.reject(shimError_(e)); - }); - }); - }; - } -} - -},{"../utils.js":15}],6:[function(require,module,exports){ -/* - * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -/* eslint-env node */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.shimRTCIceCandidate = shimRTCIceCandidate; -exports.shimMaxMessageSize = shimMaxMessageSize; -exports.shimSendThrowTypeError = shimSendThrowTypeError; -exports.shimConnectionState = shimConnectionState; -exports.removeAllowExtmapMixed = removeAllowExtmapMixed; - -var _sdp = require('sdp'); - -var _sdp2 = _interopRequireDefault(_sdp); - -var _utils = require('./utils'); - -var utils = _interopRequireWildcard(_utils); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function shimRTCIceCandidate(window) { - // foundation is arbitrarily chosen as an indicator for full support for - // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface - if (!window.RTCIceCandidate || window.RTCIceCandidate && 'foundation' in window.RTCIceCandidate.prototype) { - return; - } - - var NativeRTCIceCandidate = window.RTCIceCandidate; - window.RTCIceCandidate = function RTCIceCandidate(args) { - // Remove the a= which shouldn't be part of the candidate string. - if ((typeof args === 'undefined' ? 'undefined' : _typeof(args)) === 'object' && args.candidate && args.candidate.indexOf('a=') === 0) { - args = JSON.parse(JSON.stringify(args)); - args.candidate = args.candidate.substr(2); - } - - if (args.candidate && args.candidate.length) { - // Augment the native candidate with the parsed fields. - var nativeCandidate = new NativeRTCIceCandidate(args); - var parsedCandidate = _sdp2.default.parseCandidate(args.candidate); - var augmentedCandidate = Object.assign(nativeCandidate, parsedCandidate); - - // Add a serializer that does not serialize the extra attributes. - augmentedCandidate.toJSON = function toJSON() { - return { - candidate: augmentedCandidate.candidate, - sdpMid: augmentedCandidate.sdpMid, - sdpMLineIndex: augmentedCandidate.sdpMLineIndex, - usernameFragment: augmentedCandidate.usernameFragment - }; - }; - return augmentedCandidate; - } - return new NativeRTCIceCandidate(args); - }; - window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype; - - // Hook up the augmented candidate in onicecandidate and - // addEventListener('icecandidate', ...) - utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { - if (e.candidate) { - Object.defineProperty(e, 'candidate', { - value: new window.RTCIceCandidate(e.candidate), - writable: 'false' - }); - } - return e; - }); -} - -function shimMaxMessageSize(window) { - if (!window.RTCPeerConnection) { - return; - } - var browserDetails = utils.detectBrowser(window); - - if (!('sctp' in window.RTCPeerConnection.prototype)) { - Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', { - get: function get() { - return typeof this._sctp === 'undefined' ? null : this._sctp; - } - }); - } - - var sctpInDescription = function sctpInDescription(description) { - if (!description || !description.sdp) { - return false; - } - var sections = _sdp2.default.splitSections(description.sdp); - sections.shift(); - return sections.some(function (mediaSection) { - var mLine = _sdp2.default.parseMLine(mediaSection); - return mLine && mLine.kind === 'application' && mLine.protocol.indexOf('SCTP') !== -1; - }); - }; - - var getRemoteFirefoxVersion = function getRemoteFirefoxVersion(description) { - // TODO: Is there a better solution for detecting Firefox? - var match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/); - if (match === null || match.length < 2) { - return -1; - } - var version = parseInt(match[1], 10); - // Test for NaN (yes, this is ugly) - return version !== version ? -1 : version; - }; - - var getCanSendMaxMessageSize = function getCanSendMaxMessageSize(remoteIsFirefox) { - // Every implementation we know can send at least 64 KiB. - // Note: Although Chrome is technically able to send up to 256 KiB, the - // data does not reach the other peer reliably. - // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419 - var canSendMaxMessageSize = 65536; - if (browserDetails.browser === 'firefox') { - if (browserDetails.version < 57) { - if (remoteIsFirefox === -1) { - // FF < 57 will send in 16 KiB chunks using the deprecated PPID - // fragmentation. - canSendMaxMessageSize = 16384; - } else { - // However, other FF (and RAWRTC) can reassemble PPID-fragmented - // messages. Thus, supporting ~2 GiB when sending. - canSendMaxMessageSize = 2147483637; - } - } else if (browserDetails.version < 60) { - // Currently, all FF >= 57 will reset the remote maximum message size - // to the default value when a data channel is created at a later - // stage. :( - // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 - canSendMaxMessageSize = browserDetails.version === 57 ? 65535 : 65536; - } else { - // FF >= 60 supports sending ~2 GiB - canSendMaxMessageSize = 2147483637; - } - } - return canSendMaxMessageSize; - }; - - var getMaxMessageSize = function getMaxMessageSize(description, remoteIsFirefox) { - // Note: 65536 bytes is the default value from the SDP spec. Also, - // every implementation we know supports receiving 65536 bytes. - var maxMessageSize = 65536; - - // FF 57 has a slightly incorrect default remote max message size, so - // we need to adjust it here to avoid a failure when sending. - // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697 - if (browserDetails.browser === 'firefox' && browserDetails.version === 57) { - maxMessageSize = 65535; - } - - var match = _sdp2.default.matchPrefix(description.sdp, 'a=max-message-size:'); - if (match.length > 0) { - maxMessageSize = parseInt(match[0].substr(19), 10); - } else if (browserDetails.browser === 'firefox' && remoteIsFirefox !== -1) { - // If the maximum message size is not present in the remote SDP and - // both local and remote are Firefox, the remote peer can receive - // ~2 GiB. - maxMessageSize = 2147483637; - } - return maxMessageSize; - }; - - var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; - window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { - this._sctp = null; - // Chrome decided to not expose .sctp in plan-b mode. - // As usual, adapter.js has to do an 'ugly worakaround' - // to cover up the mess. - if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) { - var _getConfiguration = this.getConfiguration(), - sdpSemantics = _getConfiguration.sdpSemantics; - - if (sdpSemantics === 'plan-b') { - Object.defineProperty(this, 'sctp', { - get: function get() { - return typeof this._sctp === 'undefined' ? null : this._sctp; - }, - - enumerable: true, - configurable: true - }); - } - } - - if (sctpInDescription(arguments[0])) { - // Check if the remote is FF. - var isFirefox = getRemoteFirefoxVersion(arguments[0]); - - // Get the maximum message size the local peer is capable of sending - var canSendMMS = getCanSendMaxMessageSize(isFirefox); - - // Get the maximum message size of the remote peer. - var remoteMMS = getMaxMessageSize(arguments[0], isFirefox); - - // Determine final maximum message size - var maxMessageSize = void 0; - if (canSendMMS === 0 && remoteMMS === 0) { - maxMessageSize = Number.POSITIVE_INFINITY; - } else if (canSendMMS === 0 || remoteMMS === 0) { - maxMessageSize = Math.max(canSendMMS, remoteMMS); - } else { - maxMessageSize = Math.min(canSendMMS, remoteMMS); - } - - // Create a dummy RTCSctpTransport object and the 'maxMessageSize' - // attribute. - var sctp = {}; - Object.defineProperty(sctp, 'maxMessageSize', { - get: function get() { - return maxMessageSize; - } - }); - this._sctp = sctp; - } - - return origSetRemoteDescription.apply(this, arguments); - }; -} - -function shimSendThrowTypeError(window) { - if (!(window.RTCPeerConnection && 'createDataChannel' in window.RTCPeerConnection.prototype)) { - return; - } - - // Note: Although Firefox >= 57 has a native implementation, the maximum - // message size can be reset for all data channels at a later stage. - // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 - - function wrapDcSend(dc, pc) { - var origDataChannelSend = dc.send; - dc.send = function send() { - var data = arguments[0]; - var length = data.length || data.size || data.byteLength; - if (dc.readyState === 'open' && pc.sctp && length > pc.sctp.maxMessageSize) { - throw new TypeError('Message too large (can send a maximum of ' + pc.sctp.maxMessageSize + ' bytes)'); - } - return origDataChannelSend.apply(dc, arguments); - }; - } - var origCreateDataChannel = window.RTCPeerConnection.prototype.createDataChannel; - window.RTCPeerConnection.prototype.createDataChannel = function createDataChannel() { - var dataChannel = origCreateDataChannel.apply(this, arguments); - wrapDcSend(dataChannel, this); - return dataChannel; - }; - utils.wrapPeerConnectionEvent(window, 'datachannel', function (e) { - wrapDcSend(e.channel, e.target); - return e; - }); -} - -/* shims RTCConnectionState by pretending it is the same as iceConnectionState. - * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12 - * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect - * since DTLS failures would be hidden. See - * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827 - * for the Firefox tracking bug. - */ -function shimConnectionState(window) { - if (!window.RTCPeerConnection || 'connectionState' in window.RTCPeerConnection.prototype) { - return; - } - var proto = window.RTCPeerConnection.prototype; - Object.defineProperty(proto, 'connectionState', { - get: function get() { - return { - completed: 'connected', - checking: 'connecting' - }[this.iceConnectionState] || this.iceConnectionState; - }, - - enumerable: true, - configurable: true - }); - Object.defineProperty(proto, 'onconnectionstatechange', { - get: function get() { - return this._onconnectionstatechange || null; - }, - set: function set(cb) { - if (this._onconnectionstatechange) { - this.removeEventListener('connectionstatechange', this._onconnectionstatechange); - delete this._onconnectionstatechange; - } - if (cb) { - this.addEventListener('connectionstatechange', this._onconnectionstatechange = cb); - } - }, - - enumerable: true, - configurable: true - }); - - ['setLocalDescription', 'setRemoteDescription'].forEach(function (method) { - var origMethod = proto[method]; - proto[method] = function () { - if (!this._connectionstatechangepoly) { - this._connectionstatechangepoly = function (e) { - var pc = e.target; - if (pc._lastConnectionState !== pc.connectionState) { - pc._lastConnectionState = pc.connectionState; - var newEvent = new Event('connectionstatechange', e); - pc.dispatchEvent(newEvent); - } - return e; - }; - this.addEventListener('iceconnectionstatechange', this._connectionstatechangepoly); - } - return origMethod.apply(this, arguments); - }; - }); -} - -function removeAllowExtmapMixed(window) { - /* remove a=extmap-allow-mixed for webrtc.org < M71 */ - if (!window.RTCPeerConnection) { - return; - } - var browserDetails = utils.detectBrowser(window); - if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) { - return; - } - if (browserDetails.browser === 'safari' && browserDetails.version >= 605) { - return; - } - var nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription; - window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription(desc) { - if (desc && desc.sdp && desc.sdp.indexOf('\na=extmap-allow-mixed') !== -1) { - desc.sdp = desc.sdp.split('\n').filter(function (line) { - return line.trim() !== 'a=extmap-allow-mixed'; - }).join('\n'); - } - return nativeSRD.apply(this, arguments); - }; -} - -},{"./utils":15,"sdp":17}],7:[function(require,module,exports){ -/* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -/* eslint-env node */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.shimGetDisplayMedia = exports.shimGetUserMedia = undefined; - -var _getusermedia = require('./getusermedia'); - -Object.defineProperty(exports, 'shimGetUserMedia', { - enumerable: true, - get: function get() { - return _getusermedia.shimGetUserMedia; - } -}); - -var _getdisplaymedia = require('./getdisplaymedia'); - -Object.defineProperty(exports, 'shimGetDisplayMedia', { - enumerable: true, - get: function get() { - return _getdisplaymedia.shimGetDisplayMedia; - } -}); -exports.shimPeerConnection = shimPeerConnection; -exports.shimReplaceTrack = shimReplaceTrack; - -var _utils = require('../utils'); - -var utils = _interopRequireWildcard(_utils); - -var _filtericeservers = require('./filtericeservers'); - -var _rtcpeerconnectionShim = require('rtcpeerconnection-shim'); - -var _rtcpeerconnectionShim2 = _interopRequireDefault(_rtcpeerconnectionShim); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function shimPeerConnection(window) { - var browserDetails = utils.detectBrowser(window); - - if (window.RTCIceGatherer) { - if (!window.RTCIceCandidate) { - window.RTCIceCandidate = function RTCIceCandidate(args) { - return args; - }; - } - if (!window.RTCSessionDescription) { - window.RTCSessionDescription = function RTCSessionDescription(args) { - return args; - }; - } - // this adds an additional event listener to MediaStrackTrack that signals - // when a tracks enabled property was changed. Workaround for a bug in - // addStream, see below. No longer required in 15025+ - if (browserDetails.version < 15025) { - var origMSTEnabled = Object.getOwnPropertyDescriptor(window.MediaStreamTrack.prototype, 'enabled'); - Object.defineProperty(window.MediaStreamTrack.prototype, 'enabled', { - set: function set(value) { - origMSTEnabled.set.call(this, value); - var ev = new Event('enabled'); - ev.enabled = value; - this.dispatchEvent(ev); - } - }); - } - } - - // ORTC defines the DTMF sender a bit different. - // https://github.com/w3c/ortc/issues/714 - if (window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) { - Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', { - get: function get() { - if (this._dtmf === undefined) { - if (this.track.kind === 'audio') { - this._dtmf = new window.RTCDtmfSender(this); - } else if (this.track.kind === 'video') { - this._dtmf = null; - } - } - return this._dtmf; - } - }); - } - // Edge currently only implements the RTCDtmfSender, not the - // RTCDTMFSender alias. See http://draft.ortc.org/#rtcdtmfsender2* - if (window.RTCDtmfSender && !window.RTCDTMFSender) { - window.RTCDTMFSender = window.RTCDtmfSender; - } - - var RTCPeerConnectionShim = (0, _rtcpeerconnectionShim2.default)(window, browserDetails.version); - window.RTCPeerConnection = function RTCPeerConnection(config) { - if (config && config.iceServers) { - config.iceServers = (0, _filtericeservers.filterIceServers)(config.iceServers, browserDetails.version); - utils.log('ICE servers after filtering:', config.iceServers); - } - return new RTCPeerConnectionShim(config); - }; - window.RTCPeerConnection.prototype = RTCPeerConnectionShim.prototype; -} - -function shimReplaceTrack(window) { - // ORTC has replaceTrack -- https://github.com/w3c/ortc/issues/614 - if (window.RTCRtpSender && !('replaceTrack' in window.RTCRtpSender.prototype)) { - window.RTCRtpSender.prototype.replaceTrack = window.RTCRtpSender.prototype.setTrack; - } -} - -},{"../utils":15,"./filtericeservers":8,"./getdisplaymedia":9,"./getusermedia":10,"rtcpeerconnection-shim":16}],8:[function(require,module,exports){ -/* - * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -/* eslint-env node */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.filterIceServers = filterIceServers; - -var _utils = require('../utils'); - -var utils = _interopRequireWildcard(_utils); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -// Edge does not like -// 1) stun: filtered after 14393 unless ?transport=udp is present -// 2) turn: that does not have all of turn:host:port?transport=udp -// 3) turn: with ipv6 addresses -// 4) turn: occurring muliple times -function filterIceServers(iceServers, edgeVersion) { - var hasTurn = false; - iceServers = JSON.parse(JSON.stringify(iceServers)); - return iceServers.filter(function (server) { - if (server && (server.urls || server.url)) { - var urls = server.urls || server.url; - if (server.url && !server.urls) { - utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls'); - } - var isString = typeof urls === 'string'; - if (isString) { - urls = [urls]; - } - urls = urls.filter(function (url) { - // filter STUN unconditionally. - if (url.indexOf('stun:') === 0) { - return false; - } - - var validTurn = url.startsWith('turn') && !url.startsWith('turn:[') && url.includes('transport=udp'); - if (validTurn && !hasTurn) { - hasTurn = true; - return true; - } - return validTurn && !hasTurn; - }); - - delete server.url; - server.urls = isString ? urls[0] : urls; - return !!urls.length; - } - }); -} - -},{"../utils":15}],9:[function(require,module,exports){ -/* - * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -/* eslint-env node */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.shimGetDisplayMedia = shimGetDisplayMedia; -function shimGetDisplayMedia(window) { - if (!('getDisplayMedia' in window.navigator)) { - return; - } - if (!window.navigator.mediaDevices) { - return; - } - if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { - return; - } - window.navigator.mediaDevices.getDisplayMedia = window.navigator.getDisplayMedia.bind(window.navigator); -} - -},{}],10:[function(require,module,exports){ -/* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -/* eslint-env node */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.shimGetUserMedia = shimGetUserMedia; -function shimGetUserMedia(window) { - var navigator = window && window.navigator; - - var shimError_ = function shimError_(e) { - return { - name: { PermissionDeniedError: 'NotAllowedError' }[e.name] || e.name, - message: e.message, - constraint: e.constraint, - toString: function toString() { - return this.name; - } - }; - }; - - // getUserMedia error shim. - var origGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); - navigator.mediaDevices.getUserMedia = function (c) { - return origGetUserMedia(c).catch(function (e) { - return Promise.reject(shimError_(e)); - }); - }; -} - -},{}],11:[function(require,module,exports){ -/* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -/* eslint-env node */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.shimGetDisplayMedia = exports.shimGetUserMedia = undefined; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _getusermedia = require('./getusermedia'); - -Object.defineProperty(exports, 'shimGetUserMedia', { - enumerable: true, - get: function get() { - return _getusermedia.shimGetUserMedia; - } -}); - -var _getdisplaymedia = require('./getdisplaymedia'); - -Object.defineProperty(exports, 'shimGetDisplayMedia', { - enumerable: true, - get: function get() { - return _getdisplaymedia.shimGetDisplayMedia; - } -}); -exports.shimOnTrack = shimOnTrack; -exports.shimPeerConnection = shimPeerConnection; -exports.shimSenderGetStats = shimSenderGetStats; -exports.shimReceiverGetStats = shimReceiverGetStats; -exports.shimRemoveStream = shimRemoveStream; -exports.shimRTCDataChannel = shimRTCDataChannel; -exports.shimAddTransceiver = shimAddTransceiver; -exports.shimGetParameters = shimGetParameters; -exports.shimCreateOffer = shimCreateOffer; -exports.shimCreateAnswer = shimCreateAnswer; - -var _utils = require('../utils'); - -var utils = _interopRequireWildcard(_utils); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function shimOnTrack(window) { - if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { - Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { - get: function get() { - return { receiver: this.receiver }; - } - }); - } -} - -function shimPeerConnection(window) { - var browserDetails = utils.detectBrowser(window); - - if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== 'object' || !(window.RTCPeerConnection || window.mozRTCPeerConnection)) { - return; // probably media.peerconnection.enabled=false in about:config - } - if (!window.RTCPeerConnection && window.mozRTCPeerConnection) { - // very basic support for old versions. - window.RTCPeerConnection = window.mozRTCPeerConnection; - } - - if (browserDetails.version < 53) { - // shim away need for obsolete RTCIceCandidate/RTCSessionDescription. - ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { - var nativeMethod = window.RTCPeerConnection.prototype[method]; - var methodObj = _defineProperty({}, method, function () { - arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); - return nativeMethod.apply(this, arguments); - }); - window.RTCPeerConnection.prototype[method] = methodObj[method]; - }); - } - - // support for addIceCandidate(null or undefined) - // as well as ignoring {sdpMid, candidate: ""} - if (browserDetails.version < 68) { - var nativeAddIceCandidate = window.RTCPeerConnection.prototype.addIceCandidate; - window.RTCPeerConnection.prototype.addIceCandidate = function addIceCandidate() { - if (!arguments[0]) { - if (arguments[1]) { - arguments[1].apply(null); - } - return Promise.resolve(); - } - // Firefox 68+ emits and processes {candidate: "", ...}, ignore - // in older versions. - if (arguments[0] && arguments[0].candidate === '') { - return Promise.resolve(); - } - return nativeAddIceCandidate.apply(this, arguments); - }; - } - - var modernStatsTypes = { - inboundrtp: 'inbound-rtp', - outboundrtp: 'outbound-rtp', - candidatepair: 'candidate-pair', - localcandidate: 'local-candidate', - remotecandidate: 'remote-candidate' - }; - - var nativeGetStats = window.RTCPeerConnection.prototype.getStats; - window.RTCPeerConnection.prototype.getStats = function getStats() { - var _arguments = Array.prototype.slice.call(arguments), - selector = _arguments[0], - onSucc = _arguments[1], - onErr = _arguments[2]; - - return nativeGetStats.apply(this, [selector || null]).then(function (stats) { - if (browserDetails.version < 53 && !onSucc) { - // Shim only promise getStats with spec-hyphens in type names - // Leave callback version alone; misc old uses of forEach before Map - try { - stats.forEach(function (stat) { - stat.type = modernStatsTypes[stat.type] || stat.type; - }); - } catch (e) { - if (e.name !== 'TypeError') { - throw e; - } - // Avoid TypeError: "type" is read-only, in old versions. 34-43ish - stats.forEach(function (stat, i) { - stats.set(i, Object.assign({}, stat, { - type: modernStatsTypes[stat.type] || stat.type - })); - }); - } - } - return stats; - }).then(onSucc, onErr); - }; -} - -function shimSenderGetStats(window) { - if (!((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { - return; - } - if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) { - return; - } - var origGetSenders = window.RTCPeerConnection.prototype.getSenders; - if (origGetSenders) { - window.RTCPeerConnection.prototype.getSenders = function getSenders() { - var _this = this; - - var senders = origGetSenders.apply(this, []); - senders.forEach(function (sender) { - return sender._pc = _this; - }); - return senders; - }; - } - - var origAddTrack = window.RTCPeerConnection.prototype.addTrack; - if (origAddTrack) { - window.RTCPeerConnection.prototype.addTrack = function addTrack() { - var sender = origAddTrack.apply(this, arguments); - sender._pc = this; - return sender; - }; - } - window.RTCRtpSender.prototype.getStats = function getStats() { - return this.track ? this._pc.getStats(this.track) : Promise.resolve(new Map()); - }; -} - -function shimReceiverGetStats(window) { - if (!((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { - return; - } - if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) { - return; - } - var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; - if (origGetReceivers) { - window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { - var _this2 = this; - - var receivers = origGetReceivers.apply(this, []); - receivers.forEach(function (receiver) { - return receiver._pc = _this2; - }); - return receivers; - }; - } - utils.wrapPeerConnectionEvent(window, 'track', function (e) { - e.receiver._pc = e.srcElement; - return e; - }); - window.RTCRtpReceiver.prototype.getStats = function getStats() { - return this._pc.getStats(this.track); - }; -} - -function shimRemoveStream(window) { - if (!window.RTCPeerConnection || 'removeStream' in window.RTCPeerConnection.prototype) { - return; - } - window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { - var _this3 = this; - - utils.deprecated('removeStream', 'removeTrack'); - this.getSenders().forEach(function (sender) { - if (sender.track && stream.getTracks().includes(sender.track)) { - _this3.removeTrack(sender); - } - }); - }; -} - -function shimRTCDataChannel(window) { - // rename DataChannel to RTCDataChannel (native fix in FF60): - // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851 - if (window.DataChannel && !window.RTCDataChannel) { - window.RTCDataChannel = window.DataChannel; - } -} - -function shimAddTransceiver(window) { - // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 - // Firefox ignores the init sendEncodings options passed to addTransceiver - // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 - if (!((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection)) { - return; - } - var origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver; - if (origAddTransceiver) { - window.RTCPeerConnection.prototype.addTransceiver = function addTransceiver() { - this.setParametersPromises = []; - var initParameters = arguments[1]; - var shouldPerformCheck = initParameters && 'sendEncodings' in initParameters; - if (shouldPerformCheck) { - // If sendEncodings params are provided, validate grammar - initParameters.sendEncodings.forEach(function (encodingParam) { - if ('rid' in encodingParam) { - var ridRegex = /^[a-z0-9]{0,16}$/i; - if (!ridRegex.test(encodingParam.rid)) { - throw new TypeError('Invalid RID value provided.'); - } - } - if ('scaleResolutionDownBy' in encodingParam) { - if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) { - throw new RangeError('scale_resolution_down_by must be >= 1.0'); - } - } - if ('maxFramerate' in encodingParam) { - if (!(parseFloat(encodingParam.maxFramerate) >= 0)) { - throw new RangeError('max_framerate must be >= 0.0'); - } - } - }); - } - var transceiver = origAddTransceiver.apply(this, arguments); - if (shouldPerformCheck) { - // Check if the init options were applied. If not we do this in an - // asynchronous way and save the promise reference in a global object. - // This is an ugly hack, but at the same time is way more robust than - // checking the sender parameters before and after the createOffer - // Also note that after the createoffer we are not 100% sure that - // the params were asynchronously applied so we might miss the - // opportunity to recreate offer. - var sender = transceiver.sender; - - var params = sender.getParameters(); - if (!('encodings' in params) || - // Avoid being fooled by patched getParameters() below. - params.encodings.length === 1 && Object.keys(params.encodings[0]).length === 0) { - params.encodings = initParameters.sendEncodings; - sender.sendEncodings = initParameters.sendEncodings; - this.setParametersPromises.push(sender.setParameters(params).then(function () { - delete sender.sendEncodings; - }).catch(function () { - delete sender.sendEncodings; - })); - } - } - return transceiver; - }; - } -} - -function shimGetParameters(window) { - if (!((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCRtpSender)) { - return; - } - var origGetParameters = window.RTCRtpSender.prototype.getParameters; - if (origGetParameters) { - window.RTCRtpSender.prototype.getParameters = function getParameters() { - var params = origGetParameters.apply(this, arguments); - if (!('encodings' in params)) { - params.encodings = [].concat(this.sendEncodings || [{}]); - } - return params; - }; - } -} - -function shimCreateOffer(window) { - // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 - // Firefox ignores the init sendEncodings options passed to addTransceiver - // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 - if (!((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection)) { - return; - } - var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; - window.RTCPeerConnection.prototype.createOffer = function createOffer() { - var _this4 = this, - _arguments2 = arguments; - - if (this.setParametersPromises && this.setParametersPromises.length) { - return Promise.all(this.setParametersPromises).then(function () { - return origCreateOffer.apply(_this4, _arguments2); - }).finally(function () { - _this4.setParametersPromises = []; - }); - } - return origCreateOffer.apply(this, arguments); - }; -} - -function shimCreateAnswer(window) { - // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 - // Firefox ignores the init sendEncodings options passed to addTransceiver - // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 - if (!((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCPeerConnection)) { - return; - } - var origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer; - window.RTCPeerConnection.prototype.createAnswer = function createAnswer() { - var _this5 = this, - _arguments3 = arguments; - - if (this.setParametersPromises && this.setParametersPromises.length) { - return Promise.all(this.setParametersPromises).then(function () { - return origCreateAnswer.apply(_this5, _arguments3); - }).finally(function () { - _this5.setParametersPromises = []; - }); - } - return origCreateAnswer.apply(this, arguments); - }; -} - -},{"../utils":15,"./getdisplaymedia":12,"./getusermedia":13}],12:[function(require,module,exports){ -/* - * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -/* eslint-env node */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.shimGetDisplayMedia = shimGetDisplayMedia; -function shimGetDisplayMedia(window, preferredMediaSource) { - if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { - return; - } - if (!window.navigator.mediaDevices) { - return; - } - window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { - if (!(constraints && constraints.video)) { - var err = new DOMException('getDisplayMedia without video ' + 'constraints is undefined'); - err.name = 'NotFoundError'; - // from https://heycam.github.io/webidl/#idl-DOMException-error-names - err.code = 8; - return Promise.reject(err); - } - if (constraints.video === true) { - constraints.video = { mediaSource: preferredMediaSource }; - } else { - constraints.video.mediaSource = preferredMediaSource; - } - return window.navigator.mediaDevices.getUserMedia(constraints); - }; -} - -},{}],13:[function(require,module,exports){ -/* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -/* eslint-env node */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.shimGetUserMedia = shimGetUserMedia; - -var _utils = require('../utils'); - -var utils = _interopRequireWildcard(_utils); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function shimGetUserMedia(window) { - var browserDetails = utils.detectBrowser(window); - var navigator = window && window.navigator; - var MediaStreamTrack = window && window.MediaStreamTrack; - - navigator.getUserMedia = function (constraints, onSuccess, onError) { - // Replace Firefox 44+'s deprecation warning with unprefixed version. - utils.deprecated('navigator.getUserMedia', 'navigator.mediaDevices.getUserMedia'); - navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError); - }; - - if (!(browserDetails.version > 55 && 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) { - var remap = function remap(obj, a, b) { - if (a in obj && !(b in obj)) { - obj[b] = obj[a]; - delete obj[a]; - } - }; - - var nativeGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); - navigator.mediaDevices.getUserMedia = function (c) { - if ((typeof c === 'undefined' ? 'undefined' : _typeof(c)) === 'object' && _typeof(c.audio) === 'object') { - c = JSON.parse(JSON.stringify(c)); - remap(c.audio, 'autoGainControl', 'mozAutoGainControl'); - remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression'); - } - return nativeGetUserMedia(c); - }; - - if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) { - var nativeGetSettings = MediaStreamTrack.prototype.getSettings; - MediaStreamTrack.prototype.getSettings = function () { - var obj = nativeGetSettings.apply(this, arguments); - remap(obj, 'mozAutoGainControl', 'autoGainControl'); - remap(obj, 'mozNoiseSuppression', 'noiseSuppression'); - return obj; - }; - } - - if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) { - var nativeApplyConstraints = MediaStreamTrack.prototype.applyConstraints; - MediaStreamTrack.prototype.applyConstraints = function (c) { - if (this.kind === 'audio' && (typeof c === 'undefined' ? 'undefined' : _typeof(c)) === 'object') { - c = JSON.parse(JSON.stringify(c)); - remap(c, 'autoGainControl', 'mozAutoGainControl'); - remap(c, 'noiseSuppression', 'mozNoiseSuppression'); - } - return nativeApplyConstraints.apply(this, [c]); - }; - } - } -} - -},{"../utils":15}],14:[function(require,module,exports){ -/* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.shimLocalStreamsAPI = shimLocalStreamsAPI; -exports.shimRemoteStreamsAPI = shimRemoteStreamsAPI; -exports.shimCallbacksAPI = shimCallbacksAPI; -exports.shimGetUserMedia = shimGetUserMedia; -exports.shimConstraints = shimConstraints; -exports.shimRTCIceServerUrls = shimRTCIceServerUrls; -exports.shimTrackEventTransceiver = shimTrackEventTransceiver; -exports.shimCreateOfferLegacy = shimCreateOfferLegacy; -exports.shimAudioContext = shimAudioContext; - -var _utils = require('../utils'); - -var utils = _interopRequireWildcard(_utils); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function shimLocalStreamsAPI(window) { - if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== 'object' || !window.RTCPeerConnection) { - return; - } - if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) { - window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { - if (!this._localStreams) { - this._localStreams = []; - } - return this._localStreams; - }; - } - if (!('addStream' in window.RTCPeerConnection.prototype)) { - var _addTrack = window.RTCPeerConnection.prototype.addTrack; - window.RTCPeerConnection.prototype.addStream = function addStream(stream) { - var _this = this; - - if (!this._localStreams) { - this._localStreams = []; - } - if (!this._localStreams.includes(stream)) { - this._localStreams.push(stream); - } - // Try to emulate Chrome's behaviour of adding in audio-video order. - // Safari orders by track id. - stream.getAudioTracks().forEach(function (track) { - return _addTrack.call(_this, track, stream); - }); - stream.getVideoTracks().forEach(function (track) { - return _addTrack.call(_this, track, stream); - }); - }; - - window.RTCPeerConnection.prototype.addTrack = function addTrack(track) { - var _this2 = this; - - for (var _len = arguments.length, streams = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - streams[_key - 1] = arguments[_key]; - } - - if (streams) { - streams.forEach(function (stream) { - if (!_this2._localStreams) { - _this2._localStreams = [stream]; - } else if (!_this2._localStreams.includes(stream)) { - _this2._localStreams.push(stream); - } - }); - } - return _addTrack.apply(this, arguments); - }; - } - if (!('removeStream' in window.RTCPeerConnection.prototype)) { - window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { - var _this3 = this; - - if (!this._localStreams) { - this._localStreams = []; - } - var index = this._localStreams.indexOf(stream); - if (index === -1) { - return; - } - this._localStreams.splice(index, 1); - var tracks = stream.getTracks(); - this.getSenders().forEach(function (sender) { - if (tracks.includes(sender.track)) { - _this3.removeTrack(sender); - } - }); - }; - } -} - -function shimRemoteStreamsAPI(window) { - if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== 'object' || !window.RTCPeerConnection) { - return; - } - if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) { - window.RTCPeerConnection.prototype.getRemoteStreams = function getRemoteStreams() { - return this._remoteStreams ? this._remoteStreams : []; - }; - } - if (!('onaddstream' in window.RTCPeerConnection.prototype)) { - Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', { - get: function get() { - return this._onaddstream; - }, - set: function set(f) { - var _this4 = this; - - if (this._onaddstream) { - this.removeEventListener('addstream', this._onaddstream); - this.removeEventListener('track', this._onaddstreampoly); - } - this.addEventListener('addstream', this._onaddstream = f); - this.addEventListener('track', this._onaddstreampoly = function (e) { - e.streams.forEach(function (stream) { - if (!_this4._remoteStreams) { - _this4._remoteStreams = []; - } - if (_this4._remoteStreams.includes(stream)) { - return; - } - _this4._remoteStreams.push(stream); - var event = new Event('addstream'); - event.stream = stream; - _this4.dispatchEvent(event); - }); - }); - } - }); - var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; - window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { - var pc = this; - if (!this._onaddstreampoly) { - this.addEventListener('track', this._onaddstreampoly = function (e) { - e.streams.forEach(function (stream) { - if (!pc._remoteStreams) { - pc._remoteStreams = []; - } - if (pc._remoteStreams.indexOf(stream) >= 0) { - return; - } - pc._remoteStreams.push(stream); - var event = new Event('addstream'); - event.stream = stream; - pc.dispatchEvent(event); - }); - }); - } - return origSetRemoteDescription.apply(pc, arguments); - }; - } -} - -function shimCallbacksAPI(window) { - if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== 'object' || !window.RTCPeerConnection) { - return; - } - var prototype = window.RTCPeerConnection.prototype; - var origCreateOffer = prototype.createOffer; - var origCreateAnswer = prototype.createAnswer; - var setLocalDescription = prototype.setLocalDescription; - var setRemoteDescription = prototype.setRemoteDescription; - var addIceCandidate = prototype.addIceCandidate; - - prototype.createOffer = function createOffer(successCallback, failureCallback) { - var options = arguments.length >= 2 ? arguments[2] : arguments[0]; - var promise = origCreateOffer.apply(this, [options]); - if (!failureCallback) { - return promise; - } - promise.then(successCallback, failureCallback); - return Promise.resolve(); - }; - - prototype.createAnswer = function createAnswer(successCallback, failureCallback) { - var options = arguments.length >= 2 ? arguments[2] : arguments[0]; - var promise = origCreateAnswer.apply(this, [options]); - if (!failureCallback) { - return promise; - } - promise.then(successCallback, failureCallback); - return Promise.resolve(); - }; - - var withCallback = function withCallback(description, successCallback, failureCallback) { - var promise = setLocalDescription.apply(this, [description]); - if (!failureCallback) { - return promise; - } - promise.then(successCallback, failureCallback); - return Promise.resolve(); - }; - prototype.setLocalDescription = withCallback; - - withCallback = function withCallback(description, successCallback, failureCallback) { - var promise = setRemoteDescription.apply(this, [description]); - if (!failureCallback) { - return promise; - } - promise.then(successCallback, failureCallback); - return Promise.resolve(); - }; - prototype.setRemoteDescription = withCallback; - - withCallback = function withCallback(candidate, successCallback, failureCallback) { - var promise = addIceCandidate.apply(this, [candidate]); - if (!failureCallback) { - return promise; - } - promise.then(successCallback, failureCallback); - return Promise.resolve(); - }; - prototype.addIceCandidate = withCallback; -} - -function shimGetUserMedia(window) { - var navigator = window && window.navigator; - - if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { - // shim not needed in Safari 12.1 - var mediaDevices = navigator.mediaDevices; - var _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices); - navigator.mediaDevices.getUserMedia = function (constraints) { - return _getUserMedia(shimConstraints(constraints)); - }; - } - - if (!navigator.getUserMedia && navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { - navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) { - navigator.mediaDevices.getUserMedia(constraints).then(cb, errcb); - }.bind(navigator); - } -} - -function shimConstraints(constraints) { - if (constraints && constraints.video !== undefined) { - return Object.assign({}, constraints, { video: utils.compactObject(constraints.video) }); - } - - return constraints; -} - -function shimRTCIceServerUrls(window) { - if (!window.RTCPeerConnection) { - return; - } - // migrate from non-spec RTCIceServer.url to RTCIceServer.urls - var OrigPeerConnection = window.RTCPeerConnection; - window.RTCPeerConnection = function RTCPeerConnection(pcConfig, pcConstraints) { - if (pcConfig && pcConfig.iceServers) { - var newIceServers = []; - for (var i = 0; i < pcConfig.iceServers.length; i++) { - var server = pcConfig.iceServers[i]; - if (!server.hasOwnProperty('urls') && server.hasOwnProperty('url')) { - utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls'); - server = JSON.parse(JSON.stringify(server)); - server.urls = server.url; - delete server.url; - newIceServers.push(server); - } else { - newIceServers.push(pcConfig.iceServers[i]); - } - } - pcConfig.iceServers = newIceServers; - } - return new OrigPeerConnection(pcConfig, pcConstraints); - }; - window.RTCPeerConnection.prototype = OrigPeerConnection.prototype; - // wrap static methods. Currently just generateCertificate. - if ('generateCertificate' in OrigPeerConnection) { - Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', { - get: function get() { - return OrigPeerConnection.generateCertificate; - } - }); - } -} - -function shimTrackEventTransceiver(window) { - // Add event.transceiver member over deprecated event.receiver - if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { - Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { - get: function get() { - return { receiver: this.receiver }; - } - }); - } -} - -function shimCreateOfferLegacy(window) { - var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; - window.RTCPeerConnection.prototype.createOffer = function createOffer(offerOptions) { - if (offerOptions) { - if (typeof offerOptions.offerToReceiveAudio !== 'undefined') { - // support bit values - offerOptions.offerToReceiveAudio = !!offerOptions.offerToReceiveAudio; - } - var audioTransceiver = this.getTransceivers().find(function (transceiver) { - return transceiver.receiver.track.kind === 'audio'; - }); - if (offerOptions.offerToReceiveAudio === false && audioTransceiver) { - if (audioTransceiver.direction === 'sendrecv') { - if (audioTransceiver.setDirection) { - audioTransceiver.setDirection('sendonly'); - } else { - audioTransceiver.direction = 'sendonly'; - } - } else if (audioTransceiver.direction === 'recvonly') { - if (audioTransceiver.setDirection) { - audioTransceiver.setDirection('inactive'); - } else { - audioTransceiver.direction = 'inactive'; - } - } - } else if (offerOptions.offerToReceiveAudio === true && !audioTransceiver) { - this.addTransceiver('audio'); - } - - if (typeof offerOptions.offerToReceiveVideo !== 'undefined') { - // support bit values - offerOptions.offerToReceiveVideo = !!offerOptions.offerToReceiveVideo; - } - var videoTransceiver = this.getTransceivers().find(function (transceiver) { - return transceiver.receiver.track.kind === 'video'; - }); - if (offerOptions.offerToReceiveVideo === false && videoTransceiver) { - if (videoTransceiver.direction === 'sendrecv') { - if (videoTransceiver.setDirection) { - videoTransceiver.setDirection('sendonly'); - } else { - videoTransceiver.direction = 'sendonly'; - } - } else if (videoTransceiver.direction === 'recvonly') { - if (videoTransceiver.setDirection) { - videoTransceiver.setDirection('inactive'); - } else { - videoTransceiver.direction = 'inactive'; - } - } - } else if (offerOptions.offerToReceiveVideo === true && !videoTransceiver) { - this.addTransceiver('video'); - } - } - return origCreateOffer.apply(this, arguments); - }; -} - -function shimAudioContext(window) { - if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== 'object' || window.AudioContext) { - return; - } - window.AudioContext = window.webkitAudioContext; -} - -},{"../utils":15}],15:[function(require,module,exports){ -/* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ -/* eslint-env node */ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.extractVersion = extractVersion; -exports.wrapPeerConnectionEvent = wrapPeerConnectionEvent; -exports.disableLog = disableLog; -exports.disableWarnings = disableWarnings; -exports.log = log; -exports.deprecated = deprecated; -exports.detectBrowser = detectBrowser; -exports.compactObject = compactObject; -exports.walkStats = walkStats; -exports.filterStats = filterStats; - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var logDisabled_ = true; -var deprecationWarnings_ = true; - -/** - * Extract browser version out of the provided user agent string. - * - * @param {!string} uastring userAgent string. - * @param {!string} expr Regular expression used as match criteria. - * @param {!number} pos position in the version string to be returned. - * @return {!number} browser version. - */ -function extractVersion(uastring, expr, pos) { - var match = uastring.match(expr); - return match && match.length >= pos && parseInt(match[pos], 10); -} - -// Wraps the peerconnection event eventNameToWrap in a function -// which returns the modified event object (or false to prevent -// the event). -function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) { - if (!window.RTCPeerConnection) { - return; - } - var proto = window.RTCPeerConnection.prototype; - var nativeAddEventListener = proto.addEventListener; - proto.addEventListener = function (nativeEventName, cb) { - if (nativeEventName !== eventNameToWrap) { - return nativeAddEventListener.apply(this, arguments); - } - var wrappedCallback = function wrappedCallback(e) { - var modifiedEvent = wrapper(e); - if (modifiedEvent) { - if (cb.handleEvent) { - cb.handleEvent(modifiedEvent); - } else { - cb(modifiedEvent); - } - } - }; - this._eventMap = this._eventMap || {}; - if (!this._eventMap[eventNameToWrap]) { - this._eventMap[eventNameToWrap] = new Map(); - } - this._eventMap[eventNameToWrap].set(cb, wrappedCallback); - return nativeAddEventListener.apply(this, [nativeEventName, wrappedCallback]); - }; - - var nativeRemoveEventListener = proto.removeEventListener; - proto.removeEventListener = function (nativeEventName, cb) { - if (nativeEventName !== eventNameToWrap || !this._eventMap || !this._eventMap[eventNameToWrap]) { - return nativeRemoveEventListener.apply(this, arguments); - } - if (!this._eventMap[eventNameToWrap].has(cb)) { - return nativeRemoveEventListener.apply(this, arguments); - } - var unwrappedCb = this._eventMap[eventNameToWrap].get(cb); - this._eventMap[eventNameToWrap].delete(cb); - if (this._eventMap[eventNameToWrap].size === 0) { - delete this._eventMap[eventNameToWrap]; - } - if (Object.keys(this._eventMap).length === 0) { - delete this._eventMap; - } - return nativeRemoveEventListener.apply(this, [nativeEventName, unwrappedCb]); - }; - - Object.defineProperty(proto, 'on' + eventNameToWrap, { - get: function get() { - return this['_on' + eventNameToWrap]; - }, - set: function set(cb) { - if (this['_on' + eventNameToWrap]) { - this.removeEventListener(eventNameToWrap, this['_on' + eventNameToWrap]); - delete this['_on' + eventNameToWrap]; - } - if (cb) { - this.addEventListener(eventNameToWrap, this['_on' + eventNameToWrap] = cb); - } - }, - - enumerable: true, - configurable: true - }); -} - -function disableLog(bool) { - if (typeof bool !== 'boolean') { - return new Error('Argument type: ' + (typeof bool === 'undefined' ? 'undefined' : _typeof(bool)) + '. Please use a boolean.'); - } - logDisabled_ = bool; - return bool ? 'adapter.js logging disabled' : 'adapter.js logging enabled'; -} - -/** - * Disable or enable deprecation warnings - * @param {!boolean} bool set to true to disable warnings. - */ -function disableWarnings(bool) { - if (typeof bool !== 'boolean') { - return new Error('Argument type: ' + (typeof bool === 'undefined' ? 'undefined' : _typeof(bool)) + '. Please use a boolean.'); - } - deprecationWarnings_ = !bool; - return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled'); -} - -function log() { - if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object') { - if (logDisabled_) { - return; - } - if (typeof console !== 'undefined' && typeof console.log === 'function') { - console.log.apply(console, arguments); - } - } -} - -/** - * Shows a deprecation warning suggesting the modern and spec-compatible API. - */ -function deprecated(oldMethod, newMethod) { - if (!deprecationWarnings_) { - return; - } - console.warn(oldMethod + ' is deprecated, please use ' + newMethod + ' instead.'); -} - -/** - * Browser detector. - * - * @return {object} result containing browser and version - * properties. - */ -function detectBrowser(window) { - // Returned result object. - var result = { browser: null, version: null }; - - // Fail early if it's not a browser - if (typeof window === 'undefined' || !window.navigator) { - result.browser = 'Not a browser.'; - return result; - } - - var navigator = window.navigator; - - - if (navigator.mozGetUserMedia) { - // Firefox. - result.browser = 'firefox'; - result.version = extractVersion(navigator.userAgent, /Firefox\/(\d+)\./, 1); - } else if (navigator.webkitGetUserMedia || window.isSecureContext === false && window.webkitRTCPeerConnection && !window.RTCIceGatherer) { - // Chrome, Chromium, Webview, Opera. - // Version matches Chrome/WebRTC version. - // Chrome 74 removed webkitGetUserMedia on http as well so we need the - // more complicated fallback to webkitRTCPeerConnection. - result.browser = 'chrome'; - result.version = extractVersion(navigator.userAgent, /Chrom(e|ium)\/(\d+)\./, 2); - } else if (navigator.mediaDevices && navigator.userAgent.match(/Edge\/(\d+).(\d+)$/)) { - // Edge. - result.browser = 'edge'; - result.version = extractVersion(navigator.userAgent, /Edge\/(\d+).(\d+)$/, 2); - } else if (window.RTCPeerConnection && navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) { - // Safari. - result.browser = 'safari'; - result.version = extractVersion(navigator.userAgent, /AppleWebKit\/(\d+)\./, 1); - result.supportsUnifiedPlan = window.RTCRtpTransceiver && 'currentDirection' in window.RTCRtpTransceiver.prototype; - } else { - // Default fallthrough: not supported. - result.browser = 'Not a supported browser.'; - return result; - } - - return result; -} - -/** - * Checks if something is an object. - * - * @param {*} val The something you want to check. - * @return true if val is an object, false otherwise. - */ -function isObject(val) { - return Object.prototype.toString.call(val) === '[object Object]'; -} - -/** - * Remove all empty objects and undefined values - * from a nested object -- an enhanced and vanilla version - * of Lodash's `compact`. - */ -function compactObject(data) { - if (!isObject(data)) { - return data; - } - - return Object.keys(data).reduce(function (accumulator, key) { - var isObj = isObject(data[key]); - var value = isObj ? compactObject(data[key]) : data[key]; - var isEmptyObject = isObj && !Object.keys(value).length; - if (value === undefined || isEmptyObject) { - return accumulator; - } - return Object.assign(accumulator, _defineProperty({}, key, value)); - }, {}); -} - -/* iterates the stats graph recursively. */ -function walkStats(stats, base, resultSet) { - if (!base || resultSet.has(base.id)) { - return; - } - resultSet.set(base.id, base); - Object.keys(base).forEach(function (name) { - if (name.endsWith('Id')) { - walkStats(stats, stats.get(base[name]), resultSet); - } else if (name.endsWith('Ids')) { - base[name].forEach(function (id) { - walkStats(stats, stats.get(id), resultSet); - }); - } - }); -} - -/* filter getStats for a sender/receiver track. */ -function filterStats(result, track, outbound) { - var streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp'; - var filteredResult = new Map(); - if (track === null) { - return filteredResult; - } - var trackStats = []; - result.forEach(function (value) { - if (value.type === 'track' && value.trackIdentifier === track.id) { - trackStats.push(value); - } - }); - trackStats.forEach(function (trackStat) { - result.forEach(function (stats) { - if (stats.type === streamStatsType && stats.trackId === trackStat.id) { - walkStats(result, stats, filteredResult); - } - }); - }); - return filteredResult; -} - -},{}],16:[function(require,module,exports){ -/* - * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ - /* eslint-env node */ -'use strict'; - -var SDPUtils = require('sdp'); - -function fixStatsType(stat) { - return { - inboundrtp: 'inbound-rtp', - outboundrtp: 'outbound-rtp', - candidatepair: 'candidate-pair', - localcandidate: 'local-candidate', - remotecandidate: 'remote-candidate' - }[stat.type] || stat.type; -} - -function writeMediaSection(transceiver, caps, type, stream, dtlsRole) { - var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps); - - // Map ICE parameters (ufrag, pwd) to SDP. - sdp += SDPUtils.writeIceParameters( - transceiver.iceGatherer.getLocalParameters()); - - // Map DTLS parameters to SDP. - sdp += SDPUtils.writeDtlsParameters( - transceiver.dtlsTransport.getLocalParameters(), - type === 'offer' ? 'actpass' : dtlsRole || 'active'); - - sdp += 'a=mid:' + transceiver.mid + '\r\n'; - - if (transceiver.rtpSender && transceiver.rtpReceiver) { - sdp += 'a=sendrecv\r\n'; - } else if (transceiver.rtpSender) { - sdp += 'a=sendonly\r\n'; - } else if (transceiver.rtpReceiver) { - sdp += 'a=recvonly\r\n'; - } else { - sdp += 'a=inactive\r\n'; - } - - if (transceiver.rtpSender) { - var trackId = transceiver.rtpSender._initialTrackId || - transceiver.rtpSender.track.id; - transceiver.rtpSender._initialTrackId = trackId; - // spec. - var msid = 'msid:' + (stream ? stream.id : '-') + ' ' + - trackId + '\r\n'; - sdp += 'a=' + msid; - // for Chrome. Legacy should no longer be required. - sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc + - ' ' + msid; - - // RTX - if (transceiver.sendEncodingParameters[0].rtx) { - sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc + - ' ' + msid; - sdp += 'a=ssrc-group:FID ' + - transceiver.sendEncodingParameters[0].ssrc + ' ' + - transceiver.sendEncodingParameters[0].rtx.ssrc + - '\r\n'; - } - } - // FIXME: this should be written by writeRtpDescription. - sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc + - ' cname:' + SDPUtils.localCName + '\r\n'; - if (transceiver.rtpSender && transceiver.sendEncodingParameters[0].rtx) { - sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc + - ' cname:' + SDPUtils.localCName + '\r\n'; - } - return sdp; -} - -// Edge does not like -// 1) stun: filtered after 14393 unless ?transport=udp is present -// 2) turn: that does not have all of turn:host:port?transport=udp -// 3) turn: with ipv6 addresses -// 4) turn: occurring muliple times -function filterIceServers(iceServers, edgeVersion) { - var hasTurn = false; - iceServers = JSON.parse(JSON.stringify(iceServers)); - return iceServers.filter(function(server) { - if (server && (server.urls || server.url)) { - var urls = server.urls || server.url; - if (server.url && !server.urls) { - console.warn('RTCIceServer.url is deprecated! Use urls instead.'); - } - var isString = typeof urls === 'string'; - if (isString) { - urls = [urls]; - } - urls = urls.filter(function(url) { - var validTurn = url.indexOf('turn:') === 0 && - url.indexOf('transport=udp') !== -1 && - url.indexOf('turn:[') === -1 && - !hasTurn; - - if (validTurn) { - hasTurn = true; - return true; - } - return url.indexOf('stun:') === 0 && edgeVersion >= 14393 && - url.indexOf('?transport=udp') === -1; - }); - - delete server.url; - server.urls = isString ? urls[0] : urls; - return !!urls.length; - } - }); -} - -// Determines the intersection of local and remote capabilities. -function getCommonCapabilities(localCapabilities, remoteCapabilities) { - var commonCapabilities = { - codecs: [], - headerExtensions: [], - fecMechanisms: [] - }; - - var findCodecByPayloadType = function(pt, codecs) { - pt = parseInt(pt, 10); - for (var i = 0; i < codecs.length; i++) { - if (codecs[i].payloadType === pt || - codecs[i].preferredPayloadType === pt) { - return codecs[i]; - } - } - }; - - var rtxCapabilityMatches = function(lRtx, rRtx, lCodecs, rCodecs) { - var lCodec = findCodecByPayloadType(lRtx.parameters.apt, lCodecs); - var rCodec = findCodecByPayloadType(rRtx.parameters.apt, rCodecs); - return lCodec && rCodec && - lCodec.name.toLowerCase() === rCodec.name.toLowerCase(); - }; - - localCapabilities.codecs.forEach(function(lCodec) { - for (var i = 0; i < remoteCapabilities.codecs.length; i++) { - var rCodec = remoteCapabilities.codecs[i]; - if (lCodec.name.toLowerCase() === rCodec.name.toLowerCase() && - lCodec.clockRate === rCodec.clockRate) { - if (lCodec.name.toLowerCase() === 'rtx' && - lCodec.parameters && rCodec.parameters.apt) { - // for RTX we need to find the local rtx that has a apt - // which points to the same local codec as the remote one. - if (!rtxCapabilityMatches(lCodec, rCodec, - localCapabilities.codecs, remoteCapabilities.codecs)) { - continue; - } - } - rCodec = JSON.parse(JSON.stringify(rCodec)); // deepcopy - // number of channels is the highest common number of channels - rCodec.numChannels = Math.min(lCodec.numChannels, - rCodec.numChannels); - // push rCodec so we reply with offerer payload type - commonCapabilities.codecs.push(rCodec); - - // determine common feedback mechanisms - rCodec.rtcpFeedback = rCodec.rtcpFeedback.filter(function(fb) { - for (var j = 0; j < lCodec.rtcpFeedback.length; j++) { - if (lCodec.rtcpFeedback[j].type === fb.type && - lCodec.rtcpFeedback[j].parameter === fb.parameter) { - return true; - } - } - return false; - }); - // FIXME: also need to determine .parameters - // see https://github.com/openpeer/ortc/issues/569 - break; - } - } - }); - - localCapabilities.headerExtensions.forEach(function(lHeaderExtension) { - for (var i = 0; i < remoteCapabilities.headerExtensions.length; - i++) { - var rHeaderExtension = remoteCapabilities.headerExtensions[i]; - if (lHeaderExtension.uri === rHeaderExtension.uri) { - commonCapabilities.headerExtensions.push(rHeaderExtension); - break; - } - } - }); - - // FIXME: fecMechanisms - return commonCapabilities; -} - -// is action=setLocalDescription with type allowed in signalingState -function isActionAllowedInSignalingState(action, type, signalingState) { - return { - offer: { - setLocalDescription: ['stable', 'have-local-offer'], - setRemoteDescription: ['stable', 'have-remote-offer'] - }, - answer: { - setLocalDescription: ['have-remote-offer', 'have-local-pranswer'], - setRemoteDescription: ['have-local-offer', 'have-remote-pranswer'] - } - }[type][action].indexOf(signalingState) !== -1; -} - -function maybeAddCandidate(iceTransport, candidate) { - // Edge's internal representation adds some fields therefore - // not all fieldѕ are taken into account. - var alreadyAdded = iceTransport.getRemoteCandidates() - .find(function(remoteCandidate) { - return candidate.foundation === remoteCandidate.foundation && - candidate.ip === remoteCandidate.ip && - candidate.port === remoteCandidate.port && - candidate.priority === remoteCandidate.priority && - candidate.protocol === remoteCandidate.protocol && - candidate.type === remoteCandidate.type; - }); - if (!alreadyAdded) { - iceTransport.addRemoteCandidate(candidate); - } - return !alreadyAdded; -} - - -function makeError(name, description) { - var e = new Error(description); - e.name = name; - // legacy error codes from https://heycam.github.io/webidl/#idl-DOMException-error-names - e.code = { - NotSupportedError: 9, - InvalidStateError: 11, - InvalidAccessError: 15, - TypeError: undefined, - OperationError: undefined - }[name]; - return e; -} - -module.exports = function(window, edgeVersion) { - // https://w3c.github.io/mediacapture-main/#mediastream - // Helper function to add the track to the stream and - // dispatch the event ourselves. - function addTrackToStreamAndFireEvent(track, stream) { - stream.addTrack(track); - stream.dispatchEvent(new window.MediaStreamTrackEvent('addtrack', - {track: track})); - } - - function removeTrackFromStreamAndFireEvent(track, stream) { - stream.removeTrack(track); - stream.dispatchEvent(new window.MediaStreamTrackEvent('removetrack', - {track: track})); - } - - function fireAddTrack(pc, track, receiver, streams) { - var trackEvent = new Event('track'); - trackEvent.track = track; - trackEvent.receiver = receiver; - trackEvent.transceiver = {receiver: receiver}; - trackEvent.streams = streams; - window.setTimeout(function() { - pc._dispatchEvent('track', trackEvent); - }); - } - - var RTCPeerConnection = function(config) { - var pc = this; - - var _eventTarget = document.createDocumentFragment(); - ['addEventListener', 'removeEventListener', 'dispatchEvent'] - .forEach(function(method) { - pc[method] = _eventTarget[method].bind(_eventTarget); - }); - - this.canTrickleIceCandidates = null; - - this.needNegotiation = false; - - this.localStreams = []; - this.remoteStreams = []; - - this._localDescription = null; - this._remoteDescription = null; - - this.signalingState = 'stable'; - this.iceConnectionState = 'new'; - this.connectionState = 'new'; - this.iceGatheringState = 'new'; - - config = JSON.parse(JSON.stringify(config || {})); - - this.usingBundle = config.bundlePolicy === 'max-bundle'; - if (config.rtcpMuxPolicy === 'negotiate') { - throw(makeError('NotSupportedError', - 'rtcpMuxPolicy \'negotiate\' is not supported')); - } else if (!config.rtcpMuxPolicy) { - config.rtcpMuxPolicy = 'require'; - } - - switch (config.iceTransportPolicy) { - case 'all': - case 'relay': - break; - default: - config.iceTransportPolicy = 'all'; - break; - } - - switch (config.bundlePolicy) { - case 'balanced': - case 'max-compat': - case 'max-bundle': - break; - default: - config.bundlePolicy = 'balanced'; - break; - } - - config.iceServers = filterIceServers(config.iceServers || [], edgeVersion); - - this._iceGatherers = []; - if (config.iceCandidatePoolSize) { - for (var i = config.iceCandidatePoolSize; i > 0; i--) { - this._iceGatherers.push(new window.RTCIceGatherer({ - iceServers: config.iceServers, - gatherPolicy: config.iceTransportPolicy - })); - } - } else { - config.iceCandidatePoolSize = 0; - } - - this._config = config; - - // per-track iceGathers, iceTransports, dtlsTransports, rtpSenders, ... - // everything that is needed to describe a SDP m-line. - this.transceivers = []; - - this._sdpSessionId = SDPUtils.generateSessionId(); - this._sdpSessionVersion = 0; - - this._dtlsRole = undefined; // role for a=setup to use in answers. - - this._isClosed = false; - }; - - Object.defineProperty(RTCPeerConnection.prototype, 'localDescription', { - configurable: true, - get: function() { - return this._localDescription; - } - }); - Object.defineProperty(RTCPeerConnection.prototype, 'remoteDescription', { - configurable: true, - get: function() { - return this._remoteDescription; - } - }); - - // set up event handlers on prototype - RTCPeerConnection.prototype.onicecandidate = null; - RTCPeerConnection.prototype.onaddstream = null; - RTCPeerConnection.prototype.ontrack = null; - RTCPeerConnection.prototype.onremovestream = null; - RTCPeerConnection.prototype.onsignalingstatechange = null; - RTCPeerConnection.prototype.oniceconnectionstatechange = null; - RTCPeerConnection.prototype.onconnectionstatechange = null; - RTCPeerConnection.prototype.onicegatheringstatechange = null; - RTCPeerConnection.prototype.onnegotiationneeded = null; - RTCPeerConnection.prototype.ondatachannel = null; - - RTCPeerConnection.prototype._dispatchEvent = function(name, event) { - if (this._isClosed) { - return; - } - this.dispatchEvent(event); - if (typeof this['on' + name] === 'function') { - this['on' + name](event); - } - }; - - RTCPeerConnection.prototype._emitGatheringStateChange = function() { - var event = new Event('icegatheringstatechange'); - this._dispatchEvent('icegatheringstatechange', event); - }; - - RTCPeerConnection.prototype.getConfiguration = function() { - return this._config; - }; - - RTCPeerConnection.prototype.getLocalStreams = function() { - return this.localStreams; - }; - - RTCPeerConnection.prototype.getRemoteStreams = function() { - return this.remoteStreams; - }; - - // internal helper to create a transceiver object. - // (which is not yet the same as the WebRTC 1.0 transceiver) - RTCPeerConnection.prototype._createTransceiver = function(kind, doNotAdd) { - var hasBundleTransport = this.transceivers.length > 0; - var transceiver = { - track: null, - iceGatherer: null, - iceTransport: null, - dtlsTransport: null, - localCapabilities: null, - remoteCapabilities: null, - rtpSender: null, - rtpReceiver: null, - kind: kind, - mid: null, - sendEncodingParameters: null, - recvEncodingParameters: null, - stream: null, - associatedRemoteMediaStreams: [], - wantReceive: true - }; - if (this.usingBundle && hasBundleTransport) { - transceiver.iceTransport = this.transceivers[0].iceTransport; - transceiver.dtlsTransport = this.transceivers[0].dtlsTransport; - } else { - var transports = this._createIceAndDtlsTransports(); - transceiver.iceTransport = transports.iceTransport; - transceiver.dtlsTransport = transports.dtlsTransport; - } - if (!doNotAdd) { - this.transceivers.push(transceiver); - } - return transceiver; - }; - - RTCPeerConnection.prototype.addTrack = function(track, stream) { - if (this._isClosed) { - throw makeError('InvalidStateError', - 'Attempted to call addTrack on a closed peerconnection.'); - } - - var alreadyExists = this.transceivers.find(function(s) { - return s.track === track; - }); - - if (alreadyExists) { - throw makeError('InvalidAccessError', 'Track already exists.'); - } - - var transceiver; - for (var i = 0; i < this.transceivers.length; i++) { - if (!this.transceivers[i].track && - this.transceivers[i].kind === track.kind) { - transceiver = this.transceivers[i]; - } - } - if (!transceiver) { - transceiver = this._createTransceiver(track.kind); - } - - this._maybeFireNegotiationNeeded(); - - if (this.localStreams.indexOf(stream) === -1) { - this.localStreams.push(stream); - } - - transceiver.track = track; - transceiver.stream = stream; - transceiver.rtpSender = new window.RTCRtpSender(track, - transceiver.dtlsTransport); - return transceiver.rtpSender; - }; - - RTCPeerConnection.prototype.addStream = function(stream) { - var pc = this; - if (edgeVersion >= 15025) { - stream.getTracks().forEach(function(track) { - pc.addTrack(track, stream); - }); - } else { - // Clone is necessary for local demos mostly, attaching directly - // to two different senders does not work (build 10547). - // Fixed in 15025 (or earlier) - var clonedStream = stream.clone(); - stream.getTracks().forEach(function(track, idx) { - var clonedTrack = clonedStream.getTracks()[idx]; - track.addEventListener('enabled', function(event) { - clonedTrack.enabled = event.enabled; - }); - }); - clonedStream.getTracks().forEach(function(track) { - pc.addTrack(track, clonedStream); - }); - } - }; - - RTCPeerConnection.prototype.removeTrack = function(sender) { - if (this._isClosed) { - throw makeError('InvalidStateError', - 'Attempted to call removeTrack on a closed peerconnection.'); - } - - if (!(sender instanceof window.RTCRtpSender)) { - throw new TypeError('Argument 1 of RTCPeerConnection.removeTrack ' + - 'does not implement interface RTCRtpSender.'); - } - - var transceiver = this.transceivers.find(function(t) { - return t.rtpSender === sender; - }); - - if (!transceiver) { - throw makeError('InvalidAccessError', - 'Sender was not created by this connection.'); - } - var stream = transceiver.stream; - - transceiver.rtpSender.stop(); - transceiver.rtpSender = null; - transceiver.track = null; - transceiver.stream = null; - - // remove the stream from the set of local streams - var localStreams = this.transceivers.map(function(t) { - return t.stream; - }); - if (localStreams.indexOf(stream) === -1 && - this.localStreams.indexOf(stream) > -1) { - this.localStreams.splice(this.localStreams.indexOf(stream), 1); - } - - this._maybeFireNegotiationNeeded(); - }; - - RTCPeerConnection.prototype.removeStream = function(stream) { - var pc = this; - stream.getTracks().forEach(function(track) { - var sender = pc.getSenders().find(function(s) { - return s.track === track; - }); - if (sender) { - pc.removeTrack(sender); - } - }); - }; - - RTCPeerConnection.prototype.getSenders = function() { - return this.transceivers.filter(function(transceiver) { - return !!transceiver.rtpSender; - }) - .map(function(transceiver) { - return transceiver.rtpSender; - }); - }; - - RTCPeerConnection.prototype.getReceivers = function() { - return this.transceivers.filter(function(transceiver) { - return !!transceiver.rtpReceiver; - }) - .map(function(transceiver) { - return transceiver.rtpReceiver; - }); - }; - - - RTCPeerConnection.prototype._createIceGatherer = function(sdpMLineIndex, - usingBundle) { - var pc = this; - if (usingBundle && sdpMLineIndex > 0) { - return this.transceivers[0].iceGatherer; - } else if (this._iceGatherers.length) { - return this._iceGatherers.shift(); - } - var iceGatherer = new window.RTCIceGatherer({ - iceServers: this._config.iceServers, - gatherPolicy: this._config.iceTransportPolicy - }); - Object.defineProperty(iceGatherer, 'state', - {value: 'new', writable: true} - ); - - this.transceivers[sdpMLineIndex].bufferedCandidateEvents = []; - this.transceivers[sdpMLineIndex].bufferCandidates = function(event) { - var end = !event.candidate || Object.keys(event.candidate).length === 0; - // polyfill since RTCIceGatherer.state is not implemented in - // Edge 10547 yet. - iceGatherer.state = end ? 'completed' : 'gathering'; - if (pc.transceivers[sdpMLineIndex].bufferedCandidateEvents !== null) { - pc.transceivers[sdpMLineIndex].bufferedCandidateEvents.push(event); - } - }; - iceGatherer.addEventListener('localcandidate', - this.transceivers[sdpMLineIndex].bufferCandidates); - return iceGatherer; - }; - - // start gathering from an RTCIceGatherer. - RTCPeerConnection.prototype._gather = function(mid, sdpMLineIndex) { - var pc = this; - var iceGatherer = this.transceivers[sdpMLineIndex].iceGatherer; - if (iceGatherer.onlocalcandidate) { - return; - } - var bufferedCandidateEvents = - this.transceivers[sdpMLineIndex].bufferedCandidateEvents; - this.transceivers[sdpMLineIndex].bufferedCandidateEvents = null; - iceGatherer.removeEventListener('localcandidate', - this.transceivers[sdpMLineIndex].bufferCandidates); - iceGatherer.onlocalcandidate = function(evt) { - if (pc.usingBundle && sdpMLineIndex > 0) { - // if we know that we use bundle we can drop candidates with - // ѕdpMLineIndex > 0. If we don't do this then our state gets - // confused since we dispose the extra ice gatherer. - return; - } - var event = new Event('icecandidate'); - event.candidate = {sdpMid: mid, sdpMLineIndex: sdpMLineIndex}; - - var cand = evt.candidate; - // Edge emits an empty object for RTCIceCandidateComplete‥ - var end = !cand || Object.keys(cand).length === 0; - if (end) { - // polyfill since RTCIceGatherer.state is not implemented in - // Edge 10547 yet. - if (iceGatherer.state === 'new' || iceGatherer.state === 'gathering') { - iceGatherer.state = 'completed'; - } - } else { - if (iceGatherer.state === 'new') { - iceGatherer.state = 'gathering'; - } - // RTCIceCandidate doesn't have a component, needs to be added - cand.component = 1; - // also the usernameFragment. TODO: update SDP to take both variants. - cand.ufrag = iceGatherer.getLocalParameters().usernameFragment; - - var serializedCandidate = SDPUtils.writeCandidate(cand); - event.candidate = Object.assign(event.candidate, - SDPUtils.parseCandidate(serializedCandidate)); - - event.candidate.candidate = serializedCandidate; - event.candidate.toJSON = function() { - return { - candidate: event.candidate.candidate, - sdpMid: event.candidate.sdpMid, - sdpMLineIndex: event.candidate.sdpMLineIndex, - usernameFragment: event.candidate.usernameFragment - }; - }; - } - - // update local description. - var sections = SDPUtils.getMediaSections(pc._localDescription.sdp); - if (!end) { - sections[event.candidate.sdpMLineIndex] += - 'a=' + event.candidate.candidate + '\r\n'; - } else { - sections[event.candidate.sdpMLineIndex] += - 'a=end-of-candidates\r\n'; - } - pc._localDescription.sdp = - SDPUtils.getDescription(pc._localDescription.sdp) + - sections.join(''); - var complete = pc.transceivers.every(function(transceiver) { - return transceiver.iceGatherer && - transceiver.iceGatherer.state === 'completed'; - }); - - if (pc.iceGatheringState !== 'gathering') { - pc.iceGatheringState = 'gathering'; - pc._emitGatheringStateChange(); - } - - // Emit candidate. Also emit null candidate when all gatherers are - // complete. - if (!end) { - pc._dispatchEvent('icecandidate', event); - } - if (complete) { - pc._dispatchEvent('icecandidate', new Event('icecandidate')); - pc.iceGatheringState = 'complete'; - pc._emitGatheringStateChange(); - } - }; - - // emit already gathered candidates. - window.setTimeout(function() { - bufferedCandidateEvents.forEach(function(e) { - iceGatherer.onlocalcandidate(e); - }); - }, 0); - }; - - // Create ICE transport and DTLS transport. - RTCPeerConnection.prototype._createIceAndDtlsTransports = function() { - var pc = this; - var iceTransport = new window.RTCIceTransport(null); - iceTransport.onicestatechange = function() { - pc._updateIceConnectionState(); - pc._updateConnectionState(); - }; - - var dtlsTransport = new window.RTCDtlsTransport(iceTransport); - dtlsTransport.ondtlsstatechange = function() { - pc._updateConnectionState(); - }; - dtlsTransport.onerror = function() { - // onerror does not set state to failed by itself. - Object.defineProperty(dtlsTransport, 'state', - {value: 'failed', writable: true}); - pc._updateConnectionState(); - }; - - return { - iceTransport: iceTransport, - dtlsTransport: dtlsTransport - }; - }; - - // Destroy ICE gatherer, ICE transport and DTLS transport. - // Without triggering the callbacks. - RTCPeerConnection.prototype._disposeIceAndDtlsTransports = function( - sdpMLineIndex) { - var iceGatherer = this.transceivers[sdpMLineIndex].iceGatherer; - if (iceGatherer) { - delete iceGatherer.onlocalcandidate; - delete this.transceivers[sdpMLineIndex].iceGatherer; - } - var iceTransport = this.transceivers[sdpMLineIndex].iceTransport; - if (iceTransport) { - delete iceTransport.onicestatechange; - delete this.transceivers[sdpMLineIndex].iceTransport; - } - var dtlsTransport = this.transceivers[sdpMLineIndex].dtlsTransport; - if (dtlsTransport) { - delete dtlsTransport.ondtlsstatechange; - delete dtlsTransport.onerror; - delete this.transceivers[sdpMLineIndex].dtlsTransport; - } - }; - - // Start the RTP Sender and Receiver for a transceiver. - RTCPeerConnection.prototype._transceive = function(transceiver, - send, recv) { - var params = getCommonCapabilities(transceiver.localCapabilities, - transceiver.remoteCapabilities); - if (send && transceiver.rtpSender) { - params.encodings = transceiver.sendEncodingParameters; - params.rtcp = { - cname: SDPUtils.localCName, - compound: transceiver.rtcpParameters.compound - }; - if (transceiver.recvEncodingParameters.length) { - params.rtcp.ssrc = transceiver.recvEncodingParameters[0].ssrc; - } - transceiver.rtpSender.send(params); - } - if (recv && transceiver.rtpReceiver && params.codecs.length > 0) { - // remove RTX field in Edge 14942 - if (transceiver.kind === 'video' - && transceiver.recvEncodingParameters - && edgeVersion < 15019) { - transceiver.recvEncodingParameters.forEach(function(p) { - delete p.rtx; - }); - } - if (transceiver.recvEncodingParameters.length) { - params.encodings = transceiver.recvEncodingParameters; - } else { - params.encodings = [{}]; - } - params.rtcp = { - compound: transceiver.rtcpParameters.compound - }; - if (transceiver.rtcpParameters.cname) { - params.rtcp.cname = transceiver.rtcpParameters.cname; - } - if (transceiver.sendEncodingParameters.length) { - params.rtcp.ssrc = transceiver.sendEncodingParameters[0].ssrc; - } - transceiver.rtpReceiver.receive(params); - } - }; - - RTCPeerConnection.prototype.setLocalDescription = function(description) { - var pc = this; - - // Note: pranswer is not supported. - if (['offer', 'answer'].indexOf(description.type) === -1) { - return Promise.reject(makeError('TypeError', - 'Unsupported type "' + description.type + '"')); - } - - if (!isActionAllowedInSignalingState('setLocalDescription', - description.type, pc.signalingState) || pc._isClosed) { - return Promise.reject(makeError('InvalidStateError', - 'Can not set local ' + description.type + - ' in state ' + pc.signalingState)); - } - - var sections; - var sessionpart; - if (description.type === 'offer') { - // VERY limited support for SDP munging. Limited to: - // * changing the order of codecs - sections = SDPUtils.splitSections(description.sdp); - sessionpart = sections.shift(); - sections.forEach(function(mediaSection, sdpMLineIndex) { - var caps = SDPUtils.parseRtpParameters(mediaSection); - pc.transceivers[sdpMLineIndex].localCapabilities = caps; - }); - - pc.transceivers.forEach(function(transceiver, sdpMLineIndex) { - pc._gather(transceiver.mid, sdpMLineIndex); - }); - } else if (description.type === 'answer') { - sections = SDPUtils.splitSections(pc._remoteDescription.sdp); - sessionpart = sections.shift(); - var isIceLite = SDPUtils.matchPrefix(sessionpart, - 'a=ice-lite').length > 0; - sections.forEach(function(mediaSection, sdpMLineIndex) { - var transceiver = pc.transceivers[sdpMLineIndex]; - var iceGatherer = transceiver.iceGatherer; - var iceTransport = transceiver.iceTransport; - var dtlsTransport = transceiver.dtlsTransport; - var localCapabilities = transceiver.localCapabilities; - var remoteCapabilities = transceiver.remoteCapabilities; - - // treat bundle-only as not-rejected. - var rejected = SDPUtils.isRejected(mediaSection) && - SDPUtils.matchPrefix(mediaSection, 'a=bundle-only').length === 0; - - if (!rejected && !transceiver.rejected) { - var remoteIceParameters = SDPUtils.getIceParameters( - mediaSection, sessionpart); - var remoteDtlsParameters = SDPUtils.getDtlsParameters( - mediaSection, sessionpart); - if (isIceLite) { - remoteDtlsParameters.role = 'server'; - } - - if (!pc.usingBundle || sdpMLineIndex === 0) { - pc._gather(transceiver.mid, sdpMLineIndex); - if (iceTransport.state === 'new') { - iceTransport.start(iceGatherer, remoteIceParameters, - isIceLite ? 'controlling' : 'controlled'); - } - if (dtlsTransport.state === 'new') { - dtlsTransport.start(remoteDtlsParameters); - } - } - - // Calculate intersection of capabilities. - var params = getCommonCapabilities(localCapabilities, - remoteCapabilities); - - // Start the RTCRtpSender. The RTCRtpReceiver for this - // transceiver has already been started in setRemoteDescription. - pc._transceive(transceiver, - params.codecs.length > 0, - false); - } - }); - } - - pc._localDescription = { - type: description.type, - sdp: description.sdp - }; - if (description.type === 'offer') { - pc._updateSignalingState('have-local-offer'); - } else { - pc._updateSignalingState('stable'); - } - - return Promise.resolve(); - }; - - RTCPeerConnection.prototype.setRemoteDescription = function(description) { - var pc = this; - - // Note: pranswer is not supported. - if (['offer', 'answer'].indexOf(description.type) === -1) { - return Promise.reject(makeError('TypeError', - 'Unsupported type "' + description.type + '"')); - } - - if (!isActionAllowedInSignalingState('setRemoteDescription', - description.type, pc.signalingState) || pc._isClosed) { - return Promise.reject(makeError('InvalidStateError', - 'Can not set remote ' + description.type + - ' in state ' + pc.signalingState)); - } - - var streams = {}; - pc.remoteStreams.forEach(function(stream) { - streams[stream.id] = stream; - }); - var receiverList = []; - var sections = SDPUtils.splitSections(description.sdp); - var sessionpart = sections.shift(); - var isIceLite = SDPUtils.matchPrefix(sessionpart, - 'a=ice-lite').length > 0; - var usingBundle = SDPUtils.matchPrefix(sessionpart, - 'a=group:BUNDLE ').length > 0; - pc.usingBundle = usingBundle; - var iceOptions = SDPUtils.matchPrefix(sessionpart, - 'a=ice-options:')[0]; - if (iceOptions) { - pc.canTrickleIceCandidates = iceOptions.substr(14).split(' ') - .indexOf('trickle') >= 0; - } else { - pc.canTrickleIceCandidates = false; - } - - sections.forEach(function(mediaSection, sdpMLineIndex) { - var lines = SDPUtils.splitLines(mediaSection); - var kind = SDPUtils.getKind(mediaSection); - // treat bundle-only as not-rejected. - var rejected = SDPUtils.isRejected(mediaSection) && - SDPUtils.matchPrefix(mediaSection, 'a=bundle-only').length === 0; - var protocol = lines[0].substr(2).split(' ')[2]; - - var direction = SDPUtils.getDirection(mediaSection, sessionpart); - var remoteMsid = SDPUtils.parseMsid(mediaSection); - - var mid = SDPUtils.getMid(mediaSection) || SDPUtils.generateIdentifier(); - - // Reject datachannels which are not implemented yet. - if (rejected || (kind === 'application' && (protocol === 'DTLS/SCTP' || - protocol === 'UDP/DTLS/SCTP'))) { - // TODO: this is dangerous in the case where a non-rejected m-line - // becomes rejected. - pc.transceivers[sdpMLineIndex] = { - mid: mid, - kind: kind, - protocol: protocol, - rejected: true - }; - return; - } - - if (!rejected && pc.transceivers[sdpMLineIndex] && - pc.transceivers[sdpMLineIndex].rejected) { - // recycle a rejected transceiver. - pc.transceivers[sdpMLineIndex] = pc._createTransceiver(kind, true); - } - - var transceiver; - var iceGatherer; - var iceTransport; - var dtlsTransport; - var rtpReceiver; - var sendEncodingParameters; - var recvEncodingParameters; - var localCapabilities; - - var track; - // FIXME: ensure the mediaSection has rtcp-mux set. - var remoteCapabilities = SDPUtils.parseRtpParameters(mediaSection); - var remoteIceParameters; - var remoteDtlsParameters; - if (!rejected) { - remoteIceParameters = SDPUtils.getIceParameters(mediaSection, - sessionpart); - remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection, - sessionpart); - remoteDtlsParameters.role = 'client'; - } - recvEncodingParameters = - SDPUtils.parseRtpEncodingParameters(mediaSection); - - var rtcpParameters = SDPUtils.parseRtcpParameters(mediaSection); - - var isComplete = SDPUtils.matchPrefix(mediaSection, - 'a=end-of-candidates', sessionpart).length > 0; - var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:') - .map(function(cand) { - return SDPUtils.parseCandidate(cand); - }) - .filter(function(cand) { - return cand.component === 1; - }); - - // Check if we can use BUNDLE and dispose transports. - if ((description.type === 'offer' || description.type === 'answer') && - !rejected && usingBundle && sdpMLineIndex > 0 && - pc.transceivers[sdpMLineIndex]) { - pc._disposeIceAndDtlsTransports(sdpMLineIndex); - pc.transceivers[sdpMLineIndex].iceGatherer = - pc.transceivers[0].iceGatherer; - pc.transceivers[sdpMLineIndex].iceTransport = - pc.transceivers[0].iceTransport; - pc.transceivers[sdpMLineIndex].dtlsTransport = - pc.transceivers[0].dtlsTransport; - if (pc.transceivers[sdpMLineIndex].rtpSender) { - pc.transceivers[sdpMLineIndex].rtpSender.setTransport( - pc.transceivers[0].dtlsTransport); - } - if (pc.transceivers[sdpMLineIndex].rtpReceiver) { - pc.transceivers[sdpMLineIndex].rtpReceiver.setTransport( - pc.transceivers[0].dtlsTransport); - } - } - if (description.type === 'offer' && !rejected) { - transceiver = pc.transceivers[sdpMLineIndex] || - pc._createTransceiver(kind); - transceiver.mid = mid; - - if (!transceiver.iceGatherer) { - transceiver.iceGatherer = pc._createIceGatherer(sdpMLineIndex, - usingBundle); - } - - if (cands.length && transceiver.iceTransport.state === 'new') { - if (isComplete && (!usingBundle || sdpMLineIndex === 0)) { - transceiver.iceTransport.setRemoteCandidates(cands); - } else { - cands.forEach(function(candidate) { - maybeAddCandidate(transceiver.iceTransport, candidate); - }); - } - } - - localCapabilities = window.RTCRtpReceiver.getCapabilities(kind); - - // filter RTX until additional stuff needed for RTX is implemented - // in adapter.js - if (edgeVersion < 15019) { - localCapabilities.codecs = localCapabilities.codecs.filter( - function(codec) { - return codec.name !== 'rtx'; - }); - } - - sendEncodingParameters = transceiver.sendEncodingParameters || [{ - ssrc: (2 * sdpMLineIndex + 2) * 1001 - }]; - - // TODO: rewrite to use http://w3c.github.io/webrtc-pc/#set-associated-remote-streams - var isNewTrack = false; - if (direction === 'sendrecv' || direction === 'sendonly') { - isNewTrack = !transceiver.rtpReceiver; - rtpReceiver = transceiver.rtpReceiver || - new window.RTCRtpReceiver(transceiver.dtlsTransport, kind); - - if (isNewTrack) { - var stream; - track = rtpReceiver.track; - // FIXME: does not work with Plan B. - if (remoteMsid && remoteMsid.stream === '-') { - // no-op. a stream id of '-' means: no associated stream. - } else if (remoteMsid) { - if (!streams[remoteMsid.stream]) { - streams[remoteMsid.stream] = new window.MediaStream(); - Object.defineProperty(streams[remoteMsid.stream], 'id', { - get: function() { - return remoteMsid.stream; - } - }); - } - Object.defineProperty(track, 'id', { - get: function() { - return remoteMsid.track; - } - }); - stream = streams[remoteMsid.stream]; - } else { - if (!streams.default) { - streams.default = new window.MediaStream(); - } - stream = streams.default; - } - if (stream) { - addTrackToStreamAndFireEvent(track, stream); - transceiver.associatedRemoteMediaStreams.push(stream); - } - receiverList.push([track, rtpReceiver, stream]); - } - } else if (transceiver.rtpReceiver && transceiver.rtpReceiver.track) { - transceiver.associatedRemoteMediaStreams.forEach(function(s) { - var nativeTrack = s.getTracks().find(function(t) { - return t.id === transceiver.rtpReceiver.track.id; - }); - if (nativeTrack) { - removeTrackFromStreamAndFireEvent(nativeTrack, s); - } - }); - transceiver.associatedRemoteMediaStreams = []; - } - - transceiver.localCapabilities = localCapabilities; - transceiver.remoteCapabilities = remoteCapabilities; - transceiver.rtpReceiver = rtpReceiver; - transceiver.rtcpParameters = rtcpParameters; - transceiver.sendEncodingParameters = sendEncodingParameters; - transceiver.recvEncodingParameters = recvEncodingParameters; - - // Start the RTCRtpReceiver now. The RTPSender is started in - // setLocalDescription. - pc._transceive(pc.transceivers[sdpMLineIndex], - false, - isNewTrack); - } else if (description.type === 'answer' && !rejected) { - transceiver = pc.transceivers[sdpMLineIndex]; - iceGatherer = transceiver.iceGatherer; - iceTransport = transceiver.iceTransport; - dtlsTransport = transceiver.dtlsTransport; - rtpReceiver = transceiver.rtpReceiver; - sendEncodingParameters = transceiver.sendEncodingParameters; - localCapabilities = transceiver.localCapabilities; - - pc.transceivers[sdpMLineIndex].recvEncodingParameters = - recvEncodingParameters; - pc.transceivers[sdpMLineIndex].remoteCapabilities = - remoteCapabilities; - pc.transceivers[sdpMLineIndex].rtcpParameters = rtcpParameters; - - if (cands.length && iceTransport.state === 'new') { - if ((isIceLite || isComplete) && - (!usingBundle || sdpMLineIndex === 0)) { - iceTransport.setRemoteCandidates(cands); - } else { - cands.forEach(function(candidate) { - maybeAddCandidate(transceiver.iceTransport, candidate); - }); - } - } - - if (!usingBundle || sdpMLineIndex === 0) { - if (iceTransport.state === 'new') { - iceTransport.start(iceGatherer, remoteIceParameters, - 'controlling'); - } - if (dtlsTransport.state === 'new') { - dtlsTransport.start(remoteDtlsParameters); - } - } - - // If the offer contained RTX but the answer did not, - // remove RTX from sendEncodingParameters. - var commonCapabilities = getCommonCapabilities( - transceiver.localCapabilities, - transceiver.remoteCapabilities); - - var hasRtx = commonCapabilities.codecs.filter(function(c) { - return c.name.toLowerCase() === 'rtx'; - }).length; - if (!hasRtx && transceiver.sendEncodingParameters[0].rtx) { - delete transceiver.sendEncodingParameters[0].rtx; - } - - pc._transceive(transceiver, - direction === 'sendrecv' || direction === 'recvonly', - direction === 'sendrecv' || direction === 'sendonly'); - - // TODO: rewrite to use http://w3c.github.io/webrtc-pc/#set-associated-remote-streams - if (rtpReceiver && - (direction === 'sendrecv' || direction === 'sendonly')) { - track = rtpReceiver.track; - if (remoteMsid) { - if (!streams[remoteMsid.stream]) { - streams[remoteMsid.stream] = new window.MediaStream(); - } - addTrackToStreamAndFireEvent(track, streams[remoteMsid.stream]); - receiverList.push([track, rtpReceiver, streams[remoteMsid.stream]]); - } else { - if (!streams.default) { - streams.default = new window.MediaStream(); - } - addTrackToStreamAndFireEvent(track, streams.default); - receiverList.push([track, rtpReceiver, streams.default]); - } - } else { - // FIXME: actually the receiver should be created later. - delete transceiver.rtpReceiver; - } - } - }); - - if (pc._dtlsRole === undefined) { - pc._dtlsRole = description.type === 'offer' ? 'active' : 'passive'; - } - - pc._remoteDescription = { - type: description.type, - sdp: description.sdp - }; - if (description.type === 'offer') { - pc._updateSignalingState('have-remote-offer'); - } else { - pc._updateSignalingState('stable'); - } - Object.keys(streams).forEach(function(sid) { - var stream = streams[sid]; - if (stream.getTracks().length) { - if (pc.remoteStreams.indexOf(stream) === -1) { - pc.remoteStreams.push(stream); - var event = new Event('addstream'); - event.stream = stream; - window.setTimeout(function() { - pc._dispatchEvent('addstream', event); - }); - } - - receiverList.forEach(function(item) { - var track = item[0]; - var receiver = item[1]; - if (stream.id !== item[2].id) { - return; - } - fireAddTrack(pc, track, receiver, [stream]); - }); - } - }); - receiverList.forEach(function(item) { - if (item[2]) { - return; - } - fireAddTrack(pc, item[0], item[1], []); - }); - - // check whether addIceCandidate({}) was called within four seconds after - // setRemoteDescription. - window.setTimeout(function() { - if (!(pc && pc.transceivers)) { - return; - } - pc.transceivers.forEach(function(transceiver) { - if (transceiver.iceTransport && - transceiver.iceTransport.state === 'new' && - transceiver.iceTransport.getRemoteCandidates().length > 0) { - console.warn('Timeout for addRemoteCandidate. Consider sending ' + - 'an end-of-candidates notification'); - transceiver.iceTransport.addRemoteCandidate({}); - } - }); - }, 4000); - - return Promise.resolve(); - }; - - RTCPeerConnection.prototype.close = function() { - this.transceivers.forEach(function(transceiver) { - /* not yet - if (transceiver.iceGatherer) { - transceiver.iceGatherer.close(); - } - */ - if (transceiver.iceTransport) { - transceiver.iceTransport.stop(); - } - if (transceiver.dtlsTransport) { - transceiver.dtlsTransport.stop(); - } - if (transceiver.rtpSender) { - transceiver.rtpSender.stop(); - } - if (transceiver.rtpReceiver) { - transceiver.rtpReceiver.stop(); - } - }); - // FIXME: clean up tracks, local streams, remote streams, etc - this._isClosed = true; - this._updateSignalingState('closed'); - }; - - // Update the signaling state. - RTCPeerConnection.prototype._updateSignalingState = function(newState) { - this.signalingState = newState; - var event = new Event('signalingstatechange'); - this._dispatchEvent('signalingstatechange', event); - }; - - // Determine whether to fire the negotiationneeded event. - RTCPeerConnection.prototype._maybeFireNegotiationNeeded = function() { - var pc = this; - if (this.signalingState !== 'stable' || this.needNegotiation === true) { - return; - } - this.needNegotiation = true; - window.setTimeout(function() { - if (pc.needNegotiation) { - pc.needNegotiation = false; - var event = new Event('negotiationneeded'); - pc._dispatchEvent('negotiationneeded', event); - } - }, 0); - }; - - // Update the ice connection state. - RTCPeerConnection.prototype._updateIceConnectionState = function() { - var newState; - var states = { - 'new': 0, - closed: 0, - checking: 0, - connected: 0, - completed: 0, - disconnected: 0, - failed: 0 - }; - this.transceivers.forEach(function(transceiver) { - if (transceiver.iceTransport && !transceiver.rejected) { - states[transceiver.iceTransport.state]++; - } - }); - - newState = 'new'; - if (states.failed > 0) { - newState = 'failed'; - } else if (states.checking > 0) { - newState = 'checking'; - } else if (states.disconnected > 0) { - newState = 'disconnected'; - } else if (states.new > 0) { - newState = 'new'; - } else if (states.connected > 0) { - newState = 'connected'; - } else if (states.completed > 0) { - newState = 'completed'; - } - - if (newState !== this.iceConnectionState) { - this.iceConnectionState = newState; - var event = new Event('iceconnectionstatechange'); - this._dispatchEvent('iceconnectionstatechange', event); - } - }; - - // Update the connection state. - RTCPeerConnection.prototype._updateConnectionState = function() { - var newState; - var states = { - 'new': 0, - closed: 0, - connecting: 0, - connected: 0, - completed: 0, - disconnected: 0, - failed: 0 - }; - this.transceivers.forEach(function(transceiver) { - if (transceiver.iceTransport && transceiver.dtlsTransport && - !transceiver.rejected) { - states[transceiver.iceTransport.state]++; - states[transceiver.dtlsTransport.state]++; - } - }); - // ICETransport.completed and connected are the same for this purpose. - states.connected += states.completed; - - newState = 'new'; - if (states.failed > 0) { - newState = 'failed'; - } else if (states.connecting > 0) { - newState = 'connecting'; - } else if (states.disconnected > 0) { - newState = 'disconnected'; - } else if (states.new > 0) { - newState = 'new'; - } else if (states.connected > 0) { - newState = 'connected'; - } - - if (newState !== this.connectionState) { - this.connectionState = newState; - var event = new Event('connectionstatechange'); - this._dispatchEvent('connectionstatechange', event); - } - }; - - RTCPeerConnection.prototype.createOffer = function() { - var pc = this; - - if (pc._isClosed) { - return Promise.reject(makeError('InvalidStateError', - 'Can not call createOffer after close')); - } - - var numAudioTracks = pc.transceivers.filter(function(t) { - return t.kind === 'audio'; - }).length; - var numVideoTracks = pc.transceivers.filter(function(t) { - return t.kind === 'video'; - }).length; - - // Determine number of audio and video tracks we need to send/recv. - var offerOptions = arguments[0]; - if (offerOptions) { - // Reject Chrome legacy constraints. - if (offerOptions.mandatory || offerOptions.optional) { - throw new TypeError( - 'Legacy mandatory/optional constraints not supported.'); - } - if (offerOptions.offerToReceiveAudio !== undefined) { - if (offerOptions.offerToReceiveAudio === true) { - numAudioTracks = 1; - } else if (offerOptions.offerToReceiveAudio === false) { - numAudioTracks = 0; - } else { - numAudioTracks = offerOptions.offerToReceiveAudio; - } - } - if (offerOptions.offerToReceiveVideo !== undefined) { - if (offerOptions.offerToReceiveVideo === true) { - numVideoTracks = 1; - } else if (offerOptions.offerToReceiveVideo === false) { - numVideoTracks = 0; - } else { - numVideoTracks = offerOptions.offerToReceiveVideo; - } - } - } - - pc.transceivers.forEach(function(transceiver) { - if (transceiver.kind === 'audio') { - numAudioTracks--; - if (numAudioTracks < 0) { - transceiver.wantReceive = false; - } - } else if (transceiver.kind === 'video') { - numVideoTracks--; - if (numVideoTracks < 0) { - transceiver.wantReceive = false; - } - } - }); - - // Create M-lines for recvonly streams. - while (numAudioTracks > 0 || numVideoTracks > 0) { - if (numAudioTracks > 0) { - pc._createTransceiver('audio'); - numAudioTracks--; - } - if (numVideoTracks > 0) { - pc._createTransceiver('video'); - numVideoTracks--; - } - } - - var sdp = SDPUtils.writeSessionBoilerplate(pc._sdpSessionId, - pc._sdpSessionVersion++); - pc.transceivers.forEach(function(transceiver, sdpMLineIndex) { - // For each track, create an ice gatherer, ice transport, - // dtls transport, potentially rtpsender and rtpreceiver. - var track = transceiver.track; - var kind = transceiver.kind; - var mid = transceiver.mid || SDPUtils.generateIdentifier(); - transceiver.mid = mid; - - if (!transceiver.iceGatherer) { - transceiver.iceGatherer = pc._createIceGatherer(sdpMLineIndex, - pc.usingBundle); - } - - var localCapabilities = window.RTCRtpSender.getCapabilities(kind); - // filter RTX until additional stuff needed for RTX is implemented - // in adapter.js - if (edgeVersion < 15019) { - localCapabilities.codecs = localCapabilities.codecs.filter( - function(codec) { - return codec.name !== 'rtx'; - }); - } - localCapabilities.codecs.forEach(function(codec) { - // work around https://bugs.chromium.org/p/webrtc/issues/detail?id=6552 - // by adding level-asymmetry-allowed=1 - if (codec.name === 'H264' && - codec.parameters['level-asymmetry-allowed'] === undefined) { - codec.parameters['level-asymmetry-allowed'] = '1'; - } - - // for subsequent offers, we might have to re-use the payload - // type of the last offer. - if (transceiver.remoteCapabilities && - transceiver.remoteCapabilities.codecs) { - transceiver.remoteCapabilities.codecs.forEach(function(remoteCodec) { - if (codec.name.toLowerCase() === remoteCodec.name.toLowerCase() && - codec.clockRate === remoteCodec.clockRate) { - codec.preferredPayloadType = remoteCodec.payloadType; - } - }); - } - }); - localCapabilities.headerExtensions.forEach(function(hdrExt) { - var remoteExtensions = transceiver.remoteCapabilities && - transceiver.remoteCapabilities.headerExtensions || []; - remoteExtensions.forEach(function(rHdrExt) { - if (hdrExt.uri === rHdrExt.uri) { - hdrExt.id = rHdrExt.id; - } - }); - }); - - // generate an ssrc now, to be used later in rtpSender.send - var sendEncodingParameters = transceiver.sendEncodingParameters || [{ - ssrc: (2 * sdpMLineIndex + 1) * 1001 - }]; - if (track) { - // add RTX - if (edgeVersion >= 15019 && kind === 'video' && - !sendEncodingParameters[0].rtx) { - sendEncodingParameters[0].rtx = { - ssrc: sendEncodingParameters[0].ssrc + 1 - }; - } - } - - if (transceiver.wantReceive) { - transceiver.rtpReceiver = new window.RTCRtpReceiver( - transceiver.dtlsTransport, kind); - } - - transceiver.localCapabilities = localCapabilities; - transceiver.sendEncodingParameters = sendEncodingParameters; - }); - - // always offer BUNDLE and dispose on return if not supported. - if (pc._config.bundlePolicy !== 'max-compat') { - sdp += 'a=group:BUNDLE ' + pc.transceivers.map(function(t) { - return t.mid; - }).join(' ') + '\r\n'; - } - sdp += 'a=ice-options:trickle\r\n'; - - pc.transceivers.forEach(function(transceiver, sdpMLineIndex) { - sdp += writeMediaSection(transceiver, transceiver.localCapabilities, - 'offer', transceiver.stream, pc._dtlsRole); - sdp += 'a=rtcp-rsize\r\n'; - - if (transceiver.iceGatherer && pc.iceGatheringState !== 'new' && - (sdpMLineIndex === 0 || !pc.usingBundle)) { - transceiver.iceGatherer.getLocalCandidates().forEach(function(cand) { - cand.component = 1; - sdp += 'a=' + SDPUtils.writeCandidate(cand) + '\r\n'; - }); - - if (transceiver.iceGatherer.state === 'completed') { - sdp += 'a=end-of-candidates\r\n'; - } - } - }); - - var desc = new window.RTCSessionDescription({ - type: 'offer', - sdp: sdp - }); - return Promise.resolve(desc); - }; - - RTCPeerConnection.prototype.createAnswer = function() { - var pc = this; - - if (pc._isClosed) { - return Promise.reject(makeError('InvalidStateError', - 'Can not call createAnswer after close')); - } - - if (!(pc.signalingState === 'have-remote-offer' || - pc.signalingState === 'have-local-pranswer')) { - return Promise.reject(makeError('InvalidStateError', - 'Can not call createAnswer in signalingState ' + pc.signalingState)); - } - - var sdp = SDPUtils.writeSessionBoilerplate(pc._sdpSessionId, - pc._sdpSessionVersion++); - if (pc.usingBundle) { - sdp += 'a=group:BUNDLE ' + pc.transceivers.map(function(t) { - return t.mid; - }).join(' ') + '\r\n'; - } - sdp += 'a=ice-options:trickle\r\n'; - - var mediaSectionsInOffer = SDPUtils.getMediaSections( - pc._remoteDescription.sdp).length; - pc.transceivers.forEach(function(transceiver, sdpMLineIndex) { - if (sdpMLineIndex + 1 > mediaSectionsInOffer) { - return; - } - if (transceiver.rejected) { - if (transceiver.kind === 'application') { - if (transceiver.protocol === 'DTLS/SCTP') { // legacy fmt - sdp += 'm=application 0 DTLS/SCTP 5000\r\n'; - } else { - sdp += 'm=application 0 ' + transceiver.protocol + - ' webrtc-datachannel\r\n'; - } - } else if (transceiver.kind === 'audio') { - sdp += 'm=audio 0 UDP/TLS/RTP/SAVPF 0\r\n' + - 'a=rtpmap:0 PCMU/8000\r\n'; - } else if (transceiver.kind === 'video') { - sdp += 'm=video 0 UDP/TLS/RTP/SAVPF 120\r\n' + - 'a=rtpmap:120 VP8/90000\r\n'; - } - sdp += 'c=IN IP4 0.0.0.0\r\n' + - 'a=inactive\r\n' + - 'a=mid:' + transceiver.mid + '\r\n'; - return; - } - - // FIXME: look at direction. - if (transceiver.stream) { - var localTrack; - if (transceiver.kind === 'audio') { - localTrack = transceiver.stream.getAudioTracks()[0]; - } else if (transceiver.kind === 'video') { - localTrack = transceiver.stream.getVideoTracks()[0]; - } - if (localTrack) { - // add RTX - if (edgeVersion >= 15019 && transceiver.kind === 'video' && - !transceiver.sendEncodingParameters[0].rtx) { - transceiver.sendEncodingParameters[0].rtx = { - ssrc: transceiver.sendEncodingParameters[0].ssrc + 1 - }; - } - } - } - - // Calculate intersection of capabilities. - var commonCapabilities = getCommonCapabilities( - transceiver.localCapabilities, - transceiver.remoteCapabilities); - - var hasRtx = commonCapabilities.codecs.filter(function(c) { - return c.name.toLowerCase() === 'rtx'; - }).length; - if (!hasRtx && transceiver.sendEncodingParameters[0].rtx) { - delete transceiver.sendEncodingParameters[0].rtx; - } - - sdp += writeMediaSection(transceiver, commonCapabilities, - 'answer', transceiver.stream, pc._dtlsRole); - if (transceiver.rtcpParameters && - transceiver.rtcpParameters.reducedSize) { - sdp += 'a=rtcp-rsize\r\n'; - } - }); - - var desc = new window.RTCSessionDescription({ - type: 'answer', - sdp: sdp - }); - return Promise.resolve(desc); - }; - - RTCPeerConnection.prototype.addIceCandidate = function(candidate) { - var pc = this; - var sections; - if (candidate && !(candidate.sdpMLineIndex !== undefined || - candidate.sdpMid)) { - return Promise.reject(new TypeError('sdpMLineIndex or sdpMid required')); - } - - // TODO: needs to go into ops queue. - return new Promise(function(resolve, reject) { - if (!pc._remoteDescription) { - return reject(makeError('InvalidStateError', - 'Can not add ICE candidate without a remote description')); - } else if (!candidate || candidate.candidate === '') { - for (var j = 0; j < pc.transceivers.length; j++) { - if (pc.transceivers[j].rejected) { - continue; - } - pc.transceivers[j].iceTransport.addRemoteCandidate({}); - sections = SDPUtils.getMediaSections(pc._remoteDescription.sdp); - sections[j] += 'a=end-of-candidates\r\n'; - pc._remoteDescription.sdp = - SDPUtils.getDescription(pc._remoteDescription.sdp) + - sections.join(''); - if (pc.usingBundle) { - break; - } - } - } else { - var sdpMLineIndex = candidate.sdpMLineIndex; - if (candidate.sdpMid) { - for (var i = 0; i < pc.transceivers.length; i++) { - if (pc.transceivers[i].mid === candidate.sdpMid) { - sdpMLineIndex = i; - break; - } - } - } - var transceiver = pc.transceivers[sdpMLineIndex]; - if (transceiver) { - if (transceiver.rejected) { - return resolve(); - } - var cand = Object.keys(candidate.candidate).length > 0 ? - SDPUtils.parseCandidate(candidate.candidate) : {}; - // Ignore Chrome's invalid candidates since Edge does not like them. - if (cand.protocol === 'tcp' && (cand.port === 0 || cand.port === 9)) { - return resolve(); - } - // Ignore RTCP candidates, we assume RTCP-MUX. - if (cand.component && cand.component !== 1) { - return resolve(); - } - // when using bundle, avoid adding candidates to the wrong - // ice transport. And avoid adding candidates added in the SDP. - if (sdpMLineIndex === 0 || (sdpMLineIndex > 0 && - transceiver.iceTransport !== pc.transceivers[0].iceTransport)) { - if (!maybeAddCandidate(transceiver.iceTransport, cand)) { - return reject(makeError('OperationError', - 'Can not add ICE candidate')); - } - } - - // update the remoteDescription. - var candidateString = candidate.candidate.trim(); - if (candidateString.indexOf('a=') === 0) { - candidateString = candidateString.substr(2); - } - sections = SDPUtils.getMediaSections(pc._remoteDescription.sdp); - sections[sdpMLineIndex] += 'a=' + - (cand.type ? candidateString : 'end-of-candidates') - + '\r\n'; - pc._remoteDescription.sdp = - SDPUtils.getDescription(pc._remoteDescription.sdp) + - sections.join(''); - } else { - return reject(makeError('OperationError', - 'Can not add ICE candidate')); - } - } - resolve(); - }); - }; - - RTCPeerConnection.prototype.getStats = function(selector) { - if (selector && selector instanceof window.MediaStreamTrack) { - var senderOrReceiver = null; - this.transceivers.forEach(function(transceiver) { - if (transceiver.rtpSender && - transceiver.rtpSender.track === selector) { - senderOrReceiver = transceiver.rtpSender; - } else if (transceiver.rtpReceiver && - transceiver.rtpReceiver.track === selector) { - senderOrReceiver = transceiver.rtpReceiver; - } - }); - if (!senderOrReceiver) { - throw makeError('InvalidAccessError', 'Invalid selector.'); - } - return senderOrReceiver.getStats(); - } - - var promises = []; - this.transceivers.forEach(function(transceiver) { - ['rtpSender', 'rtpReceiver', 'iceGatherer', 'iceTransport', - 'dtlsTransport'].forEach(function(method) { - if (transceiver[method]) { - promises.push(transceiver[method].getStats()); - } - }); - }); - return Promise.all(promises).then(function(allStats) { - var results = new Map(); - allStats.forEach(function(stats) { - stats.forEach(function(stat) { - results.set(stat.id, stat); - }); - }); - return results; - }); - }; - - // fix low-level stat names and return Map instead of object. - var ortcObjects = ['RTCRtpSender', 'RTCRtpReceiver', 'RTCIceGatherer', - 'RTCIceTransport', 'RTCDtlsTransport']; - ortcObjects.forEach(function(ortcObjectName) { - var obj = window[ortcObjectName]; - if (obj && obj.prototype && obj.prototype.getStats) { - var nativeGetstats = obj.prototype.getStats; - obj.prototype.getStats = function() { - return nativeGetstats.apply(this) - .then(function(nativeStats) { - var mapStats = new Map(); - Object.keys(nativeStats).forEach(function(id) { - nativeStats[id].type = fixStatsType(nativeStats[id]); - mapStats.set(id, nativeStats[id]); - }); - return mapStats; - }); - }; - } - }); - - // legacy callback shims. Should be moved to adapter.js some days. - var methods = ['createOffer', 'createAnswer']; - methods.forEach(function(method) { - var nativeMethod = RTCPeerConnection.prototype[method]; - RTCPeerConnection.prototype[method] = function() { - var args = arguments; - if (typeof args[0] === 'function' || - typeof args[1] === 'function') { // legacy - return nativeMethod.apply(this, [arguments[2]]) - .then(function(description) { - if (typeof args[0] === 'function') { - args[0].apply(null, [description]); - } - }, function(error) { - if (typeof args[1] === 'function') { - args[1].apply(null, [error]); - } - }); - } - return nativeMethod.apply(this, arguments); - }; - }); - - methods = ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']; - methods.forEach(function(method) { - var nativeMethod = RTCPeerConnection.prototype[method]; - RTCPeerConnection.prototype[method] = function() { - var args = arguments; - if (typeof args[1] === 'function' || - typeof args[2] === 'function') { // legacy - return nativeMethod.apply(this, arguments) - .then(function() { - if (typeof args[1] === 'function') { - args[1].apply(null); - } - }, function(error) { - if (typeof args[2] === 'function') { - args[2].apply(null, [error]); - } - }); - } - return nativeMethod.apply(this, arguments); - }; - }); - - // getStats is special. It doesn't have a spec legacy method yet we support - // getStats(something, cb) without error callbacks. - ['getStats'].forEach(function(method) { - var nativeMethod = RTCPeerConnection.prototype[method]; - RTCPeerConnection.prototype[method] = function() { - var args = arguments; - if (typeof args[1] === 'function') { - return nativeMethod.apply(this, arguments) - .then(function() { - if (typeof args[1] === 'function') { - args[1].apply(null); - } - }); - } - return nativeMethod.apply(this, arguments); - }; - }); - - return RTCPeerConnection; -}; - -},{"sdp":17}],17:[function(require,module,exports){ -/* eslint-env node */ -'use strict'; - -// SDP helpers. -var SDPUtils = {}; - -// Generate an alphanumeric identifier for cname or mids. -// TODO: use UUIDs instead? https://gist.github.com/jed/982883 -SDPUtils.generateIdentifier = function() { - return Math.random().toString(36).substr(2, 10); -}; - -// The RTCP CNAME used by all peerconnections from the same JS. -SDPUtils.localCName = SDPUtils.generateIdentifier(); - -// Splits SDP into lines, dealing with both CRLF and LF. -SDPUtils.splitLines = function(blob) { - return blob.trim().split('\n').map(function(line) { - return line.trim(); - }); -}; -// Splits SDP into sessionpart and mediasections. Ensures CRLF. -SDPUtils.splitSections = function(blob) { - var parts = blob.split('\nm='); - return parts.map(function(part, index) { - return (index > 0 ? 'm=' + part : part).trim() + '\r\n'; - }); -}; - -// returns the session description. -SDPUtils.getDescription = function(blob) { - var sections = SDPUtils.splitSections(blob); - return sections && sections[0]; -}; - -// returns the individual media sections. -SDPUtils.getMediaSections = function(blob) { - var sections = SDPUtils.splitSections(blob); - sections.shift(); - return sections; -}; - -// Returns lines that start with a certain prefix. -SDPUtils.matchPrefix = function(blob, prefix) { - return SDPUtils.splitLines(blob).filter(function(line) { - return line.indexOf(prefix) === 0; - }); -}; - -// Parses an ICE candidate line. Sample input: -// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8 -// rport 55996" -SDPUtils.parseCandidate = function(line) { - var parts; - // Parse both variants. - if (line.indexOf('a=candidate:') === 0) { - parts = line.substring(12).split(' '); - } else { - parts = line.substring(10).split(' '); - } - - var candidate = { - foundation: parts[0], - component: parseInt(parts[1], 10), - protocol: parts[2].toLowerCase(), - priority: parseInt(parts[3], 10), - ip: parts[4], - address: parts[4], // address is an alias for ip. - port: parseInt(parts[5], 10), - // skip parts[6] == 'typ' - type: parts[7] - }; - - for (var i = 8; i < parts.length; i += 2) { - switch (parts[i]) { - case 'raddr': - candidate.relatedAddress = parts[i + 1]; - break; - case 'rport': - candidate.relatedPort = parseInt(parts[i + 1], 10); - break; - case 'tcptype': - candidate.tcpType = parts[i + 1]; - break; - case 'ufrag': - candidate.ufrag = parts[i + 1]; // for backward compability. - candidate.usernameFragment = parts[i + 1]; - break; - default: // extension handling, in particular ufrag - candidate[parts[i]] = parts[i + 1]; - break; - } - } - return candidate; -}; - -// Translates a candidate object into SDP candidate attribute. -SDPUtils.writeCandidate = function(candidate) { - var sdp = []; - sdp.push(candidate.foundation); - sdp.push(candidate.component); - sdp.push(candidate.protocol.toUpperCase()); - sdp.push(candidate.priority); - sdp.push(candidate.address || candidate.ip); - sdp.push(candidate.port); - - var type = candidate.type; - sdp.push('typ'); - sdp.push(type); - if (type !== 'host' && candidate.relatedAddress && - candidate.relatedPort) { - sdp.push('raddr'); - sdp.push(candidate.relatedAddress); - sdp.push('rport'); - sdp.push(candidate.relatedPort); - } - if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') { - sdp.push('tcptype'); - sdp.push(candidate.tcpType); - } - if (candidate.usernameFragment || candidate.ufrag) { - sdp.push('ufrag'); - sdp.push(candidate.usernameFragment || candidate.ufrag); - } - return 'candidate:' + sdp.join(' '); -}; - -// Parses an ice-options line, returns an array of option tags. -// a=ice-options:foo bar -SDPUtils.parseIceOptions = function(line) { - return line.substr(14).split(' '); -}; - -// Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input: -// a=rtpmap:111 opus/48000/2 -SDPUtils.parseRtpMap = function(line) { - var parts = line.substr(9).split(' '); - var parsed = { - payloadType: parseInt(parts.shift(), 10) // was: id - }; - - parts = parts[0].split('/'); - - parsed.name = parts[0]; - parsed.clockRate = parseInt(parts[1], 10); // was: clockrate - parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1; - // legacy alias, got renamed back to channels in ORTC. - parsed.numChannels = parsed.channels; - return parsed; -}; - -// Generate an a=rtpmap line from RTCRtpCodecCapability or -// RTCRtpCodecParameters. -SDPUtils.writeRtpMap = function(codec) { - var pt = codec.payloadType; - if (codec.preferredPayloadType !== undefined) { - pt = codec.preferredPayloadType; - } - var channels = codec.channels || codec.numChannels || 1; - return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate + - (channels !== 1 ? '/' + channels : '') + '\r\n'; -}; - -// Parses an a=extmap line (headerextension from RFC 5285). Sample input: -// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset -// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset -SDPUtils.parseExtmap = function(line) { - var parts = line.substr(9).split(' '); - return { - id: parseInt(parts[0], 10), - direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv', - uri: parts[1] - }; -}; - -// Generates a=extmap line from RTCRtpHeaderExtensionParameters or -// RTCRtpHeaderExtension. -SDPUtils.writeExtmap = function(headerExtension) { - return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) + - (headerExtension.direction && headerExtension.direction !== 'sendrecv' - ? '/' + headerExtension.direction - : '') + - ' ' + headerExtension.uri + '\r\n'; -}; - -// Parses an ftmp line, returns dictionary. Sample input: -// a=fmtp:96 vbr=on;cng=on -// Also deals with vbr=on; cng=on -SDPUtils.parseFmtp = function(line) { - var parsed = {}; - var kv; - var parts = line.substr(line.indexOf(' ') + 1).split(';'); - for (var j = 0; j < parts.length; j++) { - kv = parts[j].trim().split('='); - parsed[kv[0].trim()] = kv[1]; - } - return parsed; -}; - -// Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters. -SDPUtils.writeFmtp = function(codec) { - var line = ''; - var pt = codec.payloadType; - if (codec.preferredPayloadType !== undefined) { - pt = codec.preferredPayloadType; - } - if (codec.parameters && Object.keys(codec.parameters).length) { - var params = []; - Object.keys(codec.parameters).forEach(function(param) { - if (codec.parameters[param]) { - params.push(param + '=' + codec.parameters[param]); - } else { - params.push(param); - } - }); - line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\r\n'; - } - return line; -}; - -// Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input: -// a=rtcp-fb:98 nack rpsi -SDPUtils.parseRtcpFb = function(line) { - var parts = line.substr(line.indexOf(' ') + 1).split(' '); - return { - type: parts.shift(), - parameter: parts.join(' ') - }; -}; -// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters. -SDPUtils.writeRtcpFb = function(codec) { - var lines = ''; - var pt = codec.payloadType; - if (codec.preferredPayloadType !== undefined) { - pt = codec.preferredPayloadType; - } - if (codec.rtcpFeedback && codec.rtcpFeedback.length) { - // FIXME: special handling for trr-int? - codec.rtcpFeedback.forEach(function(fb) { - lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + - (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') + - '\r\n'; - }); - } - return lines; -}; - -// Parses an RFC 5576 ssrc media attribute. Sample input: -// a=ssrc:3735928559 cname:something -SDPUtils.parseSsrcMedia = function(line) { - var sp = line.indexOf(' '); - var parts = { - ssrc: parseInt(line.substr(7, sp - 7), 10) - }; - var colon = line.indexOf(':', sp); - if (colon > -1) { - parts.attribute = line.substr(sp + 1, colon - sp - 1); - parts.value = line.substr(colon + 1); - } else { - parts.attribute = line.substr(sp + 1); - } - return parts; -}; - -SDPUtils.parseSsrcGroup = function(line) { - var parts = line.substr(13).split(' '); - return { - semantics: parts.shift(), - ssrcs: parts.map(function(ssrc) { - return parseInt(ssrc, 10); - }) - }; -}; - -// Extracts the MID (RFC 5888) from a media section. -// returns the MID or undefined if no mid line was found. -SDPUtils.getMid = function(mediaSection) { - var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0]; - if (mid) { - return mid.substr(6); - } -}; - -SDPUtils.parseFingerprint = function(line) { - var parts = line.substr(14).split(' '); - return { - algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge. - value: parts[1] - }; -}; - -// Extracts DTLS parameters from SDP media section or sessionpart. -// FIXME: for consistency with other functions this should only -// get the fingerprint line as input. See also getIceParameters. -SDPUtils.getDtlsParameters = function(mediaSection, sessionpart) { - var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, - 'a=fingerprint:'); - // Note: a=setup line is ignored since we use the 'auto' role. - // Note2: 'algorithm' is not case sensitive except in Edge. - return { - role: 'auto', - fingerprints: lines.map(SDPUtils.parseFingerprint) - }; -}; - -// Serializes DTLS parameters to SDP. -SDPUtils.writeDtlsParameters = function(params, setupType) { - var sdp = 'a=setup:' + setupType + '\r\n'; - params.fingerprints.forEach(function(fp) { - sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\r\n'; - }); - return sdp; -}; - -// Parses a=crypto lines into -// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members -SDPUtils.parseCryptoLine = function(line) { - var parts = line.substr(9).split(' '); - return { - tag: parseInt(parts[0], 10), - cryptoSuite: parts[1], - keyParams: parts[2], - sessionParams: parts.slice(3), - }; -}; - -SDPUtils.writeCryptoLine = function(parameters) { - return 'a=crypto:' + parameters.tag + ' ' + - parameters.cryptoSuite + ' ' + - (typeof parameters.keyParams === 'object' - ? SDPUtils.writeCryptoKeyParams(parameters.keyParams) - : parameters.keyParams) + - (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') + - '\r\n'; -}; - -// Parses the crypto key parameters into -// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam* -SDPUtils.parseCryptoKeyParams = function(keyParams) { - if (keyParams.indexOf('inline:') !== 0) { - return null; - } - var parts = keyParams.substr(7).split('|'); - return { - keyMethod: 'inline', - keySalt: parts[0], - lifeTime: parts[1], - mkiValue: parts[2] ? parts[2].split(':')[0] : undefined, - mkiLength: parts[2] ? parts[2].split(':')[1] : undefined, - }; -}; - -SDPUtils.writeCryptoKeyParams = function(keyParams) { - return keyParams.keyMethod + ':' - + keyParams.keySalt + - (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') + - (keyParams.mkiValue && keyParams.mkiLength - ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength - : ''); -}; - -// Extracts all SDES paramters. -SDPUtils.getCryptoParameters = function(mediaSection, sessionpart) { - var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, - 'a=crypto:'); - return lines.map(SDPUtils.parseCryptoLine); -}; - -// Parses ICE information from SDP media section or sessionpart. -// FIXME: for consistency with other functions this should only -// get the ice-ufrag and ice-pwd lines as input. -SDPUtils.getIceParameters = function(mediaSection, sessionpart) { - var ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart, - 'a=ice-ufrag:')[0]; - var pwd = SDPUtils.matchPrefix(mediaSection + sessionpart, - 'a=ice-pwd:')[0]; - if (!(ufrag && pwd)) { - return null; - } - return { - usernameFragment: ufrag.substr(12), - password: pwd.substr(10), - }; -}; - -// Serializes ICE parameters to SDP. -SDPUtils.writeIceParameters = function(params) { - return 'a=ice-ufrag:' + params.usernameFragment + '\r\n' + - 'a=ice-pwd:' + params.password + '\r\n'; -}; - -// Parses the SDP media section and returns RTCRtpParameters. -SDPUtils.parseRtpParameters = function(mediaSection) { - var description = { - codecs: [], - headerExtensions: [], - fecMechanisms: [], - rtcp: [] - }; - var lines = SDPUtils.splitLines(mediaSection); - var mline = lines[0].split(' '); - for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..] - var pt = mline[i]; - var rtpmapline = SDPUtils.matchPrefix( - mediaSection, 'a=rtpmap:' + pt + ' ')[0]; - if (rtpmapline) { - var codec = SDPUtils.parseRtpMap(rtpmapline); - var fmtps = SDPUtils.matchPrefix( - mediaSection, 'a=fmtp:' + pt + ' '); - // Only the first a=fmtp: is considered. - codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {}; - codec.rtcpFeedback = SDPUtils.matchPrefix( - mediaSection, 'a=rtcp-fb:' + pt + ' ') - .map(SDPUtils.parseRtcpFb); - description.codecs.push(codec); - // parse FEC mechanisms from rtpmap lines. - switch (codec.name.toUpperCase()) { - case 'RED': - case 'ULPFEC': - description.fecMechanisms.push(codec.name.toUpperCase()); - break; - default: // only RED and ULPFEC are recognized as FEC mechanisms. - break; - } - } - } - SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function(line) { - description.headerExtensions.push(SDPUtils.parseExtmap(line)); - }); - // FIXME: parse rtcp. - return description; -}; - -// Generates parts of the SDP media section describing the capabilities / -// parameters. -SDPUtils.writeRtpDescription = function(kind, caps) { - var sdp = ''; - - // Build the mline. - sdp += 'm=' + kind + ' '; - sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs. - sdp += ' UDP/TLS/RTP/SAVPF '; - sdp += caps.codecs.map(function(codec) { - if (codec.preferredPayloadType !== undefined) { - return codec.preferredPayloadType; - } - return codec.payloadType; - }).join(' ') + '\r\n'; - - sdp += 'c=IN IP4 0.0.0.0\r\n'; - sdp += 'a=rtcp:9 IN IP4 0.0.0.0\r\n'; - - // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb. - caps.codecs.forEach(function(codec) { - sdp += SDPUtils.writeRtpMap(codec); - sdp += SDPUtils.writeFmtp(codec); - sdp += SDPUtils.writeRtcpFb(codec); - }); - var maxptime = 0; - caps.codecs.forEach(function(codec) { - if (codec.maxptime > maxptime) { - maxptime = codec.maxptime; - } - }); - if (maxptime > 0) { - sdp += 'a=maxptime:' + maxptime + '\r\n'; - } - sdp += 'a=rtcp-mux\r\n'; - - if (caps.headerExtensions) { - caps.headerExtensions.forEach(function(extension) { - sdp += SDPUtils.writeExtmap(extension); - }); - } - // FIXME: write fecMechanisms. - return sdp; -}; - -// Parses the SDP media section and returns an array of -// RTCRtpEncodingParameters. -SDPUtils.parseRtpEncodingParameters = function(mediaSection) { - var encodingParameters = []; - var description = SDPUtils.parseRtpParameters(mediaSection); - var hasRed = description.fecMechanisms.indexOf('RED') !== -1; - var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1; - - // filter a=ssrc:... cname:, ignore PlanB-msid - var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:') - .map(function(line) { - return SDPUtils.parseSsrcMedia(line); - }) - .filter(function(parts) { - return parts.attribute === 'cname'; - }); - var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc; - var secondarySsrc; - - var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID') - .map(function(line) { - var parts = line.substr(17).split(' '); - return parts.map(function(part) { - return parseInt(part, 10); - }); - }); - if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) { - secondarySsrc = flows[0][1]; - } - - description.codecs.forEach(function(codec) { - if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) { - var encParam = { - ssrc: primarySsrc, - codecPayloadType: parseInt(codec.parameters.apt, 10) - }; - if (primarySsrc && secondarySsrc) { - encParam.rtx = {ssrc: secondarySsrc}; - } - encodingParameters.push(encParam); - if (hasRed) { - encParam = JSON.parse(JSON.stringify(encParam)); - encParam.fec = { - ssrc: primarySsrc, - mechanism: hasUlpfec ? 'red+ulpfec' : 'red' - }; - encodingParameters.push(encParam); - } - } - }); - if (encodingParameters.length === 0 && primarySsrc) { - encodingParameters.push({ - ssrc: primarySsrc - }); - } - - // we support both b=AS and b=TIAS but interpret AS as TIAS. - var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b='); - if (bandwidth.length) { - if (bandwidth[0].indexOf('b=TIAS:') === 0) { - bandwidth = parseInt(bandwidth[0].substr(7), 10); - } else if (bandwidth[0].indexOf('b=AS:') === 0) { - // use formula from JSEP to convert b=AS to TIAS value. - bandwidth = parseInt(bandwidth[0].substr(5), 10) * 1000 * 0.95 - - (50 * 40 * 8); - } else { - bandwidth = undefined; - } - encodingParameters.forEach(function(params) { - params.maxBitrate = bandwidth; - }); - } - return encodingParameters; -}; - -// parses http://draft.ortc.org/#rtcrtcpparameters* -SDPUtils.parseRtcpParameters = function(mediaSection) { - var rtcpParameters = {}; - - // Gets the first SSRC. Note tha with RTX there might be multiple - // SSRCs. - var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:') - .map(function(line) { - return SDPUtils.parseSsrcMedia(line); - }) - .filter(function(obj) { - return obj.attribute === 'cname'; - })[0]; - if (remoteSsrc) { - rtcpParameters.cname = remoteSsrc.value; - rtcpParameters.ssrc = remoteSsrc.ssrc; - } - - // Edge uses the compound attribute instead of reducedSize - // compound is !reducedSize - var rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize'); - rtcpParameters.reducedSize = rsize.length > 0; - rtcpParameters.compound = rsize.length === 0; - - // parses the rtcp-mux attrіbute. - // Note that Edge does not support unmuxed RTCP. - var mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux'); - rtcpParameters.mux = mux.length > 0; - - return rtcpParameters; -}; - -// parses either a=msid: or a=ssrc:... msid lines and returns -// the id of the MediaStream and MediaStreamTrack. -SDPUtils.parseMsid = function(mediaSection) { - var parts; - var spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:'); - if (spec.length === 1) { - parts = spec[0].substr(7).split(' '); - return {stream: parts[0], track: parts[1]}; - } - var planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:') - .map(function(line) { - return SDPUtils.parseSsrcMedia(line); - }) - .filter(function(msidParts) { - return msidParts.attribute === 'msid'; - }); - if (planB.length > 0) { - parts = planB[0].value.split(' '); - return {stream: parts[0], track: parts[1]}; - } -}; - -// SCTP -// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back -// to draft-ietf-mmusic-sctp-sdp-05 -SDPUtils.parseSctpDescription = function(mediaSection) { - var mline = SDPUtils.parseMLine(mediaSection); - var maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:'); - var maxMessageSize; - if (maxSizeLine.length > 0) { - maxMessageSize = parseInt(maxSizeLine[0].substr(19), 10); - } - if (isNaN(maxMessageSize)) { - maxMessageSize = 65536; - } - var sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:'); - if (sctpPort.length > 0) { - return { - port: parseInt(sctpPort[0].substr(12), 10), - protocol: mline.fmt, - maxMessageSize: maxMessageSize - }; - } - var sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:'); - if (sctpMapLines.length > 0) { - var parts = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:')[0] - .substr(10) - .split(' '); - return { - port: parseInt(parts[0], 10), - protocol: parts[1], - maxMessageSize: maxMessageSize - }; - } -}; - -// SCTP -// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers -// support by now receiving in this format, unless we originally parsed -// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line -// protocol of DTLS/SCTP -- without UDP/ or TCP/) -SDPUtils.writeSctpDescription = function(media, sctp) { - var output = []; - if (media.protocol !== 'DTLS/SCTP') { - output = [ - 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\r\n', - 'c=IN IP4 0.0.0.0\r\n', - 'a=sctp-port:' + sctp.port + '\r\n' - ]; - } else { - output = [ - 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\r\n', - 'c=IN IP4 0.0.0.0\r\n', - 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\r\n' - ]; - } - if (sctp.maxMessageSize !== undefined) { - output.push('a=max-message-size:' + sctp.maxMessageSize + '\r\n'); - } - return output.join(''); -}; - -// Generate a session ID for SDP. -// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1 -// recommends using a cryptographically random +ve 64-bit value -// but right now this should be acceptable and within the right range -SDPUtils.generateSessionId = function() { - return Math.random().toString().substr(2, 21); -}; - -// Write boilder plate for start of SDP -// sessId argument is optional - if not supplied it will -// be generated randomly -// sessVersion is optional and defaults to 2 -// sessUser is optional and defaults to 'thisisadapterortc' -SDPUtils.writeSessionBoilerplate = function(sessId, sessVer, sessUser) { - var sessionId; - var version = sessVer !== undefined ? sessVer : 2; - if (sessId) { - sessionId = sessId; - } else { - sessionId = SDPUtils.generateSessionId(); - } - var user = sessUser || 'thisisadapterortc'; - // FIXME: sess-id should be an NTP timestamp. - return 'v=0\r\n' + - 'o=' + user + ' ' + sessionId + ' ' + version + - ' IN IP4 127.0.0.1\r\n' + - 's=-\r\n' + - 't=0 0\r\n'; -}; - -SDPUtils.writeMediaSection = function(transceiver, caps, type, stream) { - var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps); - - // Map ICE parameters (ufrag, pwd) to SDP. - sdp += SDPUtils.writeIceParameters( - transceiver.iceGatherer.getLocalParameters()); - - // Map DTLS parameters to SDP. - sdp += SDPUtils.writeDtlsParameters( - transceiver.dtlsTransport.getLocalParameters(), - type === 'offer' ? 'actpass' : 'active'); - - sdp += 'a=mid:' + transceiver.mid + '\r\n'; - - if (transceiver.direction) { - sdp += 'a=' + transceiver.direction + '\r\n'; - } else if (transceiver.rtpSender && transceiver.rtpReceiver) { - sdp += 'a=sendrecv\r\n'; - } else if (transceiver.rtpSender) { - sdp += 'a=sendonly\r\n'; - } else if (transceiver.rtpReceiver) { - sdp += 'a=recvonly\r\n'; - } else { - sdp += 'a=inactive\r\n'; - } - - if (transceiver.rtpSender) { - // spec. - var msid = 'msid:' + stream.id + ' ' + - transceiver.rtpSender.track.id + '\r\n'; - sdp += 'a=' + msid; - - // for Chrome. - sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc + - ' ' + msid; - if (transceiver.sendEncodingParameters[0].rtx) { - sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc + - ' ' + msid; - sdp += 'a=ssrc-group:FID ' + - transceiver.sendEncodingParameters[0].ssrc + ' ' + - transceiver.sendEncodingParameters[0].rtx.ssrc + - '\r\n'; - } - } - // FIXME: this should be written by writeRtpDescription. - sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc + - ' cname:' + SDPUtils.localCName + '\r\n'; - if (transceiver.rtpSender && transceiver.sendEncodingParameters[0].rtx) { - sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc + - ' cname:' + SDPUtils.localCName + '\r\n'; - } - return sdp; -}; - -// Gets the direction from the mediaSection or the sessionpart. -SDPUtils.getDirection = function(mediaSection, sessionpart) { - // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv. - var lines = SDPUtils.splitLines(mediaSection); - for (var i = 0; i < lines.length; i++) { - switch (lines[i]) { - case 'a=sendrecv': - case 'a=sendonly': - case 'a=recvonly': - case 'a=inactive': - return lines[i].substr(2); - default: - // FIXME: What should happen here? - } - } - if (sessionpart) { - return SDPUtils.getDirection(sessionpart); - } - return 'sendrecv'; -}; - -SDPUtils.getKind = function(mediaSection) { - var lines = SDPUtils.splitLines(mediaSection); - var mline = lines[0].split(' '); - return mline[0].substr(2); -}; - -SDPUtils.isRejected = function(mediaSection) { - return mediaSection.split(' ', 2)[1] === '0'; -}; - -SDPUtils.parseMLine = function(mediaSection) { - var lines = SDPUtils.splitLines(mediaSection); - var parts = lines[0].substr(2).split(' '); - return { - kind: parts[0], - port: parseInt(parts[1], 10), - protocol: parts[2], - fmt: parts.slice(3).join(' ') - }; -}; - -SDPUtils.parseOLine = function(mediaSection) { - var line = SDPUtils.matchPrefix(mediaSection, 'o=')[0]; - var parts = line.substr(2).split(' '); - return { - username: parts[0], - sessionId: parts[1], - sessionVersion: parseInt(parts[2], 10), - netType: parts[3], - addressType: parts[4], - address: parts[5] - }; -}; - -// a very naive interpretation of a valid SDP. -SDPUtils.isValidSDP = function(blob) { - if (typeof blob !== 'string' || blob.length === 0) { - return false; - } - var lines = SDPUtils.splitLines(blob); - for (var i = 0; i < lines.length; i++) { - if (lines[i].length < 2 || lines[i].charAt(1) !== '=') { - return false; - } - // TODO: check the modifier a bit more. - } - return true; -}; - -// Expose public methods. -if (typeof module === 'object') { - module.exports = SDPUtils; -} - -},{}]},{},[1])(1) -}); diff --git a/static/kevin-master/assets/js/getHTMLMediaElement.js b/static/kevin-master/assets/js/getHTMLMediaElement.js deleted file mode 100644 index 9186b89..0000000 --- a/static/kevin-master/assets/js/getHTMLMediaElement.js +++ /dev/null @@ -1,512 +0,0 @@ -// __________________ -// getHTMLMediaElement.js - -function getHTMLMediaElement(mediaElement, config) { - config = config || {}; - - if (!mediaElement.nodeName || (mediaElement.nodeName.toLowerCase() != 'audio' && mediaElement.nodeName.toLowerCase() != 'video')) { - if (!mediaElement.getVideoTracks().length) { - return getAudioElement(mediaElement, config); - } - - var mediaStream = mediaElement; - mediaElement = document.createElement(mediaStream.getVideoTracks().length ? 'video' : 'audio'); - - try { - mediaElement.setAttributeNode(document.createAttribute('autoplay')); - mediaElement.setAttributeNode(document.createAttribute('playsinline')); - } catch (e) { - mediaElement.setAttribute('autoplay', true); - mediaElement.setAttribute('playsinline', true); - } - - if ('srcObject' in mediaElement) { - mediaElement.srcObject = mediaStream; - } else { - mediaElement[!!navigator.mozGetUserMedia ? 'mozSrcObject' : 'src'] = !!navigator.mozGetUserMedia ? mediaStream : (window.URL || window.webkitURL).createObjectURL(mediaStream); - } - } - - if (mediaElement.nodeName && mediaElement.nodeName.toLowerCase() == 'audio') { - return getAudioElement(mediaElement, config); - } - - var buttons = config.buttons || ['mute-audio', 'mute-video', 'full-screen', 'volume-slider', 'stop']; - buttons.has = function(element) { - return buttons.indexOf(element) !== -1; - }; - - config.toggle = config.toggle || []; - config.toggle.has = function(element) { - return config.toggle.indexOf(element) !== -1; - }; - - var mediaElementContainer = document.createElement('div'); - mediaElementContainer.className = 'media-container'; - - var mediaControls = document.createElement('div'); - mediaControls.className = 'media-controls'; - mediaElementContainer.appendChild(mediaControls); - - if (buttons.has('mute-audio')) { - var muteAudio = document.createElement('div'); - muteAudio.className = 'control ' + (config.toggle.has('mute-audio') ? 'unmute-audio selected' : 'mute-audio'); - mediaControls.appendChild(muteAudio); - - muteAudio.onclick = function() { - if (muteAudio.className.indexOf('unmute-audio') != -1) { - muteAudio.className = muteAudio.className.replace('unmute-audio selected', 'mute-audio'); - mediaElement.muted = false; - mediaElement.volume = 1; - if (config.onUnMuted) config.onUnMuted('audio'); - } else { - muteAudio.className = muteAudio.className.replace('mute-audio', 'unmute-audio selected'); - mediaElement.muted = true; - mediaElement.volume = 0; - if (config.onMuted) config.onMuted('audio'); - } - }; - } - - if (buttons.has('mute-video')) { - var muteVideo = document.createElement('div'); - muteVideo.className = 'control ' + (config.toggle.has('mute-video') ? 'unmute-video selected' : 'mute-video'); - mediaControls.appendChild(muteVideo); - - muteVideo.onclick = function() { - if (muteVideo.className.indexOf('unmute-video') != -1) { - muteVideo.className = muteVideo.className.replace('unmute-video selected', 'mute-video'); - mediaElement.muted = false; - mediaElement.volume = 1; - mediaElement.play(); - if (config.onUnMuted) config.onUnMuted('video'); - } else { - muteVideo.className = muteVideo.className.replace('mute-video', 'unmute-video selected'); - mediaElement.muted = true; - mediaElement.volume = 0; - mediaElement.pause(); - if (config.onMuted) config.onMuted('video'); - } - }; - } - - if (buttons.has('take-snapshot')) { - var takeSnapshot = document.createElement('div'); - takeSnapshot.className = 'control take-snapshot'; - mediaControls.appendChild(takeSnapshot); - - takeSnapshot.onclick = function() { - if (config.onTakeSnapshot) config.onTakeSnapshot(); - }; - } - - if (buttons.has('stop')) { - var stop = document.createElement('div'); - stop.className = 'control stop'; - mediaControls.appendChild(stop); - - stop.onclick = function() { - mediaElementContainer.style.opacity = 0; - setTimeout(function() { - if (mediaElementContainer.parentNode) { - mediaElementContainer.parentNode.removeChild(mediaElementContainer); - } - }, 800); - if (config.onStopped) config.onStopped(); - }; - } - - var volumeControl = document.createElement('div'); - volumeControl.className = 'volume-control'; - - if (buttons.has('record-audio')) { - var recordAudio = document.createElement('div'); - recordAudio.className = 'control ' + (config.toggle.has('record-audio') ? 'stop-recording-audio selected' : 'record-audio'); - volumeControl.appendChild(recordAudio); - - recordAudio.onclick = function() { - if (recordAudio.className.indexOf('stop-recording-audio') != -1) { - recordAudio.className = recordAudio.className.replace('stop-recording-audio selected', 'record-audio'); - if (config.onRecordingStopped) config.onRecordingStopped('audio'); - } else { - recordAudio.className = recordAudio.className.replace('record-audio', 'stop-recording-audio selected'); - if (config.onRecordingStarted) config.onRecordingStarted('audio'); - } - }; - } - - if (buttons.has('record-video')) { - var recordVideo = document.createElement('div'); - recordVideo.className = 'control ' + (config.toggle.has('record-video') ? 'stop-recording-video selected' : 'record-video'); - volumeControl.appendChild(recordVideo); - - recordVideo.onclick = function() { - if (recordVideo.className.indexOf('stop-recording-video') != -1) { - recordVideo.className = recordVideo.className.replace('stop-recording-video selected', 'record-video'); - if (config.onRecordingStopped) config.onRecordingStopped('video'); - } else { - recordVideo.className = recordVideo.className.replace('record-video', 'stop-recording-video selected'); - if (config.onRecordingStarted) config.onRecordingStarted('video'); - } - }; - } - - if (buttons.has('volume-slider')) { - var volumeSlider = document.createElement('div'); - volumeSlider.className = 'control volume-slider'; - volumeControl.appendChild(volumeSlider); - - var slider = document.createElement('input'); - slider.type = 'range'; - slider.min = 0; - slider.max = 100; - slider.value = 100; - slider.onchange = function() { - mediaElement.volume = '.' + slider.value.toString().substr(0, 1); - }; - volumeSlider.appendChild(slider); - } - - if (buttons.has('full-screen')) { - var zoom = document.createElement('div'); - zoom.className = 'control ' + (config.toggle.has('zoom-in') ? 'zoom-out selected' : 'zoom-in'); - - if (!slider && !recordAudio && !recordVideo && zoom) { - mediaControls.insertBefore(zoom, mediaControls.firstChild); - } else volumeControl.appendChild(zoom); - - zoom.onclick = function() { - if (zoom.className.indexOf('zoom-out') != -1) { - zoom.className = zoom.className.replace('zoom-out selected', 'zoom-in'); - exitFullScreen(); - } else { - zoom.className = zoom.className.replace('zoom-in', 'zoom-out selected'); - launchFullscreen(mediaElementContainer); - } - }; - - function launchFullscreen(element) { - if (element.requestFullscreen) { - element.requestFullscreen(); - } else if (element.mozRequestFullScreen) { - element.mozRequestFullScreen(); - } else if (element.webkitRequestFullscreen) { - element.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); - } - } - - function exitFullScreen() { - if (document.fullscreen) { - document.exitFullscreen(); - } - - if (document.mozFullScreen) { - document.mozCancelFullScreen(); - } - - if (document.webkitIsFullScreen) { - document.webkitExitFullscreen(); - } - } - - function screenStateChange(e) { - if (e.srcElement != mediaElementContainer) return; - - var isFullScreeMode = document.webkitIsFullScreen || document.mozFullScreen || document.fullscreen; - - mediaElementContainer.style.width = (isFullScreeMode ? (window.innerWidth - 20) : config.width) + 'px'; - mediaElementContainer.style.display = isFullScreeMode ? 'block' : 'inline-block'; - - if (config.height) { - mediaBox.style.height = (isFullScreeMode ? (window.innerHeight - 20) : config.height) + 'px'; - } - - if (!isFullScreeMode && config.onZoomout) config.onZoomout(); - if (isFullScreeMode && config.onZoomin) config.onZoomin(); - - if (!isFullScreeMode && zoom.className.indexOf('zoom-out') != -1) { - zoom.className = zoom.className.replace('zoom-out selected', 'zoom-in'); - if (config.onZoomout) config.onZoomout(); - } - setTimeout(adjustControls, 1000); - } - - document.addEventListener('fullscreenchange', screenStateChange, false); - document.addEventListener('mozfullscreenchange', screenStateChange, false); - document.addEventListener('webkitfullscreenchange', screenStateChange, false); - } - - if (buttons.has('volume-slider') || buttons.has('full-screen') || buttons.has('record-audio') || buttons.has('record-video')) { - mediaElementContainer.appendChild(volumeControl); - } - - var mediaBox = document.createElement('div'); - mediaBox.className = 'media-box'; - mediaElementContainer.appendChild(mediaBox); - - if (config.title) { - var h2 = document.createElement('h2'); - h2.innerHTML = config.title; - h2.setAttribute('style', 'position: absolute;color:white;font-size:17px;text-shadow: 1px 1px black;padding:0;margin:0;text-align: left; margin-top: 10px; margin-left: 10px; display: block; border: 0;line-height:1.5;z-index:1;'); - mediaBox.appendChild(h2); - } - - mediaBox.appendChild(mediaElement); - - if (!config.width) config.width = (innerWidth / 2) - 50; - - mediaElementContainer.style.width = config.width + 'px'; - - if (config.height) { - mediaBox.style.height = config.height + 'px'; - } - - mediaBox.querySelector('video').style.maxHeight = innerHeight + 'px'; - - var times = 0; - - function adjustControls() { - mediaControls.style.marginLeft = (mediaElementContainer.clientWidth - mediaControls.clientWidth - 2) + 'px'; - - if (slider) { - slider.style.width = (mediaElementContainer.clientWidth / 3) + 'px'; - volumeControl.style.marginLeft = (mediaElementContainer.clientWidth / 3 - 30) + 'px'; - - if (zoom) zoom.style['border-top-right-radius'] = '5px'; - } else { - volumeControl.style.marginLeft = (mediaElementContainer.clientWidth - volumeControl.clientWidth - 2) + 'px'; - } - - volumeControl.style.marginTop = (mediaElementContainer.clientHeight - volumeControl.clientHeight - 2) + 'px'; - - if (times < 10) { - times++; - setTimeout(adjustControls, 1000); - } else times = 0; - } - - if (config.showOnMouseEnter || typeof config.showOnMouseEnter === 'undefined') { - mediaElementContainer.onmouseenter = mediaElementContainer.onmousedown = function() { - adjustControls(); - mediaControls.style.opacity = 1; - volumeControl.style.opacity = 1; - }; - - mediaElementContainer.onmouseleave = function() { - mediaControls.style.opacity = 0; - volumeControl.style.opacity = 0; - }; - } else { - setTimeout(function() { - adjustControls(); - setTimeout(function() { - mediaControls.style.opacity = 1; - volumeControl.style.opacity = 1; - }, 300); - }, 700); - } - - adjustControls(); - - mediaElementContainer.toggle = function(clasName) { - if (typeof clasName != 'string') { - for (var i = 0; i < clasName.length; i++) { - mediaElementContainer.toggle(clasName[i]); - } - return; - } - - if (clasName == 'mute-audio' && muteAudio) muteAudio.onclick(); - if (clasName == 'mute-video' && muteVideo) muteVideo.onclick(); - - if (clasName == 'record-audio' && recordAudio) recordAudio.onclick(); - if (clasName == 'record-video' && recordVideo) recordVideo.onclick(); - - if (clasName == 'stop' && stop) stop.onclick(); - - return this; - }; - - mediaElementContainer.media = mediaElement; - - return mediaElementContainer; -} - -// __________________ -// getAudioElement.js - -function getAudioElement(mediaElement, config) { - config = config || {}; - - if (!mediaElement.nodeName || (mediaElement.nodeName.toLowerCase() != 'audio' && mediaElement.nodeName.toLowerCase() != 'video')) { - var mediaStream = mediaElement; - mediaElement = document.createElement('audio'); - - try { - mediaElement.setAttributeNode(document.createAttribute('autoplay')); - mediaElement.setAttributeNode(document.createAttribute('controls')); - } catch (e) { - mediaElement.setAttribute('autoplay', true); - mediaElement.setAttribute('controls', true); - } - - if ('srcObject' in mediaElement) { - mediaElement.mediaElement = mediaStream; - } else { - mediaElement[!!navigator.mozGetUserMedia ? 'mozSrcObject' : 'src'] = !!navigator.mozGetUserMedia ? mediaStream : (window.URL || window.webkitURL).createObjectURL(mediaStream); - } - } - - config.toggle = config.toggle || []; - config.toggle.has = function(element) { - return config.toggle.indexOf(element) !== -1; - }; - - var mediaElementContainer = document.createElement('div'); - mediaElementContainer.className = 'media-container'; - - var mediaControls = document.createElement('div'); - mediaControls.className = 'media-controls'; - mediaElementContainer.appendChild(mediaControls); - - var muteAudio = document.createElement('div'); - muteAudio.className = 'control ' + (config.toggle.has('mute-audio') ? 'unmute-audio selected' : 'mute-audio'); - mediaControls.appendChild(muteAudio); - - muteAudio.style['border-top-left-radius'] = '5px'; - - muteAudio.onclick = function() { - if (muteAudio.className.indexOf('unmute-audio') != -1) { - muteAudio.className = muteAudio.className.replace('unmute-audio selected', 'mute-audio'); - mediaElement.muted = false; - if (config.onUnMuted) config.onUnMuted('audio'); - } else { - muteAudio.className = muteAudio.className.replace('mute-audio', 'unmute-audio selected'); - mediaElement.muted = true; - if (config.onMuted) config.onMuted('audio'); - } - }; - - if (!config.buttons || (config.buttons && config.buttons.indexOf('record-audio') != -1)) { - var recordAudio = document.createElement('div'); - recordAudio.className = 'control ' + (config.toggle.has('record-audio') ? 'stop-recording-audio selected' : 'record-audio'); - mediaControls.appendChild(recordAudio); - - recordAudio.onclick = function() { - if (recordAudio.className.indexOf('stop-recording-audio') != -1) { - recordAudio.className = recordAudio.className.replace('stop-recording-audio selected', 'record-audio'); - if (config.onRecordingStopped) config.onRecordingStopped('audio'); - } else { - recordAudio.className = recordAudio.className.replace('record-audio', 'stop-recording-audio selected'); - if (config.onRecordingStarted) config.onRecordingStarted('audio'); - } - }; - } - - var volumeSlider = document.createElement('div'); - volumeSlider.className = 'control volume-slider'; - volumeSlider.style.width = 'auto'; - mediaControls.appendChild(volumeSlider); - - var slider = document.createElement('input'); - slider.style.marginTop = '11px'; - slider.style.width = ' 200px'; - - if (config.buttons && config.buttons.indexOf('record-audio') == -1) { - slider.style.width = ' 241px'; - } - - slider.type = 'range'; - slider.min = 0; - slider.max = 100; - slider.value = 100; - slider.onchange = function() { - mediaElement.volume = '.' + slider.value.toString().substr(0, 1); - }; - volumeSlider.appendChild(slider); - - var stop = document.createElement('div'); - stop.className = 'control stop'; - mediaControls.appendChild(stop); - - stop.onclick = function() { - mediaElementContainer.style.opacity = 0; - setTimeout(function() { - if (mediaElementContainer.parentNode) { - mediaElementContainer.parentNode.removeChild(mediaElementContainer); - } - }, 800); - if (config.onStopped) config.onStopped(); - }; - - stop.style['border-top-right-radius'] = '5px'; - stop.style['border-bottom-right-radius'] = '5px'; - - var mediaBox = document.createElement('div'); - mediaBox.className = 'media-box'; - mediaElementContainer.appendChild(mediaBox); - - var h2 = document.createElement('h2'); - h2.innerHTML = config.title || 'Audio Element'; - h2.setAttribute('style', 'position: absolute;color: rgb(160, 160, 160);font-size: 20px;text-shadow: 1px 1px rgb(255, 255, 255);padding:0;margin:0;'); - mediaBox.appendChild(h2); - - mediaBox.appendChild(mediaElement); - - mediaElementContainer.style.width = '329px'; - mediaBox.style.height = '90px'; - - h2.style.width = mediaElementContainer.style.width; - h2.style.height = '50px'; - h2.style.overflow = 'hidden'; - - var times = 0; - - function adjustControls() { - mediaControls.style.marginLeft = (mediaElementContainer.clientWidth - mediaControls.clientWidth - 7) + 'px'; - mediaControls.style.marginTop = (mediaElementContainer.clientHeight - mediaControls.clientHeight - 6) + 'px'; - if (times < 10) { - times++; - setTimeout(adjustControls, 1000); - } else times = 0; - } - - if (config.showOnMouseEnter || typeof config.showOnMouseEnter === 'undefined') { - mediaElementContainer.onmouseenter = mediaElementContainer.onmousedown = function() { - adjustControls(); - mediaControls.style.opacity = 1; - }; - - mediaElementContainer.onmouseleave = function() { - mediaControls.style.opacity = 0; - }; - } else { - setTimeout(function() { - adjustControls(); - setTimeout(function() { - mediaControls.style.opacity = 1; - }, 300); - }, 700); - } - - adjustControls(); - - mediaElementContainer.toggle = function(clasName) { - if (typeof clasName != 'string') { - for (var i = 0; i < clasName.length; i++) { - mediaElementContainer.toggle(clasName[i]); - } - return; - } - - if (clasName == 'mute-audio' && muteAudio) muteAudio.onclick(); - if (clasName == 'record-audio' && recordAudio) recordAudio.onclick(); - if (clasName == 'stop' && stop) stop.onclick(); - - return this; - }; - - mediaElementContainer.media = mediaElement; - - return mediaElementContainer; -} diff --git a/static/kevin-master/assets/js/jquery.min.js b/static/kevin-master/assets/js/jquery.min.js deleted file mode 100644 index d467083..0000000 --- a/static/kevin-master/assets/js/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="

",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 - - - - - - Home - KEVIN - - - - - - - - - - -
-
- -
-
-
-
-
-
-
-
- - -
-
-
-
- -
-
-
-
- -
-
- -
-
- -
-
-
-
- -
-
- -
-
- - - - - - - - - - - - - diff --git a/static/kevin-master/video-conferencing.html b/static/kevin-master/video-conferencing.html deleted file mode 100644 index 80ad6ff..0000000 --- a/static/kevin-master/video-conferencing.html +++ /dev/null @@ -1,470 +0,0 @@ - - - - - Video Conferencing using RTCMultiConnection - - - - - -

- Video Conferencing using RTCMultiConnection -

- Multi-user (many-to-many) video chat using mesh networking model. -

-

- -
-
- - - -

- - - - - - -
- -
- - -
- - - - - - - - - - - - - - diff --git a/static/kevin-master/view.html b/static/kevin-master/view.html deleted file mode 100644 index f2e7df0..0000000 --- a/static/kevin-master/view.html +++ /dev/null @@ -1,326 +0,0 @@ - - - - - - - OBS view - KEVIN - - - - - - - - - -
- - - - - - - - - - - - - -