webpackJsonp([9],{"0yYF":function(e,a,t){var n=t("vTnq");"string"==typeof n&&(n=[[e.i,n,""]]),n.locals&&(e.exports=n.locals);t("rjj0")("863cc734",n,!1)},"5twn":function(e,a,t){(e.exports=t("YHym")(!1)).push([e.i,"@keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}header.nav-header{box-shadow:0 3px 5px 0 #ddd;margin-bottom:2em;padding-bottom:0}header.nav-header nav.navbar{display:flex;align-items:flex-end;border-bottom:5px solid #50237f}header.nav-header nav.navbar .navbar-burger{margin-left:0;height:auto}header.nav-header nav.navbar .navbar-burger span{height:2px;width:25px}header.nav-header nav.navbar .navbar-burger span:first-child{margin-top:-9px}header.nav-header nav.navbar .navbar-burger span:nth-child(3){margin-top:7px}header.nav-header nav.navbar .navbar-brand{align-self:stretch}header.nav-header nav.navbar .navbar-brand .navbar-item img{max-height:none;width:240px}header.nav-header nav.navbar .navbar-item,header.nav-header nav.navbar .navbar-link,header.nav-header nav.navbar .navbar-link a{color:#a7a7a7}header.nav-header nav.navbar .navbar-item.is-active,header.nav-header nav.navbar .navbar-item:hover,header.nav-header nav.navbar .navbar-link.is-active,header.nav-header nav.navbar .navbar-link:hover,header.nav-header nav.navbar .navbar-link a.is-active,header.nav-header nav.navbar .navbar-link a:hover{color:#78be20}header.nav-header nav.navbar .navbar-item:hover,header.nav-header nav.navbar .navbar-link:hover,header.nav-header nav.navbar .navbar-link a:hover{background-color:transparent;text-decoration:none;font-weight:700}header.nav-header nav.navbar .navbar-item .dropdown-trigger,header.nav-header nav.navbar .navbar-link .dropdown-trigger,header.nav-header nav.navbar .navbar-link a .dropdown-trigger{display:flex}@media screen and (min-width:1024px){.nav-header .container>.navbar .navbar-menu{margin-right:1rem}}@media screen and (max-width:1007px){header.nav-header nav.navbar{flex-direction:column;align-items:stretch}header.nav-header nav.navbar .navbar-menu{order:1;box-shadow:none}}@media screen and (min-width:1008px){nav.navbar .container .navbar-menu{height:40px}}",""])},"5uNY":function(e,a,t){"use strict";var n=t("DWaH");a.a={data:function(){return{accepted:!0}},created:function(){this.lSAvaialable=!0;try{var e="localStorateTest";localStorage.setItem(e,e),localStorage.removeItem(e)}catch(e){this.lSAvaialable=!1}this.accepted=this.hasAccepted()},methods:{hasAccepted:function(){return this.lSAvaialable?localStorage.getItem("acceptCookies"):n.a("acceptCookies")},accept:function(){var e=(new Date).toISOString();this.lSAvaialable?localStorage.setItem("acceptCookies",e):n.b("acceptCookies",e),this.accepted=this.hasAccepted()}}}},"6mrF":function(e,a,t){"use strict";var n=function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("header",{staticClass:"nav-header"},[t("div",{staticClass:"container"},[t("nav",{staticClass:"navbar"},[t("div",{staticClass:"navbar-menu",class:{"is-active":e.isMenuActive},attrs:{id:"navMenu"},on:{click:function(a){e.isMenuActive=!1}}},[t("div",{staticClass:"navbar-start"},[e._t("default")],2)]),t("div",{staticClass:"navbar-brand"},[t("div",{staticClass:"navbar-burger burger",class:{"is-active":e.isMenuActive},on:{click:function(a){e.isMenuActive=!e.isMenuActive}}},[t("span"),t("span"),t("span")]),t("nuxt-link",{staticClass:"navbar-item",attrs:{to:"/"}},[t("img",{attrs:{src:"logo.svg",alt:e.brand}})])],1)])])])};n._withStripped=!0;var r={render:n,staticRenderFns:[]};a.a=r},DWaH:function(e,a,t){"use strict";t.d(a,"a",function(){return i}),t.d(a,"b",function(){return o});var n=t("GR9a"),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function i(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:decodeURIComponent;if("string"!=typeof e||!e)return null;var t=new RegExp("(?:^|; )"+Object(n.b)(e)+"(?:=([^;]*))?(?:;|$)").exec(document.cookie);return null===t?null:"function"==typeof a?a(t[1]):t[1]}function o(e,a){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:encodeURIComponent,i=arguments[3];"object"===(void 0===t?"undefined":r(t))&&null!==t&&(i=t,t=encodeURIComponent);var o=Object(n.a)(i||{}),s=e+"="+("function"==typeof t?t(a):a)+o;document.cookie=s}},GR9a:function(e,a,t){"use strict";t.d(a,"b",function(){return i}),t.d(a,"a",function(){return s});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function r(e,a){return Object.prototype.hasOwnProperty.call(e,a)}function i(e){return e.replace(/[.*+?^$|[\](){}\\-]/g,"\\$&")}function o(e){var a=e.charAt(e.length-1),t=parseInt(e,10),n=new Date;switch(a){case"Y":n.setFullYear(n.getFullYear()+t);break;case"M":n.setMonth(n.getMonth()+t);break;case"D":n.setDate(n.getDate()+t);break;case"h":n.setHours(n.getHours()+t);break;case"m":n.setMinutes(n.getMinutes()+t);break;case"s":n.setSeconds(n.getSeconds()+t);break;default:n=new Date(e)}return n}function s(e){var a="";for(var t in e)if(r(e,t))if(/^expires$/i.test(t)){var i=e[t];"object"!==(void 0===i?"undefined":n(i))&&(i=o(i+="number"==typeof i?"D":"")),a+=";"+t+"="+i.toUTCString()}else/^secure$/.test(t)?e[t]&&(a+=";"+t):a+=";"+t+"="+e[t];return r(e,"path")||(a+=";path=/"),a}},"H/Gp":function(e,a,t){"use strict";var n=function(){var e=this.$createElement;this._self._c;return this._m(0)};n._withStripped=!0;var r={render:n,staticRenderFns:[function(){var e=this.$createElement,a=this._self._c||e;return a("footer",{staticClass:"footer"},[a("div",{staticClass:"container"},[a("div",{staticClass:"columns is-mobile is-multiline is-centered"},[a("div",{staticClass:"column is-narrow"},[a("a",{attrs:{href:"http://www.eclipse.org"}},[this._v("Eclipse Foundation")])]),a("div",{staticClass:"column is-narrow"},[a("a",{attrs:{href:"http://www.eclipse.org/legal/privacy.php"}},[this._v("Privacy Policy")])]),a("div",{staticClass:"column is-narrow"},[a("a",{attrs:{href:"http://www.eclipse.org/legal/termsofuse.php"}},[this._v("Terms of Use")])]),a("div",{staticClass:"column is-narrow"},[a("a",{attrs:{href:"http://www.eclipse.org/legal/copyright.php"}},[this._v("Copyright Agent")])]),a("div",{staticClass:"column is-narrow"},[a("a",{attrs:{href:"https://eclipse.org/security/ "}},[this._v("Security reports")])]),a("div",{staticClass:"column is-narrow"},[a("a",{attrs:{href:"http://www.eclipse.org/legal/"}},[this._v("Legal")])])])])])}]};a.a=r},LRHT:function(e,a,t){"use strict";var n=t("5uNY"),r=t("iaMn"),i=!1;var o=function(e){i||t("k8UK")},s=t("VU/8")(n.a,r.a,!1,o,null,null);s.options.__file="components\\cookieCheck.vue",a.a=s.exports},Ma2J:function(e,a,t){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var n=t("qp5c"),r=t("STrE"),i=t("VU/8")(n.a,r.a,!1,null,null,null);i.options.__file="layouts\\default.vue",a.default=i.exports},STrE:function(e,a,t){"use strict";var n=function(){var e=this.$createElement,a=this._self._c||e;return a("div",[a("navbar",[a("nuxt-link",{staticClass:"navbar-item",attrs:{exact:"","active-class":"is-active",to:"/"}},[this._v("\n      Home\n    ")]),a("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/proposal"}},[this._v("\n      Proposal\n    ")]),a("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/specification"}},[this._v("\n      Specification \n    ")]),a("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/blog"}},[this._v("\n      Blog Archives\n    ")]),a("nuxt-link",{staticClass:"navbar-item",attrs:{"active-class":"is-active",to:"/faq"}},[this._v("\n      FAQ\n    ")])],1),a("div",{staticClass:"container"},[a("div",{staticClass:"header clearfix"}),a("nuxt")],1),a("eclipseFooter"),a("cookieCheck")],1)};n._withStripped=!0;var r={render:n,staticRenderFns:[]};a.a=r},XUyD:function(e,a,t){"use strict";var n=t("H/Gp"),r=!1;var i=function(e){r||t("0yYF")},o=t("VU/8")(null,n.a,!1,i,null,null);o.options.__file="components\\eclipseFooter.vue",a.a=o.exports},XktG:function(e,a,t){var n=t("5twn");"string"==typeof n&&(n=[[e.i,n,""]]),n.locals&&(e.exports=n.locals);t("rjj0")("23bf3a79",n,!1)},gXu9:function(e,a,t){(e.exports=t("YHym")(!1)).push([e.i,"@keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.cookieCheck{position:fixed;width:100%;bottom:0}.cookieCheck .column{background-color:#50237f;border:1px solid #78be20;color:#fff;box-shadow:5px 5px 10px 3px #808285}.cookieCheck .column .content{padding:.5rem;margin-bottom:0}.cookieCheck .column .buttons{padding-left:.5rem;margin-bottom:0}.cookieCheck.fade-enter-active,.cookieCheck.fade-leave-active{transition:opacity .5s}.cookieCheck.fade-enter,.cookieCheck.fade-leave-to{opacity:0}@media screen and (min-width:769px){.cookieCheck{bottom:2rem}.cookieCheck .column{border-radius:1rem}}@media print{.cookieCheck{display:none}}",""])},iaMn:function(e,a,t){"use strict";var n=function(){var e=this.$createElement,a=this._self._c||e;return a("transition",{attrs:{appear:"",name:"fade"}},[a("div",{directives:[{name:"show",rawName:"v-show",value:!this.accepted,expression:"!accepted"}],staticClass:"cookieCheck"},[a("div",{staticClass:"columns"},[a("div",{staticClass:"column is-one-third-desktop is-offset-one-third-desktop is-half-tablet is-offset-one-quarter-tablet"},[a("div",{staticClass:"content"},[this._t("default",[this._v("This website uses cookies for reasons of functionality, convenience, and statistics. For information on deleting the cookies, please consult your browser’s help function.")])],2),a("div",{staticClass:"buttons"},[a("div",{staticClass:"button is-success",on:{click:this.accept}},[this._v("Got it!")])])])])])])};n._withStripped=!0;var r={render:n,staticRenderFns:[]};a.a=r},k8UK:function(e,a,t){var n=t("gXu9");"string"==typeof n&&(n=[[e.i,n,""]]),n.locals&&(e.exports=n.locals);t("rjj0")("7731e93e",n,!1)},qp5c:function(e,a,t){"use strict";var n=t("LRHT"),r=t("XUyD"),i=t("yHEx");a.a={components:{cookieCheck:n.a,eclipseFooter:r.a,navbar:i.a}}},vTnq:function(e,a,t){(e.exports=t("YHym")(!1)).push([e.i,"@keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.footer{font-size:.875em;border-top:1px solid #dbdbdb;padding-top:1.25rem;margin-top:1rem;padding:2rem 0}",""])},vaaU:function(e,a,t){"use strict";(function(e){a.a={data:function(){return{brand:e.env.BRAND,isMenuActive:!1}},components:{}}}).call(a,t("W2nU"))},yHEx:function(e,a,t){"use strict";var n=t("vaaU"),r=t("6mrF"),i=!1;var o=function(e){i||t("XktG")},s=t("VU/8")(n.a,r.a,!1,o,null,null);s.options.__file="components\\navbar.vue",a.a=s.exports}});