diff --git a/css/main.css b/css/main.css index 18ba18a63..4f314994d 100644 --- a/css/main.css +++ b/css/main.css @@ -1 +1 @@ -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;font:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}body{color:#24292e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;word-wrap:break-word}*{box-sizing:border-box}b,strong{font-weight:600}em,i{font-style:italic}[type=checkbox]{box-sizing:border-box;padding:0}a,a:hover{color:#812ce5;text-decoration:none}a:active,a:hover{outline-width:0}a:not([href]){color:inherit;text-decoration:none}p{margin-bottom:1em;margin-top:0}h1,h2,h3,h4,h5,h6{color:inherit;font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:1.5em}h1{font-size:32px}h2{font-size:24px}h3{font-size:20px}h4{font-size:16px}h5{font-size:14px}h6{font-size:13.6px}ol,ul{margin-bottom:1em;margin-top:0;padding-left:2em}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin-bottom:0;margin-top:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}li{word-wrap:break-all}li>p{margin-top:1em}li+li{margin-top:.25em}img{border-style:none;box-sizing:content-box;max-width:100%}img[align=right]{padding-left:1.25em}img[align=left]{padding-right:1.25em}table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:16px;margin-top:0;overflow:auto;width:100%}table tr{background-color:transparent;border-top:1px solid #dfe2e5}table tr:nth-child(2n){background-color:#f6f8fa}table td,table th{border:1px solid #dfe2e5;padding:6px 13px}table th{background-color:inherit;font-weight:600}table td,table th{color:inherit}blockquote{color:#6a737d;font-size:16px;margin:0 0 16px;padding:0 1em}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}code{background-color:rgba(27,31,35,.05);border-radius:3px;color:inherit;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:85%;margin:0;padding:3.2px 6.4px}pre{margin-bottom:16px}pre code{background-color:transparent;border:0;display:inline;font-size:85%;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;white-space:pre;word-break:normal;word-wrap:normal}kbd{background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:68.75%;line-height:10px;padding:3px 5px;vertical-align:middle}hr{border:1px solid #dfe2e5;box-sizing:content-box;margin:1.5em 0;overflow:hidden;padding:0}hr:after,hr:before{content:"";display:table}hr:after{clear:both}body{background-color:#fff;min-height:100vh;text-rendering:optimizeLegibility}@media only screen and (min-width:736px){body{display:flex;flex-direction:column}}article:after,article:before{content:"";display:table}article:after{clear:both}article>:first-child{margin-top:0}article>:last-child{margin-bottom:0}article iframe,article p img{display:block;margin-left:auto;margin-right:auto;max-width:100%}.anchor{display:block;position:relative;top:-80px}.hash-link{line-height:1;margin-left:-20px;opacity:0;padding-right:4px;transition:opacity .3s}.hash-link:hover{opacity:1!important;transition:none}.hash-link .hash-link-icon{vertical-align:middle}.button{border:1px solid #812ce5;border-radius:3px;color:#812ce5;display:inline-block;font-size:14px;font-weight:400;line-height:1.2em;padding:10px;text-decoration:none!important;text-transform:uppercase;transition:background .3s,color .3s}.button:hover{background:#812ce5;color:#fff}h1:hover .hash-link,h2:hover .hash-link,h3:hover .hash-link,h4:hover .hash-link{opacity:.5;transition:none}blockquote{background-color:rgba(255,229,100,.3);border-left:8px solid #ffe564;padding:15px 30px 15px 15px}.wrapper{margin:0 auto;max-width:1100px;padding:0 20px}.wrapper blockquote>p:first-child{padding-top:0}.center{display:block}.center,.homeContainer{text-align:center}.homeContainer .homeWrapper{padding:2em 10px}.homeContainer .homeWrapper .wrapper{margin:0 auto;max-width:900px;padding:0 20px}.homeContainer .homeWrapper .projectLogo img{height:100px;margin-bottom:0}.homeContainer .homeWrapper #project_title{font-size:300%;letter-spacing:-.08em;line-height:1em;margin-bottom:80px}.homeContainer .homeWrapper #project_tagline{font-size:200%;letter-spacing:-.04em;line-height:1em}.projectLogo{display:none;pointer-events:none}.projectLogo img{height:100px;margin-bottom:0}.projectIntro{margin:40px 0}.projectTitle{color:#812ce5;font-size:250%;line-height:1em}.projectTitle>small{display:block;font-weight:400;font-size:50%;line-height:1em;margin:.7em 0 1.3em}@media only screen and (min-width:480px){.projectTitle{font-size:300%;margin:.3em 0}.projectLogo img{height:200px;margin-bottom:10px}.homeContainer .homeWrapper{padding-left:10px;padding-right:10px}}@media only screen and (min-width:736px){.homeContainer .homeWrapper{position:relative}.homeContainer .homeWrapper #inner{max-width:600px;padding-right:40px}}@media only screen and (min-width:1200px){.homeContainer .homeWrapper #inner{max-width:750px}.homeContainer .homeWrapper .projectLogo{align-items:center;bottom:0;display:flex;justify-content:flex-end;left:0;padding:2em 100px 4em;position:absolute;right:0;top:0}.homeContainer .homeWrapper .projectLogo img{height:100%;max-height:250px}}@media only screen and (min-width:1500px){.homeContainer .homeWrapper #inner{max-width:1100px;padding-bottom:40px;padding-top:40px}.wrapper{max-width:1400px}}.mainContainer{flex:1 1 0%;max-width:100%;padding:40px 0}.mainContainer .wrapper{text-align:left}.mainContainer .wrapper .allShareBlock{padding:10px 0}.mainContainer .wrapper .allShareBlock .pluginBlock{margin:12px 0;padding:0}.mainContainer .wrapper .post{position:relative}.mainContainer .wrapper .post.basicPost{margin-top:30px}.mainContainer .wrapper .post .postHeader{margin-bottom:16px}.mainContainer .wrapper .post .postHeaderTitle{margin-top:0;padding:0}.docsContainer .wrapper .post .postHeader:before,.docsContainer .wrapper .post .postHeaderTitle:before{content:"";display:block;height:90px;margin-top:-90px;visibility:hidden;pointer-events:none}.mainContainer .wrapper .post .postSocialPlugins{padding-top:1em}.mainContainer .wrapper .post .docPagination{background:#812ce5;bottom:0;left:0;position:absolute;right:0}.mainContainer .wrapper .post .docPagination .pager{display:inline-block;width:50%}.mainContainer .wrapper .post .docPagination .pagingNext{float:right;text-align:right}.mainContainer .wrapper .post .docPagination a{border:none;color:#fff;display:block;padding:4px 12px}.mainContainer .wrapper .post .docPagination a:hover{background-color:#f9f9f9;color:#393939}.mainContainer .wrapper .post .docPagination a .pagerLabel{display:inline}.mainContainer .wrapper .post .docPagination a .pagerTitle{display:none}@media only screen and (min-width:480px){.mainContainer .wrapper .post .docPagination a .pagerLabel{display:none}.mainContainer .wrapper .post .docPagination a .pagerTitle{display:inline}}@media only screen and (min-width:1024px){.mainContainer .wrapper .post{display:block}.mainContainer .wrapper .posts .post{width:100%}}@media only screen and (max-width:1023px){.docsContainer .wrapper .post .postHeader:before,.docsContainer .wrapper .post .postHeaderTitle:before{content:"";display:block;height:200px;margin-top:-200px;visibility:hidden;pointer-events:none}}.fixedHeaderContainer{background:#812ce5;color:#fff;min-height:50px;padding:8px 0;position:fixed;width:100%;z-index:9999;transform:translateZ(0)}@media only screen and (min-width:1024px){.fixedHeaderContainer{flex-shrink:0}}.fixedHeaderContainer a{align-items:center;border:0;color:#fff;display:flex;flex-flow:row nowrap;height:34px;z-index:10000}.fixedHeaderContainer header{display:flex;flex-flow:row nowrap;position:relative;text-align:left}.fixedHeaderContainer header img{height:100%;margin-right:10px}.fixedHeaderContainer header .headerTitle{font-size:1.25em;margin:0}.fixedHeaderContainer header .headerTitleWithLogo{font-size:1.25em;line-height:18px;margin:0;position:relative;z-index:9999}.fixedHeaderContainer header h3{color:#fff;font-size:16px;margin:0 0 0 10px;text-decoration:underline}@media (max-width:480px){.headerTitle{font-size:17px}.headerTitleWithLogo{display:none!important}}.promoSection{display:flex;flex-flow:column wrap;font-size:125%;line-height:1.6em;position:relative;z-index:99}.promoSection .promoRow{padding:10px 0}.promoSection .promoRow .pluginWrapper{display:block}.promoSection .promoRow .pluginWrapper.ghStarWrapper,.promoSection .promoRow .pluginWrapper.ghWatchWrapper{height:28px}.promoSection .promoRow .pluginRowBlock{display:flex;flex-wrap:wrap;justify-content:center;margin:0 -2px}.promoSection .promoRow .pluginRowBlock .pluginWrapper{padding:0 2px}.promoSection .promoRow .pluginRowBlock iframe{margin-left:2px;margin-top:5px}input[type=search]{-moz-appearance:none;-webkit-appearance:none}.navSearchWrapper{align-items:center;align-self:center;display:flex;justify-content:center;padding-left:10px;position:absolute;right:10px;top:10px}.navSearchWrapper:before{border:3px solid #e5e5e5;border-radius:50%;content:" ";display:block;height:6px;left:15px;position:absolute;top:50%;transform:translateY(-58%);width:6px;z-index:1}.navSearchWrapper:after{background:#e5e5e5;content:" ";height:7px;left:24px;position:absolute;top:55%;transform:rotate(-45deg);width:3px;z-index:1}.navSearchWrapper .aa-dropdown-menu{background:#f9f9f9;border:3px solid rgba(57,57,57,.25);color:#393939;font-size:14px;left:auto!important;line-height:1.2em;right:0!important}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--category-header{background:#812ce5;color:#fff;font-size:14px;font-weight:400}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{background-color:#812ce5;color:#fff}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--subcategory-column .algolia-docsearch-suggestion--highlight,.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--title .algolia-docsearch-suggestion--highlight{color:#812ce5}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--subcategory-column,.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion__secondary{border-color:rgba(57,57,57,.3)}input#search_input_react{background-color:rgba(0,0,0,.2);border:none;border-radius:20px;color:#fff;font-size:14px;font-weight:300;line-height:20px;outline:none;padding-left:25px;position:relative;transition:width .5s ease;width:170px}.navSearchWrapper:before{left:24px}.navSearchWrapper:after{left:35px}input#search_input_react:active,input#search_input_react:focus{color:#fff;width:220px}.navigationSlider .slidingNav .navSearchWrapper .algolia-docsearch-footer a{height:auto}@media only screen and (max-width:735px){.navSearchWrapper{width:40%}}input::-moz-placeholder{color:#e5e5e5}input::placeholder{color:#e5e5e5}.hljs{padding:1.25rem 1.5rem}.gridBlock{padding:0}.gridBlock>*{box-sizing:border-box}.gridBlock .fourByGridBlock img,.gridBlock .threeByGridBlock img,.gridBlock .twoByGridBlock img{max-width:100%}.gridBlock .gridClear{clear:both}@media only screen and (max-width:735px){.gridBlock .fourByGridBlock{flex:1 0 26%}}@media only screen and (min-width:736px){.gridBlock{display:flex;flex-direction:row;flex-wrap:wrap}.gridBlock>*{margin:0 12px}.gridBlock>:first-child{margin-left:0}.gridBlock>:last-child{margin-right:0}.gridBlock .twoByGridBlock{flex:1 0 40%}.gridBlock .threeByGridBlock{flex:1 0 26%}.gridBlock .fourByGridBlock{flex:1 0 20%}h2+.gridBlock{padding-top:20px}}@media only screen and (min-width:1400px){.gridBlock{display:flex;flex-direction:row;flex-wrap:wrap}}.alignCenter{text-align:center}.alignRight{text-align:right}.imageAlignSide{display:flex;flex-flow:row wrap}.blockImage{max-width:730px}.imageAlignSide .blockImage{flex:0 1 500px;max-width:500px}@media only screen and (max-width:735px){.imageAlignSide .blockImage{display:none}}.imageAlignSide .blockContent{flex:1 1}.imageAlignBottom .blockImage{margin:0 auto 20px;max-width:730px}.imageAlignBottom.alignCenter .blockImage{margin-left:auto;margin-right:auto}.imageAlignTop .blockImage{max-width:80px}.imageAlignTop.alignCenter .blockImage{margin-left:auto;margin-right:auto}.imageAlignRight .blockImage{margin-left:40px}.imageAlignLeft .blockImage{margin-right:40px}.container .gridBlock .blockContent p{padding:0}.container .wrapper .alignCenter h2{text-align:center}.container .wrapper .imageAlignSide h2{text-align:left}.container .wrapper .imageAlignSide p{margin:0 0 40px;max-width:560px}.highlightBackground{background:rgba(153,66,79,.7);color:#fff}.highlightBackground a{font-weight:800}.container.highlightBackground .wrapper h1,.container.highlightBackground .wrapper h2,.container.highlightBackground .wrapper h3,.container.highlightBackground .wrapper h4,.container.highlightBackground .wrapper h5,.highlightBackground a{border-color:#fff;color:#fff}.lightBackground{background:#f7f7f7}.darkBackground{background:grey;color:#fff}.darkBackground a,.darkBackground code{color:#d6b3b8}.container.darkBackground .wrapper h1,.container.darkBackground .wrapper h2,.container.darkBackground .wrapper h3,.container.darkBackground .wrapper h4,.container.darkBackground .wrapper h5{border-color:#fff;color:#fff}.container.paddingAll{padding:40px}.container.paddingBottom{padding-bottom:80px}.container.paddingLeft{padding-left:40px}.container.paddingRight{padding-right:40px}.container.paddingTop{padding-top:80px}@media only screen and (max-width:735px){.container.paddingBottom{padding-bottom:40px}.container.paddingTop{padding-top:20px}}@media only screen and (max-width:1023px){.responsiveList .blockContent{position:relative}.responsiveList .blockContent>div{padding-left:20px}.responsiveList .blockContent:before{content:"\2022";position:absolute}}.navigationSlider .navSlideout{cursor:pointer;padding-top:4px;position:absolute;right:10px;top:0;transition:top .3s;z-index:101}.navigationSlider .slidingNav{bottom:auto;box-sizing:border-box;left:0;position:fixed;right:0;top:0}.navigationSlider .slidingNav.slidingNavActive{height:auto;padding-top:42px;width:300px}.navigationSlider .slidingNav ul{background:#ffaf00;box-sizing:border-box;color:#fff;display:flex;flex-wrap:nowrap;list-style:none;margin-top:50px;padding:0;width:100%}.navigationSlider .slidingNav.slidingNavActive ul{display:block}.navigationSlider .slidingNav ul li{flex:1 1 auto;margin:0;text-align:center;white-space:nowrap}.navigationSlider .slidingNav ul li a{align-items:center;box-sizing:border-box;color:#812ce5;color:inherit;display:flex;font-size:.9em;height:auto;height:50px;justify-content:center;margin:0;padding:10px;transition:background-color .3s}.navigationSlider .slidingNav ul li.siteNavGroupActive>a,.navigationSlider .slidingNav ul li.siteNavItemActive>a,.navigationSlider .slidingNav ul li>a:focus,.navigationSlider .slidingNav ul li>a:hover{background-color:#812ce5}.languages-icon{width:20px}#languages-dropdown{pointer-events:none;position:absolute;width:100%}#languages-dropdown.visible{display:flex}#languages-dropdown.hide{display:none}#languages-dropdown-items{background-color:#812ce5;display:flex;flex-direction:column;min-width:120px;pointer-events:all}#languages li{display:block}.navPusher{left:0;min-height:100%;padding-top:100px;position:relative;z-index:99}.singleRowMobileNav.navPusher{padding-top:50px}.navPusher:after{background:rgba(0,0,0,.4);content:"";height:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .5s,width .1s .5s,height .1s .5s;width:0}@media screen and (min-width:1024px){.navPusher{display:flex;flex-direction:column;min-height:calc(100vh - 50px);padding-top:50px}.navPusher,.navPusher>:first-child{flex-grow:1}}.sliderActive .navPusher:after{height:100%;opacity:1;transition:opacity .5s;width:100%;z-index:100}@media only screen and (max-width:1024px){.reactNavSearchWrapper input#search_input_react{background-color:rgba(242,196,178,.25);border:none;border-radius:20px;box-sizing:border-box;color:#393939;font-size:14px;line-height:20px;outline:none;padding-left:38px;position:relative;transition:background-color .2s cubic-bezier(.68,-.55,.265,1.55),width .2s cubic-bezier(.68,-.55,.265,1.55),color .2s ease;width:100%;height:30px}.reactNavSearchWrapper input#search_input_react:active,.reactNavSearchWrapper input#search_input_react:focus{background-color:#812ce5;color:#fff}.reactNavSearchWrapper .algolia-docsearch-suggestion--subcategory-inline{display:none}.reactNavSearchWrapper>span{width:100%}.reactNavSearchWrapper .aa-dropdown-menu{font-size:12px;line-height:2em;padding:0;border-width:1px;min-width:500px}.reactNavSearchWrapper .algolia-docsearch-suggestion__secondary{border-top:none}.aa-suggestions{min-height:140px;max-height:60vh;-webkit-overflow-scrolling:touch;overflow-y:scroll}#languages-dropdown{left:0;top:50px}#languages-dropdown-items{background-color:#812ce5;display:flex;flex-direction:row}}@media only screen and (min-width:1024px){.navSearchWrapper{padding-left:10px;position:relative;right:auto;top:auto}.reactNavSearchWrapper input#search_input_react{height:100%;padding-top:8px;padding-bottom:8px;padding-left:38px}.navSearchWrapper .algolia-autocomplete{display:block}.navigationSlider{height:34px;margin-left:auto;position:relative}.navigationSlider .navSlideout{display:none}.navigationSlider nav.slidingNav{background:none;height:auto;position:relative;right:auto;top:auto;width:auto}.navigationSlider .slidingNav ul{background:none;display:flex;flex-flow:row nowrap;margin:0;padding:0;width:auto}.navigationSlider .slidingNav ul li a{border:0;color:hsla(0,0%,100%,.8);display:flex;font-size:16px;font-size:1em;font-weight:300;height:32px;line-height:1.2em;margin:0;padding:6px 10px}.navigationSlider .slidingNav ul li.siteNavGroupActive a,.navigationSlider .slidingNav ul li.siteNavItemActive a,.navigationSlider .slidingNav ul li a:hover{color:#fff}}@media only screen and (max-width:735px){.navigationSlider .slidingNav ul{overflow-x:auto}.navigationSlider .slidingNav ul::-webkit-scrollbar{display:none}.reactNavSearchWrapper .aa-dropdown-menu{min-width:400px}}@media only screen and (max-width:475px){.reactNavSearchWrapper .aa-dropdown-menu{min-width:300px}}.docMainWrapper .wrapper{padding-left:0;padding-right:0;padding-top:10px}@media only screen and (min-width:1024px){.docMainWrapper{width:100%}.docMainWrapper>*{margin:0 24px}.docMainWrapper>:first-child{margin-left:0}.docMainWrapper>:last-child{margin-right:0}.docMainWrapper .mainContainer{min-width:0}}.edit-page-link{float:right;font-size:10px;font-weight:400;margin-top:3px;text-decoration:none}@media only screen and (max-width:1023px){.edit-page-link{display:none}}.docLastUpdate{font-size:13px;font-style:italic;margin:20px 0;text-align:right}.docs-prevnext{margin:20px 0}.docs-prevnext:after{clear:both;content:" ";display:table}.docs-next{float:right}.docs-prev{float:left}@media only screen and (max-width:735px){.docs-next{clear:both;float:left}.docs-next,.docs-prev{margin:10px 0}.arrow-next{float:right;margin-left:10px}.arrow-prev{float:left;margin-right:10px}.function-name-prevnext{width:200px;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.hide{display:none}.collapsible{cursor:pointer}.collapsible .arrow{float:right;margin-right:8px;margin-top:-4px;transform:rotate(90deg);transition:transform .2s linear}.collapsible .arrow.rotate{transform:rotate(180deg)}@media only screen and (max-width:1023px){.docsNavContainer{background:#fff;left:0;position:fixed;width:100%;z-index:100}}@media only screen and (min-width:1024px){.docsNavContainer{flex:0 0 240px;height:calc(100vh - 50px);position:sticky;overflow-y:auto;top:50px}}.docsSliderActive.docsNavContainer{box-sizing:border-box;height:100%;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior:contain;padding-bottom:50px}.docsNavContainer .toc .navBreadcrumb{background-color:#f1f1f1;box-sizing:border-box;display:flex;flex-flow:row nowrap;font-size:12px;height:48px;overflow:hidden;padding:8px 20px}.docsNavContainer .toc .navWrapper{padding:0}@media only screen and (min-width:1024px){.docsNavContainer .toc .navBreadcrumb{display:none}.navBreadcrumb h2{padding:0 10px}.separateOnPageNav .docsNavContainer{flex:0 0 240px}}.navBreadcrumb a,.navBreadcrumb span{border:0;color:#393939}@media only screen and (max-width:735px){.anchor{top:-144px}}@media only screen and (min-width:1024px){.toc{padding:40px 0}}.toc section{padding:0;position:relative}.toc section .navGroups{display:none;padding:48px 20px 60px}.toc .toggleNav{color:#393939;position:relative}.toc .toggleNav .navToggle{cursor:pointer;height:32px;margin-right:10px;position:relative;text-align:left;width:18px}.hamburger-menu{position:absolute;top:6px;width:100%}.line1,.line2,.line3{width:100%;height:3px;background-color:#393939;margin:3px 0;transition:.4s;border-radius:10px}.docsSliderActive .hamburger-menu{top:12px}.docsSliderActive .line1{position:absolute;top:50%;transform:rotate(-45deg)}.docsSliderActive .line2{display:none}.docsSliderActive .line3{position:absolute;top:50%;transform:rotate(45deg)}.toggleNav h2 i{padding:0 4px}.toc .toggleNav .navGroup{margin-bottom:16px}.toc .toggleNav .subNavGroup{margin-bottom:0}.toc .toggleNav .navGroup .navGroupCategoryTitle{color:#393939;font-size:18px;font-weight:500;line-height:1.2em;margin-bottom:8px;margin-top:0}.toc .toggleNav .navGroup .navGroupSubcategoryTitle{color:#393939;font-size:14px;font-weight:500;line-height:1.5;margin-bottom:0;margin-top:0;padding:4px 0}.toc .toggleNav .navGroup .navListItem{margin:0}.toc .toggleNav .navGroup h3 i:not(:empty){box-sizing:border-box;color:rgba(57,57,57,.5);display:inline-block;height:16px;margin-right:10px;text-align:center;transition:color .2s;width:16px}.toc .toggleNav ul{padding:0 8px}.docsSliderActive .toc .toggleNav ul{padding-left:0}.toc .toggleNav ul li{list-style-type:none;padding:0}.toc .toggleNav ul li a{border:none;color:#717171;display:block;font-size:14px;padding:4px 0;transition:color .3s}.toc .toggleNav ul li.navListItemActive a,.toc .toggleNav ul li a:focus,.toc .toggleNav ul li a:hover{color:#812ce5}.docsSliderActive .toc .navBreadcrumb,.tocActive .navBreadcrumb{border-bottom:1px solid #ccc;margin-bottom:20px;position:fixed;width:100%}.toc .toggleNav .navBreadcrumb h2{border:0;flex-grow:1;font-size:16px;font-weight:600;line-height:32px;margin:0;padding:0}.docsSliderActive .toc section .navGroups{display:block;padding-top:60px}.tocToggler{cursor:pointer;height:32px;line-height:32px;margin-right:-10px;padding:0 10px}.icon-toc{box-sizing:border-box;display:inline-block;line-height:normal;position:relative;top:-1px;vertical-align:middle}.icon-toc,.icon-toc:after,.icon-toc:before{background-color:currentColor;border:1px solid;border-radius:50%;box-sizing:border-box;height:4px;width:4px}.icon-toc:after,.icon-toc:before{content:"";position:absolute}.icon-toc:before{left:-1px;top:-7px}.icon-toc:after{left:-1px;top:5px}.tocActive .icon-toc{border-radius:0;height:16px;transform:rotate(45deg);width:3px}.tocActive .icon-toc:before{border-radius:0;height:3px;left:50%;top:50%;transform:translate(-50%,-50%);width:16px}.tocActive .icon-toc:after{content:""}@media only screen and (min-width:1024px){.docMainWrapper{display:flex;flex-flow:row nowrap}.docMainWrapper .wrapper{padding-top:0;padding-left:0;padding-right:0}}.onPageNav{display:none;margin-bottom:40px}.onPageNav::-webkit-scrollbar{width:7px}.onPageNav::-webkit-scrollbar-track{background:#f1f1f1;border-radius:10px}.onPageNav::-webkit-scrollbar-thumb{background:#888;border-radius:10px}.onPageNav::-webkit-scrollbar-thumb:hover{background:#555}.onPageNav a{color:#717171}.onPageNav .toc-headings>li>a.active,.onPageNav .toc-headings>li>a.hover{font-weight:600;color:#812ce5}.onPageNav ul{list-style:none}.onPageNav ul li{font-size:12px;line-height:16px;padding-bottom:8px}.onPageNav ul ul{padding:8px 0 0 20px}.onPageNav ul ul li{padding-bottom:5px}@media only screen and (min-width:1024px){.toc section .navGroups{display:block;padding:8px 0 0}.navBreadcrumb h2{padding:0 10px}}@supports (position:sticky){@media only screen and (max-width:1023px){.tocActive .onPageNav{background:#fff;bottom:0;display:block;left:0;overflow-y:auto;overscroll-behavior:contain;padding:0 20px;position:fixed;right:0;top:148px;z-index:10;margin-bottom:0}.tocActive .singleRowMobileNav .onPageNav{top:98px}.tocActive .navBreadcrumb h2,.tocActive .navToggle{visibility:hidden}.tocActive .onPageNav>.toc-headings{padding:12px 0}}@media only screen and (min-width:1024px){.separateOnPageNav .headerWrapper.wrapper,.separateOnPageNav .wrapper{max-width:1400px}.separateOnPageNav .toc{width:auto}.separateOnPageNav.sideNavVisible .navPusher .mainContainer{flex:1 auto;max-width:100%;min-width:0}.onPageNav{align-self:flex-start;display:block;flex:0 0 240px;max-height:calc(100vh - 90px);overflow-y:auto;position:sticky;top:90px}.onPageNav>.toc-headings{border-left:1px solid #e0e0e0;padding:10px 0 2px 15px}.tocToggler{display:none}}}.blog .wrapper{max-width:1100px}.blogContainer .posts .post{border-bottom:1px solid #e0e0e0;border-radius:3px;margin-bottom:20px;padding-bottom:20px}.blogContainer .postHeader{margin-bottom:10px}.blogContainer .postHeaderTitle{margin-top:0}.blogContainer .postHeader p.post-meta{margin-bottom:10px;padding:0}.blogContainer .postHeader .authorBlock{display:flex}.blogContainer .postHeader .post-authorName{color:rgba(57,57,57,.7);display:flex;flex-direction:column;font-size:14px;font-weight:400;justify-content:center;margin-right:10px;margin-top:0;margin-bottom:0;padding:0}.blogContainer .postHeader .authorPhoto{border-radius:50%;height:30px;overflow:hidden;width:30px}.blogContainer .postHeader .authorPhoto.authorPhotoBig{height:50px;width:50px}.blog-recent{margin:20px 0}.blog-recent>a{float:left}@media only screen and (max-width:735px){.blog-recent{height:40px}}.blogSocialSection{display:block;padding:36px 0}.blogSocialSection .blogSocialSectionItem{padding-bottom:5px}.fb-like{display:block;margin-bottom:20px;width:100%}.more-users{margin:0 auto;max-width:560px;text-align:center}.productShowcaseSection{padding:0 20px;text-align:center}.productShowcaseSection.paddingTop{padding-top:20px}.productShowcaseSection.paddingBottom{padding-bottom:80px}.productShowcaseSection h2{color:#812ce5;font-size:30px;line-height:1em;margin-top:20px;padding:10px 0;text-align:center}.productShowcaseSection p{margin:0 auto;max-width:560px;padding:.8em 0}.productShowcaseSection .logos{align-items:center;display:flex;flex-flow:row wrap;justify-content:center;padding:20px}.productShowcaseSection .logos img{max-height:110px;padding:20px;width:110px}@media only screen and (max-width:735px){.productShowcaseSection .logos img{max-height:64px;padding:20px;width:64px}}.showcaseSection{margin:0 auto;max-width:900px}.showcaseSection,.showcaseSection .prose h1{text-align:center}.showcaseSection .prose{margin:0 auto;max-width:560px;text-align:center}.showcaseSection .logos{align-items:center;display:flex;flex-flow:row wrap;justify-content:center}.showcaseSection .logos img{max-height:128px;padding:20px;width:128px}@media only screen and (max-width:735px){.showcaseSection .logos img{max-height:64px;padding:20px;width:64px}}.nav-footer{background:#20232a;border:none;color:#202020;font-size:15px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;line-height:24px;padding-bottom:2em;padding-top:2em;position:relative}@media only screen and (min-width:1024px){.nav-footer{flex-shrink:0}}.nav-footer .sitemap{display:flex;justify-content:space-between;margin:0 auto 3em;max-width:1080px}.nav-footer .sitemap div{flex:1}.nav-footer .sitemap .nav-home{display:table;height:72px;margin:-12px 20px 0 0;opacity:.4;padding:10px;transition:opacity .15s ease-in-out;width:72px}.nav-footer .sitemap .nav-home:focus,.nav-footer .sitemap .nav-home:hover{opacity:1}@media only screen and (max-width:735px){.nav-footer .sitemap{display:flex;flex-direction:column;margin:0 2em 3em;width:calc(100% - 4em)}.nav-footer .sitemap>div{margin-bottom:18px}}.nav-footer .sitemap a{color:hsla(0,0%,100%,.6);display:block;margin:2px 0;padding:3px 0}.nav-footer .sitemap a:focus,.nav-footer .sitemap a:hover,.nav-footer .sitemap h5>a:focus,.nav-footer .sitemap h5>a:hover{color:#fff;text-decoration:none}.nav-footer .sitemap h5,.nav-footer .sitemap h6{margin:0 0 10px}.nav-footer .sitemap h5,.nav-footer .sitemap h5>a,.nav-footer .sitemap h6,.nav-footer .sitemap h6>a{color:#fff}.nav-footer .sitemap h5>a,.nav-footer .sitemap h6>a{margin:0 -10px}.nav-footer .fbOpenSource{display:block;margin:1em auto;opacity:.4;transition:opacity .15s ease-in-out;width:170px}.nav-footer .fbOpenSource:hover{opacity:1}.nav-footer .copyright{color:hsla(0,0%,100%,.4);text-align:center}.nav-footer .social{padding:5px 0}.tabs{border-top:1px solid #cfcfcf}.nav-tabs{display:flex;border-bottom:4px solid #e0e0e0;width:100%;padding:0;overflow-x:auto;white-space:nowrap;max-height:100%}.nav-tabs::-webkit-scrollbar{display:none}.tabs .tab-pane:focus{outline:none}.tabs .nav-tabs>div{font-size:14px;line-height:1.14286;padding:12px 16px;text-decoration:none;display:block;cursor:pointer}.tabs .nav-tabs>div.active{border-bottom:4px solid #812ce5}.tab-pane{display:none}.tab-pane.active{display:block}.tab-pane>pre{white-space:pre-wrap}.tab-pane>pre>code{margin-top:0;border-radius:0;box-shadow:none}html body{font-family:Montserrat,sans-serif;overflow-x:hidden}.fixedHeaderContainer{background-color:#222}.fixedHeaderContainer header .headerTitleWithLogo{display:block;color:#fff}.fixedHeaderContainer header .logo{height:50px}.fixedHeaderContainer header a:nth-child(2){position:absolute;right:0}.fixedHeaderContainer header a:nth-child(2) h3{font-size:14px}.fixedHeaderContainer header a:nth-child(2) h3:before{content:"v: "}.navigationSlider{margin-right:80px}.navigationSlider .slidingNav ul{background:#222}.navigationSlider .slidingNav ul li a{color:#c7d4fd}.navigationSlider .slidingNav ul li a:focus,.navigationSlider .slidingNav ul li a:hover{color:#fff;background-color:inherit}.navigationSlider .slidingNav ul li.siteNavGroupActive>a,.navigationSlider .slidingNav ul li.siteNavItemActive>a{background-color:inherit}.homeContainer{background:linear-gradient(#812ce5,#ffaf00);padding:25px 0}.splashLogo{display:block;margin:0 auto;width:65%}.projectTitle{color:#fff;font-variant:small-caps;font-weight:300}.promoSection .button{border:2px solid #fff;color:#fff;font-size:19px;margin:10px}.promoSection .button:hover{background:inherit;border:2px solid #fff;color:#fff}.landingPage{padding:0}.productShowcaseSection{padding:45px 20px 30px}div.productShowcaseSection{color:#6c6c6c;padding-top:40px}#quickstart{padding-top:80px}.productShowcaseSection>h2{font-variant:small-caps;font-weight:360;margin:0;padding:0;color:#5b1861}.productShowcaseSection p{font-weight:360}# Subtitles for key features .productShowcaseSection .blockContent>div span p{font-size:18px}.productShowcaseSection div.container{padding:10px 0 40px}.productShowcaseSection img{height:100px}.gridBlock .fourByGridBlock img{max-width:200%}.productShowcaseSection li{padding:10px 0}.productShowcaseSection pre{margin:10px 0}.productShowcaseSection code{background:#fff}.container .wrapper .alignCenter h2{color:#222}div#quickstart{background:#efefef}div#quickstart ol{margin-bottom:0}.nav-footer{background-color:#222}.nav-footer .sitemap a{color:#c7d4fd}.nav-footer .sitemap a:hover{color:#fff}.social{text-align:center}a,a:hover,p a,p a:hover{color:#4872f9}.imageAlignTop .blockImage{margin-bottom:20px;max-width:200px}.tutorialBody{margin-top:-20px;color:#6c6c6c}.tutorialBody h1{margin:0}.tutorialBody h1,.tutorialBody h2,.tutorialBody h3{color:#222}.tutorialBody pre{font-family:IBM Plex Mono,monospace;font-size:14px;margin:0}.tutorialBody .input_prompt,.tutorialBody .output_prompt{color:#8b0000;font-size:12px}.tutorialBody .highlight{background:#f3f4f7;padding:10px 20px;border:1px solid #d3d3d3;border-radius:3px}.tutorialBody .cell{margin:20px}.tutorialBody .output_stderr{background-color:#fdede9}.tutorialBody .anchor-link{color:#d3d3d3}.tutorialBody iframe{width:100%;height:100vh}.tutorialButtonWrapper,.tutorialRuntime{margin:20px}.colabButtonWrapper,.tutorialButtonWrapper{float:left;margin:5px}.colabButtonWrapper img{padding-right:.25em}.colabButton{width:24px}.tutorialButtonsWrapper{display:flex;align-items:center;padding-bottom:15px}.tutorialButton svg{height:15px;margin-right:5px}.tutorialButton:hover{color:#4872f9;background-color:inherit}.wrapper{max-width:1400px}@media only screen and (min-device-width:360px) and (max-device-width:736px){.fixedHeaderContainer header a:nth-child(2){position:absolute;right:150px}.promoSection .button{font-size:12px;margin:3px}.inner h2{margin-top:0}.splashLogo{width:90%}.headerTitleWithLogo{display:block!important}.blockContent>div span p{margin-bottom:30px}.productShowcaseSection div.container{padding-top:0}.productShowcaseSection>h2{padding-bottom:20px}}@media only screen and (max-width:1023px){.fixedHeaderContainer header a:nth-child(2){position:absolute;right:200px}}.socialBanner{font-weight:700;font-size:20px;padding:20px;max-width:768px;margin:0 auto;text-align:center}.socialBanner a{text-decoration:underline}.highlight .hll{background-color:#ffc}.highlight .c{color:#60a0b0;font-style:italic}.highlight .err{border:1px solid red}.highlight .k{color:#007020;font-weight:700}.highlight .o{color:#666}.highlight .cm{color:#60a0b0;font-style:italic}.highlight .cp{color:#007020}.highlight .c1{color:#60a0b0;font-style:italic}.highlight .cs{color:#60a0b0;background-color:#fff0f0}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:grey}.highlight .gp{color:#c65d09}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:purple}.highlight .gt{color:#0040d0}.highlight .kc,.highlight .kd,.highlight .kn{color:#007020;font-weight:700}.highlight .kp{color:#007020}.highlight .kr{color:#007020;font-weight:700}.highlight .kt{color:#902000}.highlight .m{color:#40a070}.highlight .na,.highlight .s{color:#4070a0}.highlight .nb{color:#007020}.highlight .nc{color:#0e84b5;font-weight:700}.highlight .no{color:#60add5}.highlight .nd{color:#555;font-weight:700}.highlight .ni{color:#d55537;font-weight:700}.highlight .ne{color:#007020}.highlight .nf{color:#06287e}.highlight .nl{color:#002070;font-weight:700}.highlight .nn{color:#0e84b5;font-weight:700}.highlight .nt{color:#062873;font-weight:700}.highlight .nv{color:#bb60d5}.highlight .ow{color:#007020;font-weight:700}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#40a070}.highlight .sb,.highlight .sc{color:#4070a0}.highlight .sd{color:#4070a0;font-style:italic}.highlight .s2{color:#4070a0}.highlight .se{color:#4070a0;font-weight:700}.highlight .sh{color:#4070a0}.highlight .si{color:#70a0d0;font-style:italic}.highlight .sx{color:#c65d09}.highlight .sr{color:#235388}.highlight .s1{color:#4070a0}.highlight .ss{color:#517918}.highlight .bp{color:#007020}.highlight .vc,.highlight .vg,.highlight .vi{color:#bb60d5}.highlight .il{color:#40a070} \ No newline at end of file +a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;font:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}body{color:#24292e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;word-wrap:break-word}*{box-sizing:border-box}b,strong{font-weight:600}em,i{font-style:italic}[type=checkbox]{box-sizing:border-box;padding:0}a,a:hover{color:#812ce5;text-decoration:none}a:active,a:hover{outline-width:0}a:not([href]){color:inherit;text-decoration:none}p{margin-bottom:1em;margin-top:0}h1,h2,h3,h4,h5,h6{color:inherit;font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:1.5em}h1{font-size:32px}h2{font-size:24px}h3{font-size:20px}h4{font-size:16px}h5{font-size:14px}h6{font-size:13.6px}ol,ul{margin-bottom:1em;margin-top:0;padding-left:2em}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin-bottom:0;margin-top:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}li{word-wrap:break-all}li>p{margin-top:1em}li+li{margin-top:.25em}img{border-style:none;box-sizing:content-box;max-width:100%}img[align=right]{padding-left:1.25em}img[align=left]{padding-right:1.25em}table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:16px;margin-top:0;overflow:auto;width:100%}table tr{background-color:transparent;border-top:1px solid #dfe2e5}table tr:nth-child(2n){background-color:#f6f8fa}table td,table th{border:1px solid #dfe2e5;padding:6px 13px}table th{background-color:inherit;font-weight:600}table td,table th{color:inherit}blockquote{color:#6a737d;font-size:16px;margin:0 0 16px;padding:0 1em}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}code{background-color:rgba(27,31,35,.05);border-radius:3px;color:inherit;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:85%;margin:0;padding:3.2px 6.4px}pre{margin-bottom:16px}pre code{background-color:transparent;border:0;display:inline;font-size:85%;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;white-space:pre;word-break:normal;word-wrap:normal}kbd{background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:68.75%;line-height:10px;padding:3px 5px;vertical-align:middle}hr{border:1px solid #dfe2e5;box-sizing:content-box;margin:1.5em 0;overflow:hidden;padding:0}hr:after,hr:before{content:"";display:table}hr:after{clear:both}body{background-color:#fff;min-height:100vh;text-rendering:optimizeLegibility}@media only screen and (min-width:736px){body{display:flex;flex-direction:column}}article:after,article:before{content:"";display:table}article:after{clear:both}article>:first-child{margin-top:0}article>:last-child{margin-bottom:0}article iframe,article p img{display:block;margin-left:auto;margin-right:auto;max-width:100%}.anchor{display:block;position:relative;top:-80px}.hash-link{line-height:1;margin-left:-20px;opacity:0;padding-right:4px;transition:opacity .3s}.hash-link:hover{opacity:1!important;transition:none}.hash-link .hash-link-icon{vertical-align:middle}.button{border:1px solid #812ce5;border-radius:3px;color:#812ce5;display:inline-block;font-size:14px;font-weight:400;line-height:1.2em;padding:10px;text-decoration:none!important;text-transform:uppercase;transition:background .3s,color .3s}.button:hover{background:#812ce5;color:#fff}h1:hover .hash-link,h2:hover .hash-link,h3:hover .hash-link,h4:hover .hash-link{opacity:.5;transition:none}blockquote{background-color:rgba(255,229,100,.3);border-left:8px solid #ffe564;padding:15px 30px 15px 15px}.wrapper{margin:0 auto;max-width:1100px;padding:0 20px}.wrapper blockquote>p:first-child{padding-top:0}.center{display:block}.center,.homeContainer{text-align:center}.homeContainer .homeWrapper{padding:2em 10px}.homeContainer .homeWrapper .wrapper{margin:0 auto;max-width:900px;padding:0 20px}.homeContainer .homeWrapper .projectLogo img{height:100px;margin-bottom:0}.homeContainer .homeWrapper #project_title{font-size:300%;letter-spacing:-.08em;line-height:1em;margin-bottom:80px}.homeContainer .homeWrapper #project_tagline{font-size:200%;letter-spacing:-.04em;line-height:1em}.projectLogo{display:none;pointer-events:none}.projectLogo img{height:100px;margin-bottom:0}.projectIntro{margin:40px 0}.projectTitle{color:#812ce5;font-size:250%;line-height:1em}.projectTitle>small{display:block;font-weight:400;font-size:50%;line-height:1em;margin:.7em 0 1.3em}@media only screen and (min-width:480px){.projectTitle{font-size:300%;margin:.3em 0}.projectLogo img{height:200px;margin-bottom:10px}.homeContainer .homeWrapper{padding-left:10px;padding-right:10px}}@media only screen and (min-width:736px){.homeContainer .homeWrapper{position:relative}.homeContainer .homeWrapper #inner{max-width:600px;padding-right:40px}}@media only screen and (min-width:1200px){.homeContainer .homeWrapper #inner{max-width:750px}.homeContainer .homeWrapper .projectLogo{align-items:center;bottom:0;display:flex;justify-content:flex-end;left:0;padding:2em 100px 4em;position:absolute;right:0;top:0}.homeContainer .homeWrapper .projectLogo img{height:100%;max-height:250px}}@media only screen and (min-width:1500px){.homeContainer .homeWrapper #inner{max-width:1100px;padding-bottom:40px;padding-top:40px}.wrapper{max-width:1400px}}.mainContainer{flex:1 1 0%;max-width:100%;padding:40px 0}.mainContainer .wrapper{text-align:left}.mainContainer .wrapper .allShareBlock{padding:10px 0}.mainContainer .wrapper .allShareBlock .pluginBlock{margin:12px 0;padding:0}.mainContainer .wrapper .post{position:relative}.mainContainer .wrapper .post.basicPost{margin-top:30px}.mainContainer .wrapper .post .postHeader{margin-bottom:16px}.mainContainer .wrapper .post .postHeaderTitle{margin-top:0;padding:0}.docsContainer .wrapper .post .postHeader:before,.docsContainer .wrapper .post .postHeaderTitle:before{content:"";display:block;height:90px;margin-top:-90px;visibility:hidden;pointer-events:none}.mainContainer .wrapper .post .postSocialPlugins{padding-top:1em}.mainContainer .wrapper .post .docPagination{background:#812ce5;bottom:0;left:0;position:absolute;right:0}.mainContainer .wrapper .post .docPagination .pager{display:inline-block;width:50%}.mainContainer .wrapper .post .docPagination .pagingNext{float:right;text-align:right}.mainContainer .wrapper .post .docPagination a{border:none;color:#fff;display:block;padding:4px 12px}.mainContainer .wrapper .post .docPagination a:hover{background-color:#f9f9f9;color:#393939}.mainContainer .wrapper .post .docPagination a .pagerLabel{display:inline}.mainContainer .wrapper .post .docPagination a .pagerTitle{display:none}@media only screen and (min-width:480px){.mainContainer .wrapper .post .docPagination a .pagerLabel{display:none}.mainContainer .wrapper .post .docPagination a .pagerTitle{display:inline}}@media only screen and (min-width:1024px){.mainContainer .wrapper .post{display:block}.mainContainer .wrapper .posts .post{width:100%}}@media only screen and (max-width:1023px){.docsContainer .wrapper .post .postHeader:before,.docsContainer .wrapper .post .postHeaderTitle:before{content:"";display:block;height:200px;margin-top:-200px;visibility:hidden;pointer-events:none}}.fixedHeaderContainer{background:#812ce5;color:#fff;min-height:50px;padding:8px 0;position:fixed;width:100%;z-index:9999;transform:translateZ(0)}@media only screen and (min-width:1024px){.fixedHeaderContainer{flex-shrink:0}}.fixedHeaderContainer a{align-items:center;border:0;color:#fff;display:flex;flex-flow:row nowrap;height:34px;z-index:10000}.fixedHeaderContainer header{display:flex;flex-flow:row nowrap;position:relative;text-align:left}.fixedHeaderContainer header img{height:100%;margin-right:10px}.fixedHeaderContainer header .headerTitle{font-size:1.25em;margin:0}.fixedHeaderContainer header .headerTitleWithLogo{font-size:1.25em;line-height:18px;margin:0;position:relative;z-index:9999}.fixedHeaderContainer header h3{color:#fff;font-size:16px;margin:0 0 0 10px;text-decoration:underline}@media (max-width:480px){.headerTitle{font-size:17px}.headerTitleWithLogo{display:none!important}}.promoSection{display:flex;flex-flow:column wrap;font-size:125%;line-height:1.6em;position:relative;z-index:99}.promoSection .promoRow{padding:10px 0}.promoSection .promoRow .pluginWrapper{display:block}.promoSection .promoRow .pluginWrapper.ghStarWrapper,.promoSection .promoRow .pluginWrapper.ghWatchWrapper{height:28px}.promoSection .promoRow .pluginRowBlock{display:flex;flex-wrap:wrap;justify-content:center;margin:0 -2px}.promoSection .promoRow .pluginRowBlock .pluginWrapper{padding:0 2px}.promoSection .promoRow .pluginRowBlock iframe{margin-left:2px;margin-top:5px}input[type=search]{-moz-appearance:none;-webkit-appearance:none}.navSearchWrapper{align-items:center;align-self:center;display:flex;justify-content:center;padding-left:10px;position:absolute;right:10px;top:10px}.navSearchWrapper:before{border:3px solid #e5e5e5;border-radius:50%;content:" ";display:block;height:6px;left:15px;position:absolute;top:50%;transform:translateY(-58%);width:6px;z-index:1}.navSearchWrapper:after{background:#e5e5e5;content:" ";height:7px;left:24px;position:absolute;top:55%;transform:rotate(-45deg);width:3px;z-index:1}.navSearchWrapper .aa-dropdown-menu{background:#f9f9f9;border:3px solid rgba(57,57,57,.25);color:#393939;font-size:14px;left:auto!important;line-height:1.2em;right:0!important}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--category-header{background:#812ce5;color:#fff;font-size:14px;font-weight:400}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{background-color:#812ce5;color:#fff}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--subcategory-column .algolia-docsearch-suggestion--highlight,.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--title .algolia-docsearch-suggestion--highlight{color:#812ce5}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--subcategory-column,.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion__secondary{border-color:rgba(57,57,57,.3)}input#search_input_react{background-color:rgba(0,0,0,.2);border:none;border-radius:20px;color:#fff;font-size:14px;font-weight:300;line-height:20px;outline:none;padding-left:25px;position:relative;transition:width .5s ease;width:170px}.navSearchWrapper:before{left:24px}.navSearchWrapper:after{left:35px}input#search_input_react:active,input#search_input_react:focus{color:#fff;width:220px}.navigationSlider .slidingNav .navSearchWrapper .algolia-docsearch-footer a{height:auto}@media only screen and (max-width:735px){.navSearchWrapper{width:40%}}input::-moz-placeholder{color:#e5e5e5}input:-ms-input-placeholder{color:#e5e5e5}input::placeholder{color:#e5e5e5}.hljs{padding:1.25rem 1.5rem}.gridBlock{padding:0}.gridBlock>*{box-sizing:border-box}.gridBlock .fourByGridBlock img,.gridBlock .threeByGridBlock img,.gridBlock .twoByGridBlock img{max-width:100%}.gridBlock .gridClear{clear:both}@media only screen and (max-width:735px){.gridBlock .fourByGridBlock{flex:1 0 26%}}@media only screen and (min-width:736px){.gridBlock{display:flex;flex-direction:row;flex-wrap:wrap}.gridBlock>*{margin:0 12px}.gridBlock>:first-child{margin-left:0}.gridBlock>:last-child{margin-right:0}.gridBlock .twoByGridBlock{flex:1 0 40%}.gridBlock .threeByGridBlock{flex:1 0 26%}.gridBlock .fourByGridBlock{flex:1 0 20%}h2+.gridBlock{padding-top:20px}}@media only screen and (min-width:1400px){.gridBlock{display:flex;flex-direction:row;flex-wrap:wrap}}.alignCenter{text-align:center}.alignRight{text-align:right}.imageAlignSide{display:flex;flex-flow:row wrap}.blockImage{max-width:730px}.imageAlignSide .blockImage{flex:0 1 500px;max-width:500px}@media only screen and (max-width:735px){.imageAlignSide .blockImage{display:none}}.imageAlignSide .blockContent{flex:1 1}.imageAlignBottom .blockImage{margin:0 auto 20px;max-width:730px}.imageAlignBottom.alignCenter .blockImage{margin-left:auto;margin-right:auto}.imageAlignTop .blockImage{max-width:80px}.imageAlignTop.alignCenter .blockImage{margin-left:auto;margin-right:auto}.imageAlignRight .blockImage{margin-left:40px}.imageAlignLeft .blockImage{margin-right:40px}.container .gridBlock .blockContent p{padding:0}.container .wrapper .alignCenter h2{text-align:center}.container .wrapper .imageAlignSide h2{text-align:left}.container .wrapper .imageAlignSide p{margin:0 0 40px;max-width:560px}.highlightBackground{background:rgba(153,66,79,.7);color:#fff}.highlightBackground a{font-weight:800}.container.highlightBackground .wrapper h1,.container.highlightBackground .wrapper h2,.container.highlightBackground .wrapper h3,.container.highlightBackground .wrapper h4,.container.highlightBackground .wrapper h5,.highlightBackground a{border-color:#fff;color:#fff}.lightBackground{background:#f7f7f7}.darkBackground{background:grey;color:#fff}.darkBackground a,.darkBackground code{color:#d6b3b8}.container.darkBackground .wrapper h1,.container.darkBackground .wrapper h2,.container.darkBackground .wrapper h3,.container.darkBackground .wrapper h4,.container.darkBackground .wrapper h5{border-color:#fff;color:#fff}.container.paddingAll{padding:40px}.container.paddingBottom{padding-bottom:80px}.container.paddingLeft{padding-left:40px}.container.paddingRight{padding-right:40px}.container.paddingTop{padding-top:80px}@media only screen and (max-width:735px){.container.paddingBottom{padding-bottom:40px}.container.paddingTop{padding-top:20px}}@media only screen and (max-width:1023px){.responsiveList .blockContent{position:relative}.responsiveList .blockContent>div{padding-left:20px}.responsiveList .blockContent:before{content:"\2022";position:absolute}}.navigationSlider .navSlideout{cursor:pointer;padding-top:4px;position:absolute;right:10px;top:0;transition:top .3s;z-index:101}.navigationSlider .slidingNav{bottom:auto;box-sizing:border-box;left:0;position:fixed;right:0;top:0}.navigationSlider .slidingNav.slidingNavActive{height:auto;padding-top:42px;width:300px}.navigationSlider .slidingNav ul{background:#ffaf00;box-sizing:border-box;color:#fff;display:flex;flex-wrap:nowrap;list-style:none;margin-top:50px;padding:0;width:100%}.navigationSlider .slidingNav.slidingNavActive ul{display:block}.navigationSlider .slidingNav ul li{flex:1 1 auto;margin:0;text-align:center;white-space:nowrap}.navigationSlider .slidingNav ul li a{align-items:center;box-sizing:border-box;color:#812ce5;color:inherit;display:flex;font-size:.9em;height:auto;height:50px;justify-content:center;margin:0;padding:10px;transition:background-color .3s}.navigationSlider .slidingNav ul li.siteNavGroupActive>a,.navigationSlider .slidingNav ul li.siteNavItemActive>a,.navigationSlider .slidingNav ul li>a:focus,.navigationSlider .slidingNav ul li>a:hover{background-color:#812ce5}.languages-icon{width:20px}#languages-dropdown{pointer-events:none;position:absolute;width:100%}#languages-dropdown.visible{display:flex}#languages-dropdown.hide{display:none}#languages-dropdown-items{background-color:#812ce5;display:flex;flex-direction:column;min-width:120px;pointer-events:all}#languages li{display:block}.navPusher{left:0;min-height:100%;padding-top:100px;position:relative;z-index:99}.singleRowMobileNav.navPusher{padding-top:50px}.navPusher:after{background:rgba(0,0,0,.4);content:"";height:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .5s,width .1s .5s,height .1s .5s;width:0}@media screen and (min-width:1024px){.navPusher{display:flex;flex-direction:column;min-height:calc(100vh - 50px);padding-top:50px}.navPusher,.navPusher>:first-child{flex-grow:1}}.sliderActive .navPusher:after{height:100%;opacity:1;transition:opacity .5s;width:100%;z-index:100}@media only screen and (max-width:1024px){.reactNavSearchWrapper input#search_input_react{background-color:rgba(242,196,178,.25);border:none;border-radius:20px;box-sizing:border-box;color:#393939;font-size:14px;line-height:20px;outline:none;padding-left:38px;position:relative;transition:background-color .2s cubic-bezier(.68,-.55,.265,1.55),width .2s cubic-bezier(.68,-.55,.265,1.55),color .2s ease;width:100%;height:30px}.reactNavSearchWrapper input#search_input_react:active,.reactNavSearchWrapper input#search_input_react:focus{background-color:#812ce5;color:#fff}.reactNavSearchWrapper .algolia-docsearch-suggestion--subcategory-inline{display:none}.reactNavSearchWrapper>span{width:100%}.reactNavSearchWrapper .aa-dropdown-menu{font-size:12px;line-height:2em;padding:0;border-width:1px;min-width:500px}.reactNavSearchWrapper .algolia-docsearch-suggestion__secondary{border-top:none}.aa-suggestions{min-height:140px;max-height:60vh;-webkit-overflow-scrolling:touch;overflow-y:scroll}#languages-dropdown{left:0;top:50px}#languages-dropdown-items{background-color:#812ce5;display:flex;flex-direction:row}}@media only screen and (min-width:1024px){.navSearchWrapper{padding-left:10px;position:relative;right:auto;top:auto}.reactNavSearchWrapper input#search_input_react{height:100%;padding-top:8px;padding-bottom:8px;padding-left:38px}.navSearchWrapper .algolia-autocomplete{display:block}.navigationSlider{height:34px;margin-left:auto;position:relative}.navigationSlider .navSlideout{display:none}.navigationSlider nav.slidingNav{background:none;height:auto;position:relative;right:auto;top:auto;width:auto}.navigationSlider .slidingNav ul{background:none;display:flex;flex-flow:row nowrap;margin:0;padding:0;width:auto}.navigationSlider .slidingNav ul li a{border:0;color:hsla(0,0%,100%,.8);display:flex;font-size:16px;font-size:1em;font-weight:300;height:32px;line-height:1.2em;margin:0;padding:6px 10px}.navigationSlider .slidingNav ul li.siteNavGroupActive a,.navigationSlider .slidingNav ul li.siteNavItemActive a,.navigationSlider .slidingNav ul li a:hover{color:#fff}}@media only screen and (max-width:735px){.navigationSlider .slidingNav ul{overflow-x:auto}.navigationSlider .slidingNav ul::-webkit-scrollbar{display:none}.reactNavSearchWrapper .aa-dropdown-menu{min-width:400px}}@media only screen and (max-width:475px){.reactNavSearchWrapper .aa-dropdown-menu{min-width:300px}}.docMainWrapper .wrapper{padding-left:0;padding-right:0;padding-top:10px}@media only screen and (min-width:1024px){.docMainWrapper{width:100%}.docMainWrapper>*{margin:0 24px}.docMainWrapper>:first-child{margin-left:0}.docMainWrapper>:last-child{margin-right:0}.docMainWrapper .mainContainer{min-width:0}}.edit-page-link{float:right;font-size:10px;font-weight:400;margin-top:3px;text-decoration:none}@media only screen and (max-width:1023px){.edit-page-link{display:none}}.docLastUpdate{font-size:13px;font-style:italic;margin:20px 0;text-align:right}.docs-prevnext{margin:20px 0}.docs-prevnext:after{clear:both;content:" ";display:table}.docs-next{float:right}.docs-prev{float:left}@media only screen and (max-width:735px){.docs-next{clear:both;float:left}.docs-next,.docs-prev{margin:10px 0}.arrow-next{float:right;margin-left:10px}.arrow-prev{float:left;margin-right:10px}.function-name-prevnext{width:200px;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.hide{display:none}.collapsible{cursor:pointer}.collapsible .arrow{float:right;margin-right:8px;margin-top:-4px;transform:rotate(90deg);transition:transform .2s linear}.collapsible .arrow.rotate{transform:rotate(180deg)}@media only screen and (max-width:1023px){.docsNavContainer{background:#fff;left:0;position:fixed;width:100%;z-index:100}}@media only screen and (min-width:1024px){.docsNavContainer{flex:0 0 240px;height:calc(100vh - 50px);position:sticky;overflow-y:auto;top:50px}}.docsSliderActive.docsNavContainer{box-sizing:border-box;height:100%;-webkit-overflow-scrolling:touch;overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:contain;padding-bottom:50px}.docsNavContainer .toc .navBreadcrumb{background-color:#f1f1f1;box-sizing:border-box;display:flex;flex-flow:row nowrap;font-size:12px;height:48px;overflow:hidden;padding:8px 20px}.docsNavContainer .toc .navWrapper{padding:0}@media only screen and (min-width:1024px){.docsNavContainer .toc .navBreadcrumb{display:none}.navBreadcrumb h2{padding:0 10px}.separateOnPageNav .docsNavContainer{flex:0 0 240px}}.navBreadcrumb a,.navBreadcrumb span{border:0;color:#393939}@media only screen and (max-width:735px){.anchor{top:-144px}}@media only screen and (min-width:1024px){.toc{padding:40px 0}}.toc section{padding:0;position:relative}.toc section .navGroups{display:none;padding:48px 20px 60px}.toc .toggleNav{color:#393939;position:relative}.toc .toggleNav .navToggle{cursor:pointer;height:32px;margin-right:10px;position:relative;text-align:left;width:18px}.hamburger-menu{position:absolute;top:6px;width:100%}.line1,.line2,.line3{width:100%;height:3px;background-color:#393939;margin:3px 0;transition:.4s;border-radius:10px}.docsSliderActive .hamburger-menu{top:12px}.docsSliderActive .line1{position:absolute;top:50%;transform:rotate(-45deg)}.docsSliderActive .line2{display:none}.docsSliderActive .line3{position:absolute;top:50%;transform:rotate(45deg)}.toggleNav h2 i{padding:0 4px}.toc .toggleNav .navGroup{margin-bottom:16px}.toc .toggleNav .subNavGroup{margin-bottom:0}.toc .toggleNav .navGroup .navGroupCategoryTitle{color:#393939;font-size:18px;font-weight:500;line-height:1.2em;margin-bottom:8px;margin-top:0}.toc .toggleNav .navGroup .navGroupSubcategoryTitle{color:#393939;font-size:14px;font-weight:500;line-height:1.5;margin-bottom:0;margin-top:0;padding:4px 0}.toc .toggleNav .navGroup .navListItem{margin:0}.toc .toggleNav .navGroup h3 i:not(:empty){box-sizing:border-box;color:rgba(57,57,57,.5);display:inline-block;height:16px;margin-right:10px;text-align:center;transition:color .2s;width:16px}.toc .toggleNav ul{padding:0 8px}.docsSliderActive .toc .toggleNav ul{padding-left:0}.toc .toggleNav ul li{list-style-type:none;padding:0}.toc .toggleNav ul li a{border:none;color:#717171;display:block;font-size:14px;padding:4px 0;transition:color .3s}.toc .toggleNav ul li.navListItemActive a,.toc .toggleNav ul li a:focus,.toc .toggleNav ul li a:hover{color:#812ce5}.docsSliderActive .toc .navBreadcrumb,.tocActive .navBreadcrumb{border-bottom:1px solid #ccc;margin-bottom:20px;position:fixed;width:100%}.toc .toggleNav .navBreadcrumb h2{border:0;flex-grow:1;font-size:16px;font-weight:600;line-height:32px;margin:0;padding:0}.docsSliderActive .toc section .navGroups{display:block;padding-top:60px}.tocToggler{cursor:pointer;height:32px;line-height:32px;margin-right:-10px;padding:0 10px}.icon-toc{box-sizing:border-box;display:inline-block;line-height:normal;position:relative;top:-1px;vertical-align:middle}.icon-toc,.icon-toc:after,.icon-toc:before{background-color:currentColor;border:1px solid;border-radius:50%;box-sizing:border-box;height:4px;width:4px}.icon-toc:after,.icon-toc:before{content:"";position:absolute}.icon-toc:before{left:-1px;top:-7px}.icon-toc:after{left:-1px;top:5px}.tocActive .icon-toc{border-radius:0;height:16px;transform:rotate(45deg);width:3px}.tocActive .icon-toc:before{border-radius:0;height:3px;left:50%;top:50%;transform:translate(-50%,-50%);width:16px}.tocActive .icon-toc:after{content:""}@media only screen and (min-width:1024px){.docMainWrapper{display:flex;flex-flow:row nowrap}.docMainWrapper .wrapper{padding-top:0;padding-left:0;padding-right:0}}.onPageNav{display:none;margin-bottom:40px}.onPageNav::-webkit-scrollbar{width:7px}.onPageNav::-webkit-scrollbar-track{background:#f1f1f1;border-radius:10px}.onPageNav::-webkit-scrollbar-thumb{background:#888;border-radius:10px}.onPageNav::-webkit-scrollbar-thumb:hover{background:#555}.onPageNav a{color:#717171}.onPageNav .toc-headings>li>a.active,.onPageNav .toc-headings>li>a.hover{font-weight:600;color:#812ce5}.onPageNav ul{list-style:none}.onPageNav ul li{font-size:12px;line-height:16px;padding-bottom:8px}.onPageNav ul ul{padding:8px 0 0 20px}.onPageNav ul ul li{padding-bottom:5px}@media only screen and (min-width:1024px){.toc section .navGroups{display:block;padding:8px 0 0}.navBreadcrumb h2{padding:0 10px}}@supports (position:sticky){@media only screen and (max-width:1023px){.tocActive .onPageNav{background:#fff;bottom:0;display:block;left:0;overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:contain;padding:0 20px;position:fixed;right:0;top:148px;z-index:10;margin-bottom:0}.tocActive .singleRowMobileNav .onPageNav{top:98px}.tocActive .navBreadcrumb h2,.tocActive .navToggle{visibility:hidden}.tocActive .onPageNav>.toc-headings{padding:12px 0}}@media only screen and (min-width:1024px){.separateOnPageNav .headerWrapper.wrapper,.separateOnPageNav .wrapper{max-width:1400px}.separateOnPageNav .toc{width:auto}.separateOnPageNav.sideNavVisible .navPusher .mainContainer{flex:1 auto;max-width:100%;min-width:0}.onPageNav{align-self:flex-start;display:block;flex:0 0 240px;max-height:calc(100vh - 90px);overflow-y:auto;position:sticky;top:90px}.onPageNav>.toc-headings{border-left:1px solid #e0e0e0;padding:10px 0 2px 15px}.tocToggler{display:none}}}.blog .wrapper{max-width:1100px}.blogContainer .posts .post{border-bottom:1px solid #e0e0e0;border-radius:3px;margin-bottom:20px;padding-bottom:20px}.blogContainer .postHeader{margin-bottom:10px}.blogContainer .postHeaderTitle{margin-top:0}.blogContainer .postHeader p.post-meta{margin-bottom:10px;padding:0}.blogContainer .postHeader .authorBlock{display:flex}.blogContainer .postHeader .post-authorName{color:rgba(57,57,57,.7);display:flex;flex-direction:column;font-size:14px;font-weight:400;justify-content:center;margin-right:10px;margin-top:0;margin-bottom:0;padding:0}.blogContainer .postHeader .authorPhoto{border-radius:50%;height:30px;overflow:hidden;width:30px}.blogContainer .postHeader .authorPhoto.authorPhotoBig{height:50px;width:50px}.blog-recent{margin:20px 0}.blog-recent>a{float:left}@media only screen and (max-width:735px){.blog-recent{height:40px}}.blogSocialSection{display:block;padding:36px 0}.blogSocialSection .blogSocialSectionItem{padding-bottom:5px}.fb-like{display:block;margin-bottom:20px;width:100%}.more-users{margin:0 auto;max-width:560px;text-align:center}.productShowcaseSection{padding:0 20px;text-align:center}.productShowcaseSection.paddingTop{padding-top:20px}.productShowcaseSection.paddingBottom{padding-bottom:80px}.productShowcaseSection h2{color:#812ce5;font-size:30px;line-height:1em;margin-top:20px;padding:10px 0;text-align:center}.productShowcaseSection p{margin:0 auto;max-width:560px;padding:.8em 0}.productShowcaseSection .logos{align-items:center;display:flex;flex-flow:row wrap;justify-content:center;padding:20px}.productShowcaseSection .logos img{max-height:110px;padding:20px;width:110px}@media only screen and (max-width:735px){.productShowcaseSection .logos img{max-height:64px;padding:20px;width:64px}}.showcaseSection{margin:0 auto;max-width:900px}.showcaseSection,.showcaseSection .prose h1{text-align:center}.showcaseSection .prose{margin:0 auto;max-width:560px;text-align:center}.showcaseSection .logos{align-items:center;display:flex;flex-flow:row wrap;justify-content:center}.showcaseSection .logos img{max-height:128px;padding:20px;width:128px}@media only screen and (max-width:735px){.showcaseSection .logos img{max-height:64px;padding:20px;width:64px}}.nav-footer{background:#20232a;border:none;color:#202020;font-size:15px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;line-height:24px;padding-bottom:2em;padding-top:2em;position:relative}@media only screen and (min-width:1024px){.nav-footer{flex-shrink:0}}.nav-footer .sitemap{display:flex;justify-content:space-between;margin:0 auto 3em;max-width:1080px}.nav-footer .sitemap div{flex:1}.nav-footer .sitemap .nav-home{display:table;height:72px;margin:-12px 20px 0 0;opacity:.4;padding:10px;transition:opacity .15s ease-in-out;width:72px}.nav-footer .sitemap .nav-home:focus,.nav-footer .sitemap .nav-home:hover{opacity:1}@media only screen and (max-width:735px){.nav-footer .sitemap{display:flex;flex-direction:column;margin:0 2em 3em;width:calc(100% - 4em)}.nav-footer .sitemap>div{margin-bottom:18px}}.nav-footer .sitemap a{color:hsla(0,0%,100%,.6);display:block;margin:2px 0;padding:3px 0}.nav-footer .sitemap a:focus,.nav-footer .sitemap a:hover,.nav-footer .sitemap h5>a:focus,.nav-footer .sitemap h5>a:hover{color:#fff;text-decoration:none}.nav-footer .sitemap h5,.nav-footer .sitemap h6{margin:0 0 10px}.nav-footer .sitemap h5,.nav-footer .sitemap h5>a,.nav-footer .sitemap h6,.nav-footer .sitemap h6>a{color:#fff}.nav-footer .sitemap h5>a,.nav-footer .sitemap h6>a{margin:0 -10px}.nav-footer .fbOpenSource{display:block;margin:1em auto;opacity:.4;transition:opacity .15s ease-in-out;width:170px}.nav-footer .fbOpenSource:hover{opacity:1}.nav-footer .copyright{color:hsla(0,0%,100%,.4);text-align:center}.nav-footer .social{padding:5px 0}.tabs{border-top:1px solid #cfcfcf}.nav-tabs{display:flex;border-bottom:4px solid #e0e0e0;width:100%;padding:0;overflow-x:auto;white-space:nowrap;max-height:100%}.nav-tabs::-webkit-scrollbar{display:none}.tabs .tab-pane:focus{outline:none}.tabs .nav-tabs>div{font-size:14px;line-height:1.14286;padding:12px 16px;text-decoration:none;display:block;cursor:pointer}.tabs .nav-tabs>div.active{border-bottom:4px solid #812ce5}.tab-pane{display:none}.tab-pane.active{display:block}.tab-pane>pre{white-space:pre-wrap}.tab-pane>pre>code{margin-top:0;border-radius:0;box-shadow:none}html body{font-family:Montserrat,sans-serif;overflow-x:hidden}.fixedHeaderContainer{background-color:#222}.fixedHeaderContainer header .headerTitleWithLogo{display:block;color:#fff}.fixedHeaderContainer header .logo{height:50px}.fixedHeaderContainer header a:nth-child(2){position:absolute;right:0}.fixedHeaderContainer header a:nth-child(2) h3{font-size:14px}.fixedHeaderContainer header a:nth-child(2) h3:before{content:"v: "}.navigationSlider{margin-right:80px}.navigationSlider .slidingNav ul{background:#222}.navigationSlider .slidingNav ul li a{color:#c7d4fd}.navigationSlider .slidingNav ul li a:focus,.navigationSlider .slidingNav ul li a:hover{color:#fff;background-color:inherit}.navigationSlider .slidingNav ul li.siteNavGroupActive>a,.navigationSlider .slidingNav ul li.siteNavItemActive>a{background-color:inherit}.homeContainer{background:linear-gradient(#812ce5,#ffaf00);padding:25px 0}.splashLogo{display:block;margin:0 auto;width:65%}.projectTitle{color:#fff;font-variant:small-caps;font-weight:300}.promoSection .button{border:2px solid #fff;color:#fff;font-size:19px;margin:10px}.promoSection .button:hover{background:inherit;border:2px solid #fff;color:#fff}.landingPage{padding:0}.productShowcaseSection{padding:45px 20px 30px}div.productShowcaseSection{color:#6c6c6c;padding-top:40px}#quickstart{padding-top:80px}.productShowcaseSection>h2{font-variant:small-caps;font-weight:360;margin:0;padding:0;color:#5b1861}.productShowcaseSection p{font-weight:360}# Subtitles for key features .productShowcaseSection .blockContent>div span p{font-size:18px}.productShowcaseSection div.container{padding:10px 0 40px}.productShowcaseSection img{height:100px}.gridBlock .fourByGridBlock img{max-width:200%}.productShowcaseSection li{padding:10px 0}.productShowcaseSection pre{margin:10px 0}.productShowcaseSection code{background:#fff}.container .wrapper .alignCenter h2{color:#222}div#quickstart{background:#efefef}div#quickstart ol{margin-bottom:0}.nav-footer{background-color:#222}.nav-footer .sitemap a{color:#c7d4fd}.nav-footer .sitemap a:hover{color:#fff}.social{text-align:center}a,a:hover,p a,p a:hover{color:#4872f9}.imageAlignTop .blockImage{margin-bottom:20px;max-width:200px}.tutorialBody{margin-top:-20px;color:#6c6c6c}.tutorialBody h1{margin:0}.tutorialBody h1,.tutorialBody h2,.tutorialBody h3{color:#222}.tutorialBody pre{font-family:IBM Plex Mono,monospace;font-size:14px;margin:0}.tutorialBody .input_prompt,.tutorialBody .output_prompt{color:#8b0000;font-size:12px}.tutorialBody .highlight{background:#f3f4f7;padding:10px 20px;border:1px solid #d3d3d3;border-radius:3px}.tutorialBody .cell{margin:20px}.tutorialBody .output_stderr{background-color:#fdede9}.tutorialBody .anchor-link{color:#d3d3d3}.tutorialBody iframe{width:100%;height:100vh}.tutorialButtonWrapper,.tutorialRuntime{margin:20px}.colabButtonWrapper,.tutorialButtonWrapper{float:left;margin:5px}.colabButtonWrapper img{padding-right:.25em}.colabButton{width:24px}.tutorialButtonsWrapper{display:flex;align-items:center;padding-bottom:15px}.tutorialButton svg{height:15px;margin-right:5px}.tutorialButton:hover{color:#4872f9;background-color:inherit}.wrapper{max-width:1400px}@media only screen and (min-device-width:360px) and (max-device-width:736px){.fixedHeaderContainer header a:nth-child(2){position:absolute;right:150px}.promoSection .button{font-size:12px;margin:3px}.inner h2{margin-top:0}.splashLogo{width:90%}.headerTitleWithLogo{display:block!important}.blockContent>div span p{margin-bottom:30px}.productShowcaseSection div.container{padding-top:0}.productShowcaseSection>h2{padding-bottom:20px}}@media only screen and (max-width:1023px){.fixedHeaderContainer header a:nth-child(2){position:absolute;right:200px}}.socialBanner{font-weight:700;font-size:20px;padding:20px;max-width:768px;margin:0 auto;text-align:center}.socialBanner a{text-decoration:underline}.highlight .hll{background-color:#ffc}.highlight .c{color:#60a0b0;font-style:italic}.highlight .err{border:1px solid red}.highlight .k{color:#007020;font-weight:700}.highlight .o{color:#666}.highlight .cm{color:#60a0b0;font-style:italic}.highlight .cp{color:#007020}.highlight .c1{color:#60a0b0;font-style:italic}.highlight .cs{color:#60a0b0;background-color:#fff0f0}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:grey}.highlight .gp{color:#c65d09}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:purple}.highlight .gt{color:#0040d0}.highlight .kc,.highlight .kd,.highlight .kn{color:#007020;font-weight:700}.highlight .kp{color:#007020}.highlight .kr{color:#007020;font-weight:700}.highlight .kt{color:#902000}.highlight .m{color:#40a070}.highlight .na,.highlight .s{color:#4070a0}.highlight .nb{color:#007020}.highlight .nc{color:#0e84b5;font-weight:700}.highlight .no{color:#60add5}.highlight .nd{color:#555;font-weight:700}.highlight .ni{color:#d55537;font-weight:700}.highlight .ne{color:#007020}.highlight .nf{color:#06287e}.highlight .nl{color:#002070;font-weight:700}.highlight .nn{color:#0e84b5;font-weight:700}.highlight .nt{color:#062873;font-weight:700}.highlight .nv{color:#bb60d5}.highlight .ow{color:#007020;font-weight:700}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#40a070}.highlight .sb,.highlight .sc{color:#4070a0}.highlight .sd{color:#4070a0;font-style:italic}.highlight .s2{color:#4070a0}.highlight .se{color:#4070a0;font-weight:700}.highlight .sh{color:#4070a0}.highlight .si{color:#70a0d0;font-style:italic}.highlight .sx{color:#c65d09}.highlight .sr{color:#235388}.highlight .s1{color:#4070a0}.highlight .ss{color:#517918}.highlight .bp{color:#007020}.highlight .vc,.highlight .vg,.highlight .vi{color:#bb60d5}.highlight .il{color:#40a070} \ No newline at end of file diff --git a/docs/batching.html b/docs/batching.html index 44e2b0efc..fb2e8ec85 100644 --- a/docs/batching.html +++ b/docs/batching.html @@ -76,4 +76,4 @@

Use cases for batch modes

The need for different mesh batch modes is inherent to the way PyTorch operators are implemented. To fully utilize the optimized PyTorch ops, the Meshes data structure allows for efficient conversion between the different batch modes. This is crucial when aiming for a fast and efficient training cycle. An example of this is Mesh R-CNN. Here, in the same forward pass different parts of the network assume different inputs, which are computed by converting between the different batch modes. In particular, vert_align assumes a padded input tensor while immediately after graph_conv assumes a packed input tensor.

meshrcnn

-
Last updated by Jeremy Reizenstein
Data loadersCubify
\ No newline at end of file +
Data loadersCubify
\ No newline at end of file diff --git a/docs/batching/index.html b/docs/batching/index.html index 44e2b0efc..fb2e8ec85 100644 --- a/docs/batching/index.html +++ b/docs/batching/index.html @@ -76,4 +76,4 @@

Use cases for batch modes

The need for different mesh batch modes is inherent to the way PyTorch operators are implemented. To fully utilize the optimized PyTorch ops, the Meshes data structure allows for efficient conversion between the different batch modes. This is crucial when aiming for a fast and efficient training cycle. An example of this is Mesh R-CNN. Here, in the same forward pass different parts of the network assume different inputs, which are computed by converting between the different batch modes. In particular, vert_align assumes a padded input tensor while immediately after graph_conv assumes a packed input tensor.

meshrcnn

-
Last updated by Jeremy Reizenstein
Data loadersCubify
\ No newline at end of file +
Data loadersCubify
\ No newline at end of file diff --git a/docs/cameras.html b/docs/cameras.html index 809996545..e0008401f 100644 --- a/docs/cameras.html +++ b/docs/cameras.html @@ -136,4 +136,4 @@

Getting Started
\ No newline at end of file +
Getting Started
\ No newline at end of file diff --git a/docs/cameras/index.html b/docs/cameras/index.html index 809996545..e0008401f 100644 --- a/docs/cameras/index.html +++ b/docs/cameras/index.html @@ -136,4 +136,4 @@

Getting Started
\ No newline at end of file +
Getting Started
\ No newline at end of file diff --git a/docs/cubify.html b/docs/cubify.html index 261ecf9e9..3cd52d963 100644 --- a/docs/cubify.html +++ b/docs/cubify.html @@ -66,4 +66,4 @@

The cubify operator converts an 3D occupancy grid of shape BxDxHxW, where B is the batch size, into a mesh instantiated as a Meshes data structure of B elements. The operator replaces every occupied voxel (if its occupancy probability is greater than a user defined threshold) with a cuboid of 12 faces and 8 vertices. Shared vertices are merged, and internal faces are removed resulting in a watertight mesh.

The operator provides three alignment modes {topleft, corner, center} which define the span of the mesh vertices with respect to the voxel grid. The alignment modes are described in the figure below for a 2D grid.

input

-
Last updated by Jeremy Reizenstein
BatchingIoU3D
\ No newline at end of file +
BatchingIoU3D
\ No newline at end of file diff --git a/docs/cubify/index.html b/docs/cubify/index.html index 261ecf9e9..3cd52d963 100644 --- a/docs/cubify/index.html +++ b/docs/cubify/index.html @@ -66,4 +66,4 @@

The cubify operator converts an 3D occupancy grid of shape BxDxHxW, where B is the batch size, into a mesh instantiated as a Meshes data structure of B elements. The operator replaces every occupied voxel (if its occupancy probability is greater than a user defined threshold) with a cuboid of 12 faces and 8 vertices. Shared vertices are merged, and internal faces are removed resulting in a watertight mesh.

The operator provides three alignment modes {topleft, corner, center} which define the span of the mesh vertices with respect to the voxel grid. The alignment modes are described in the figure below for a 2D grid.

input

-
Last updated by Jeremy Reizenstein
BatchingIoU3D
\ No newline at end of file +
BatchingIoU3D
\ No newline at end of file diff --git a/docs/datasets.html b/docs/datasets.html index 3487bd02f..a0a98fd74 100644 --- a/docs/datasets.html +++ b/docs/datasets.html @@ -70,4 +70,4 @@

R2N2

The R2N2 dataset contains 13 categories that are a subset of the ShapeNetCore v.1 dataset. The R2N2 dataset also contains its own 24 renderings of each object and voxelized models. The R2N2 Dataset can be downloaded following the instructions here.

The PyTorch3D R2N2 data loader is initialized with the paths to the ShapeNet dataset, the R2N2 dataset and the splits file for R2N2. Just like ShapeNetCore, it can be passed to torch.utils.data.DataLoader with a customized collate_fn: collate_batched_R2N2 from the pytorch3d.dataset.r2n2.utils module. It returns all the data that ShapeNetCore returns, and in addition, it returns the R2N2 renderings (24 views for each model) along with the camera calibration matrices and a voxel representation for each model. Similar to ShapeNetCore, it has a customized render function that supports rendering specified models with the PyTorch3D differentiable renderer. In addition, it supports rendering models with the same orientations as R2N2's original renderings.

-
Last updated by Jeremy Reizenstein
Loading from fileBatching
\ No newline at end of file +
Loading from fileBatching
\ No newline at end of file diff --git a/docs/datasets/index.html b/docs/datasets/index.html index 3487bd02f..a0a98fd74 100644 --- a/docs/datasets/index.html +++ b/docs/datasets/index.html @@ -70,4 +70,4 @@

R2N2

The R2N2 dataset contains 13 categories that are a subset of the ShapeNetCore v.1 dataset. The R2N2 dataset also contains its own 24 renderings of each object and voxelized models. The R2N2 Dataset can be downloaded following the instructions here.

The PyTorch3D R2N2 data loader is initialized with the paths to the ShapeNet dataset, the R2N2 dataset and the splits file for R2N2. Just like ShapeNetCore, it can be passed to torch.utils.data.DataLoader with a customized collate_fn: collate_batched_R2N2 from the pytorch3d.dataset.r2n2.utils module. It returns all the data that ShapeNetCore returns, and in addition, it returns the R2N2 renderings (24 views for each model) along with the camera calibration matrices and a voxel representation for each model. Similar to ShapeNetCore, it has a customized render function that supports rendering specified models with the PyTorch3D differentiable renderer. In addition, it supports rendering models with the same orientations as R2N2's original renderings.

-
Last updated by Jeremy Reizenstein
Loading from fileBatching
\ No newline at end of file +
Loading from fileBatching
\ No newline at end of file diff --git a/docs/io.html b/docs/io.html index 93608e351..d9f4d06ce 100644 --- a/docs/io.html +++ b/docs/io.html @@ -83,4 +83,4 @@ stored either in a GLB container file or a glTF JSON file with embedded binary data. This must be enabled explicitly, as described in pytorch3d/io/experimental_gltf_io.py.

-
Last updated by Jeremy Reizenstein
Why PyTorch3DLoading from file
\ No newline at end of file +
Why PyTorch3DLoading from file
\ No newline at end of file diff --git a/docs/io/index.html b/docs/io/index.html index 93608e351..d9f4d06ce 100644 --- a/docs/io/index.html +++ b/docs/io/index.html @@ -83,4 +83,4 @@ stored either in a GLB container file or a glTF JSON file with embedded binary data. This must be enabled explicitly, as described in pytorch3d/io/experimental_gltf_io.py.

-
Last updated by Jeremy Reizenstein
Why PyTorch3DLoading from file
\ No newline at end of file +
Why PyTorch3DLoading from file
\ No newline at end of file diff --git a/docs/iou3d.html b/docs/iou3d.html index 7462c72e0..04c6cd293 100644 --- a/docs/iou3d.html +++ b/docs/iou3d.html @@ -122,4 +122,4 @@

2020}, } -
Last updated by Ji Hou
CubifyPlotly Visualization
\ No newline at end of file +
CubifyPlotly Visualization
\ No newline at end of file diff --git a/docs/iou3d/index.html b/docs/iou3d/index.html index 7462c72e0..04c6cd293 100644 --- a/docs/iou3d/index.html +++ b/docs/iou3d/index.html @@ -122,4 +122,4 @@

2020}, } -
Last updated by Ji Hou
CubifyPlotly Visualization
\ No newline at end of file +
CubifyPlotly Visualization
\ No newline at end of file diff --git a/docs/meshes_io.html b/docs/meshes_io.html index 1505540eb..db8d44972 100644 --- a/docs/meshes_io.html +++ b/docs/meshes_io.html @@ -116,4 +116,4 @@

    meshes = Meshes(verts=[verts], faces=[faces])
 
-
Last updated by Jeremy Reizenstein
File IOData loaders
\ No newline at end of file +
File IOData loaders
\ No newline at end of file diff --git a/docs/meshes_io/index.html b/docs/meshes_io/index.html index 1505540eb..db8d44972 100644 --- a/docs/meshes_io/index.html +++ b/docs/meshes_io/index.html @@ -116,4 +116,4 @@

    meshes = Meshes(verts=[verts], faces=[faces])
 
-
Last updated by Jeremy Reizenstein
File IOData loaders
\ No newline at end of file +
File IOData loaders
\ No newline at end of file diff --git a/docs/renderer.html b/docs/renderer.html index 124ea30c5..e0c4dc02f 100644 --- a/docs/renderer.html +++ b/docs/renderer.html @@ -109,4 +109,4 @@

[6] Yifan et al, 'Differentiable Surface Splatting for Point-based Geometry Processing', SIGGRAPH Asia 2019

[7] Loubet et al, 'Reparameterizing Discontinuous Integrands for Differentiable Rendering', SIGGRAPH Asia 2019

[8] Chen et al, 'Learning to Predict 3D Objects with an Interpolation-based Differentiable Renderer', NeurIPS 2019

-
Last updated by Krzysztof Chalupka
Plotly VisualizationGetting Started
\ No newline at end of file +
Plotly VisualizationGetting Started
\ No newline at end of file diff --git a/docs/renderer/index.html b/docs/renderer/index.html index 124ea30c5..e0c4dc02f 100644 --- a/docs/renderer/index.html +++ b/docs/renderer/index.html @@ -109,4 +109,4 @@

[6] Yifan et al, 'Differentiable Surface Splatting for Point-based Geometry Processing', SIGGRAPH Asia 2019

[7] Loubet et al, 'Reparameterizing Discontinuous Integrands for Differentiable Rendering', SIGGRAPH Asia 2019

[8] Chen et al, 'Learning to Predict 3D Objects with an Interpolation-based Differentiable Renderer', NeurIPS 2019

-
Last updated by Krzysztof Chalupka
Plotly VisualizationGetting Started
\ No newline at end of file +
Plotly VisualizationGetting Started
\ No newline at end of file diff --git a/docs/renderer_getting_started.html b/docs/renderer_getting_started.html index b12b0c49b..a617b7417 100644 --- a/docs/renderer_getting_started.html +++ b/docs/renderer_getting_started.html @@ -168,4 +168,4 @@

✔️ -
Last updated by Jeremy Reizenstein
OverviewCameras
\ No newline at end of file +
OverviewCameras
\ No newline at end of file diff --git a/docs/renderer_getting_started/index.html b/docs/renderer_getting_started/index.html index b12b0c49b..a617b7417 100644 --- a/docs/renderer_getting_started/index.html +++ b/docs/renderer_getting_started/index.html @@ -168,4 +168,4 @@

✔️ -
Last updated by Jeremy Reizenstein
OverviewCameras
\ No newline at end of file +
OverviewCameras
\ No newline at end of file diff --git a/docs/visualization.html b/docs/visualization.html index baceb94db..20766b6c3 100644 --- a/docs/visualization.html +++ b/docs/visualization.html @@ -75,4 +75,4 @@

fig = ... fig.write_image("image_name.png") -
Last updated by Alex Naumann
IoU3DOverview
\ No newline at end of file +
IoU3DOverview
\ No newline at end of file diff --git a/docs/visualization/index.html b/docs/visualization/index.html index baceb94db..20766b6c3 100644 --- a/docs/visualization/index.html +++ b/docs/visualization/index.html @@ -75,4 +75,4 @@

fig = ... fig.write_image("image_name.png") -
Last updated by Alex Naumann
IoU3DOverview
\ No newline at end of file +
IoU3DOverview
\ No newline at end of file diff --git a/docs/why_pytorch3d.html b/docs/why_pytorch3d.html index 04a628d11..1441decbc 100644 --- a/docs/why_pytorch3d.html +++ b/docs/why_pytorch3d.html @@ -65,4 +65,4 @@

Why PyTorch3D

Our goal with PyTorch3D is to help accelerate research at the intersection of deep learning and 3D. 3D data is more complex than 2D images and while working on projects such as Mesh R-CNN and C3DPO, we encountered several challenges including 3D data representation, batching, and speed. We have developed many useful operators and abstractions for working on 3D deep learning and want to share this with the community to drive novel research in this area.

In PyTorch3D we have included efficient 3D operators, heterogeneous batching capabilities, and a modular differentiable rendering API, to equip researchers in this field with a much needed toolkit to implement cutting-edge research with complex 3D inputs.

-
Last updated by Patrick Labatut
\ No newline at end of file +
File IO
\ No newline at end of file diff --git a/docs/why_pytorch3d/index.html b/docs/why_pytorch3d/index.html index 04a628d11..1441decbc 100644 --- a/docs/why_pytorch3d/index.html +++ b/docs/why_pytorch3d/index.html @@ -65,4 +65,4 @@

Why PyTorch3D

Our goal with PyTorch3D is to help accelerate research at the intersection of deep learning and 3D. 3D data is more complex than 2D images and while working on projects such as Mesh R-CNN and C3DPO, we encountered several challenges including 3D data representation, batching, and speed. We have developed many useful operators and abstractions for working on 3D deep learning and want to share this with the community to drive novel research in this area.

In PyTorch3D we have included efficient 3D operators, heterogeneous batching capabilities, and a modular differentiable rendering API, to equip researchers in this field with a much needed toolkit to implement cutting-edge research with complex 3D inputs.

-
Last updated by Patrick Labatut
\ No newline at end of file +
File IO
\ No newline at end of file diff --git a/en/help.html b/en/help.html index 37e5c5c97..746d6a5d3 100644 --- a/en/help.html +++ b/en/help.html @@ -12,4 +12,4 @@

Ask questions about the documentation and project

Stay up to date

Find out what's new with this project

-
\ No newline at end of file + \ No newline at end of file diff --git a/en/help/index.html b/en/help/index.html index 37e5c5c97..746d6a5d3 100644 --- a/en/help/index.html +++ b/en/help/index.html @@ -12,4 +12,4 @@

Ask questions about the documentation and project

Stay up to date

Find out what's new with this project

-
\ No newline at end of file + \ No newline at end of file diff --git a/en/index.html b/en/index.html index 8a3c012e0..452e82fda 100644 --- a/en/index.html +++ b/en/index.html @@ -28,4 +28,4 @@ sample_test = sample_points_from_meshes(test_mesh, 5000) loss_chamfer, _ = chamfer_distance(sample_sphere, sample_test) - \ No newline at end of file + \ No newline at end of file diff --git a/en/users.html b/en/users.html index bc350fc3f..f492af80b 100644 --- a/en/users.html +++ b/en/users.html @@ -6,4 +6,4 @@ ga('create', 'UA-157376881-1', 'auto'); ga('send', 'pageview'); -
\ No newline at end of file +
\ No newline at end of file diff --git a/en/users/index.html b/en/users/index.html index bc350fc3f..f492af80b 100644 --- a/en/users/index.html +++ b/en/users/index.html @@ -6,4 +6,4 @@ ga('create', 'UA-157376881-1', 'auto'); ga('send', 'pageview'); -
\ No newline at end of file +
\ No newline at end of file diff --git a/files/bundle_adjustment.ipynb b/files/bundle_adjustment.ipynb index 1002b4579..add5e405d 100644 --- a/files/bundle_adjustment.ipynb +++ b/files/bundle_adjustment.ipynb @@ -89,7 +89,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/bundle_adjustment.py b/files/bundle_adjustment.py index 3dcd18c31..baeff48f8 100644 --- a/files/bundle_adjustment.py +++ b/files/bundle_adjustment.py @@ -49,7 +49,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/camera_position_optimization_with_differentiable_rendering.ipynb b/files/camera_position_optimization_with_differentiable_rendering.ipynb index 79163a2c2..9b9fe5932 100644 --- a/files/camera_position_optimization_with_differentiable_rendering.ipynb +++ b/files/camera_position_optimization_with_differentiable_rendering.ipynb @@ -76,7 +76,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/camera_position_optimization_with_differentiable_rendering.py b/files/camera_position_optimization_with_differentiable_rendering.py index 267655d5d..e7952dfec 100644 --- a/files/camera_position_optimization_with_differentiable_rendering.py +++ b/files/camera_position_optimization_with_differentiable_rendering.py @@ -36,7 +36,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/dataloaders_ShapeNetCore_R2N2.ipynb b/files/dataloaders_ShapeNetCore_R2N2.ipynb index 6986da288..8c09e6b56 100644 --- a/files/dataloaders_ShapeNetCore_R2N2.ipynb +++ b/files/dataloaders_ShapeNetCore_R2N2.ipynb @@ -51,7 +51,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/dataloaders_ShapeNetCore_R2N2.py b/files/dataloaders_ShapeNetCore_R2N2.py index 370282aaa..8887c7fbe 100644 --- a/files/dataloaders_ShapeNetCore_R2N2.py +++ b/files/dataloaders_ShapeNetCore_R2N2.py @@ -31,7 +31,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/deform_source_mesh_to_target_mesh.ipynb b/files/deform_source_mesh_to_target_mesh.ipynb index 1b7d04552..a001b47ec 100644 --- a/files/deform_source_mesh_to_target_mesh.ipynb +++ b/files/deform_source_mesh_to_target_mesh.ipynb @@ -90,7 +90,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/deform_source_mesh_to_target_mesh.py b/files/deform_source_mesh_to_target_mesh.py index 592cf3360..f4e3ca800 100644 --- a/files/deform_source_mesh_to_target_mesh.py +++ b/files/deform_source_mesh_to_target_mesh.py @@ -48,7 +48,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/fit_simple_neural_radiance_field.ipynb b/files/fit_simple_neural_radiance_field.ipynb index 0ad532bef..c8880e41a 100644 --- a/files/fit_simple_neural_radiance_field.ipynb +++ b/files/fit_simple_neural_radiance_field.ipynb @@ -56,7 +56,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/fit_simple_neural_radiance_field.py b/files/fit_simple_neural_radiance_field.py index c7f618e97..f59dd85e2 100644 --- a/files/fit_simple_neural_radiance_field.py +++ b/files/fit_simple_neural_radiance_field.py @@ -42,7 +42,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/fit_textured_mesh.ipynb b/files/fit_textured_mesh.ipynb index 4a1835939..92efbc65b 100644 --- a/files/fit_textured_mesh.ipynb +++ b/files/fit_textured_mesh.ipynb @@ -68,7 +68,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/fit_textured_mesh.py b/files/fit_textured_mesh.py index 3567108d3..f25afc858 100644 --- a/files/fit_textured_mesh.py +++ b/files/fit_textured_mesh.py @@ -31,7 +31,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/fit_textured_volume.ipynb b/files/fit_textured_volume.ipynb index e74bf9e90..d857bc29d 100644 --- a/files/fit_textured_volume.ipynb +++ b/files/fit_textured_volume.ipynb @@ -47,7 +47,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/fit_textured_volume.py b/files/fit_textured_volume.py index 5f0d18f8a..f89acffb2 100644 --- a/files/fit_textured_volume.py +++ b/files/fit_textured_volume.py @@ -32,7 +32,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/implicitron_config_system.ipynb b/files/implicitron_config_system.ipynb index 8d0102f8f..d39942eee 100644 --- a/files/implicitron_config_system.ipynb +++ b/files/implicitron_config_system.ipynb @@ -78,7 +78,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/implicitron_config_system.py b/files/implicitron_config_system.py index c2e6b1baa..b160f6064 100644 --- a/files/implicitron_config_system.py +++ b/files/implicitron_config_system.py @@ -35,7 +35,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/implicitron_volumes.ipynb b/files/implicitron_volumes.ipynb index bacf7cbd8..1f387619f 100644 --- a/files/implicitron_volumes.ipynb +++ b/files/implicitron_volumes.ipynb @@ -72,7 +72,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/implicitron_volumes.py b/files/implicitron_volumes.py index 135923bc3..645b9829b 100644 --- a/files/implicitron_volumes.py +++ b/files/implicitron_volumes.py @@ -30,7 +30,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/render_colored_points.ipynb b/files/render_colored_points.ipynb index 0982a9b55..2ed0b99e3 100644 --- a/files/render_colored_points.ipynb +++ b/files/render_colored_points.ipynb @@ -50,7 +50,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/render_colored_points.py b/files/render_colored_points.py index 680ec4b11..49dc8e9ff 100644 --- a/files/render_colored_points.py +++ b/files/render_colored_points.py @@ -30,7 +30,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/render_densepose.ipynb b/files/render_densepose.ipynb index 2307165bc..cfe1f0ebc 100644 --- a/files/render_densepose.ipynb +++ b/files/render_densepose.ipynb @@ -57,7 +57,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/render_densepose.py b/files/render_densepose.py index 2cee1b97f..6a00ffdb0 100644 --- a/files/render_densepose.py +++ b/files/render_densepose.py @@ -34,7 +34,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/render_textured_meshes.ipynb b/files/render_textured_meshes.ipynb index 8c5adc483..daf90c8b8 100644 --- a/files/render_textured_meshes.ipynb +++ b/files/render_textured_meshes.ipynb @@ -73,7 +73,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/render_textured_meshes.py b/files/render_textured_meshes.py index 4a65b05e6..bc332d84b 100644 --- a/files/render_textured_meshes.py +++ b/files/render_textured_meshes.py @@ -32,7 +32,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/help.html b/help.html index 009917083..f5684a2b5 100644 --- a/help.html +++ b/help.html @@ -12,4 +12,4 @@

Ask questions about the documentation and project

Stay up to date

Find out what's new with this project

-
\ No newline at end of file + \ No newline at end of file diff --git a/help/index.html b/help/index.html index 009917083..f5684a2b5 100644 --- a/help/index.html +++ b/help/index.html @@ -12,4 +12,4 @@

Ask questions about the documentation and project

Stay up to date

Find out what's new with this project

-
\ No newline at end of file + \ No newline at end of file diff --git a/index.html b/index.html index f5ba27487..694973517 100644 --- a/index.html +++ b/index.html @@ -28,4 +28,4 @@ sample_test = sample_points_from_meshes(test_mesh, 5000) loss_chamfer, _ = chamfer_distance(sample_sphere, sample_test) - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/bundle_adjustment.html b/tutorials/bundle_adjustment.html index 7be999cf4..ab807f6f0 100644 --- a/tutorials/bundle_adjustment.html +++ b/tutorials/bundle_adjustment.html @@ -133,7 +133,7 @@

0. Install and Import Modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -421,4 +421,4 @@

4. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/bundle_adjustment/index.html b/tutorials/bundle_adjustment/index.html index 7be999cf4..ab807f6f0 100644 --- a/tutorials/bundle_adjustment/index.html +++ b/tutorials/bundle_adjustment/index.html @@ -133,7 +133,7 @@

0. Install and Import Modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -421,4 +421,4 @@

4. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/camera_position_optimization_with_differentiable_rendering.html b/tutorials/camera_position_optimization_with_differentiable_rendering.html index 1ef78739e..7d7d14207 100644 --- a/tutorials/camera_position_optimization_with_differentiable_rendering.html +++ b/tutorials/camera_position_optimization_with_differentiable_rendering.html @@ -127,7 +127,7 @@

0. Install and import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -507,4 +507,4 @@

5. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/camera_position_optimization_with_differentiable_rendering/index.html b/tutorials/camera_position_optimization_with_differentiable_rendering/index.html index 1ef78739e..7d7d14207 100644 --- a/tutorials/camera_position_optimization_with_differentiable_rendering/index.html +++ b/tutorials/camera_position_optimization_with_differentiable_rendering/index.html @@ -127,7 +127,7 @@

0. Install and import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -507,4 +507,4 @@

5. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/dataloaders_ShapeNetCore_R2N2.html b/tutorials/dataloaders_ShapeNetCore_R2N2.html index c1defc0b5..45dc4e810 100644 --- a/tutorials/dataloaders_ShapeNetCore_R2N2.html +++ b/tutorials/dataloaders_ShapeNetCore_R2N2.html @@ -126,7 +126,7 @@

0. Install and import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -654,4 +654,4 @@

5. Visualize R2N2 models' voxels - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/dataloaders_ShapeNetCore_R2N2/index.html b/tutorials/dataloaders_ShapeNetCore_R2N2/index.html index c1defc0b5..45dc4e810 100644 --- a/tutorials/dataloaders_ShapeNetCore_R2N2/index.html +++ b/tutorials/dataloaders_ShapeNetCore_R2N2/index.html @@ -126,7 +126,7 @@

0. Install and import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -654,4 +654,4 @@

5. Visualize R2N2 models' voxels - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/deform_source_mesh_to_target_mesh.html b/tutorials/deform_source_mesh_to_target_mesh.html index 26249cf2a..5ac5efdcc 100644 --- a/tutorials/deform_source_mesh_to_target_mesh.html +++ b/tutorials/deform_source_mesh_to_target_mesh.html @@ -146,7 +146,7 @@

0. Install and Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -494,4 +494,4 @@

6. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/deform_source_mesh_to_target_mesh/index.html b/tutorials/deform_source_mesh_to_target_mesh/index.html index 26249cf2a..5ac5efdcc 100644 --- a/tutorials/deform_source_mesh_to_target_mesh/index.html +++ b/tutorials/deform_source_mesh_to_target_mesh/index.html @@ -146,7 +146,7 @@

0. Install and Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -494,4 +494,4 @@

6. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/fit_simple_neural_radiance_field.html b/tutorials/fit_simple_neural_radiance_field.html index bab052cce..7a9a6e150 100644 --- a/tutorials/fit_simple_neural_radiance_field.html +++ b/tutorials/fit_simple_neural_radiance_field.html @@ -127,7 +127,7 @@

0. Install and Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -952,4 +952,4 @@

7. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/fit_simple_neural_radiance_field/index.html b/tutorials/fit_simple_neural_radiance_field/index.html index bab052cce..7a9a6e150 100644 --- a/tutorials/fit_simple_neural_radiance_field/index.html +++ b/tutorials/fit_simple_neural_radiance_field/index.html @@ -127,7 +127,7 @@

0. Install and Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -952,4 +952,4 @@

7. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/fit_textured_mesh.html b/tutorials/fit_textured_mesh.html index f83d7435b..4c7889b36 100644 --- a/tutorials/fit_textured_mesh.html +++ b/tutorials/fit_textured_mesh.html @@ -125,7 +125,7 @@

0. Install and Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -883,4 +883,4 @@

5. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/fit_textured_mesh/index.html b/tutorials/fit_textured_mesh/index.html index f83d7435b..4c7889b36 100644 --- a/tutorials/fit_textured_mesh/index.html +++ b/tutorials/fit_textured_mesh/index.html @@ -125,7 +125,7 @@

0. Install and Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -883,4 +883,4 @@

5. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/fit_textured_volume.html b/tutorials/fit_textured_volume.html index 626af6080..3db9413d3 100644 --- a/tutorials/fit_textured_volume.html +++ b/tutorials/fit_textured_volume.html @@ -118,7 +118,7 @@

0. Install and Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -544,4 +544,4 @@

6. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/fit_textured_volume/index.html b/tutorials/fit_textured_volume/index.html index 626af6080..3db9413d3 100644 --- a/tutorials/fit_textured_volume/index.html +++ b/tutorials/fit_textured_volume/index.html @@ -118,7 +118,7 @@

0. Install and Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -544,4 +544,4 @@

6. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/implicitron_config_system.html b/tutorials/implicitron_config_system.html index d7a1d6bb5..4e1e42144 100644 --- a/tutorials/implicitron_config_system.html +++ b/tutorials/implicitron_config_system.html @@ -125,7 +125,7 @@

0. Install and import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -873,4 +873,4 @@

Appendix: gotchas ⚠️ - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/implicitron_config_system/index.html b/tutorials/implicitron_config_system/index.html index d7a1d6bb5..4e1e42144 100644 --- a/tutorials/implicitron_config_system/index.html +++ b/tutorials/implicitron_config_system/index.html @@ -125,7 +125,7 @@

0. Install and import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -873,4 +873,4 @@

Appendix: gotchas ⚠️ - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/implicitron_volumes.html b/tutorials/implicitron_volumes.html index 3763eff81..b6931b2c3 100644 --- a/tutorials/implicitron_volumes.html +++ b/tutorials/implicitron_volumes.html @@ -115,7 +115,7 @@

0. Install and import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -652,4 +652,4 @@

5. Evaluate the module - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/implicitron_volumes/index.html b/tutorials/implicitron_volumes/index.html index 3763eff81..b6931b2c3 100644 --- a/tutorials/implicitron_volumes/index.html +++ b/tutorials/implicitron_volumes/index.html @@ -115,7 +115,7 @@

0. Install and import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -652,4 +652,4 @@

5. Evaluate the module - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/index.html b/tutorials/index.html index 491ad02de..b0c515011 100644 --- a/tutorials/index.html +++ b/tutorials/index.html @@ -62,4 +62,4 @@ }; } }); -

Welcome to the PyTorch3D Tutorials

Here you can learn about the structure and applications of PyTorch3D from examples which are in the form of ipython notebooks.

Run interactively

At the top of each example you can find a button named "Run in Google Colab" which will open the notebook in Google Colaboratory where you can run the code directly in the browser with access to GPU support - it looks like this:

You can modify the code and experiment with varying different settings. Remember to install the latest stable version of PyTorch3D and its dependencies. Code to do this with pip is provided in each notebook.

Run locally

There is also a button to download the notebook and source code to run it locally.

\ No newline at end of file +

Welcome to the PyTorch3D Tutorials

Here you can learn about the structure and applications of PyTorch3D from examples which are in the form of ipython notebooks.

Run interactively

At the top of each example you can find a button named "Run in Google Colab" which will open the notebook in Google Colaboratory where you can run the code directly in the browser with access to GPU support - it looks like this:

You can modify the code and experiment with varying different settings. Remember to install the latest stable version of PyTorch3D and its dependencies. Code to do this with pip is provided in each notebook.

Run locally

There is also a button to download the notebook and source code to run it locally.

\ No newline at end of file diff --git a/tutorials/render_colored_points.html b/tutorials/render_colored_points.html index c730994c6..e2c3a7b59 100644 --- a/tutorials/render_colored_points.html +++ b/tutorials/render_colored_points.html @@ -124,7 +124,7 @@

Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -553,4 +553,4 @@

View pointclouds in Plotly figures - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/render_colored_points/index.html b/tutorials/render_colored_points/index.html index c730994c6..e2c3a7b59 100644 --- a/tutorials/render_colored_points/index.html +++ b/tutorials/render_colored_points/index.html @@ -124,7 +124,7 @@

Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -553,4 +553,4 @@

View pointclouds in Plotly figures - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/render_densepose.html b/tutorials/render_densepose.html index 07711a7ba..03c956ce9 100644 --- a/tutorials/render_densepose.html +++ b/tutorials/render_densepose.html @@ -127,7 +127,7 @@

Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -502,4 +502,4 @@

Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/render_densepose/index.html b/tutorials/render_densepose/index.html index 07711a7ba..03c956ce9 100644 --- a/tutorials/render_densepose/index.html +++ b/tutorials/render_densepose/index.html @@ -127,7 +127,7 @@

Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -502,4 +502,4 @@

Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/render_textured_meshes.html b/tutorials/render_textured_meshes.html index 9f1d3b760..8c9845713 100644 --- a/tutorials/render_textured_meshes.html +++ b/tutorials/render_textured_meshes.html @@ -126,7 +126,7 @@

0. Install and Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -763,4 +763,4 @@

8. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/render_textured_meshes/index.html b/tutorials/render_textured_meshes/index.html index 9f1d3b760..8c9845713 100644 --- a/tutorials/render_textured_meshes/index.html +++ b/tutorials/render_textured_meshes/index.html @@ -126,7 +126,7 @@

0. Install and Import modulesexcept ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -763,4 +763,4 @@

8. Conclusion - \ No newline at end of file + \ No newline at end of file diff --git a/users.html b/users.html index c8ebc695f..5f3501f98 100644 --- a/users.html +++ b/users.html @@ -6,4 +6,4 @@ ga('create', 'UA-157376881-1', 'auto'); ga('send', 'pageview'); - \ No newline at end of file + \ No newline at end of file diff --git a/users/index.html b/users/index.html index c8ebc695f..5f3501f98 100644 --- a/users/index.html +++ b/users/index.html @@ -6,4 +6,4 @@ ga('create', 'UA-157376881-1', 'auto'); ga('send', 'pageview'); - \ No newline at end of file + \ No newline at end of file