PageSourceSearch

https://app.nempos.dk/js/121.03be8bde.js

js nempos.dk collected 2026-10-08 03:41:43 UTC 68,417 bytes, 2 lines download raw bytes

1"use strict";(self["webpackChunkwsypos_frontend"]=self["webpackChunkwsypos_frontend"]||[]).push([[121],{79061:function(t,e,s){s.d(e,{A:function(){return d}});var r=function(){var t=this,e=t._self._c;return e("div",{staticClass:"p-3 rounded-4 wrapper",class:[t.backgroundClass,{"wrapper--with-border":t.showBorder}]},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{cursor:"pointer"},on:{click:function(e){return t.$emit("update:expanded",!t.expanded)}}},[e("i",{staticClass:"bi fs-4 me-2",class:t.expanded?"bi-chevron-down":"bi-chevron-right"}),t._t("collapsedContent")],2),t.expanded?e("div",{staticClass:"mt-3"},[t._t("expandedContent")],2):t._e()])},o=[],i={name:"CollapsibleContent",props:{expanded:{type:Boolean,required:!1,default:!1},showBorder:{type:Boolean,required:!1,default:!0},backgroundClass:{type:String,required:!1,default:"bg-white"},backgroundClass:{type:String,required:!1,default:"bg-light"}},data(){return{}},computed:{},methods:{}},n=i,a=s(81656),u=(0,a.A)(n,r,o,!1,null,"78a7f127",null),d=u.exports},58221:function(t,e,s){s.d(e,{A:function(){return c}});var r=function(){var t=this,e=t._self._c;return e("div",[e("button",{staticClass:"form-select w-100 text-start",attrs:{type:"button",id:t.dropdownId,"data-bs-toggle":"dropdown","aria-expanded":"false"},on:{click:t.focusProductsFilter}},[t._v(" "+t._s(t.selectedProduct?t.selectedProduct.name:" ")+" ")]),e("ul",{staticClass:"dropdown-menu",attrs:{"aria-labelledby":t.dropdownId}},[e("li",{staticClass:"sticky-top"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.productsFilter,expression:"productsFilter"}],ref:"productsFilterInput",staticClass:"form-control",attrs:{id:"filter-by-product-name",type:"text",autocomplete:"off",placeholder:t.$t("admin.products.filter_by_product_name")},domProps:{value:t.productsFilter},on:{keydown:t.productsClick,input:function(e){e.target.composing||(t.productsFilter=e.target.value)}}})]),t._l(t.filteredProducts,(function(s,r){return e("li",{key:r,class:"dependent"===s.type?"bg-light":""},[e("a",{staticClass:"dropdown-item d-flex justify-content-between proposed",attrs:{href:"#"},on:{click:function(e){return t.$emit("product-selected",s)}}},[e("div",[t.showCategory?e("span",{staticClass:"text-muted small me-2"},[t._v(t._s(s.category?s.category.name:"N/A"))]):t._e(),e("span",[t._v(t._s(t.productNameLimited(s)))])]),e("div",{staticClass:"ms-3"},[e("span",{staticClass:"font-monospace me-1"},[t._v(t._s(t.$t("admin.products.types."+s.type+"_brief")))]),e("span",{staticClass:"fst-italic",class:s.price<0?"text-danger":"text-success "},[t._v(t._s(t.formatPrice(s.price)))])])])])}))],2)])},o=[],i=s(98956),n={name:"ProductSelectorDropdown",mixins:[i.A],props:{products:{type:Array,required:!0},productType:{type:String,default:"all"},selectedProduct:{required:!0},showCategory:{type:Boolean,default:!1}},data(){return{productsFilter:""}},computed:{dropdownId(){return"dropdown-products-button-"+this._uid},productsShown(){return"all"===this.productType?this.products:this.products.filter((t=>t.type===this.productType))},filteredProducts:function(){if(!this.productsFilter||!this.productsFilter.length)return this.productsShown;const t=this.productsFilter.toLowerCase();return this.productsShown.filter((e=>e.name.toLowerCase().includes(t)))}},watch:{},methods:{focusProductsFilter(){this.productsFilter="",this.$nextTick((()=>{const t=this.$refs.productsFilterInput;t&&t.focus()}))},productsClick(t){const e=document.getElementsByClassName("proposed"),s=e.length;if(0!==s){for(let t=0;t<e.length;t++)e[t].style.backgroundColor=this.unselectionColor;return"ArrowUp"===t.key?(console.log("up"),this.productsIndex--,-1===this.productsIndex&&(this.productsIndex=s-1),void(e[this.productsIndex].style.backgroundColor=this.selectionColor)):"ArrowDown"===t.key?(console.log("down"),this.productsIndex++,this.productsIndex===s&&(this.productsIndex=0),void(e[this.productsIndex].style.backgroundColor=this.selectionColor)):void("Enter"!==t.key?(this.productsIndex=0,e[0].style.backgroundColor=this.selectionColor):e[this.productsIndex].click())}},productNameLimited(t){return t.name.length<20?t.name:t.name.slice(0,20)+"..."}}},a=n,u=s(81656),d=(0,u.A)(a,r,o,!1,null,"99c5e9da",null),c=d.exports},97577:function(t,e,s){s.d(e,{A:function(){return l}});s(44114),s(9678);var r=function(){var t=this,e=t._self._c;return e("div",{staticClass:"row g-2"},[t.selectionSuggestions.length>0?e("div",[e("h5",{staticClass:"fst-normal small fw-bold"},[t._v(" "+t._s(t.$t("admin.statistics.products.product_suggestions.name"))+" ")]),e("div",{staticClass:"col-12 d-flex gap-1 flex-wrap"},t._l(t.selectionSuggestions.toReversed(),(function(s,r){return e("div",{key:s[0].uuid+r},[e("button",{staticClass:"btn btn-sm btn-outline-primary small",attrs:{type:"button",disabled:t.arraysContainSameElements(s.map((t=>t.uuid)),t.value.filter((t=>t)).map((t=>t.uuid)))},on:{click:function(e){return t.applySelection(s)}}},[t._v(" "+t._s(s.map((t=>t.name)).join(", "))+" ")])])})),0)]):t._e(),t._l(new Array(t.value.length),(function(s,r){return e("div",{staticClass:"col-xl-4 col-lg-6 d-flex"},[e("product-selector-dropdown",{staticClass:"flex-grow-1",attrs:{products:t.products,selectedProduct:t.value[r]},on:{"product-selected":e=>t.setProduct(e,r)}}),e("button",{staticClass:"btn btn-sm btn-danger ms-1",attrs:{type:"button",disabled:t.value.length<=1},on:{click:function(e){return t.value.splice(r,1)}}},[e("i",{staticClass:"bi bi-x-lg"})])],1)})),e("div",{staticClass:"col-xl-4 col-lg-6"},[e("button",{staticClass:"btn btn-primary w-100",attrs:{type:"button",disabled:t.value.length>=t.maxProducts},on:{click:function(e){return t.value.push(null)}}},[t._v(" "+t._s(t.$t("admin.statistics.products.add_another_product"))+" ")])])],2)},o=[],i=s(58221),n=s(50227),a={name:"SelectProducts",components:{ProductSelectorDropdown:i.A},props:{products:{type:Array,required:!0},value:{type:Array,required:!0},maxProducts:{type:Number,required:!1,default:8},selectionSuggestions:{type:Array,required:!1,default:()=>[]}},data(){return{}},methods:{setProduct(t,e){this.$set(this.value,e,t),this.$emit("some-change")},applySelection(t){this.$emit("input",t.slice()),this.$emit("some-change")},arraysContainSameElements(t,e){return(0,n.E)(t,e)}}},u=a,d=s(81656),c=(0,d.A)(u,r,o,!1,null,"148e956e",null),l=c.exports},50227:function(t,e,s){function r(t,e){if(t.length!==e.length)return!1;const s=[...t].sort(),r=[...e].sort();return s.every(((t,e)=>t===r[e]))}s.d(e,{E:function(){return r}})},11015:function(t,e,s){var r=s(40173);const{isNavigationFailure:o,NavigationFailureType:i}=r.Ay;e.A={methods:{getIncludeSharedValueForFormPage(){return this.$store.getters.companyIsSubcompany?1:0},updateQueryParamsIfChanged(t){JSON.stringify(this.$route.query)!==JSON.stringify(t)&&this.$router.replace({query:t}).catch((t=>{if(!o(t,i.cancelled)&&!o(t,i.duplicated))throw t}))}}}},95443:function(t,e,s){var r=s(49182),o=s(49793),i=s(98956),n=s(95179);e.A={components:{DatePeriodSelector:r.A,AdminSpinnerButton:o.A},mixins:[i.A],data(){return{interval:null,dates:{from:null,to:null},formExpanded:!0}},computed:{isPeriodDateRangeValid(){return(0,n.iS)(this.dates,(0,n.N)(this.$store.getters.company))}},methods:{setDates(t){this.dates=(0,n.T6)(t,(0,n.N)(this.$store.getters.company))},setInterval(t){this.interval=t},getQueryParamsPeriod(){const t={...this.$route.query};return this.dates.from?t.from=this.dates.from:delete t.from,this.dates.to?t.to=this.dates.to:delete t.to,console.log("getQueryParamsPeriod:",t),t},setPeriodInQueryParams(){const t=this.getQueryParamsPeriod();JSON.stringify(this.$route.query)!==JSON.stringify(t)&&this.$router.replace({query:t})},getQueryParamsInterval(t=!1){const e={...this.$route.query};return this.interval?e.interval=this.interval:delete e.interval,t?{interval:e.interval}:e},getPeriodText(){return this.dates.from&&this.dates.to?this.formatDate(this.dates.from)+" - "+this.formatDate(this.dates.to):this.dates.from?`${this.$t("general.from")} `+this.formatDate(this.dates.from):this.dates.to?`${this.$t("general.until")} `+this.formatDate(this.dates.to):this.$t("general.all_time")},getDataIfDatesSetAndConditionsMet(t,...e){const{from:s,to:r,date:o}=this.$route.query;this.setDates(o&&"hour"===this.$route.query.interval?{from:o,to:o,date:o}:{from:s,to:r}),this.dates.from&&this.dates.to&&this.isPeriodDateRangeValid&&e.every((t=>t))&&t()}}}},28239:function(t,e,s){s(44114);var r=s(11015),o=s(50227);e.A={components:{},mixins:[r.A],data(){return{products:[],selectedProducts:[null],storedSelections:[]}},computed:{anyProductsSelected:function(){return this.selectedProducts.filter((t=>t)).length>0}},methods:{async getProducts(){const t={include_shared:this.getIncludeSharedValueForFormPage(),simplified:1};return await axios.get("products",{params:t}).then((t=>{this.products=t.data.products.map((t=>({uuid:t.uuid,name:t.name,price:t.price,unit:t.unit,type:t.type,item_name:this.formatProductForDropdown(t)}))),this.selectProductsFromQueryParams(),this.buildStoredSelectionsData()})).catch((t=>{this.$store.commit("dangerNotify","Failed to fetch products: "+t.response.data.message??"")}))},getQueryParamsSelectedProducts(){const t={...this.$route.query},e=this.selectedProducts.filter((t=>t));return e.length>0?t.products=e.map((t=>t.uuid)).join(","):delete t.products,t},setProductsInQueryParams(){const t=this.getQueryParamsSeletedProducts();JSON.stringify(this.$route.query)!==JSON.stringify(t)&&this.$router.replace({query:t})}
1,selectProductsFromQueryParams(){if(this.$route.query.products){const t=this.$route.query.products.split(",");this.selectedProducts=this.products.filter((e=>t.includes(e.uuid)))}else this.selectedProducts=[null]},updateLocalStorageWithSelection(){const t=localStorage.getItem("selectedProductsStatisticSelections"),e=t?JSON.parse(t):[],s=this.selectedProducts.filter((t=>t)).map((t=>t.uuid)),r=e.findIndex((t=>(0,o.E)(t,s)));-1!==r&&e.splice(r,1)[0],e.push(s),e.length>5&&e.splice(0,e.length-5),localStorage.setItem("selectedProductsStatisticSelections",JSON.stringify(e))},buildStoredSelectionsData(){const t=localStorage.getItem("selectedProductsStatisticSelections"),e=t?JSON.parse(t):[];this.storedSelections=e.map((t=>{const e=this.products.filter((e=>t.includes(e.uuid)));return e.length===t.length?e:null})).filter((t=>t))},applyStoredSelection(t){this.selectedProducts=t.slice()}},mounted(){this.getProducts()}}},10213:function(t,e,s){var r=s(17206);e.A={data(){const t=(0,r.Qm)();return{outputType:t.outputType||"graph",outputSeparator:t.separator||"semicolon"}},computed:{submitButtonText(){return(0,r.bg)(this,this.outputType)}},methods:{getOutputSelection(){return{outputType:this.outputType,separator:this.outputSeparator}}}}}}]);
2//# sourceMappingURL=data:application/json;charset=utf-8;base64,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EvSyxTQUFVLENBQ05nTCxnQkFBQUEsR0FDSSxPQUFPQyxFQUFBQSxFQUFBQSxJQUE4QnhNLEtBQU1BLEtBQUtvTSxXQUNwRCxHQUdKNUssUUFBUyxDQUNMaUwsa0JBQUFBLEdBQ0ksTUFBTyxDQUNITCxXQUFZcE0sS0FBS29NLFdBQ2pCRSxVQUFXdE0sS0FBS3FNLGdCQUV4QixHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4vbWlub3IvQ29sbGFwc2libGVDb250ZW50LnZ1ZSIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvYWRtaW4vbWlub3IvQ29sbGFwc2libGVDb250ZW50LnZ1ZSIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9hZG1pbi9taW5vci9Db2xsYXBzaWJsZUNvbnRlbnQudnVlP2VlMzYiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4vbWlub3IvQ29sbGFwc2libGVDb250ZW50LnZ1ZT9hNTI2Iiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL21pbm9yL1Byb2R1Y3RTZWxlY3RvckRyb3Bkb3duLnZ1ZSIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvYWRtaW4vbWlub3IvUHJvZHVjdFNlbGVjdG9yRHJvcGRvd24udnVlIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL21pbm9yL1Byb2R1Y3RTZWxlY3RvckRyb3Bkb3duLnZ1ZT85YjA4Iiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL21pbm9yL1Byb2R1Y3RTZWxlY3RvckRyb3Bkb3duLnZ1ZT8wOTgwIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL3N0YXRpc3RpY3MvU2VsZWN0UHJvZHVjdHMudnVlIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC9zcmMvY29tcG9uZW50cy9hZG1pbi9zdGF0aXN0aWNzL1NlbGVjdFByb2R1Y3RzLnZ1ZSIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9hZG1pbi9zdGF0aXN0aWNzL1NlbGVjdFByb2R1Y3RzLnZ1ZT9jZWNhIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL3N0YXRpc3RpY3MvU2VsZWN0UHJvZHVjdHMudnVlPzY4MjgiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL2hlbHBlcnMvQXJyYXlIZWxwZXJzLmpzIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9taXhpbnMvQWRtaW5Gb3JtUGFnZUhlbHBlcnMuanMiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL21peGlucy9QZXJpb2RTdGF0aXN0aWMuanMiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL21peGlucy9TZWxlY3RlZFByb2R1Y3RzU3RhdGlzdGljLmpzIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9taXhpbnMvU3RhdGlzdGljc091dHB1dE1peGluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKXt2YXIgX3ZtPXRoaXMsX2M9X3ZtLl9zZWxmLl9jO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJwLTMgcm91bmRlZC00IHdyYXBwZXJcIixjbGFzczpbX3ZtLmJhY2tncm91bmRDbGFzcywgeyAnd3JhcHBlci0td2l0aC1ib3JkZXInOiBfdm0uc2hvd0JvcmRlciB9XX0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIixzdGF0aWNTdHlsZTp7XCJjdXJzb3JcIjpcInBvaW50ZXJcIn0sb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpe3JldHVybiBfdm0uJGVtaXQoJ3VwZGF0ZTpleHBhbmRlZCcsICFfdm0uZXhwYW5kZWQpfX19LFtfYygnaScse3N0YXRpY0NsYXNzOlwiYmkgZnMtNCBtZS0yXCIsY2xhc3M6X3ZtLmV4cGFuZGVkID8gJ2JpLWNoZXZyb24tZG93bicgOiAnYmktY2hldnJvbi1yaWdodCd9KSxfdm0uX3QoXCJjb2xsYXBzZWRDb250ZW50XCIpXSwyKSwoX3ZtLmV4cGFuZGVkKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJtdC0zXCJ9LFtfdm0uX3QoXCJleHBhbmRlZENvbnRlbnRcIildLDIpOl92bS5fZSgpXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJwLTMgcm91bmRlZC00IHdyYXBwZXJcIiA6Y2xhc3M9XCJbYmFja2dyb3VuZENsYXNzLCB7ICd3cmFwcGVyLS13aXRoLWJvcmRlcic6IHNob3dCb3JkZXIgfV1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiIEBjbGljaz1cIiRlbWl0KCd1cGRhdGU6ZXhwYW5kZWQnLCAhZX
2hwYW5kZWQpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImJpIGZzLTQgbWUtMlwiIDpjbGFzcz1cImV4cGFuZGVkID8gJ2JpLWNoZXZyb24tZG93bicgOiAnYmktY2hldnJvbi1yaWdodCdcIj48L2k+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwiY29sbGFwc2VkQ29udGVudFwiIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgdi1pZj1cImV4cGFuZGVkXCIgY2xhc3M9XCJtdC0zXCI+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwiZXhwYW5kZWRDb250ZW50XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG5hbWU6IFwiQ29sbGFwc2libGVDb250ZW50XCIsXG5cbiAgICBwcm9wczoge1xuICAgICAgICBleHBhbmRlZDogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgICAgIHNob3dCb3JkZXI6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgICAgIGJhY2tncm91bmRDbGFzczogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogXCJiZy13aGl0ZVwiIH0sXG5cbiAgICAgICAgYmFja2dyb3VuZENsYXNzOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiBcImJnLWxpZ2h0XCIgfSxcbiAgICB9LFxuXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8vXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgLy9cbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICAvL1xuICAgIH0sXG59XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPlxuLndyYXBwZXItLXdpdGgtYm9yZGVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1icy1ncmF5LTMwMCk7XG59XG48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC00MC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db2xsYXBzaWJsZUNvbnRlbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNDAudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3Z1ZS1sb2FkZXItdjE1L2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29sbGFwc2libGVDb250ZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9Db2xsYXBzaWJsZUNvbnRlbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc4YTdmMTI3JnNjb3BlZD10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ29sbGFwc2libGVDb250ZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Db2xsYXBzaWJsZUNvbnRlbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vQ29sbGFwc2libGVDb250ZW50LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTc4YTdmMTI3JnByb2QmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3Z1ZS1sb2FkZXItdjE1L2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjc4YTdmMTI3XCIsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpe3ZhciBfdm09dGhpcyxfYz1fdm0uX3NlbGYuX2M7cmV0dXJuIF9jKCdkaXYnLFtfYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJmb3JtLXNlbGVjdCB3LTEwMCB0ZXh0LXN0YXJ0XCIsYXR0cnM6e1widHlwZVwiOlwiYnV0dG9uXCIsXCJpZFwiOl92bS5kcm9wZG93bklkLFwiZGF0YS1icy10b2dnbGVcIjpcImRyb3Bkb3duXCIsXCJhcmlhLWV4cGFuZGVkXCI6XCJmYWxzZVwifSxvbjp7XCJjbGlja1wiOl92bS5mb2N1c1Byb2R1Y3RzRmlsdGVyfX0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLnNlbGVjdGVkUHJvZHVjdCA/IF92bS5zZWxlY3RlZFByb2R1Y3QubmFtZSA6IFwiwqBcIikrXCIgXCIpXSksX2MoJ3VsJyx7c3RhdGljQ2xhc3M6XCJkcm9wZG93bi1tZW51XCIsYXR0cnM6e1wiYXJpYS1sYWJlbGxlZGJ5XCI6X3ZtLmRyb3Bkb3duSWR9fSxbX2MoJ2xpJyx7c3RhdGljQ2xhc3M6XCJzdGlja3ktdG9wXCJ9LFtfYygnaW5wdXQnLHtkaXJlY3RpdmVzOlt7bmFtZTpcIm1vZGVsXCIscmF3TmFtZTpcInYtbW9kZWxcIix2YWx1ZTooX3ZtLnByb2R1Y3RzRmlsdGVyKSxleHByZXNzaW9uOlwicHJvZHVjdHNGaWx0ZXJcIn1dLHJlZjpcInByb2R1Y3RzRmlsdGVySW5wdXRcIixzdGF0aWNDbGFzczpcImZvcm0tY29udHJvbFwiLGF0dHJzOntcImlkXCI6XCJmaWx0ZXItYnktcHJvZHVjdC1uYW1lXCIsXCJ0eXBlXCI6XCJ0ZXh0XCIsXCJhdXRvY29tcGxldGVcIjpcIm9mZlwiLFwicGxhY2Vob2xkZXJcIjpfdm0uJHQoJ2FkbWluLnByb2R1Y3RzLmZpbHRlcl9ieV9wcm9kdWN0X25hbWUnKX0sZG9tUHJvcHM6e1widmFsdWVcIjooX3ZtLnByb2R1Y3RzRmlsdGVyKX0sb246e1wia2V5ZG93blwiOl92bS5wcm9kdWN0c0NsaWNrLFwiaW5wdXRcIjpmdW5jdGlvbigkZXZlbnQpe2lmKCRldmVudC50YXJnZXQuY29tcG9zaW5nKXJldHVybjtfdm0ucHJvZHVjdHNGaWx0ZXI9JGV2ZW50LnRhcmdldC52YWx1ZX19fSldKSxfdm0uX2woKF92bS5maWx0ZXJlZFByb2R1Y3RzKSxmdW5jdGlvbihwcm9kdWN0LGluZGV4KXtyZXR1cm4gX2MoJ2xpJyx7a2V5OmluZGV4LGNsYXNzOnByb2R1Y3QudHlwZSA9PT0gJ2RlcG
2VuZGVudCcgPyAnYmctbGlnaHQnIDogJyd9LFtfYygnYScse3N0YXRpY0NsYXNzOlwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcHJvcG9zZWRcIixhdHRyczp7XCJocmVmXCI6XCIjXCJ9LG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtyZXR1cm4gX3ZtLiRlbWl0KCdwcm9kdWN0LXNlbGVjdGVkJywgcHJvZHVjdCl9fX0sW19jKCdkaXYnLFsoX3ZtLnNob3dDYXRlZ29yeSk/X2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcInRleHQtbXV0ZWQgc21hbGwgbWUtMlwifSxbX3ZtLl92KF92bS5fcyhwcm9kdWN0LmNhdGVnb3J5ID8gcHJvZHVjdC5jYXRlZ29yeS5uYW1lIDogXCJOL0FcIikpXSk6X3ZtLl9lKCksX2MoJ3NwYW4nLFtfdm0uX3YoX3ZtLl9zKF92bS5wcm9kdWN0TmFtZUxpbWl0ZWQocHJvZHVjdCkpKV0pXSksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwibXMtM1wifSxbX2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcImZvbnQtbW9ub3NwYWNlIG1lLTFcIn0sW192bS5fdihfdm0uX3MoX3ZtLiR0KFwiYWRtaW4ucHJvZHVjdHMudHlwZXMuXCIgKyBwcm9kdWN0LnR5cGUgKyBcIl9icmllZlwiKSkpXSksX2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcImZzdC1pdGFsaWNcIixjbGFzczpwcm9kdWN0LnByaWNlIDwgMCA/ICd0ZXh0LWRhbmdlcicgOiAndGV4dC1zdWNjZXNzICd9LFtfdm0uX3YoX3ZtLl9zKF92bS5mb3JtYXRQcmljZShwcm9kdWN0LnByaWNlKSkpXSldKV0pXSl9KV0sMildKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCI8dGVtcGxhdGU+XG4gICAgPGRpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCB3LTEwMCB0ZXh0LXN0YXJ0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgOmlkPVwiZHJvcGRvd25JZFwiXG4gICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJmb2N1c1Byb2R1Y3RzRmlsdGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgc2VsZWN0ZWRQcm9kdWN0ID8gc2VsZWN0ZWRQcm9kdWN0Lm5hbWUgOiBcIiZuYnNwO1wiIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgOmFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duSWRcIj5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInN0aWNreS10b3BcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJmaWx0ZXItYnktcHJvZHVjdC1uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJwcm9kdWN0c0ZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgIDpwbGFjZWhvbGRlcj1cIiR0KCdhZG1pbi5wcm9kdWN0cy5maWx0ZXJfYnlfcHJvZHVjdF9uYW1lJylcIlxuICAgICAgICAgICAgICAgICAgICByZWY9XCJwcm9kdWN0c0ZpbHRlcklucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgQGtleWRvd249XCJwcm9kdWN0c0NsaWNrXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgdi1mb3I9XCIocHJvZHVjdCwgaW5kZXgpIGluIGZpbHRlcmVkUHJvZHVjdHNcIlxuICAgICAgICAgICAgICAgIDprZXk9XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwicHJvZHVjdC50eXBlID09PSAnZGVwZW5kZW50JyA/ICdiZy1saWdodCcgOiAnJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwcm9wb3NlZFwiXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiJGVtaXQoJ3Byb2R1Y3Qtc2VsZWN0ZWQnLCBwcm9kdWN0KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cInNob3dDYXRlZ29yeVwiIGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtZS0yXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0LmNhdGVnb3J5ID8gcHJvZHVjdC5jYXRlZ29yeS5uYW1lIDogXCJOL0FcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBwcm9kdWN0TmFtZUxpbWl0ZWQocHJvZHVjdCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LW1vbm9zcGFjZSBtZS0xXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdChcImFkbWluLnByb2R1Y3RzLnR5cGVzLlwiICsgcHJvZHVjdC50eXBlICsgXCJfYnJpZWZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmc3QtaXRhbGljXCIgOmNsYXNzPVwicHJvZHVjdC5wcmljZSA8IDAgPyAndGV4dC1kYW5nZXInIDogJ3RleHQtc3VjY2VzcyAnXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRQcmljZShwcm9kdWN0LnByaWNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGZvcm1hdHRlciBmcm9tIFwiQC9taXhpbnMvRm9ybWF0dGVyLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG5hbWU6IFwiUHJvZHVjdFNlbGVjdG9yRHJvcGRvd25cIixcblxuICAgIG1peGluczogW2Zvcm1hdHRlcl0sXG5cbiAgICBwcm9wczoge1xuICAgICAgICBwcm9kdWN0czoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcblxuICAgICAgICBwcm9kdWN0VHlwZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgZGVmYXVsdDogXCJhbGxcIixcbiAgICAgICAgfSxcblxuICAgICAgICBzZWxlY3RlZFByb2R1Y3Q6IHtcbiAgICAgICAgICAgI
2HJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuXG4gICAgICAgIHNob3dDYXRlZ29yeToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBkYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvZHVjdHNGaWx0ZXI6IFwiXCIsXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgZHJvcGRvd25JZCgpIHtcbiAgICAgICAgICAgIHJldHVybiBcImRyb3Bkb3duLXByb2R1Y3RzLWJ1dHRvbi1cIiArIHRoaXMuX3VpZFxuICAgICAgICB9LFxuXG4gICAgICAgIHByb2R1Y3RzU2hvd24oKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9kdWN0VHlwZSA9PT0gXCJhbGxcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2R1Y3RzXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2R1Y3RzLmZpbHRlcigocCkgPT4gcC50eXBlID09PSB0aGlzLnByb2R1Y3RUeXBlKVxuICAgICAgICB9LFxuXG4gICAgICAgIGZpbHRlcmVkUHJvZHVjdHM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5wcm9kdWN0c0ZpbHRlciB8fCAhdGhpcy5wcm9kdWN0c0ZpbHRlci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0c1Nob3duXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxvd2VyQ2FzZUZpbHRlciA9IHRoaXMucHJvZHVjdHNGaWx0ZXIudG9Mb3dlckNhc2UoKVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0c1Nob3duLmZpbHRlcigocCkgPT4gcC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJDYXNlRmlsdGVyKSlcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgd2F0Y2g6IHtcbiAgICAgICAgLy9cbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBmb2N1c1Byb2R1Y3RzRmlsdGVyKCkge1xuICAgICAgICAgICAgdGhpcy5wcm9kdWN0c0ZpbHRlciA9IFwiXCJcbiAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLiRyZWZzLnByb2R1Y3RzRmlsdGVySW5wdXRcblxuICAgICAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRFbGVtZW50LmZvY3VzKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuXG4gICAgICAgIHByb2R1Y3RzQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInByb3Bvc2VkXCIpXG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGVsZW1lbnRzLmxlbmd0aFxuXG4gICAgICAgICAgICBpZiAodG90YWwgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMudW5zZWxlY3Rpb25Db2xvclxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93VXBcIikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwidXBcIilcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzSW5kZXgtLVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvZHVjdHNJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0c0luZGV4ID0gdG90YWwgLSAxXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbdGhpcy5wcm9kdWN0c0luZGV4XS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLnNlbGVjdGlvbkNvbG9yXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dEb3duXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImRvd25cIilcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzSW5kZXgrK1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvZHVjdHNJbmRleCA9PT0gdG90YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0c0luZGV4ID0gMFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGVsZW1lbnRzW3RoaXMucHJvZHVjdHNJbmRleF0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5zZWxlY3Rpb25Db2xvclxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50c1t0aGlzLnByb2R1Y3RzSW5kZXhdLmNsaWNrKClcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wcm9kdWN0c0luZGV4ID0gMFxuICAgICAgICAgICAgZWxlbWVudHNbMF0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5zZWxlY3Rpb25Db2xvclxuICAgICAgICB9LFxuXG4gICAgICAgIHByb2R1Y3ROYW1lTGltaXRlZChwcm9kdWN0KSB7XG4gICAgICAgICAgICBpZiAocHJvZHVjdC5uYW1lLmxlbmd0aCA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb2R1Y3QubmFtZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcHJvZHVjdC5uYW1lLnNsaWNlKDAsIDIwKSArIFwiLi4uXCJcbiAgICAgICAgfSxcbiAgICB9LFxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD5cbi5kcm9wZG93bi1tZW51IHtcbiAgICBtYXgtaGVpZ2h0OiA1MHZoO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA4MDBweCkge1xuICAgIC5tYWlucm93IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIH1cbn1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1Byb2R1Y3RTZWxlY3RvckRyb3Bkb3duLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1Byb2R1Y3RTZWxlY3RvckRyb3Bkb3duLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9Qcm9kdWN0U2VsZWN0b3JEcm9wZG93bi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OTljNWU5ZGEmc2NvcGVkPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Qcm9kdWN0U2VsZWN0b3JEcm9wZG93bi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuZXhwb3J0ICogZnJvbSBcIi4vUHJvZHVjdFNlbGVjdG9yRHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vUHJvZHVjdFNlbGVjdG9yRHJvcGRvd24udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OTljNWU5ZGEmcHJvZCZsYW5nPXNjc3Mmc2NvcGVkPXRydWVcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpem
2VyIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiOTljNWU5ZGFcIixcbiAgbnVsbFxuICBcbilcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCl7dmFyIF92bT10aGlzLF9jPV92bS5fc2VsZi5fYztyZXR1cm4gX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwicm93IGctMlwifSxbKF92bS5zZWxlY3Rpb25TdWdnZXN0aW9ucy5sZW5ndGggPiAwKT9fYygnZGl2JyxbX2MoJ2g1Jyx7c3RhdGljQ2xhc3M6XCJmc3Qtbm9ybWFsIHNtYWxsIGZ3LWJvbGRcIn0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLiR0KFwiYWRtaW4uc3RhdGlzdGljcy5wcm9kdWN0cy5wcm9kdWN0X3N1Z2dlc3Rpb25zLm5hbWVcIikpK1wiIFwiKV0pLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbC0xMiBkLWZsZXggZ2FwLTEgZmxleC13cmFwXCJ9LF92bS5fbCgoX3ZtLnNlbGVjdGlvblN1Z2dlc3Rpb25zLnRvUmV2ZXJzZWQoKSksZnVuY3Rpb24oc3VnZ2VzdGlvbixpbmRleCl7cmV0dXJuIF9jKCdkaXYnLHtrZXk6c3VnZ2VzdGlvblswXS51dWlkICsgaW5kZXh9LFtfYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgc21hbGxcIixhdHRyczp7XCJ0eXBlXCI6XCJidXR0b25cIixcImRpc2FibGVkXCI6X3ZtLmFycmF5c0NvbnRhaW5TYW1lRWxlbWVudHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbi5tYXAoKHApID0+IHAudXVpZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnZhbHVlLmZpbHRlcigocCkgPT4gcCkubWFwKChwKSA9PiBwLnV1aWQpXG4gICAgICAgICAgICAgICAgICAgICAgICApfSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS5hcHBseVNlbGVjdGlvbihzdWdnZXN0aW9uKX19fSxbX3ZtLl92KFwiIFwiK192bS5fcyhzdWdnZXN0aW9uLm1hcCgocCkgPT4gcC5uYW1lKS5qb2luKFwiLCBcIikpK1wiIFwiKV0pXSl9KSwwKV0pOl92bS5fZSgpLF92bS5fbCgobmV3IEFycmF5KF92bS52YWx1ZS5sZW5ndGgpKSxmdW5jdGlvbihfLGluZGV4KXtyZXR1cm4gX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29sLXhsLTQgY29sLWxnLTYgZC1mbGV4XCJ9LFtfYygncHJvZHVjdC1zZWxlY3Rvci1kcm9wZG93bicse3N0YXRpY0NsYXNzOlwiZmxleC1ncm93LTFcIixhdHRyczp7XCJwcm9kdWN0c1wiOl92bS5wcm9kdWN0cyxcInNlbGVjdGVkUHJvZHVjdFwiOl92bS52YWx1ZVtpbmRleF19LG9uOntcInByb2R1Y3Qtc2VsZWN0ZWRcIjoocHJvZHVjdCkgPT4gX3ZtLnNldFByb2R1Y3QocHJvZHVjdCwgaW5kZXgpfX0pLF9jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcImJ0biBidG4tc20gYnRuLWRhbmdlciBtcy0xXCIsYXR0cnM6e1widHlwZVwiOlwiYnV0dG9uXCIsXCJkaXNhYmxlZFwiOl92bS52YWx1ZS5sZW5ndGggPD0gMX0sb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpe3JldHVybiBfdm0udmFsdWUuc3BsaWNlKGluZGV4LCAxKX19fSxbX2MoJ2knLHtzdGF0aWNDbGFzczpcImJpIGJpLXgtbGdcIn0pXSldLDEpfSksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29sLXhsLTQgY29sLWxnLTZcIn0sW19jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcImJ0biBidG4tcHJpbWFyeSB3LTEwMFwiLGF0dHJzOntcInR5cGVcIjpcImJ1dHRvblwiLFwiZGlzYWJsZWRcIjpfdm0udmFsdWUubGVuZ3RoID49IF92bS5tYXhQcm9kdWN0c30sb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpe3JldHVybiBfdm0udmFsdWUucHVzaChudWxsKX19fSxbX3ZtLl92KFwiIFwiK192bS5fcyhfdm0uJHQoXCJhZG1pbi5zdGF0aXN0aWNzLnByb2R1Y3RzLmFkZF9hbm90aGVyX3Byb2R1Y3RcIikpK1wiIFwiKV0pXSldLDIpXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGctMlwiPlxuICAgICAgICA8ZGl2IHYtaWY9XCJzZWxlY3Rpb25TdWdnZXN0aW9ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJmc3Qtbm9ybWFsIHNtYWxsIGZ3LWJvbGRcIj5cbiAgICAgICAgICAgICAgICB7eyAkdChcImFkbWluLnN0YXRpc3RpY3MucHJvZHVjdHMucHJvZHVjdF9zdWdnZXN0aW9ucy5uYW1lXCIpIH19XG4gICAgICAgICAgICA8L2g1PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBnYXAtMSBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtZm9yPVwiKHN1Z2dlc3Rpb24sIGluZGV4KSBpbiBzZWxlY3Rpb25TdWdnZXN0aW9ucy50b1JldmVyc2VkKClcIiA6a2V5PVwic3VnZ2VzdGlvblswXS51dWlkICsgaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBzbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheXNDb250YWluU2FtZUVsZW1lbnRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9uLm1hcCgocCkgPT4gcC51dWlkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuZmlsdGVyKChwKSA9PiBwKS5tYXAoKHApID0+IHAudXVpZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiYXBwbHlTZWxlY3Rpb24oc3VnZ2VzdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzdWdnZXN0aW9uLm1hcCgocCkgPT4gcC5uYW1lKS5qb2luKFwiLCBcIikgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiB2LWZvcj1cIihfLCBpbmRleCkgaW4gbmV3IEFycmF5KHZhbHVlLmxlbmd0aClc
2IiBjbGFzcz1cImNvbC14bC00IGNvbC1sZy02IGQtZmxleFwiPlxuICAgICAgICAgICAgPHByb2R1Y3Qtc2VsZWN0b3ItZHJvcGRvd25cbiAgICAgICAgICAgICAgICA6cHJvZHVjdHM9XCJwcm9kdWN0c1wiXG4gICAgICAgICAgICAgICAgQHByb2R1Y3Qtc2VsZWN0ZWQ9XCIocHJvZHVjdCkgPT4gc2V0UHJvZHVjdChwcm9kdWN0LCBpbmRleClcIlxuICAgICAgICAgICAgICAgIDpzZWxlY3RlZFByb2R1Y3Q9XCJ2YWx1ZVtpbmRleF1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC1ncm93LTFcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGFuZ2VyIG1zLTFcIlxuICAgICAgICAgICAgICAgIEBjbGljaz1cInZhbHVlLnNwbGljZShpbmRleCwgMSlcIlxuICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cInZhbHVlLmxlbmd0aCA8PSAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXgtbGdcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC00IGNvbC1sZy02XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIlxuICAgICAgICAgICAgICAgIEBjbGljaz1cInZhbHVlLnB1c2gobnVsbClcIlxuICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cInZhbHVlLmxlbmd0aCA+PSBtYXhQcm9kdWN0c1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgJHQoXCJhZG1pbi5zdGF0aXN0aWNzLnByb2R1Y3RzLmFkZF9hbm90aGVyX3Byb2R1Y3RcIikgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgUHJvZHVjdFNlbGVjdG9yRHJvcGRvd24gZnJvbSBcIkAvY29tcG9uZW50cy9hZG1pbi9taW5vci9Qcm9kdWN0U2VsZWN0b3JEcm9wZG93bi52dWVcIlxuaW1wb3J0IHsgYXJyYXlzQ29udGFpblNhbWVFbGVtZW50cyB9IGZyb20gXCJAL2hlbHBlcnMvQXJyYXlIZWxwZXJzXCJcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG5hbWU6IFwiU2VsZWN0UHJvZHVjdHNcIixcblxuICAgIGNvbXBvbmVudHM6IHsgUHJvZHVjdFNlbGVjdG9yRHJvcGRvd24gfSxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIHByb2R1Y3RzOiB7IHR5cGU6IEFycmF5LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbWF4UHJvZHVjdHM6IHsgdHlwZTogTnVtYmVyLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IDggfSxcbiAgICAgICAgc2VsZWN0aW9uU3VnZ2VzdGlvbnM6IHsgdHlwZTogQXJyYXksIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogKCkgPT4gW10gfSxcbiAgICB9LFxuXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8vXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBzZXRQcm9kdWN0KHByb2R1Y3QsIGluZGV4KSB7XG4gICAgICAgICAgICB0aGlzLiRzZXQodGhpcy52YWx1ZSwgaW5kZXgsIHByb2R1Y3QpXG5cbiAgICAgICAgICAgIC8vdGhpcy4kZW1pdChcImlucHV0XCIsIHRoaXMudmFsdWUpXG4gICAgICAgICAgICB0aGlzLiRlbWl0KFwic29tZS1jaGFuZ2VcIilcbiAgICAgICAgfSxcblxuICAgICAgICBhcHBseVNlbGVjdGlvbihzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoXCJpbnB1dFwiLCBzZWxlY3Rpb24uc2xpY2UoKSlcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoXCJzb21lLWNoYW5nZVwiKVxuICAgICAgICB9LFxuXG4gICAgICAgIGFycmF5c0NvbnRhaW5TYW1lRWxlbWVudHMoYXJyMSwgYXJyMikge1xuICAgICAgICAgICAgcmV0dXJuIGFycmF5c0NvbnRhaW5TYW1lRWxlbWVudHMoYXJyMSwgYXJyMilcbiAgICAgICAgfSxcbiAgICB9LFxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC00MC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9TZWxlY3RQcm9kdWN0cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC00MC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9TZWxlY3RQcm9kdWN0cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vU2VsZWN0UHJvZHVjdHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE0OGU5NTZlJnNjb3BlZD10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vU2VsZWN0UHJvZHVjdHMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1NlbGVjdFByb2R1Y3RzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpem
2VyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCIxNDhlOTU2ZVwiLFxuICBudWxsXG4gIFxuKVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImV4cG9ydCBmdW5jdGlvbiBhcnJheXNDb250YWluU2FtZUVsZW1lbnRzKGFycjEsIGFycjIpIHtcbiAgICBpZiAoYXJyMS5sZW5ndGggIT09IGFycjIubGVuZ3RoKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IHNvcnRlZEFycjEgPSBbLi4uYXJyMV0uc29ydCgpXG4gICAgY29uc3Qgc29ydGVkQXJyMiA9IFsuLi5hcnIyXS5zb3J0KClcblxuICAgIHJldHVybiBzb3J0ZWRBcnIxLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHZhbHVlID09PSBzb3J0ZWRBcnIyW2luZGV4XSlcbn1cbiIsImltcG9ydCBWdWVSb3V0ZXIgZnJvbSBcInZ1ZS1yb3V0ZXJcIlxuXG5jb25zdCB7IGlzTmF2aWdhdGlvbkZhaWx1cmUsIE5hdmlnYXRpb25GYWlsdXJlVHlwZSB9ID0gVnVlUm91dGVyXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIC8vIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHNldCB0aGUgaW5jbHVkZSBzaGFyZWQgdmFsdWUgYXQgZm9ybSBwYWdlcyAoXCJFZGl0Q3JlYXRlLi4uXCIsIGV0Yy4pXG4gICAgICAgIGdldEluY2x1ZGVTaGFyZWRWYWx1ZUZvckZvcm1QYWdlKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuJHN0b3JlLmdldHRlcnMuY29tcGFueUlzU3ViY29tcGFueSkge1xuICAgICAgICAgICAgICAgIC8vIFN1YmNvbXBhbmllcyBzaG91bGQgYmUgYWJsZSB0byB1c2UgdGhlaXIgcGFyZW50J3MgcmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgcmV0dXJuIDFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGVRdWVyeVBhcmFtc0lmQ2hhbmdlZChuZXdRdWVyeSkge1xuICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHRoaXMuJHJvdXRlLnF1ZXJ5KSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3UXVlcnkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLnJlcGxhY2UoeyBxdWVyeTogbmV3UXVlcnkgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEEgbmV3ZXIgcXVlcnkgdXBkYXRlIHN1cGVyc2VkaW5nIHRoaXMgb25lIGlzIGV4cGVjdGVkLCBub3QgYW4gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgIWlzTmF2aWdhdGlvbkZhaWx1cmU
2oZXJyb3IsIE5hdmlnYXRpb25GYWlsdXJlVHlwZS5jYW5jZWxsZWQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhaXNOYXZpZ2F0aW9uRmFpbHVyZShlcnJvciwgTmF2aWdhdGlvbkZhaWx1cmVUeXBlLmR1cGxpY2F0ZWQpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcbn1cbiIsImltcG9ydCBEYXRlUGVyaW9kU2VsZWN0b3IgZnJvbSBcIkAvY29tcG9uZW50cy9hZG1pbi9zdGF0aXN0aWNzL0RhdGVQZXJpb2RTZWxlY3Rvci52dWVcIlxuaW1wb3J0IEFkbWluU3Bpbm5lckJ1dHRvbiBmcm9tIFwiQC9jb21wb25lbnRzL2FkbWluL0FkbWluU3Bpbm5lckJ1dHRvbi52dWVcIlxuaW1wb3J0IGZvcm1hdHRlciBmcm9tIFwiQC9taXhpbnMvRm9ybWF0dGVyLmpzXCJcbmltcG9ydCB7XG4gICAgZ2V0U3RhdGlzdGljTWluaW11bURhdGUsXG4gICAgbm9ybWFsaXplU3RhdGlzdGljRGF0ZXMsXG4gICAgaXNTdGF0aXN0aWNEYXRlUmFuZ2VWYWxpZCxcbn0gZnJvbSBcIkAvaGVscGVycy9TdGF0aXN0aWNzRGF0ZUhlbHBlcnMuanNcIlxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgY29tcG9uZW50czogeyBEYXRlUGVyaW9kU2VsZWN0b3IsIEFkbWluU3Bpbm5lckJ1dHRvbiB9LFxuICAgIG1peGluczogW2Zvcm1hdHRlcl0sXG5cbiAgICBkYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW50ZXJ2YWw6IG51bGwsXG4gICAgICAgICAgICBkYXRlczogeyBmcm9tOiBudWxsLCB0bzogbnVsbCB9LFxuXG4gICAgICAgICAgICBmb3JtRXhwYW5kZWQ6IHRydWUsXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgaXNQZXJpb2REYXRlUmFuZ2VWYWxpZCgpIHtcbiAgICAgICAgICAgIHJldHVybiBpc1N0YXRpc3RpY0RhdGVSYW5nZVZhbGlkKHRoaXMuZGF0ZXMsIGdldFN0YXRpc3RpY01pbmltdW1EYXRlKHRoaXMuJHN0b3JlLmdldHRlcnMuY29tcGFueSkpXG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgc2V0RGF0ZXMoZGF0ZXMpIHtcbiAgICAgICAgICAgIC8vIERpcmVjdGx5IGFzc2lnbiBkYXRlIHN0cmluZ3MgKFlZWVktTU0tREQpXG4gICAgICAgICAgICB0aGlzLmRhdGVzID0gbm9ybWFsaXplU3RhdGlzdGljRGF0ZXMoZGF0ZXMsIGdldFN0YXRpc3RpY01pbmltdW1EYXRlKHRoaXMuJHN0b3JlLmdldHRlcnMuY29tcGFueSkpXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2V0SW50ZXJ2YWwoaW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBpbnRlcnZhbFxuICAgICAgICB9LFxuXG4gICAgICAgIGdldFF1ZXJ5UGFyYW1zUGVyaW9kKCkge1xuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB7IC4uLnRoaXMuJHJvdXRlLnF1ZXJ5IH1cbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGVzLmZyb20pIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwic2V0IGZyb20gaW4gcXVlcnk6XCIsIHRoaXMuZGF0ZXMuZnJvbSlcbiAgICAgICAgICAgICAgICBxdWVyeS5mcm9tID0gdGhpcy5kYXRlcy5mcm9tXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBxdWVyeS5mcm9tXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlcy50bykge1xuICAgICAgICAgICAgICAgIHF1ZXJ5LnRvID0gdGhpcy5kYXRlcy50b1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcXVlcnkudG9cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJnZXRRdWVyeVBhcmFtc1BlcmlvZDpcIiwgcXVlcnkpXG4gICAgICAgICAgICByZXR1cm4gcXVlcnlcbiAgICAgICAgfSxcblxuICAgICAgICBzZXRQZXJpb2RJblF1ZXJ5UGFyYW1zKCkge1xuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zUGVyaW9kKClcblxuICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHRoaXMuJHJvdXRlLnF1ZXJ5KSAhPT0gSlNPTi5zdHJpbmdpZnkocXVlcnkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLnJlcGxhY2UoeyBxdWVyeSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGdldFF1ZXJ5UGFyYW1zSW50ZXJ2YWwob25seUludGVydmFsID0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0geyAuLi50aGlzLiRyb3V0ZS5xdWVyeSB9XG4gICAgICAgICAgICBpZiAodGhpcy5pbnRlcnZhbCkge1xuICAgICAgICAgICAgICAgIHF1ZXJ5LmludGVydmFsID0gdGhpcy5pbnRlcnZhbFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcXVlcnkuaW50ZXJ2YWxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9ubHlJbnRlcnZhbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGludGVydmFsOiBxdWVyeS5pbnRlcnZhbCB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBxdWVyeVxuICAgICAgICB9LFxuXG4gICAgICAgIGdldFBlcmlvZFRleHQoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlcy5mcm9tICYmIHRoaXMuZGF0ZXMudG8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXREYXRlKHRoaXMuZGF0ZXMuZnJvbSkgKyBcIiAtIFwiICsgdGhpcy5mb3JtYXREYXRlKHRoaXMuZGF0ZXMudG8pXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0ZXMuZnJvbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLiR0KFwiZ2VuZXJhbC5mcm9tXCIpfSBgICsgdGhpcy5mb3JtYXREYXRlKHRoaXMuZGF0ZXMuZnJvbSlcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlcy50bykge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLiR0KFwiZ2VuZXJhbC51bnRpbFwiKX0gYCArIHRoaXMuZm9ybWF0RGF0ZSh0aGlzLmRhdGVzLnRvKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcImdlbmVyYWwuYWxsX3RpbWVcIilcbiAgICAgICAgICAgI
2H1cbiAgICAgICAgfSxcblxuICAgICAgICBnZXREYXRhSWZEYXRlc1NldEFuZENvbmRpdGlvbnNNZXQoZ2V0RGF0YUNhbGxiYWNrLCAuLi5hZGRpdGlvbmFsQ29uZGl0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgeyBmcm9tLCB0bywgZGF0ZSB9ID0gdGhpcy4kcm91dGUucXVlcnlcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZXMoZGF0ZSAmJiB0aGlzLiRyb3V0ZS5xdWVyeS5pbnRlcnZhbCA9PT0gXCJob3VyXCIgPyB7IGZyb206IGRhdGUsIHRvOiBkYXRlLCBkYXRlIH0gOiB7IGZyb20sIHRvIH0pXG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVzLmZyb20gJiZcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVzLnRvICYmXG4gICAgICAgICAgICAgICAgdGhpcy5pc1BlcmlvZERhdGVSYW5nZVZhbGlkICYmXG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbENvbmRpdGlvbnMuZXZlcnkoKGNvbmQpID0+IGNvbmQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBnZXREYXRhQ2FsbGJhY2soKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyAuLi5leGlzdGluZyBjb2RlLi4uXG4gICAgLy8gUmVtb3ZlIGluY29tcGxldGUgbW91bnRlZCBob29rIGFuZCBjbG9zZSBleHBvcnQgZGVmYXVsdFxufVxuIiwiaW1wb3J0IEFkbWluRm9ybVBhZ2VIZWxwZXJzIGZyb20gXCJAL21peGlucy9BZG1pbkZvcm1QYWdlSGVscGVyc1wiXG5pbXBvcnQgeyBhcnJheXNDb250YWluU2FtZUVsZW1lbnRzIH0gZnJvbSBcIkAvaGVscGVycy9BcnJheUhlbHBlcnNcIlxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgY29tcG9uZW50czoge30sXG4gICAgbWl4aW5zOiBbQWRtaW5Gb3JtUGFnZUhlbHBlcnNdLFxuXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb2R1Y3RzOiBbXSxcbiAgICAgICAgICAgIHNlbGVjdGVkUHJvZHVjdHM6IFtudWxsXSxcbiAgICAgICAgICAgIHN0b3JlZFNlbGVjdGlvbnM6IFtdLFxuICAgICAgICB9XG4gICAgfSxcblxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIGFueVByb2R1Y3RzU2VsZWN0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkUHJvZHVjdHMuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUpLmxlbmd0aCA+IDBcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBhc3luYyBnZXRQcm9kdWN0cygpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBpbmNsdWRlX3NoYXJlZDogdGhpcy5nZXRJbmNsdWRlU2hhcmVkVmFsdWVGb3JGb3JtUGFnZSgpLFxuICAgICAgICAgICAgICAgIHNpbXBsaWZpZWQ6IDEsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBheGlvc1xuICAgICAgICAgICAgICAgIC5nZXQoXCJwcm9kdWN0c1wiLCB7IHBhcmFtcyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzID0gcmVzcG9uc2UuZGF0YS5wcm9kdWN0c1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8uZmlsdGVyKChwKSA9PiBwLnByaWNlICE9PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8uc29ydCh0aGlzLmRlcGVuZGVudEZpcnN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgocCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dWlkOiBwLnV1aWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBwLnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQ6IHAudW5pdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBwLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9uYW1lOiB0aGlzLmZvcm1hdFByb2R1Y3RGb3JEcm9wZG93bihwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJvZHVjdHNGcm9tUXVlcnlQYXJhbXMoKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkU3RvcmVkU2VsZWN0aW9uc0RhdGEoKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJkYW5nZXJOb3RpZnlcIiwgXCJGYWlsZWQgdG8gZmV0Y2ggcHJvZHVjdHM6IFwiICsgZXJyb3IucmVzcG9uc2UuZGF0YS5tZXNzYWdlID8/IFwiXCIpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRRdWVyeVBhcmFtc1NlbGVjdGVkUHJvZHVjdHMoKSB7XG4gICAgICAgICAgICBjb25zdCBxdWVyeSA9IHsgLi4udGhpcy4kcm91dGUucXVlcnkgfVxuXG4gICAgICAgICAgICBjb25zdCBhY3R1YWxseVNlbGVjdGVkUHJvZHVjdHMgPSB0aGlzLnNlbGVjdGVkUHJvZHVjdHMuZmlsdGVyKChwKSA9PiBwKVxuICAgICAgICAgICAgaWYgKGFjdHVhbGx5U2VsZWN0ZWRQcm9kdWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcXVlcnkucHJvZHVjdHMgPSBhY3R1YWxseVNlbGVjdGVkUHJvZHVjdHMubWFwKChwKSA9PiBwLnV1aWQpLmpvaW4oXCIsXCIpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBxdWVyeS5wcm9kdWN0c1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcXVlcnlcbiAgICAgICAgfSxcblxuICAgICAgICBzZXRQcm9kdWN0c0luUXVlcnlQYXJhbXMoKSB7XG4gICAgICAgICAgICBjb25zdCBxdWVyeSA9IHRoaXMuZ2V0UXVlcnlQYXJhbXNTZWxldGVkUHJvZHVjdHMoKVxuXG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy4kcm91dGUucXVlcnkpICE9PSBKU09OLnN0cmluZ2lmeShxdWVyeSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucmVwbGFjZSh7IHF1ZXJ5IH0pXG4gICAgICAgICAgICB9XG4gICAgICAgI
2H0sXG5cbiAgICAgICAgc2VsZWN0UHJvZHVjdHNGcm9tUXVlcnlQYXJhbXMoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy4kcm91dGUucXVlcnkucHJvZHVjdHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9kdWN0VXVpZHMgPSB0aGlzLiRyb3V0ZS5xdWVyeS5wcm9kdWN0cy5zcGxpdChcIixcIilcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZHVjdHMgPSB0aGlzLnByb2R1Y3RzLmZpbHRlcigocCkgPT4gcHJvZHVjdFV1aWRzLmluY2x1ZGVzKHAudXVpZCkpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9kdWN0cyA9IFtudWxsXVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZUxvY2FsU3RvcmFnZVdpdGhTZWxlY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZWRTZWxlY3Rpb25zRGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic2VsZWN0ZWRQcm9kdWN0c1N0YXRpc3RpY1NlbGVjdGlvbnNcIilcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBzdG9yZWRTZWxlY3Rpb25zRGF0YSA/IEpTT04ucGFyc2Uoc3RvcmVkU2VsZWN0aW9uc0RhdGEpIDogW11cblxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGlvblV1aWRzID0gdGhpcy5zZWxlY3RlZFByb2R1Y3RzLmZpbHRlcigocCkgPT4gcCkubWFwKChwKSA9PiBwLnV1aWQpXG5cbiAgICAgICAgICAgIGNvbnN0IGR1cGxpY2F0ZUluZGV4ID0gc2VsZWN0aW9ucy5maW5kSW5kZXgoKHMpID0+IGFycmF5c0NvbnRhaW5TYW1lRWxlbWVudHMocywgY3VycmVudFNlbGVjdGlvblV1aWRzKSlcblxuICAgICAgICAgICAgaWYgKGR1cGxpY2F0ZUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgc3RvcmVkIHRoaXMgc2VsZWN0aW9uIChwb3NzaWJseSB3aXRoIGRpZmZlcmVudCBvcmRlciksIHNvIHdlIG1vdmUgaXQgdG8gdGhlIGZyb250XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9ucy5zcGxpY2UoZHVwbGljYXRlSW5kZXgsIDEpWzBdXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNlbGVjdGlvbnMucHVzaChjdXJyZW50U2VsZWN0aW9uVXVpZHMpXG5cbiAgICAgICAgICAgIGlmIChzZWxlY3Rpb25zLmxlbmd0aCA+IDUpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25zLnNwbGljZSgwLCBzZWxlY3Rpb25zLmxlbmd0aCAtIDUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwic2VsZWN0ZWRQcm9kdWN0c1N0YXRpc3RpY1NlbGVjdGlvbnNcIiwgSlNPTi5zdHJpbmdpZnkoc2VsZWN0aW9ucykpXG4gICAgICAgIH0sXG5cbiAgICAgICAgYnVpbGRTdG9yZWRTZWxlY3Rpb25zRGF0YSgpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlZFNlbGVjdGlvbnNEYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJzZWxlY3RlZFByb2R1Y3RzU3RhdGlzdGljU2VsZWN0aW9uc1wiKVxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9ucyA9IHN0b3JlZFNlbGVjdGlvbnNEYXRhID8gSlNPTi5wYXJzZShzdG9yZWRTZWxlY3Rpb25zRGF0YSkgOiBbXVxuXG4gICAgICAgICAgICB0aGlzLnN0b3JlZFNlbGVjdGlvbnMgPSBzZWxlY3Rpb25zXG4gICAgICAgICAgICAgICAgLm1hcCgoc2VsZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3RzSW5TZWxlY3Rpb24gPSB0aGlzLnByb2R1Y3RzLmZpbHRlcigocCkgPT4gc2VsZWN0aW9uLmluY2x1ZGVzKHAudXVpZCkpXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0c0luU2VsZWN0aW9uLmxlbmd0aCA9PT0gc2VsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2R1Y3RzSW5TZWxlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHMpID0+IHMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgYXBwbHlTdG9yZWRTZWxlY3Rpb24oc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZHVjdHMgPSBzZWxlY3Rpb24uc2xpY2UoKVxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBtb3VudGVkKCkge1xuICAgICAgICB0aGlzLmdldFByb2R1Y3RzKClcbiAgICB9LFxuXG4gICAgLy8gLi4uZXhpc3RpbmcgY29kZS4uLlxuICAgIC8vIFJlbW92ZSBpbmNvbXBsZXRlIG1vdW50ZWQgaG9vayBhbmQgY2xvc2UgZXhwb3J0IGRlZmF1bHRcbn1cbiIsImltcG9ydCB7XG4gICAgZ2V0U2F2ZWRTdGF0aXN0aWNzT3V0cHV0UHJlZmVyZW5jZXMsXG4gICAgZ2V0U3RhdGlzdGljc1N1Ym1pdEJ1dHRvblRleHQsXG59IGZyb20gXCJAL2hlbHBlcnMvU3RhdGlzdGljc091dHB1dEhlbHBlcnMuanNcIlxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgZGF0YSgpIHtcbiAgICAgICAgY29uc3Qgc2F2ZWRQcmVmZXJlbmNlcyA9IGdldFNhdmVkU3RhdGlzdGljc091dHB1dFByZWZlcmVuY2VzKClcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgb3V0cHV0VHlwZTogc2F2ZWRQcmVmZXJlbmNlcy5vdXRwdXRUeXBlIHx8IFwiZ3JhcGhcIixcbiAgICAgICAgICAgIG91dHB1dFNlcGFyYXRvcjogc2F2ZWRQcmVmZXJlbmNlcy5zZXBhcmF0b3IgfHwgXCJzZW1pY29sb25cIixcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBzdWJtaXRCdXR0b25UZXh0KCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldFN0YXRpc3RpY3NTdWJtaXRCdXR0b25UZXh0KHRoaXMsIHR
2oaXMub3V0cHV0VHlwZSlcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBnZXRPdXRwdXRTZWxlY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG91dHB1dFR5cGU6IHRoaXMub3V0cHV0VHlwZSxcbiAgICAgICAgICAgICAgICBzZXBhcmF0b3I6IHRoaXMub3V0cHV0U2VwYXJhdG9yLFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0sXG59XG4iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwidGhpcyIsIl9jIiwiX3NlbGYiLCJzdGF0aWNDbGFzcyIsImNsYXNzIiwiYmFja2dyb3VuZENsYXNzIiwic2hvd0JvcmRlciIsInN0YXRpY1N0eWxlIiwib24iLCIkZXZlbnQiLCIkZW1pdCIsImV4cGFuZGVkIiwiX3QiLCJfZSIsInN0YXRpY1JlbmRlckZucyIsIm5hbWUiLCJwcm9wcyIsInR5cGUiLCJCb29sZWFuIiwicmVxdWlyZWQiLCJkZWZhdWx0IiwiU3RyaW5nIiwiZGF0YSIsImNvbXB1dGVkIiwibWV0aG9kcyIsImNvbXBvbmVudCIsImF0dHJzIiwiZHJvcGRvd25JZCIsImZvY3VzUHJvZHVjdHNGaWx0ZXIiLCJfdiIsIl9zIiwic2VsZWN0ZWRQcm9kdWN0IiwiZGlyZWN0aXZlcyIsInJhd05hbWUiLCJ2YWx1ZSIsInByb2R1Y3RzRmlsdGVyIiwiZXhwcmVzc2lvbiIsInJlZiIsIiR0IiwiZG9tUHJvcHMiLCJwcm9kdWN0c0NsaWNrIiwidGFyZ2V0IiwiY29tcG9zaW5nIiwiX2wiLCJmaWx0ZXJlZFByb2R1Y3RzIiwicHJvZHVjdCIsImluZGV4Iiwia2V5Iiwic2hvd0NhdGVnb3J5IiwiY2F0ZWdvcnkiLCJwcm9kdWN0TmFtZUxpbWl0ZWQiLCJwcmljZSIsImZvcm1hdFByaWNlIiwibWl4aW5zIiwiZm9ybWF0dGVyIiwicHJvZHVjdHMiLCJBcnJheSIsInByb2R1Y3RUeXBlIiwiX3VpZCIsInByb2R1Y3RzU2hvd24iLCJmaWx0ZXIiLCJwIiwibGVuZ3RoIiwibG93ZXJDYXNlRmlsdGVyIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsIndhdGNoIiwiJG5leHRUaWNrIiwiaW5wdXRFbGVtZW50IiwiJHJlZnMiLCJwcm9kdWN0c0ZpbHRlcklucHV0IiwiZm9jdXMiLCJldmVudCIsImVsZW1lbnRzIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwidG90YWwiLCJpIiwic3R5bGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ1bnNlbGVjdGlvbkNvbG9yIiwiY29uc29sZSIsImxvZyIsInByb2R1Y3RzSW5kZXgiLCJzZWxlY3Rpb25Db2xvciIsImNsaWNrIiwic2xpY2UiLCJzZWxlY3Rpb25TdWdnZXN0aW9ucyIsInRvUmV2ZXJzZWQiLCJzdWdnZXN0aW9uIiwidXVpZCIsImFycmF5c0NvbnRhaW5TYW1lRWxlbWVudHMiLCJtYXAiLCJhcHBseVNlbGVjdGlvbiIsImpvaW4iLCJfIiwic2V0UHJvZHVjdCIsInNwbGljZSIsIm1heFByb2R1Y3RzIiwicHVzaCIsImNvbXBvbmVudHMiLCJQcm9kdWN0U2VsZWN0b3JEcm9wZG93biIsIk51bWJlciIsIiRzZXQiLCJzZWxlY3Rpb24iLCJhcnIxIiwiYXJyMiIsInNvcnRlZEFycjEiLCJzb3J0Iiwic29ydGVkQXJyMiIsImV2ZXJ5IiwiaXNOYXZpZ2F0aW9uRmFpbHVyZSIsIk5hdmlnYXRpb25GYWlsdXJlVHlwZSIsIlZ1ZVJvdXRlciIsImdldEluY2x1ZGVTaGFyZWRWYWx1ZUZvckZvcm1QYWdlIiwiJHN0b3JlIiwiZ2V0dGVycyIsImNvbXBhbnlJc1N1YmNvbXBhbnkiLCJ1cGRhdGVRdWVyeVBhcmFtc0lmQ2hhbmdlZCIsIm5ld1F1ZXJ5IiwiSlNPTiIsInN0cmluZ2lmeSIsIiRyb3V0ZSIsInF1ZXJ5IiwiJHJvdXRlciIsInJlcGxhY2UiLCJjYXRjaCIsImVycm9yIiwiY2FuY2VsbGVkIiwiZHVwbGljYXRlZCIsIkRhdGVQZXJpb2RTZWxlY3RvciIsIkFkbWluU3Bpbm5lckJ1dHRvbiIsImludGVydmFsIiwiZGF0ZXMiLCJmcm9tIiwidG8iLCJmb3JtRXhwYW5kZWQiLCJpc1BlcmlvZERhdGVSYW5nZVZhbGlkIiwiaXNTdGF0aXN0aWNEYXRlUmFuZ2VWYWxpZCIsImdldFN0YXRpc3RpY01pbmltdW1EYXRlIiwiY29tcGFueSIsInNldERhdGVzIiwibm9ybWFsaXplU3RhdGlzdGljRGF0ZXMiLCJzZXRJbnRlcnZhbCIsImdldFF1ZXJ5UGFyYW1zUGVyaW9kIiwic2V0UGVyaW9kSW5RdWVyeVBhcmFtcyIsImdldFF1ZXJ5UGFyYW1zSW50ZXJ2YWwiLCJvbmx5SW50ZXJ2YWwiLCJ
2nZXRQZXJpb2RUZXh0IiwiZm9ybWF0RGF0ZSIsImdldERhdGFJZkRhdGVzU2V0QW5kQ29uZGl0aW9uc01ldCIsImdldERhdGFDYWxsYmFjayIsImFkZGl0aW9uYWxDb25kaXRpb25zIiwiZGF0ZSIsImNvbmQiLCJBZG1pbkZvcm1QYWdlSGVscGVycyIsInNlbGVjdGVkUHJvZHVjdHMiLCJzdG9yZWRTZWxlY3Rpb25zIiwiYW55UHJvZHVjdHNTZWxlY3RlZCIsImdldFByb2R1Y3RzIiwicGFyYW1zIiwiaW5jbHVkZV9zaGFyZWQiLCJzaW1wbGlmaWVkIiwiYXhpb3MiLCJnZXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJ1bml0IiwiaXRlbV9uYW1lIiwiZm9ybWF0UHJvZHVjdEZvckRyb3Bkb3duIiwic2VsZWN0UHJvZHVjdHNGcm9tUXVlcnlQYXJhbXMiLCJidWlsZFN0b3JlZFNlbGVjdGlvbnNEYXRhIiwiY29tbWl0IiwibWVzc2FnZSIsImdldFF1ZXJ5UGFyYW1zU2VsZWN0ZWRQcm9kdWN0cyIsImFjdHVhbGx5U2VsZWN0ZWRQcm9kdWN0cyIsInNldFByb2R1Y3RzSW5RdWVyeVBhcmFtcyIsImdldFF1ZXJ5UGFyYW1zU2VsZXRlZFByb2R1Y3RzIiwicHJvZHVjdFV1aWRzIiwic3BsaXQiLCJ1cGRhdGVMb2NhbFN0b3JhZ2VXaXRoU2VsZWN0aW9uIiwic3RvcmVkU2VsZWN0aW9uc0RhdGEiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwic2VsZWN0aW9ucyIsInBhcnNlIiwiY3VycmVudFNlbGVjdGlvblV1aWRzIiwiZHVwbGljYXRlSW5kZXgiLCJmaW5kSW5kZXgiLCJzIiwic2V0SXRlbSIsInByb2R1Y3RzSW5TZWxlY3Rpb24iLCJhcHBseVN0b3JlZFNlbGVjdGlvbiIsIm1vdW50ZWQiLCJzYXZlZFByZWZlcmVuY2VzIiwiZ2V0U2F2ZWRTdGF0aXN0aWNzT3V0cHV0UHJlZmVyZW5jZXMiLCJvdXRwdXRUeXBlIiwib3V0cHV0U2VwYXJhdG9yIiwic2VwYXJhdG9yIiwic3VibWl0QnV0dG9uVGV4dCIsImdldFN0YXRpc3RpY3NTdWJtaXRCdXR0b25UZXh0IiwiZ2V0T3V0cHV0U2VsZWN0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ==

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.