/*! For license information please see 158.4a458159.js.LICENSE.txt */ (self.webpackChunksrsrfl_react=self.webpackChunksrsrfl_react||[]).push([[158],{6158:function(e){e.exports=function(){"use strict";var e,t,i;function r(r,n){if(e)if(t){var o="self.onerror = function() { console.error('An error occurred while parsing the WebWorker bundle. This is most likely due to improper transpilation by Babel; please see https://docs.mapbox.com/mapbox-gl-js/guides/install/#transpiling'); }; var sharedChunk = {}; ("+e+")(sharedChunk); ("+t+")(sharedChunk); self.onerror = null;",s={};e(s),i=n(s),"undefined"!=typeof window&&window&&window.URL&&window.URL.createObjectURL&&(i.workerUrl=window.URL.createObjectURL(new Blob([o],{type:"text/javascript"})))}else t=n;else e=n}return r(0,(function(e){var t="undefined"!=typeof self?self:{},i="2.15.0";let r;const n={API_URL:"https://api.mapbox.com",get API_URL_REGEX(){if(null==r){const e=/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;try{r=null!=process.env.API_URL_REGEX?new RegExp(process.env.API_URL_REGEX):e}catch(t){r=e}}return r},get API_TILEJSON_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/v[0-9]*\/.*\.json.*$)/i},get API_SPRITE_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/styles\/v[0-9]*\/)(.*\/sprite.*\..*$)/i},get API_FONTS_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/fonts\/v[0-9]*\/)(.*\.pbf.*$)/i},get API_STYLE_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/styles\/v[0-9]*\/)(.*$)/i},get API_CDN_URL_REGEX(){return/^((https?:)?\/\/)?api\.mapbox\.c(n|om)(\/mapbox-gl-js\/)(.*$)/i},get EVENTS_URL(){if(!n.API_URL)return null;try{const e=new URL(n.API_URL);return"api.mapbox.cn"===e.hostname?"https://events.mapbox.cn/events/v2":"api.mapbox.com"===e.hostname?"https://events.mapbox.com/events/v2":null}catch(e){return null}},SESSION_PATH:"/map-sessions/v1",FEEDBACK_URL:"https://apps.mapbox.com/feedback",TILE_URL_VERSION:"v4",RASTER_URL_PREFIX:"raster/v1",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},o={supported:!1,testSupport:function(e){!l&&a&&(c?h(e):s=e)}};let s,a,l=!1,c=!1;function h(e){const t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t);try{if(e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,a),e.isContextLost())return;o.supported=!0}catch(e){}e.deleteTexture(t),l=!0}t.document&&(a=t.document.createElement("img"),a.onload=function(){s&&h(s),s=null,c=!0},a.onerror=function(){l=!0,s=null},a.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");const u="01";function d(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var p=f;function f(e,t,i,r){this.cx=3*e,this.bx=3*(i-e)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*t,this.by=3*(r-t)-this.cy,this.ay=1-this.cy-this.by,this.p1x=e,this.p1y=t,this.p2x=i,this.p2y=r}f.prototype={sampleCurveX:function(e){return((this.ax*e+this.bx)*e+this.cx)*e},sampleCurveY:function(e){return((this.ay*e+this.by)*e+this.cy)*e},sampleCurveDerivativeX:function(e){return(3*this.ax*e+2*this.bx)*e+this.cx},solveCurveX:function(e,t){if(void 0===t&&(t=1e-6),e<0)return 0;if(e>1)return 1;for(var i=e,r=0;r<8;r++){var n=this.sampleCurveX(i)-e;if(Math.abs(n)n?s=i:a=i,i=.5*(a-s)+s;return i},solve:function(e,t){return this.sampleCurveY(this.solveCurveX(e,t))}};var m=d(p),_=g;function g(e,t){this.x=e,this.y=t}g.prototype={clone:function(){return new g(this.x,this.y)},add:function(e){return this.clone()._add(e)},sub:function(e){return this.clone()._sub(e)},multByPoint:function(e){return this.clone()._multByPoint(e)},divByPoint:function(e){return this.clone()._divByPoint(e)},mult:function(e){return this.clone()._mult(e)},div:function(e){return this.clone()._div(e)},rotate:function(e){return this.clone()._rotate(e)},rotateAround:function(e,t){return this.clone()._rotateAround(e,t)},matMult:function(e){return this.clone()._matMult(e)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(e){return this.x===e.x&&this.y===e.y},dist:function(e){return Math.sqrt(this.distSqr(e))},distSqr:function(e){var t=e.x-this.x,i=e.y-this.y;return t*t+i*i},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(e){return Math.atan2(this.y-e.y,this.x-e.x)},angleWith:function(e){return this.angleWithSep(e.x,e.y)},angleWithSep:function(e,t){return Math.atan2(this.x*t-this.y*e,this.x*e+this.y*t)},_matMult:function(e){var t=e[2]*this.x+e[3]*this.y;return this.x=e[0]*this.x+e[1]*this.y,this.y=t,this},_add:function(e){return this.x+=e.x,this.y+=e.y,this},_sub:function(e){return this.x-=e.x,this.y-=e.y,this},_mult:function(e){return this.x*=e,this.y*=e,this},_div:function(e){return this.x/=e,this.y/=e,this},_multByPoint:function(e){return this.x*=e.x,this.y*=e.y,this},_divByPoint:function(e){return this.x/=e.x,this.y/=e.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var e=this.y;return this.y=this.x,this.x=-e,this},_rotate:function(e){var t=Math.cos(e),i=Math.sin(e),r=i*this.x+t*this.y;return this.x=t*this.x-i*this.y,this.y=r,this},_rotateAround:function(e,t){var i=Math.cos(e),r=Math.sin(e),n=t.y+r*(this.x-t.x)+i*(this.y-t.y);return this.x=t.x+i*(this.x-t.x)-r*(this.y-t.y),this.y=n,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},g.convert=function(e){return e instanceof g?e:Array.isArray(e)?new g(e[0],e[1]):e};var y=d(_);const x=Math.PI/180,v=180/Math.PI;function b(e){return e*x}function w(e){return e*v}const T=[[0,0],[1,0],[1,1],[0,1]];function E(e){if(e<=0)return 0;if(e>=1)return 1;const t=e*e,i=t*e;return 4*(e<.5?i:3*(e-t)+i-.75)}function S(e,t,i,r){const n=new m(e,t,i,r);return function(e){return n.solve(e)}}const M=S(.25,.1,.25,1);function A(e,t,i){return Math.min(i,Math.max(t,e))}function I(e,t,i){return(i=A((i-e)/(t-e),0,1))*i*(3-2*i)}function C(e,t,i){const r=i-t,n=((e-t)%r+r)%r+t;return n===t?i:n}function z(e,t,i){if(!e.length)return i(null,[]);let r=e.length;const n=new Array(e.length);let o=null;e.forEach(((e,s)=>{t(e,((e,t)=>{e&&(o=e),n[s]=t,0==--r&&i(o,n)}))}))}function P(e){const t=[];for(const i in e)t.push(e[i]);return t}function k(e,...t){for(const i of t)for(const t in i)e[t]=i[t];return e}let D=1;function L(){return D++}function R(){return function e(t){return t?(t^Math.random()*(16>>t/4)).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,e)}()}function B(e){return e<=1?1:Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))}function O(e){return!!e&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}function F(e,t){e.forEach((e=>{t[e]&&(t[e]=t[e].bind(t))}))}function U(e,t){return-1!==e.indexOf(t,e.length-t.length)}function V(e,t,i){const r={};for(const n in e)r[n]=t.call(i||this,e[n],n,e);return r}function N(e,t,i){const r={};for(const n in e)t.call(i||this,e[n],n,e)&&(r[n]=e[n]);return r}function j(e){return Array.isArray(e)?e.map(j):"object"==typeof e&&e?V(e,j):e}const G={};function $(e){G[e]||("undefined"!=typeof console&&console.warn(e),G[e]=!0)}function Z(e,t,i){return(i.y-e.y)*(t.x-e.x)>(t.y-e.y)*(i.x-e.x)}function q(e){let t=0;for(let i,r,n=0,o=e.length,s=o-1;n@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,((e,i,r,n)=>{const o=r||n;return t[i]=!o||o.toLowerCase(),""})),t["max-age"]){const e=parseInt(t["max-age"],10);isNaN(e)?delete t["max-age"]:t["max-age"]=e}return t}let H=null;function K(e){if(null==H){const t=e.navigator?e.navigator.userAgent:null;H=!!e.safari||!(!t||!(/\b(iPad|iPhone|iPod)\b/.test(t)||t.match("Safari")&&!t.match("Chrome")))}return H}function Y(e){try{const i=t[e];return i.setItem("_mapbox_test_",1),i.removeItem("_mapbox_test_"),!0}catch(e){return!1}}function J(e,t){return[e[4*t],e[4*t+1],e[4*t+2],e[4*t+3]]}const Q="mapbox-tiles";let ee,te,ie=500,re=50;function ne(){try{return t.caches}catch(e){}}function oe(){ne()&&!ee&&(ee=t.caches.open(Q))}function se(e){const t=e.indexOf("?");if(t<0)return e;const i=function(e){const t=e.indexOf("?");return t>0?e.slice(t+1).split("&"):[]}(e),r=i.filter((e=>{const t=e.split("=");return"language"===t[0]||"worldview"===t[0]}));return r.length?`${e.slice(0,t)}?${r.join("&")}`:e.slice(0,t)}let ae=1/0;const le={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Image:"Image"};"function"==typeof Object.freeze&&Object.freeze(le);class ce extends Error{constructor(e,t,i){401===t&&ve(i)&&(e+=": you may have provided an invalid Mapbox access token. See https://docs.mapbox.com/api/overview/#access-tokens-and-token-scopes"),super(e),this.status=t,this.url=i}toString(){return`${this.name}: ${this.message} (${this.status}): ${this.url}`}}const he=W()?()=>self.worker&&self.worker.referrer:()=>("blob:"===t.location.protocol?t.parent:t).location.href,ue=function(e,i){if(!(/^file:/.test(r=e.url)||/^file:/.test(he())&&!/^\w+:/.test(r))){if(t.fetch&&t.Request&&t.AbortController&&t.Request.prototype.hasOwnProperty("signal"))return function(e,i){const r=new t.AbortController,n=new t.Request(e.url,{method:e.method||"GET",body:e.body,credentials:e.credentials,headers:e.headers,referrer:he(),referrerPolicy:e.referrerPolicy,signal:r.signal});let o=!1,s=!1;const a=(l=n.url).indexOf("sku=")>0&&ve(l);var l;"json"===e.type&&n.headers.set("Accept","application/json");const c=(r,o,l)=>{if(s)return;if(r&&"SecurityError"!==r.message&&$(r.toString()),o&&l)return h(o);const c=Date.now();t.fetch(n).then((t=>{if(t.ok){const e=a?t.clone():null;return h(t,e,c)}return i(new ce(t.statusText,t.status,e.url))})).catch((t=>{"AbortError"!==t.name&&i(new Error(`${t.message} ${e.url}`))}))},h=(r,a,l)=>{("arrayBuffer"===e.type?r.arrayBuffer():"json"===e.type?r.json():r.text()).then((e=>{s||(a&&l&&function(e,i,r){if(oe(),!ee)return;const n={status:i.status,statusText:i.statusText,headers:new t.Headers};i.headers.forEach(((e,t)=>n.headers.set(t,e)));const o=X(i.headers.get("Cache-Control")||"");if(o["no-store"])return;o["max-age"]&&n.headers.set("Expires",new Date(r+1e3*o["max-age"]).toUTCString());const s=n.headers.get("Expires");s&&(new Date(s).getTime()-r<42e4||function(e,t){if(void 0===te)try{new Response(new ReadableStream),te=!0}catch(e){te=!1}te?t(e.body):e.blob().then(t)}(i,(i=>{const r=new t.Response(i,n);oe(),ee&&ee.then((t=>t.put(se(e.url),r))).catch((e=>$(e.message)))})))}(n,a,l),o=!0,i(null,e,r.headers.get("Cache-Control"),r.headers.get("Expires")))})).catch((e=>{s||i(new Error(e.message))}))};return a?function(e,t){if(oe(),!ee)return t(null);const i=se(e.url);ee.then((e=>{e.match(i).then((r=>{const n=function(e){if(!e)return!1;const t=new Date(e.headers.get("Expires")||0),i=X(e.headers.get("Cache-Control")||"");return t>Date.now()&&!i["no-cache"]}(r);e.delete(i),n&&e.put(i,r.clone()),t(null,r,n)})).catch(t)})).catch(t)}(n,c):c(null,null),{cancel:()=>{s=!0,o||r.abort()}}}(e,i);if(W()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",e,i,void 0,!0)}var r;return function(e,i){const r=new t.XMLHttpRequest;r.open(e.method||"GET",e.url,!0),"arrayBuffer"===e.type&&(r.responseType="arraybuffer");for(const t in e.headers)r.setRequestHeader(t,e.headers[t]);return"json"===e.type&&(r.responseType="text",r.setRequestHeader("Accept","application/json")),r.withCredentials="include"===e.credentials,r.onerror=()=>{i(new Error(r.statusText))},r.onload=()=>{if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){let t=r.response;if("json"===e.type)try{t=JSON.parse(r.response)}catch(e){return i(e)}i(null,t,r.getResponseHeader("Cache-Control"),r.getResponseHeader("Expires"))}else i(new ce(r.statusText,r.status,e.url))},r.send(e.body),{cancel:()=>r.abort()}}(e,i)},de=function(e,t){return ue(k(e,{type:"arrayBuffer"}),t)};function pe(e){const i=t.document.createElement("a");return i.href=e,i.protocol===t.document.location.protocol&&i.host===t.document.location.host}const fe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";let me,_e;me=[],_e=0;const ge=function(e,i){if(o.supported&&(e.headers||(e.headers={}),e.headers.accept="image/webp,*/*"),_e>=n.MAX_PARALLEL_IMAGE_REQUESTS){const t={requestParameters:e,callback:i,cancelled:!1,cancel(){this.cancelled=!0}};return me.push(t),t}_e++;let r=!1;const s=()=>{if(!r)for(r=!0,_e--;me.length&&_e{s(),e?i(e):r&&(t.createImageBitmap?function(e,i){const r=new t.Blob([new Uint8Array(e)],{type:"image/png"});t.createImageBitmap(r).then((e=>{i(null,e)})).catch((e=>{i(new Error(`Could not load image because of ${e.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`))}))}(r,((e,t)=>i(e,t,n,o))):function(e,i){const r=new t.Image,n=t.URL;r.onload=()=>{i(null,r),n.revokeObjectURL(r.src),r.onload=null,t.requestAnimationFrame((()=>{r.src=fe}))},r.onerror=()=>i(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const o=new t.Blob([new Uint8Array(e)],{type:"image/png"});r.src=e.byteLength?n.createObjectURL(o):fe}(r,((e,t)=>i(e,t,n,o))))}));return{cancel:()=>{a.cancel(),s()}}},ye="NO_ACCESS_TOKEN";function xe(e){return 0===e.indexOf("mapbox:")}function ve(e){return n.API_URL_REGEX.test(e)}function be(e){return n.API_CDN_URL_REGEX.test(e)}function we(e){return n.API_STYLE_REGEX.test(e)&&!Te(e)}function Te(e){return n.API_SPRITE_REGEX.test(e)}const Ee=/^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;function Se(e){const t=e.match(Ee);if(!t)throw new Error("Unable to parse URL object");return{protocol:t[1],authority:t[2],path:t[3]||"/",params:t[4]?t[4].split("&"):[]}}function Me(e){const t=e.params.length?`?${e.params.join("&")}`:"";return`${e.protocol}://${e.authority}${e.path}${t}`}const Ae="mapbox.eventData";function Ie(e){if(!e)return null;const i=e.split(".");if(!i||3!==i.length)return null;try{return JSON.parse(decodeURIComponent(t.atob(i[1]).split("").map((e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2))).join("")))}catch(e){return null}}class Ce{constructor(e){this.type=e,this.anonId=null,this.eventData={},this.queue=[],this.pendingRequest=null}getStorageKey(e){const i=Ie(n.ACCESS_TOKEN);let r="";return r=i&&i.u?t.btoa(encodeURIComponent(i.u).replace(/%([0-9A-F]{2})/g,((e,t)=>String.fromCharCode(Number("0x"+t))))):n.ACCESS_TOKEN||"",e?`${Ae}.${e}:${r}`:`${Ae}:${r}`}fetchEventData(){const e=Y("localStorage"),i=this.getStorageKey(),r=this.getStorageKey("uuid");if(e)try{const e=t.localStorage.getItem(i);e&&(this.eventData=JSON.parse(e));const n=t.localStorage.getItem(r);n&&(this.anonId=n)}catch(e){$("Unable to read from LocalStorage")}}saveEventData(){const e=Y("localStorage"),i=this.getStorageKey(),r=this.getStorageKey("uuid");if(e)try{t.localStorage.setItem(r,this.anonId),Object.keys(this.eventData).length>=1&&t.localStorage.setItem(i,JSON.stringify(this.eventData))}catch(e){$("Unable to write to LocalStorage")}}processRequests(e){}postEvent(e,t,i,r){if(!n.EVENTS_URL)return;const o=Se(n.EVENTS_URL);o.params.push(`access_token=${r||n.ACCESS_TOKEN||""}`);const s={event:this.type,created:new Date(e).toISOString()},a=t?k(s,t):s,l={url:Me(o),headers:{"Content-Type":"text/plain"},body:JSON.stringify([a])};this.pendingRequest=function(e,t){return ue(k(e,{method:"POST"}),t)}(l,(e=>{this.pendingRequest=null,i(e),this.saveEventData(),this.processRequests(r)}))}queueRequest(e,t){this.queue.push(e),this.processRequests(t)}}const ze=new class extends Ce{constructor(e){super("appUserTurnstile"),this._customAccessToken=e}postTurnstileEvent(e,t){n.EVENTS_URL&&n.ACCESS_TOKEN&&Array.isArray(e)&&e.some((e=>xe(e)||ve(e)))&&this.queueRequest(Date.now(),t)}processRequests(e){if(this.pendingRequest||0===this.queue.length)return;this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();const t=Ie(n.ACCESS_TOKEN),r=t?t.u:n.ACCESS_TOKEN;let o=r!==this.eventData.tokenU;O(this.anonId)||(this.anonId=R(),o=!0);const s=this.queue.shift();if(this.eventData.lastSuccess){const e=new Date(this.eventData.lastSuccess),t=new Date(s),i=(s-this.eventData.lastSuccess)/864e5;o=o||i>=1||i<-1||e.getDate()!==t.getDate()}else o=!0;o?this.postEvent(s,{sdkIdentifier:"mapbox-gl-js",sdkVersion:i,skuId:u,"enabled.telemetry":!1,userId:this.anonId},(e=>{e||(this.eventData.lastSuccess=s,this.eventData.tokenU=r)}),e):this.processRequests()}},Pe=ze.postTurnstileEvent.bind(ze),ke=new class extends Ce{constructor(){super("map.load"),this.success={},this.skuToken=""}postMapLoadEvent(e,t,i,r){this.skuToken=t,this.errorCb=r,n.EVENTS_URL&&(i||n.ACCESS_TOKEN?this.queueRequest({id:e,timestamp:Date.now()},i):this.errorCb(new Error(ye)))}processRequests(e){if(this.pendingRequest||0===this.queue.length)return;const{id:t,timestamp:r}=this.queue.shift();t&&this.success[t]||(this.anonId||this.fetchEventData(),O(this.anonId)||(this.anonId=R()),this.postEvent(r,{sdkIdentifier:"mapbox-gl-js",sdkVersion:i,skuId:u,skuToken:this.skuToken,userId:this.anonId},(e=>{e?this.errorCb(e):t&&(this.success[t]=!0)}),e))}},De=ke.postMapLoadEvent.bind(ke),Le=new class extends Ce{constructor(){super("gljs.performance")}postPerformanceEvent(e,t){n.EVENTS_URL&&(e||n.ACCESS_TOKEN)&&this.queueRequest({timestamp:Date.now(),performanceData:t},e)}processRequests(e){if(this.pendingRequest||0===this.queue.length)return;const{timestamp:r,performanceData:n}=this.queue.shift(),o=function(e){const r=t.performance.getEntriesByType("resource"),n=t.performance.getEntriesByType("mark"),o=function(e){const t={};if(e)for(const i in e)if("other"!==i)for(const r of e[i]){const e=`${i}ResolveRangeMin`,n=`${i}ResolveRangeMax`,o=`${i}RequestCount`,s=`${i}RequestCachedCount`;t[e]=Math.min(t[e]||1/0,r.startTime),t[n]=Math.max(t[n]||-1/0,r.responseEnd);const a=e=>{void 0===t[e]&&(t[e]=0),++t[e]};void 0!==r.transferSize&&0===r.transferSize&&a(s),a(o)}return t}(function(e,t){const i={};if(e)for(const r of e){const e=t(r);void 0===i[e]&&(i[e]=[]),i[e].push(r)}return i}(r,Ne)),s=t.devicePixelRatio,a=t.navigator.connection||t.navigator.mozConnection||t.navigator.webkitConnection,l={counters:[],metadata:[],attributes:[]},c=(e,t,i)=>{null!=i&&e.push({name:t,value:i.toString()})};for(const e in o)c(l.counters,e,o[e]);if(e.interactionRange[0]!==1/0&&e.interactionRange[1]!==-1/0&&(c(l.counters,"interactionRangeMin",e.interactionRange[0]),c(l.counters,"interactionRangeMax",e.interactionRange[1])),n)for(const e of Object.keys(Ue)){const t=Ue[e],i=n.find((e=>e.name===t));i&&c(l.counters,t,i.startTime)}return c(l.counters,"visibilityHidden",e.visibilityHidden),c(l.attributes,"style",function(e){if(e)for(const t of e){const e=t.name.split("?")[0];if(we(e)){const t=e.split("/").slice(-2);if(2===t.length)return`mapbox://styles/${t[0]}/${t[1]}`}}}(r)),c(l.attributes,"terrainEnabled",e.terrainEnabled?"true":"false"),c(l.attributes,"fogEnabled",e.fogEnabled?"true":"false"),c(l.attributes,"projection",e.projection),c(l.attributes,"zoom",e.zoom),c(l.metadata,"devicePixelRatio",s),c(l.metadata,"connectionEffectiveType",a?a.effectiveType:void 0),c(l.metadata,"navigatorUserAgent",t.navigator.userAgent),c(l.metadata,"screenWidth",t.screen.width),c(l.metadata,"screenHeight",t.screen.height),c(l.metadata,"windowWidth",t.innerWidth),c(l.metadata,"windowHeight",t.innerHeight),c(l.metadata,"mapWidth",e.width/s),c(l.metadata,"mapHeight",e.height/s),c(l.metadata,"webglRenderer",e.renderer),c(l.metadata,"webglVendor",e.vendor),c(l.metadata,"sdkVersion",i),c(l.metadata,"sdkIdentifier","mapbox-gl-js"),l}(n);for(const e of o.metadata);for(const e of o.counters);for(const e of o.attributes);this.postEvent(r,o,(()=>{}),e)}},Re=Le.postPerformanceEvent.bind(Le),Be=new class extends Ce{constructor(){super("map.auth"),this.success={},this.skuToken=""}getSession(e,t,i,r){if(!n.API_URL||!n.SESSION_PATH)return;const o=Se(n.API_URL+n.SESSION_PATH);o.params.push(`sku=${t||""}`),o.params.push(`access_token=${r||n.ACCESS_TOKEN||""}`);const s={url:Me(o),headers:{"Content-Type":"text/plain"}};this.pendingRequest=function(e,t){return ue(k(e,{method:"GET"}),t)}(s,(e=>{this.pendingRequest=null,i(e),this.saveEventData(),this.processRequests(r)}))}getSessionAPI(e,t,i,r){this.skuToken=t,this.errorCb=r,n.SESSION_PATH&&n.API_URL&&(i||n.ACCESS_TOKEN?this.queueRequest({id:e,timestamp:Date.now()},i):this.errorCb(new Error(ye)))}processRequests(e){if(this.pendingRequest||0===this.queue.length)return;const{id:t,timestamp:i}=this.queue.shift();t&&this.success[t]||this.getSession(i,this.skuToken,(e=>{e?this.errorCb(e):t&&(this.success[t]=!0)}),e)}},Oe=Be.getSessionAPI.bind(Be),Fe=new Set,Ue={create:"create",load:"load",fullLoad:"fullLoad"},Ve={mark(e){t.performance.mark(e)},measure(e,i,r){t.performance.measure(e,i,r)}};function Ne(e){const t=e.name.split("?")[0];return be(t)&&t.includes("mapbox-gl.js")?"javascript":be(t)&&t.includes("mapbox-gl.css")?"css":function(e){return n.API_FONTS_REGEX.test(e)}(t)?"fontRange":Te(t)?"sprite":we(t)?"style":function(e){return n.API_TILEJSON_REGEX.test(e)}(t)?"tilejson":"other"}const je=t.performance;function Ge(e){const t=e?e.url.toString():void 0;return je.getEntriesByName(t)}let $e,Ze,qe,We;const Xe={now:()=>void 0!==qe?qe:t.performance.now(),setNow(e){qe=e},restoreNow(){qe=void 0},frame(e){const i=t.requestAnimationFrame(e);return{cancel:()=>t.cancelAnimationFrame(i)}},getImageData(e,i=0){const{width:r,height:n}=e;We||(We=t.document.createElement("canvas"));const o=We.getContext("2d",{willReadFrequently:!0});if(!o)throw new Error("failed to create canvas 2d context");return(r>We.width||n>We.height)&&(We.width=r,We.height=n),o.clearRect(-i,-i,r+2*i,n+2*i),o.drawImage(e,0,0,r,n),o.getImageData(-i,-i,r+2*i,n+2*i)},resolveURL:e=>($e||($e=t.document.createElement("a")),$e.href=e,$e.href),get devicePixelRatio(){return t.devicePixelRatio},get prefersReducedMotion(){return!!t.matchMedia&&(null==Ze&&(Ze=t.matchMedia("(prefers-reduced-motion: reduce)")),Ze.matches)}};function He(e,t,i){i[e]&&-1!==i[e].indexOf(t)||(i[e]=i[e]||[],i[e].push(t))}function Ke(e,t,i){if(i&&i[e]){const r=i[e].indexOf(t);-1!==r&&i[e].splice(r,1)}}class Ye{constructor(e,t={}){k(this,t),this.type=e}}class Je extends Ye{constructor(e,t={}){super("error",k({error:e},t))}}class Qe{on(e,t){return this._listeners=this._listeners||{},He(e,t,this._listeners),this}off(e,t){return Ke(e,t,this._listeners),Ke(e,t,this._oneTimeListeners),this}once(e,t){return t?(this._oneTimeListeners=this._oneTimeListeners||{},He(e,t,this._oneTimeListeners),this):new Promise((t=>this.once(e,t)))}fire(e,t){"string"==typeof e&&(e=new Ye(e,t||{}));const i=e.type;if(this.listens(i)){e.target=this;const t=this._listeners&&this._listeners[i]?this._listeners[i].slice():[];for(const i of t)i.call(this,e);const r=this._oneTimeListeners&&this._oneTimeListeners[i]?this._oneTimeListeners[i].slice():[];for(const t of r)Ke(i,t,this._oneTimeListeners),t.call(this,e);const n=this._eventedParent;n&&(k(e,"function"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),n.fire(e))}else e instanceof Je&&console.error(e.error);return this}listens(e){return!!(this._listeners&&this._listeners[e]&&this._listeners[e].length>0||this._oneTimeListeners&&this._oneTimeListeners[e]&&this._oneTimeListeners[e].length>0||this._eventedParent&&this._eventedParent.listens(e))}setEventedParent(e,t){return this._eventedParent=e,this._eventedParentData=t,this}}var et=JSON.parse('{"$version":8,"$root":{"version":{"required":true,"type":"enum","values":[8]},"name":{"type":"string"},"metadata":{"type":"*"},"center":{"type":"array","value":"number"},"zoom":{"type":"number"},"bearing":{"type":"number","default":0,"period":360,"units":"degrees"},"pitch":{"type":"number","default":0,"units":"degrees"},"light":{"type":"light"},"terrain":{"type":"terrain"},"fog":{"type":"fog"},"sources":{"required":true,"type":"sources"},"sprite":{"type":"string"},"glyphs":{"type":"string"},"transition":{"type":"transition"},"projection":{"type":"projection"},"layers":{"required":true,"type":"array","value":"layer"}},"sources":{"*":{"type":"source"}},"source":["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],"source_vector":{"type":{"required":true,"type":"enum","values":{"vector":{}}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"scheme":{"type":"enum","values":{"xyz":{},"tms":{}},"default":"xyz"},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"attribution":{"type":"string"},"promoteId":{"type":"promoteId"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_raster":{"type":{"required":true,"type":"enum","values":{"raster":{}}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"tileSize":{"type":"number","default":512,"units":"pixels"},"scheme":{"type":"enum","values":{"xyz":{},"tms":{}},"default":"xyz"},"attribution":{"type":"string"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_raster_dem":{"type":{"required":true,"type":"enum","values":{"raster-dem":{}}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"tileSize":{"type":"number","default":512,"units":"pixels"},"attribution":{"type":"string"},"encoding":{"type":"enum","values":{"terrarium":{},"mapbox":{}},"default":"mapbox"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_geojson":{"type":{"required":true,"type":"enum","values":{"geojson":{}}},"data":{"type":"*"},"maxzoom":{"type":"number","default":18},"attribution":{"type":"string"},"buffer":{"type":"number","default":128,"maximum":512,"minimum":0},"filter":{"type":"*"},"tolerance":{"type":"number","default":0.375},"cluster":{"type":"boolean","default":false},"clusterRadius":{"type":"number","default":50,"minimum":0},"clusterMaxZoom":{"type":"number"},"clusterMinPoints":{"type":"number"},"clusterProperties":{"type":"*"},"lineMetrics":{"type":"boolean","default":false},"generateId":{"type":"boolean","default":false},"promoteId":{"type":"promoteId"}},"source_video":{"type":{"required":true,"type":"enum","values":{"video":{}}},"urls":{"required":true,"type":"array","value":"string"},"coordinates":{"required":true,"type":"array","length":4,"value":{"type":"array","length":2,"value":"number"}}},"source_image":{"type":{"required":true,"type":"enum","values":{"image":{}}},"url":{"required":true,"type":"string"},"coordinates":{"required":true,"type":"array","length":4,"value":{"type":"array","length":2,"value":"number"}}},"layer":{"id":{"type":"string","required":true},"type":{"type":"enum","values":{"fill":{},"line":{},"symbol":{},"circle":{},"heatmap":{},"fill-extrusion":{},"raster":{},"hillshade":{},"background":{},"sky":{}},"required":true},"metadata":{"type":"*"},"source":{"type":"string"},"source-layer":{"type":"string"},"minzoom":{"type":"number","minimum":0,"maximum":24},"maxzoom":{"type":"number","minimum":0,"maximum":24},"filter":{"type":"filter"},"layout":{"type":"layout"},"paint":{"type":"paint"}},"layout":["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background","layout_sky"],"layout_background":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_sky":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_fill":{"fill-sort-key":{"type":"number","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_circle":{"circle-sort-key":{"type":"number","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_heatmap":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_fill-extrusion":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"},"fill-extrusion-edge-radius":{"type":"number","private":true,"default":0,"minimum":0,"maximum":1,"property-type":"constant"}},"layout_line":{"line-cap":{"type":"enum","values":{"butt":{},"round":{},"square":{}},"default":"butt","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-join":{"type":"enum","values":{"bevel":{},"round":{},"miter":{}},"default":"miter","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{"type":"number","default":2,"requires":[{"line-join":"miter"}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"line-round-limit":{"type":"number","default":1.05,"requires":[{"line-join":"round"}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"line-sort-key":{"type":"number","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_symbol":{"symbol-placement":{"type":"enum","values":{"point":{},"line":{},"line-center":{}},"default":"point","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"symbol-spacing":{"type":"number","default":250,"minimum":1,"units":"pixels","requires":[{"symbol-placement":"line"}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{"type":"boolean","default":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{"type":"number","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{"type":"enum","values":{"auto":{},"viewport-y":{},"source":{}},"default":"auto","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{"type":"boolean","default":false,"requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{"type":"boolean","default":false,"requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-optional":{"type":"boolean","default":false,"requires":["icon-image","text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{"type":"enum","values":{"map":{},"viewport":{},"auto":{}},"default":"auto","requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-size":{"type":"number","default":1,"minimum":0,"units":"factor of the original icon size","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{"type":"enum","values":{"none":{},"width":{},"height":{},"both":{}},"default":"none","requires":["icon-image","text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{"type":"array","value":"number","length":4,"default":[0,0,0,0],"units":"pixels","requires":["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"icon-image":{"type":"resolvedImage","tokens":true,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{"type":"number","default":0,"period":360,"units":"degrees","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{"type":"number","default":2,"minimum":0,"units":"pixels","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{"type":"boolean","default":false,"requires":["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-offset":{"type":"array","value":"number","length":2,"default":[0,0],"requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{"type":"enum","values":{"center":{},"left":{},"right":{},"top":{},"bottom":{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},"default":"center","requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{"type":"enum","values":{"map":{},"viewport":{},"auto":{}},"default":"auto","requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{"type":"enum","values":{"map":{},"viewport":{},"auto":{}},"default":"auto","requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{"type":"enum","values":{"map":{},"viewport":{},"auto":{}},"default":"auto","requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-field":{"type":"formatted","default":"","tokens":true,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-font":{"type":"array","value":"string","default":["Open Sans Regular","Arial Unicode MS Regular"],"requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-size":{"type":"number","default":16,"minimum":0,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{"type":"number","default":10,"minimum":0,"units":"ems","requires":["text-field",{"symbol-placement":["point"]}],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{"type":"number","default":1.2,"units":"ems","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-letter-spacing":{"type":"number","default":0,"units":"ems","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-justify":{"type":"enum","values":{"auto":{},"left":{},"center":{},"right":{}},"default":"center","requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{"type":"number","units":"ems","default":0,"requires":["text-field"],"property-type":"data-driven","expression":{"interpolated":true,"parameters":["zoom","feature"]}},"text-variable-anchor":{"type":"array","value":"enum","values":{"center":{},"left":{},"right":{},"top":{},"bottom":{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},"requires":["text-field",{"symbol-placement":["point"]}],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-anchor":{"type":"enum","values":{"center":{},"left":{},"right":{},"top":{},"bottom":{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},"default":"center","requires":["text-field",{"!":"text-variable-anchor"}],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{"type":"number","default":45,"units":"degrees","requires":["text-field",{"symbol-placement":["line","line-center"]}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"text-writing-mode":{"type":"array","value":"enum","values":{"horizontal":{},"vertical":{}},"requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-rotate":{"type":"number","default":0,"period":360,"units":"degrees","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-padding":{"type":"number","default":2,"minimum":0,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"text-keep-upright":{"type":"boolean","default":true,"requires":["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-transform":{"type":"enum","values":{"none":{},"uppercase":{},"lowercase":{}},"default":"none","requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-offset":{"type":"array","value":"number","units":"ems","length":2,"default":[0,0],"requires":["text-field",{"!":"text-radial-offset"}],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{"type":"boolean","default":false,"requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{"type":"boolean","default":false,"requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-optional":{"type":"boolean","default":false,"requires":["text-field","icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_raster":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_hillshade":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"filter":{"type":"array","value":"*"},"filter_symbol":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature","pitch","distance-from-center"]}},"filter_fill":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_line":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_circle":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_fill-extrusion":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_heatmap":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_operator":{"type":"enum","values":{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},"in":{},"!in":{},"all":{},"any":{},"none":{},"has":{},"!has":{},"within":{}}},"geometry_type":{"type":"enum","values":{"Point":{},"LineString":{},"Polygon":{}}},"function":{"expression":{"type":"expression"},"stops":{"type":"array","value":"function_stop"},"base":{"type":"number","default":1,"minimum":0},"property":{"type":"string","default":"$zoom"},"type":{"type":"enum","values":{"identity":{},"exponential":{},"interval":{},"categorical":{}},"default":"exponential"},"colorSpace":{"type":"enum","values":{"rgb":{},"lab":{},"hcl":{}},"default":"rgb"},"default":{"type":"*","required":false}},"function_stop":{"type":"array","minimum":0,"maximum":24,"value":["number","color"],"length":2},"expression":{"type":"array","value":"*","minimum":1},"fog":{"range":{"type":"array","default":[0.5,10],"minimum":-20,"maximum":20,"length":2,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"color":{"type":"color","property-type":"data-constant","default":"#ffffff","expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"high-color":{"type":"color","property-type":"data-constant","default":"#245cdf","expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"space-color":{"type":"color","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],4,"#010b19",7,"#367ab9"],"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"horizon-blend":{"type":"number","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],4,0.2,7,0.1],"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"star-intensity":{"type":"number","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],5,0.35,6,0],"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true}},"light":{"anchor":{"type":"enum","default":"viewport","values":{"map":{},"viewport":{}},"property-type":"data-constant","transition":false,"expression":{"interpolated":false,"parameters":["zoom"]}},"position":{"type":"array","default":[1.15,210,30],"length":3,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"color":{"type":"color","property-type":"data-constant","default":"#ffffff","expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"intensity":{"type":"number","property-type":"data-constant","default":0.5,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true}},"projection":{"name":{"type":"enum","values":{"albers":{},"equalEarth":{},"equirectangular":{},"lambertConformalConic":{},"mercator":{},"naturalEarth":{},"winkelTripel":{},"globe":{}},"default":"mercator","required":true},"center":{"type":"array","length":2,"value":"number","property-type":"data-constant","minimum":[-180,-90],"maximum":[180,90],"transition":false,"requires":[{"name":["albers","lambertConformalConic"]}]},"parallels":{"type":"array","length":2,"value":"number","property-type":"data-constant","minimum":[-90,-90],"maximum":[90,90],"transition":false,"requires":[{"name":["albers","lambertConformalConic"]}]}},"terrain":{"source":{"type":"string","required":true},"exaggeration":{"type":"number","property-type":"data-constant","default":1,"minimum":0,"maximum":1000,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true,"requires":["source"]}},"paint":["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background","paint_sky"],"paint_fill":{"fill-antialias":{"type":"boolean","default":true,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"fill-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{"type":"color","default":"#000000","transition":true,"requires":[{"!":"fill-pattern"}],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{"type":"color","transition":true,"requires":[{"!":"fill-pattern"},{"fill-antialias":true}],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["fill-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"fill-pattern":{"type":"resolvedImage","transition":false,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{"type":"color","default":"#000000","transition":true,"requires":[{"!":"fill-extrusion-pattern"}],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["fill-extrusion-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{"type":"resolvedImage","transition":false,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"fill-extrusion-height":{"type":"number","default":0,"minimum":0,"units":"meters","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{"type":"number","default":0,"minimum":0,"units":"meters","transition":true,"requires":["fill-extrusion-height"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{"type":"boolean","default":true,"transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-ambient-occlusion-intensity":{"property-type":"data-constant","type":"number","private":true,"default":0,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"fill-extrusion-ambient-occlusion-radius":{"property-type":"data-constant","type":"number","private":true,"default":3,"minimum":0,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true,"requires":["fill-extrusion-edge-radius"]},"fill-extrusion-rounded-roof":{"type":"boolean","default":true,"requires":["fill-extrusion-edge-radius"],"transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_line":{"line-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{"type":"color","default":"#000000","transition":true,"requires":[{"!":"line-pattern"}],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["line-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"line-width":{"type":"number","default":1,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{"type":"number","default":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{"type":"array","value":"number","minimum":0,"transition":false,"units":"line widths","requires":[{"!":"line-pattern"}],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-pattern":{"type":"resolvedImage","transition":false,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-gradient":{"type":"color","transition":false,"requires":[{"!":"line-pattern"},{"source":"geojson","has":{"lineMetrics":true}}],"expression":{"interpolated":true,"parameters":["line-progress"]},"property-type":"color-ramp"},"line-trim-offset":{"type":"array","value":"number","length":2,"default":[0,0],"minimum":[0,0],"maximum":[1,1],"transition":false,"requires":[{"source":"geojson","has":{"lineMetrics":true}}],"property-type":"constant"}},"paint_circle":{"circle-radius":{"type":"number","default":5,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{"type":"number","default":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["circle-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{"type":"enum","values":{"map":{},"viewport":{}},"default":"viewport","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"}},"paint_heatmap":{"heatmap-radius":{"type":"number","default":30,"minimum":1,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{"type":"number","default":1,"minimum":0,"transition":false,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{"type":"number","default":1,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"heatmap-color":{"type":"color","default":["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",0.1,"royalblue",0.3,"cyan",0.5,"lime",0.7,"yellow",1,"red"],"transition":false,"expression":{"interpolated":true,"parameters":["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_symbol":{"icon-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{"type":"color","default":"#000000","transition":true,"requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{"type":"color","default":"rgba(0, 0, 0, 0)","transition":true,"requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["icon-image","icon-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{"type":"color","default":"#000000","transition":true,"overridable":true,"requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{"type":"color","default":"rgba(0, 0, 0, 0)","transition":true,"requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["text-field","text-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_raster":{"raster-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{"type":"number","default":0,"period":360,"transition":true,"units":"degrees","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{"type":"number","default":0,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-saturation":{"type":"number","default":0,"minimum":-1,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-contrast":{"type":"number","default":0,"minimum":-1,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-resampling":{"type":"enum","values":{"linear":{},"nearest":{}},"default":"linear","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{"type":"number","default":300,"minimum":0,"transition":false,"units":"milliseconds","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_hillshade":{"hillshade-illumination-direction":{"type":"number","default":335,"minimum":0,"maximum":359,"transition":false,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"viewport","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{"type":"number","default":0.5,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{"type":"color","default":"#FFFFFF","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_background":{"background-color":{"type":"color","default":"#000000","transition":true,"requires":[{"!":"background-pattern"}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"background-pattern":{"type":"resolvedImage","transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"background-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_sky":{"sky-type":{"type":"enum","values":{"gradient":{},"atmosphere":{}},"default":"atmosphere","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun":{"type":"array","value":"number","length":2,"units":"degrees","minimum":[0,0],"maximum":[360,180],"transition":false,"requires":[{"sky-type":"atmosphere"}],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun-intensity":{"type":"number","requires":[{"sky-type":"atmosphere"}],"default":10,"minimum":0,"maximum":100,"transition":false,"property-type":"data-constant"},"sky-gradient-center":{"type":"array","requires":[{"sky-type":"gradient"}],"value":"number","default":[0,0],"length":2,"units":"degrees","minimum":[0,0],"maximum":[360,180],"transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"sky-gradient-radius":{"type":"number","requires":[{"sky-type":"gradient"}],"default":90,"minimum":0,"maximum":180,"transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"sky-gradient":{"type":"color","default":["interpolate",["linear"],["sky-radial-progress"],0.8,"#87ceeb",1,"white"],"transition":false,"requires":[{"sky-type":"gradient"}],"expression":{"interpolated":true,"parameters":["sky-radial-progress"]},"property-type":"color-ramp"},"sky-atmosphere-halo-color":{"type":"color","default":"white","transition":false,"requires":[{"sky-type":"atmosphere"}],"property-type":"data-constant"},"sky-atmosphere-color":{"type":"color","default":"white","transition":false,"requires":[{"sky-type":"atmosphere"}],"property-type":"data-constant"},"sky-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"transition":{"duration":{"type":"number","default":300,"minimum":0,"units":"milliseconds"},"delay":{"type":"number","default":0,"minimum":0,"units":"milliseconds"}},"property-type":{"data-driven":{"type":"property-type"},"color-ramp":{"type":"property-type"},"data-constant":{"type":"property-type"},"constant":{"type":"property-type"}},"promoteId":{"*":{"type":"string"}}}');function tt(e,...t){for(const i of t)for(const t in i)e[t]=i[t];return e}function it(e){return e instanceof Number||e instanceof String||e instanceof Boolean?e.valueOf():e}function rt(e){if(Array.isArray(e))return e.map(rt);if(e instanceof Object&&!(e instanceof Number||e instanceof String||e instanceof Boolean)){const t={};for(const i in e)t[i]=rt(e[i]);return t}return it(e)}class nt extends Error{constructor(e,t){super(t),this.message=t,this.key=e}}var ot=nt;class st{constructor(e,t=[]){this.parent=e,this.bindings={};for(const[e,i]of t)this.bindings[e]=i}concat(e){return new st(this,e)}get(e){if(this.bindings[e])return this.bindings[e];if(this.parent)return this.parent.get(e);throw new Error(`${e} not found in scope.`)}has(e){return!!this.bindings[e]||!!this.parent&&this.parent.has(e)}}var at=st;const lt={kind:"null"},ct={kind:"number"},ht={kind:"string"},ut={kind:"boolean"},dt={kind:"color"},pt={kind:"object"},ft={kind:"value"},mt={kind:"collator"},_t={kind:"formatted"},gt={kind:"resolvedImage"};function yt(e,t){return{kind:"array",itemType:e,N:t}}function xt(e){if("array"===e.kind){const t=xt(e.itemType);return"number"==typeof e.N?`array<${t}, ${e.N}>`:"value"===e.itemType.kind?"array":`array<${t}>`}return e.kind}const vt=[lt,ct,ht,ut,dt,_t,pt,yt(ft),gt];function bt(e,t){if("error"===t.kind)return null;if("array"===e.kind){if("array"===t.kind&&(0===t.N&&"value"===t.itemType.kind||!bt(e.itemType,t.itemType))&&("number"!=typeof e.N||e.N===t.N))return null}else{if(e.kind===t.kind)return null;if("value"===e.kind)for(const e of vt)if(!bt(e,t))return null}return`Expected ${xt(e)} but found ${xt(t)} instead.`}function wt(e,t){return t.some((t=>t.kind===e.kind))}function Tt(e,t){return t.some((t=>"null"===t?null===e:"array"===t?Array.isArray(e):"object"===t?e&&!Array.isArray(e)&&"object"==typeof e:t===typeof e))}var Et,St={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Mt(e){return(e=Math.round(e))<0?0:e>255?255:e}function At(e){return Mt("%"===e[e.length-1]?parseFloat(e)/100*255:parseInt(e))}function It(e){return(t="%"===e[e.length-1]?parseFloat(e)/100:parseFloat(e))<0?0:t>1?1:t;var t}function Ct(e,t,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?e+(t-e)*i*6:2*i<1?t:3*i<2?e+(t-e)*(2/3-i)*6:e}try{Et={}.parseCSSColor=function(e){var t,i=e.replace(/ /g,"").toLowerCase();if(i in St)return St[i].slice();if("#"===i[0])return 4===i.length?(t=parseInt(i.substr(1),16))>=0&&t<=4095?[(3840&t)>>4|(3840&t)>>8,240&t|(240&t)>>4,15&t|(15&t)<<4,1]:null:7===i.length&&(t=parseInt(i.substr(1),16))>=0&&t<=16777215?[(16711680&t)>>16,(65280&t)>>8,255&t,1]:null;var r=i.indexOf("("),n=i.indexOf(")");if(-1!==r&&n+1===i.length){var o=i.substr(0,r),s=i.substr(r+1,n-(r+1)).split(","),a=1;switch(o){case"rgba":if(4!==s.length)return null;a=It(s.pop());case"rgb":return 3!==s.length?null:[At(s[0]),At(s[1]),At(s[2]),a];case"hsla":if(4!==s.length)return null;a=It(s.pop());case"hsl":if(3!==s.length)return null;var l=(parseFloat(s[0])%360+360)%360/360,c=It(s[1]),h=It(s[2]),u=h<=.5?h*(c+1):h+c-h*c,d=2*h-u;return[Mt(255*Ct(d,u,l+1/3)),Mt(255*Ct(d,u,l)),Mt(255*Ct(d,u,l-1/3)),a];default:return null}}return null}}catch(e){}class zt{constructor(e,t,i,r=1){this.r=e,this.g=t,this.b=i,this.a=r}static parse(e){if(!e)return;if(e instanceof zt)return e;if("string"!=typeof e)return;const t=Et(e);return t?new zt(t[0]/255*t[3],t[1]/255*t[3],t[2]/255*t[3],t[3]):void 0}toString(){const[e,t,i,r]=this.toArray();return`rgba(${Math.round(e)},${Math.round(t)},${Math.round(i)},${r})`}toArray(){const{r:e,g:t,b:i,a:r}=this;return 0===r?[0,0,0,0]:[255*e/r,255*t/r,255*i/r,r]}toArray01(){const{r:e,g:t,b:i,a:r}=this;return 0===r?[0,0,0,0]:[e/r,t/r,i/r,r]}toArray01PremultipliedAlpha(){const{r:e,g:t,b:i,a:r}=this;return[e,t,i,r]}}zt.black=new zt(0,0,0,1),zt.white=new zt(1,1,1,1),zt.transparent=new zt(0,0,0,0),zt.red=new zt(1,0,0,1),zt.blue=new zt(0,0,1,1);var Pt=zt;class kt{constructor(e,t,i){this.sensitivity=e?t?"variant":"case":t?"accent":"base",this.locale=i,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,t){return this.collator.compare(e,t)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Dt{constructor(e,t,i,r,n){this.text=e.normalize?e.normalize():e,this.image=t,this.scale=i,this.fontStack=r,this.textColor=n}}class Lt{constructor(e){this.sections=e}static fromString(e){return new Lt([new Dt(e,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((e=>0!==e.text.length||e.image&&0!==e.image.name.length))}static factory(e){return e instanceof Lt?e:Lt.fromString(e)}toString(){return 0===this.sections.length?"":this.sections.map((e=>e.text)).join("")}serialize(){const e=["format"];for(const t of this.sections){if(t.image){e.push(["image",t.image.name]);continue}e.push(t.text);const i={};t.fontStack&&(i["text-font"]=["literal",t.fontStack.split(",")]),t.scale&&(i["font-scale"]=t.scale),t.textColor&&(i["text-color"]=["rgba"].concat(t.textColor.toArray())),e.push(i)}return e}}class Rt{constructor(e){this.name=e.name,this.available=e.available}toString(){return this.name}static fromString(e){return e?new Rt({name:e,available:!1}):null}serialize(){return["image",this.name]}}function Bt(e,t,i,r){return"number"==typeof e&&e>=0&&e<=255&&"number"==typeof t&&t>=0&&t<=255&&"number"==typeof i&&i>=0&&i<=255?void 0===r||"number"==typeof r&&r>=0&&r<=1?null:`Invalid rgba value [${[e,t,i,r].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${("number"==typeof r?[e,t,i,r]:[e,t,i]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Ot(e){if(null===e)return!0;if("string"==typeof e)return!0;if("boolean"==typeof e)return!0;if("number"==typeof e)return!0;if(e instanceof Pt)return!0;if(e instanceof kt)return!0;if(e instanceof Lt)return!0;if(e instanceof Rt)return!0;if(Array.isArray(e)){for(const t of e)if(!Ot(t))return!1;return!0}if("object"==typeof e){for(const t in e)if(!Ot(e[t]))return!1;return!0}return!1}function Ft(e){if(null===e)return lt;if("string"==typeof e)return ht;if("boolean"==typeof e)return ut;if("number"==typeof e)return ct;if(e instanceof Pt)return dt;if(e instanceof kt)return mt;if(e instanceof Lt)return _t;if(e instanceof Rt)return gt;if(Array.isArray(e)){const t=e.length;let i;for(const t of e){const e=Ft(t);if(i){if(i===e)continue;i=ft;break}i=e}return yt(i||ft,t)}return pt}function Ut(e){const t=typeof e;return null===e?"":"string"===t||"number"===t||"boolean"===t?String(e):e instanceof Pt||e instanceof Lt||e instanceof Rt?e.toString():JSON.stringify(e)}class Vt{constructor(e,t){this.type=e,this.value=t}static parse(e,t){if(2!==e.length)return t.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!Ot(e[1]))return t.error("invalid value");const i=e[1];let r=Ft(i);const n=t.expectedType;return"array"!==r.kind||0!==r.N||!n||"array"!==n.kind||"number"==typeof n.N&&0!==n.N||(r=n),new Vt(r,i)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}serialize(){return"array"===this.type.kind||"object"===this.type.kind?["literal",this.value]:this.value instanceof Pt?["rgba"].concat(this.value.toArray()):this.value instanceof Lt?this.value.serialize():this.value}}var Nt=Vt,jt=class{constructor(e){this.name="ExpressionEvaluationError",this.message=e}toJSON(){return this.message}};const Gt={string:ht,number:ct,boolean:ut,object:pt};class $t{constructor(e,t){this.type=e,this.args=t}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");let i,r=1;const n=e[0];if("array"===n){let n,o;if(e.length>2){const i=e[1];if("string"!=typeof i||!(i in Gt)||"object"===i)return t.error('The item type argument of "array" must be one of string, number, boolean',1);n=Gt[i],r++}else n=ft;if(e.length>3){if(null!==e[2]&&("number"!=typeof e[2]||e[2]<0||e[2]!==Math.floor(e[2])))return t.error('The length argument to "array" must be a positive integer literal',2);o=e[2],r++}i=yt(n,o)}else i=Gt[n];const o=[];for(;re.outputDefined()))}serialize(){const e=this.type,t=[e.kind];if("array"===e.kind){const i=e.itemType;if("string"===i.kind||"number"===i.kind||"boolean"===i.kind){t.push(i.kind);const r=e.N;("number"==typeof r||this.args.length>1)&&t.push(r)}}return t.concat(this.args.map((e=>e.serialize())))}}var Zt=$t;class qt{constructor(e){this.type=_t,this.sections=e}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");const i=e[1];if(!Array.isArray(i)&&"object"==typeof i)return t.error("First argument must be an image or text section.");const r=[];let n=!1;for(let i=1;i<=e.length-1;++i){const o=e[i];if(n&&"object"==typeof o&&!Array.isArray(o)){n=!1;let e=null;if(o["font-scale"]&&(e=t.parse(o["font-scale"],1,ct),!e))return null;let i=null;if(o["text-font"]&&(i=t.parse(o["text-font"],1,yt(ht)),!i))return null;let s=null;if(o["text-color"]&&(s=t.parse(o["text-color"],1,dt),!s))return null;const a=r[r.length-1];a.scale=e,a.font=i,a.textColor=s}else{const o=t.parse(e[i],1,ft);if(!o)return null;const s=o.type.kind;if("string"!==s&&"value"!==s&&"null"!==s&&"resolvedImage"!==s)return t.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");n=!0,r.push({content:o,scale:null,font:null,textColor:null})}}return new qt(r)}evaluate(e){return new Lt(this.sections.map((t=>{const i=t.content.evaluate(e);return Ft(i)===gt?new Dt("",i,null,null,null):new Dt(Ut(i),null,t.scale?t.scale.evaluate(e):null,t.font?t.font.evaluate(e).join(","):null,t.textColor?t.textColor.evaluate(e):null)})))}eachChild(e){for(const t of this.sections)e(t.content),t.scale&&e(t.scale),t.font&&e(t.font),t.textColor&&e(t.textColor)}outputDefined(){return!1}serialize(){const e=["format"];for(const t of this.sections){e.push(t.content.serialize());const i={};t.scale&&(i["font-scale"]=t.scale.serialize()),t.font&&(i["text-font"]=t.font.serialize()),t.textColor&&(i["text-color"]=t.textColor.serialize()),e.push(i)}return e}}class Wt{constructor(e){this.type=gt,this.input=e}static parse(e,t){if(2!==e.length)return t.error("Expected two arguments.");const i=t.parse(e[1],1,ht);return i?new Wt(i):t.error("No image name provided.")}evaluate(e){const t=this.input.evaluate(e),i=Rt.fromString(t);return i&&e.availableImages&&(i.available=e.availableImages.indexOf(t)>-1),i}eachChild(e){e(this.input)}outputDefined(){return!1}serialize(){return["image",this.input.serialize()]}}const Xt={"to-boolean":ut,"to-color":dt,"to-number":ct,"to-string":ht};class Ht{constructor(e,t){this.type=e,this.args=t}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");const i=e[0];if(("to-boolean"===i||"to-string"===i)&&2!==e.length)return t.error("Expected one argument.");const r=Xt[i],n=[];for(let i=1;i4?`Invalid rbga value ${JSON.stringify(t)}: expected an array containing either three or four numeric values.`:Bt(t[0],t[1],t[2],t[3]),!i))return new Pt(t[0]/255,t[1]/255,t[2]/255,t[3])}throw new jt(i||`Could not parse color from value '${"string"==typeof t?t:String(JSON.stringify(t))}'`)}if("number"===this.type.kind){let t=null;for(const i of this.args){if(t=i.evaluate(e),null===t)return 0;const r=Number(t);if(!isNaN(r))return r}throw new jt(`Could not convert ${JSON.stringify(t)} to number.`)}return"formatted"===this.type.kind?Lt.fromString(Ut(this.args[0].evaluate(e))):"resolvedImage"===this.type.kind?Rt.fromString(Ut(this.args[0].evaluate(e))):Ut(this.args[0].evaluate(e))}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every((e=>e.outputDefined()))}serialize(){if("formatted"===this.type.kind)return new qt([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if("resolvedImage"===this.type.kind)return new Wt(this.args[0]).serialize();const e=[`to-${this.type.kind}`];return this.eachChild((t=>{e.push(t.serialize())})),e}}var Kt=Ht;const Yt=["Unknown","Point","LineString","Polygon"];var Jt=class{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null,this.featureTileCoord=null,this.featureDistanceData=null}id(){return this.feature&&void 0!==this.feature.id?this.feature.id:null}geometryType(){return this.feature?"number"==typeof this.feature.type?Yt[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}distanceFromCenter(){if(this.featureTileCoord&&this.featureDistanceData){const e=this.featureDistanceData.center,t=this.featureDistanceData.scale,{x:i,y:r}=this.featureTileCoord;return this.featureDistanceData.bearing[0]*(i*t-e[0])+this.featureDistanceData.bearing[1]*(r*t-e[1])}return 0}parseColor(e){let t=this._parseColorCache[e];return t||(t=this._parseColorCache[e]=Pt.parse(e)),t}};class Qt{constructor(e,t,i,r){this.name=e,this.type=t,this._evaluate=i,this.args=r}evaluate(e){return this._evaluate(e,this.args)}eachChild(e){this.args.forEach(e)}outputDefined(){return!1}serialize(){return[this.name].concat(this.args.map((e=>e.serialize())))}static parse(e,t){const i=e[0],r=Qt.definitions[i];if(!r)return t.error(`Unknown expression "${i}". If you wanted a literal array, use ["literal", [...]].`,0);const n=Array.isArray(r)?r[0]:r.type,o=Array.isArray(r)?[[r[1],r[2]]]:r.overloads,s=o.filter((([t])=>!Array.isArray(t)||t.length===e.length-1));let a=null;for(const[r,o]of s){a=new Mi(t.registry,t.path,null,t.scope);const s=[];let l=!1;for(let t=1;t{return t=e,Array.isArray(t)?`(${t.map(xt).join(", ")})`:`(${xt(t.type)}...)`;var t})).join(" | "),r=[];for(let i=1;i=t[2]||e[1]<=t[1]||e[3]>=t[3])}function oi(e,t){const i=(180+e[0])/360,r=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+e[1]*Math.PI/360)))/360,n=Math.pow(2,t.z);return[Math.round(i*n*ii),Math.round(r*n*ii)]}function si(e,t,i){const r=e[0]-t[0],n=e[1]-t[1],o=e[0]-i[0],s=e[1]-i[1];return r*s-o*n==0&&r*o<=0&&n*s<=0}function ai(e,t){let i=!1;for(let s=0,a=t.length;s(r=e)[1]!=(o=a[t+1])[1]>r[1]&&r[0]<(o[0]-n[0])*(r[1]-n[1])/(o[1]-n[1])+n[0]&&(i=!i)}}var r,n,o;return i}function li(e,t){for(let i=0;i0&&a<0||s<0&&a>0}function hi(e,t,i){for(const c of i)for(let i=0;ii[2]){const t=.5*r;let n=e[0]-i[0]>t?-r:i[0]-e[0]>t?r:0;0===n&&(n=e[0]-i[2]>t?-r:i[2]-e[0]>t?r:0),e[0]+=n}ri(t,e)}function _i(e,t,i,r){const n=Math.pow(2,r.z)*ii,o=[r.x*ii,r.y*ii],s=[];if(!e)return s;for(const r of e)for(const e of r){const r=[e.x+o[0],e.y+o[1]];mi(r,t,i,n),s.push(r)}return s}function gi(e,t,i,r){const n=Math.pow(2,r.z)*ii,o=[r.x*ii,r.y*ii],s=[];if(!e)return s;for(const i of e){const e=[];for(const r of i){const i=[r.x+o[0],r.y+o[1]];ri(t,i),e.push(i)}s.push(e)}if(t[2]-t[0]<=n/2){(a=t)[0]=a[1]=1/0,a[2]=a[3]=-1/0;for(const e of s)for(const r of e)mi(r,t,i,n)}var a;return s}class yi{constructor(e,t){this.type=ut,this.geojson=e,this.geometries=t}static parse(e,t){if(2!==e.length)return t.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Ot(e[1])){const t=e[1];if("FeatureCollection"===t.type)for(let e=0;e{t&&!vi(e)&&(t=!1)})),t}function bi(e){if(e instanceof ei&&"feature-state"===e.name)return!1;let t=!0;return e.eachChild((e=>{t&&!bi(e)&&(t=!1)})),t}function wi(e,t){if(e instanceof ei&&t.indexOf(e.name)>=0)return!1;let i=!0;return e.eachChild((e=>{i&&!wi(e,t)&&(i=!1)})),i}class Ti{constructor(e,t){this.type=t.type,this.name=e,this.boundExpression=t}static parse(e,t){if(2!==e.length||"string"!=typeof e[1])return t.error("'var' expression requires exactly one string literal argument.");const i=e[1];return t.scope.has(i)?new Ti(i,t.scope.get(i)):t.error(`Unknown variable "${i}". Make sure "${i}" has been bound in an enclosing "let" expression before using it.`,1)}evaluate(e){return this.boundExpression.evaluate(e)}eachChild(){}outputDefined(){return!1}serialize(){return["var",this.name]}}var Ei=Ti;class Si{constructor(e,t=[],i,r=new at,n=[]){this.registry=e,this.path=t,this.key=t.map((e=>`[${e}]`)).join(""),this.scope=r,this.errors=n,this.expectedType=i}parse(e,t,i,r,n={}){return t?this.concat(t,i,r)._parse(e,n):this._parse(e,n)}_parse(e,t){function i(e,t,i){return"assert"===i?new Zt(t,[e]):"coerce"===i?new Kt(t,[e]):e}if(null!==e&&"string"!=typeof e&&"boolean"!=typeof e&&"number"!=typeof e||(e=["literal",e]),Array.isArray(e)){if(0===e.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const r=e[0];if("string"!=typeof r)return this.error(`Expression name must be a string, but found ${typeof r} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const n=this.registry[r];if(n){let r=n.parse(e,this);if(!r)return null;if(this.expectedType){const e=this.expectedType,n=r.type;if("string"!==e.kind&&"number"!==e.kind&&"boolean"!==e.kind&&"object"!==e.kind&&"array"!==e.kind||"value"!==n.kind)if("color"!==e.kind&&"formatted"!==e.kind&&"resolvedImage"!==e.kind||"value"!==n.kind&&"string"!==n.kind){if(this.checkSubtype(e,n))return null}else r=i(r,e,t.typeAnnotation||"coerce");else r=i(r,e,t.typeAnnotation||"assert")}if(!(r instanceof Nt)&&"resolvedImage"!==r.type.kind&&Ai(r)){const t=new Jt;try{r=new Nt(r.type,r.evaluate(t))}catch(e){return this.error(e.message),null}}return r}return this.error(`Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(void 0===e?"'undefined' value invalid. Use null instead.":"object"==typeof e?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof e} instead.`)}concat(e,t,i){const r="number"==typeof e?this.path.concat(e):this.path,n=i?this.scope.concat(i):this.scope;return new Si(this.registry,r,t||null,n,this.errors)}error(e,...t){const i=`${this.key}${t.map((e=>`[${e}]`)).join("")}`;this.errors.push(new ot(i,e))}checkSubtype(e,t){const i=bt(e,t);return i&&this.error(i),i}}var Mi=Si;function Ai(e){if(e instanceof Ei)return Ai(e.boundExpression);if(e instanceof ei&&"error"===e.name)return!1;if(e instanceof ti)return!1;if(e instanceof xi)return!1;const t=e instanceof Kt||e instanceof Zt;let i=!0;return e.eachChild((e=>{i=t?i&&Ai(e):i&&e instanceof Nt})),!!i&&vi(e)&&wi(e,["zoom","heatmap-density","line-progress","sky-radial-progress","accumulated","is-supported-script","pitch","distance-from-center"])}function Ii(e,t){const i=e.length-1;let r,n,o=0,s=i,a=0;for(;o<=s;)if(a=Math.floor((o+s)/2),r=e[a],n=e[a+1],r<=t){if(a===i||tt))throw new jt("Input is not a number.");s=a-1}return 0}class Ci{constructor(e,t,i){this.type=e,this.input=t,this.labels=[],this.outputs=[];for(const[e,t]of i)this.labels.push(e),this.outputs.push(t)}static parse(e,t){if(e.length-1<4)return t.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return t.error("Expected an even number of arguments.");const i=t.parse(e[1],1,ct);if(!i)return null;const r=[];let n=null;t.expectedType&&"value"!==t.expectedType.kind&&(n=t.expectedType);for(let i=1;i=o)return t.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',a);const c=t.parse(s,l,n);if(!c)return null;n=n||c.type,r.push([o,c])}return new Ci(n,i,r)}evaluate(e){const t=this.labels,i=this.outputs;if(1===t.length)return i[0].evaluate(e);const r=this.input.evaluate(e);if(r<=t[0])return i[0].evaluate(e);const n=t.length;return r>=t[n-1]?i[n-1].evaluate(e):i[Ii(t,r)].evaluate(e)}eachChild(e){e(this.input);for(const t of this.outputs)e(t)}outputDefined(){return this.outputs.every((e=>e.outputDefined()))}serialize(){const e=["step",this.input.serialize()];for(let t=0;t0&&e.push(this.labels[t]),e.push(this.outputs[t].serialize());return e}}var zi=Ci;function Pi(e,t,i){return e*(1-i)+t*i}var ki=Object.freeze({__proto__:null,array:function(e,t,i){return e.map(((e,r)=>Pi(e,t[r],i)))},color:function(e,t,i){return new Pt(Pi(e.r,t.r,i),Pi(e.g,t.g,i),Pi(e.b,t.b,i),Pi(e.a,t.a,i))},number:Pi});const Di=.95047,Li=1.08883,Ri=4/29,Bi=6/29,Oi=3*Bi*Bi,Fi=Bi*Bi*Bi,Ui=Math.PI/180,Vi=180/Math.PI;function Ni(e){return e>Fi?Math.pow(e,1/3):e/Oi+Ri}function ji(e){return e>Bi?e*e*e:Oi*(e-Ri)}function Gi(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function $i(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function Zi(e){const t=$i(e.r),i=$i(e.g),r=$i(e.b),n=Ni((.4124564*t+.3575761*i+.1804375*r)/Di),o=Ni((.2126729*t+.7151522*i+.072175*r)/1);return{l:116*o-16,a:500*(n-o),b:200*(o-Ni((.0193339*t+.119192*i+.9503041*r)/Li)),alpha:e.a}}function qi(e){let t=(e.l+16)/116,i=isNaN(e.a)?t:t+e.a/500,r=isNaN(e.b)?t:t-e.b/200;return t=1*ji(t),i=Di*ji(i),r=Li*ji(r),new Pt(Gi(3.2404542*i-1.5371385*t-.4985314*r),Gi(-.969266*i+1.8760108*t+.041556*r),Gi(.0556434*i-.2040259*t+1.0572252*r),e.alpha)}function Wi(e,t,i){const r=t-e;return e+i*(r>180||r<-180?r-360*Math.round(r/360):r)}const Xi={forward:Zi,reverse:qi,interpolate:function(e,t,i){return{l:Pi(e.l,t.l,i),a:Pi(e.a,t.a,i),b:Pi(e.b,t.b,i),alpha:Pi(e.alpha,t.alpha,i)}}},Hi={forward:function(e){const{l:t,a:i,b:r}=Zi(e),n=Math.atan2(r,i)*Vi;return{h:n<0?n+360:n,c:Math.sqrt(i*i+r*r),l:t,alpha:e.a}},reverse:function(e){const t=e.h*Ui,i=e.c;return qi({l:e.l,a:Math.cos(t)*i,b:Math.sin(t)*i,alpha:e.alpha})},interpolate:function(e,t,i){return{h:Wi(e.h,t.h,i),c:Pi(e.c,t.c,i),l:Pi(e.l,t.l,i),alpha:Pi(e.alpha,t.alpha,i)}}};var Ki=Object.freeze({__proto__:null,hcl:Hi,lab:Xi});class Yi{constructor(e,t,i,r,n){this.type=e,this.operator=t,this.interpolation=i,this.input=r,this.labels=[],this.outputs=[];for(const[e,t]of n)this.labels.push(e),this.outputs.push(t)}static interpolationFactor(e,t,i,r){let n=0;if("exponential"===e.name)n=Ji(t,e.base,i,r);else if("linear"===e.name)n=Ji(t,1,i,r);else if("cubic-bezier"===e.name){const o=e.controlPoints;n=new m(o[0],o[1],o[2],o[3]).solve(Ji(t,1,i,r))}return n}static parse(e,t){let[i,r,n,...o]=e;if(!Array.isArray(r)||0===r.length)return t.error("Expected an interpolation type expression.",1);if("linear"===r[0])r={name:"linear"};else if("exponential"===r[0]){const e=r[1];if("number"!=typeof e)return t.error("Exponential interpolation requires a numeric base.",1,1);r={name:"exponential",base:e}}else{if("cubic-bezier"!==r[0])return t.error(`Unknown interpolation type ${String(r[0])}`,1,0);{const e=r.slice(1);if(4!==e.length||e.some((e=>"number"!=typeof e||e<0||e>1)))return t.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);r={name:"cubic-bezier",controlPoints:e}}}if(e.length-1<4)return t.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return t.error("Expected an even number of arguments.");if(n=t.parse(n,2,ct),!n)return null;const s=[];let a=null;"interpolate-hcl"===i||"interpolate-lab"===i?a=dt:t.expectedType&&"value"!==t.expectedType.kind&&(a=t.expectedType);for(let e=0;e=i)return t.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',n);const c=t.parse(r,l,a);if(!c)return null;a=a||c.type,s.push([i,c])}return"number"===a.kind||"color"===a.kind||"array"===a.kind&&"number"===a.itemType.kind&&"number"==typeof a.N?new Yi(a,i,r,n,s):t.error(`Type ${xt(a)} is not interpolatable.`)}evaluate(e){const t=this.labels,i=this.outputs;if(1===t.length)return i[0].evaluate(e);const r=this.input.evaluate(e);if(r<=t[0])return i[0].evaluate(e);const n=t.length;if(r>=t[n-1])return i[n-1].evaluate(e);const o=Ii(t,r),s=Yi.interpolationFactor(this.interpolation,r,t[o],t[o+1]),a=i[o].evaluate(e),l=i[o+1].evaluate(e);return"interpolate"===this.operator?ki[this.type.kind.toLowerCase()](a,l,s):"interpolate-hcl"===this.operator?Hi.reverse(Hi.interpolate(Hi.forward(a),Hi.forward(l),s)):Xi.reverse(Xi.interpolate(Xi.forward(a),Xi.forward(l),s))}eachChild(e){e(this.input);for(const t of this.outputs)e(t)}outputDefined(){return this.outputs.every((e=>e.outputDefined()))}serialize(){let e;e="linear"===this.interpolation.name?["linear"]:"exponential"===this.interpolation.name?1===this.interpolation.base?["linear"]:["exponential",this.interpolation.base]:["cubic-bezier"].concat(this.interpolation.controlPoints);const t=[this.operator,e,this.input.serialize()];for(let e=0;ebt(r,e.type)));return new er(o?ft:i,n)}evaluate(e){let t,i=null,r=0;for(const n of this.args){if(r++,i=n.evaluate(e),i&&i instanceof Rt&&!i.available&&(t||(t=i),i=null,r===this.args.length))return t;if(null!==i)break}return i}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every((e=>e.outputDefined()))}serialize(){const e=["coalesce"];return this.eachChild((t=>{e.push(t.serialize())})),e}}var tr=er;class ir{constructor(e,t){this.type=t.type,this.bindings=[].concat(e),this.result=t}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(const t of this.bindings)e(t[1]);e(this.result)}static parse(e,t){if(e.length<4)return t.error(`Expected at least 3 arguments, but found ${e.length-1} instead.`);const i=[];for(let r=1;r=i.length)throw new jt(`Array index out of bounds: ${t} > ${i.length-1}.`);if(t!==Math.floor(t))throw new jt(`Array index must be an integer, but found ${t} instead.`);return i[t]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}serialize(){return["at",this.index.serialize(),this.input.serialize()]}}var or=nr;class sr{constructor(e,t){this.type=ut,this.needle=e,this.haystack=t}static parse(e,t){if(3!==e.length)return t.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,ft),r=t.parse(e[2],2,ft);return i&&r?wt(i.type,[ut,ht,ct,lt,ft])?new sr(i,r):t.error(`Expected first argument to be of type boolean, string, number or null, but found ${xt(i.type)} instead`):null}evaluate(e){const t=this.needle.evaluate(e),i=this.haystack.evaluate(e);if(null==i)return!1;if(!Tt(t,["boolean","string","number","null"]))throw new jt(`Expected first argument to be of type boolean, string, number or null, but found ${xt(Ft(t))} instead.`);if(!Tt(i,["string","array"]))throw new jt(`Expected second argument to be of type array or string, but found ${xt(Ft(i))} instead.`);return i.indexOf(t)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}serialize(){return["in",this.needle.serialize(),this.haystack.serialize()]}}var ar=sr;class lr{constructor(e,t,i){this.type=ct,this.needle=e,this.haystack=t,this.fromIndex=i}static parse(e,t){if(e.length<=2||e.length>=5)return t.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,ft),r=t.parse(e[2],2,ft);if(!i||!r)return null;if(!wt(i.type,[ut,ht,ct,lt,ft]))return t.error(`Expected first argument to be of type boolean, string, number or null, but found ${xt(i.type)} instead`);if(4===e.length){const n=t.parse(e[3],3,ct);return n?new lr(i,r,n):null}return new lr(i,r)}evaluate(e){const t=this.needle.evaluate(e),i=this.haystack.evaluate(e);if(!Tt(t,["boolean","string","number","null"]))throw new jt(`Expected first argument to be of type boolean, string, number or null, but found ${xt(Ft(t))} instead.`);if(!Tt(i,["string","array"]))throw new jt(`Expected second argument to be of type array or string, but found ${xt(Ft(i))} instead.`);if(this.fromIndex){const r=this.fromIndex.evaluate(e);return i.indexOf(t,r)}return i.indexOf(t)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}serialize(){if(null!=this.fromIndex&&void 0!==this.fromIndex){const e=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),e]}return["index-of",this.needle.serialize(),this.haystack.serialize()]}}var cr=lr;class hr{constructor(e,t,i,r,n,o){this.inputType=e,this.type=t,this.input=i,this.cases=r,this.outputs=n,this.otherwise=o}static parse(e,t){if(e.length<5)return t.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return t.error("Expected an even number of arguments.");let i,r;t.expectedType&&"value"!==t.expectedType.kind&&(r=t.expectedType);const n={},o=[];for(let s=2;sNumber.MAX_SAFE_INTEGER)return c.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if("number"==typeof e&&Math.floor(e)!==e)return c.error("Numeric branch labels must be integer values.");if(i){if(c.checkSubtype(i,Ft(e)))return null}else i=Ft(e);if(void 0!==n[String(e)])return c.error("Branch labels must be unique.");n[String(e)]=o.length}const h=t.parse(l,s,r);if(!h)return null;r=r||h.type,o.push(h)}const s=t.parse(e[1],1,ft);if(!s)return null;const a=t.parse(e[e.length-1],e.length-1,r);return a?"value"!==s.type.kind&&t.concat(1).checkSubtype(i,s.type)?null:new hr(i,r,s,n,o,a):null}evaluate(e){const t=this.input.evaluate(e);return(Ft(t)===this.inputType&&this.outputs[this.cases[t]]||this.otherwise).evaluate(e)}eachChild(e){e(this.input),this.outputs.forEach(e),e(this.otherwise)}outputDefined(){return this.outputs.every((e=>e.outputDefined()))&&this.otherwise.outputDefined()}serialize(){const e=["match",this.input.serialize()],t=Object.keys(this.cases).sort(),i=[],r={};for(const e of t){const t=r[this.cases[e]];void 0===t?(r[this.cases[e]]=i.length,i.push([this.cases[e],[e]])):i[t][1].push(e)}const n=e=>"number"===this.inputType.kind?Number(e):e;for(const[t,r]of i)e.push(1===r.length?n(r[0]):r.map(n)),e.push(this.outputs[t].serialize());return e.push(this.otherwise.serialize()),e}}var ur=hr;class dr{constructor(e,t,i){this.type=e,this.branches=t,this.otherwise=i}static parse(e,t){if(e.length<4)return t.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return t.error("Expected an odd number of arguments.");let i;t.expectedType&&"value"!==t.expectedType.kind&&(i=t.expectedType);const r=[];for(let n=1;nt.outputDefined()))&&this.otherwise.outputDefined()}serialize(){const e=["case"];return this.eachChild((t=>{e.push(t.serialize())})),e}}var pr=dr;class fr{constructor(e,t,i,r){this.type=e,this.input=t,this.beginIndex=i,this.endIndex=r}static parse(e,t){if(e.length<=2||e.length>=5)return t.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,ft),r=t.parse(e[2],2,ct);if(!i||!r)return null;if(!wt(i.type,[yt(ft),ht,ft]))return t.error(`Expected first argument to be of type array or string, but found ${xt(i.type)} instead`);if(4===e.length){const n=t.parse(e[3],3,ct);return n?new fr(i.type,i,r,n):null}return new fr(i.type,i,r)}evaluate(e){const t=this.input.evaluate(e),i=this.beginIndex.evaluate(e);if(!Tt(t,["string","array"]))throw new jt(`Expected first argument to be of type array or string, but found ${xt(Ft(t))} instead.`);if(this.endIndex){const r=this.endIndex.evaluate(e);return t.slice(i,r)}return t.slice(i)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}serialize(){if(null!=this.endIndex&&void 0!==this.endIndex){const e=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),e]}return["slice",this.input.serialize(),this.beginIndex.serialize()]}}var mr=fr;function _r(e,t){return"=="===e||"!="===e?"boolean"===t.kind||"string"===t.kind||"number"===t.kind||"null"===t.kind||"value"===t.kind:"string"===t.kind||"number"===t.kind||"value"===t.kind}function gr(e,t,i,r){return 0===r.compare(t,i)}function yr(e,t,i){const r="=="!==e&&"!="!==e;return class n{constructor(e,t,i){this.type=ut,this.lhs=e,this.rhs=t,this.collator=i,this.hasUntypedArgument="value"===e.type.kind||"value"===t.type.kind}static parse(e,t){if(3!==e.length&&4!==e.length)return t.error("Expected two or three arguments.");const i=e[0];let o=t.parse(e[1],1,ft);if(!o)return null;if(!_r(i,o.type))return t.concat(1).error(`"${i}" comparisons are not supported for type '${xt(o.type)}'.`);let s=t.parse(e[2],2,ft);if(!s)return null;if(!_r(i,s.type))return t.concat(2).error(`"${i}" comparisons are not supported for type '${xt(s.type)}'.`);if(o.type.kind!==s.type.kind&&"value"!==o.type.kind&&"value"!==s.type.kind)return t.error(`Cannot compare types '${xt(o.type)}' and '${xt(s.type)}'.`);r&&("value"===o.type.kind&&"value"!==s.type.kind?o=new Zt(s.type,[o]):"value"!==o.type.kind&&"value"===s.type.kind&&(s=new Zt(o.type,[s])));let a=null;if(4===e.length){if("string"!==o.type.kind&&"string"!==s.type.kind&&"value"!==o.type.kind&&"value"!==s.type.kind)return t.error("Cannot use collator to compare non-string types.");if(a=t.parse(e[3],3,mt),!a)return null}return new n(o,s,a)}evaluate(n){const o=this.lhs.evaluate(n),s=this.rhs.evaluate(n);if(r&&this.hasUntypedArgument){const t=Ft(o),i=Ft(s);if(t.kind!==i.kind||"string"!==t.kind&&"number"!==t.kind)throw new jt(`Expected arguments for "${e}" to be (string, string) or (number, number), but found (${t.kind}, ${i.kind}) instead.`)}if(this.collator&&!r&&this.hasUntypedArgument){const e=Ft(o),i=Ft(s);if("string"!==e.kind||"string"!==i.kind)return t(n,o,s)}return this.collator?i(n,o,s,this.collator.evaluate(n)):t(n,o,s)}eachChild(e){e(this.lhs),e(this.rhs),this.collator&&e(this.collator)}outputDefined(){return!0}serialize(){const t=[e];return this.eachChild((e=>{t.push(e.serialize())})),t}}}const xr=yr("==",(function(e,t,i){return t===i}),gr),vr=yr("!=",(function(e,t,i){return t!==i}),(function(e,t,i,r){return!gr(0,t,i,r)})),br=yr("<",(function(e,t,i){return t",(function(e,t,i){return t>i}),(function(e,t,i,r){return r.compare(t,i)>0})),Tr=yr("<=",(function(e,t,i){return t<=i}),(function(e,t,i,r){return r.compare(t,i)<=0})),Er=yr(">=",(function(e,t,i){return t>=i}),(function(e,t,i,r){return r.compare(t,i)>=0}));class Sr{constructor(e,t,i,r,n,o){this.type=ht,this.number=e,this.locale=t,this.currency=i,this.unit=r,this.minFractionDigits=n,this.maxFractionDigits=o}static parse(e,t){if(3!==e.length)return t.error("Expected two arguments.");const i=t.parse(e[1],1,ct);if(!i)return null;const r=e[2];if("object"!=typeof r||Array.isArray(r))return t.error("NumberFormat options argument must be an object.");let n=null;if(r.locale&&(n=t.parse(r.locale,1,ht),!n))return null;let o=null;if(r.currency&&(o=t.parse(r.currency,1,ht),!o))return null;let s=null;if(r.unit&&(s=t.parse(r.unit,1,ht),!s))return null;let a=null;if(r["min-fraction-digits"]&&(a=t.parse(r["min-fraction-digits"],1,ct),!a))return null;let l=null;return r["max-fraction-digits"]&&(l=t.parse(r["max-fraction-digits"],1,ct),!l)?null:new Sr(i,n,o,s,a,l)}evaluate(e){return new Intl.NumberFormat(this.locale?this.locale.evaluate(e):[],{style:(this.currency?"currency":this.unit&&"unit")||"decimal",currency:this.currency?this.currency.evaluate(e):void 0,unit:this.unit?this.unit.evaluate(e):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(e):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(e):void 0}).format(this.number.evaluate(e))}eachChild(e){e(this.number),this.locale&&e(this.locale),this.currency&&e(this.currency),this.unit&&e(this.unit),this.minFractionDigits&&e(this.minFractionDigits),this.maxFractionDigits&&e(this.maxFractionDigits)}outputDefined(){return!1}serialize(){const e={};return this.locale&&(e.locale=this.locale.serialize()),this.currency&&(e.currency=this.currency.serialize()),this.unit&&(e.unit=this.unit.serialize()),this.minFractionDigits&&(e["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(e["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),e]}}class Mr{constructor(e){this.type=ct,this.input=e}static parse(e,t){if(2!==e.length)return t.error(`Expected 1 argument, but found ${e.length-1} instead.`);const i=t.parse(e[1],1);return i?"array"!==i.type.kind&&"string"!==i.type.kind&&"value"!==i.type.kind?t.error(`Expected argument of type string or array, but found ${xt(i.type)} instead.`):new Mr(i):null}evaluate(e){const t=this.input.evaluate(e);if("string"==typeof t)return t.length;if(Array.isArray(t))return t.length;throw new jt(`Expected value to be of type string or array, but found ${xt(Ft(t))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}serialize(){const e=["length"];return this.eachChild((t=>{e.push(t.serialize())})),e}}const Ar={"==":xr,"!=":vr,">":wr,"<":br,">=":Er,"<=":Tr,array:Zt,at:or,boolean:Zt,case:pr,coalesce:tr,collator:ti,format:qt,image:Wt,in:ar,"index-of":cr,interpolate:Qi,"interpolate-hcl":Qi,"interpolate-lab":Qi,length:Mr,let:rr,literal:Nt,match:ur,number:Zt,"number-format":Sr,object:Zt,slice:mr,step:zi,string:Zt,"to-boolean":Kt,"to-color":Kt,"to-number":Kt,"to-string":Kt,var:Ei,within:xi};function Ir(e,[t,i,r,n]){t=t.evaluate(e),i=i.evaluate(e),r=r.evaluate(e);const o=n?n.evaluate(e):1,s=Bt(t,i,r,o);if(s)throw new jt(s);return new Pt(t/255*o,i/255*o,r/255*o,o)}function Cr(e,t){return e in t}function zr(e,t){const i=t[e];return void 0===i?null:i}function Pr(e){return{type:e}}ei.register(Ar,{error:[{kind:"error"},[ht],(e,[t])=>{throw new jt(t.evaluate(e))}],typeof:[ht,[ft],(e,[t])=>xt(Ft(t.evaluate(e)))],"to-rgba":[yt(ct,4),[dt],(e,[t])=>t.evaluate(e).toArray()],rgb:[dt,[ct,ct,ct],Ir],rgba:[dt,[ct,ct,ct,ct],Ir],has:{type:ut,overloads:[[[ht],(e,[t])=>Cr(t.evaluate(e),e.properties())],[[ht,pt],(e,[t,i])=>Cr(t.evaluate(e),i.evaluate(e))]]},get:{type:ft,overloads:[[[ht],(e,[t])=>zr(t.evaluate(e),e.properties())],[[ht,pt],(e,[t,i])=>zr(t.evaluate(e),i.evaluate(e))]]},"feature-state":[ft,[ht],(e,[t])=>zr(t.evaluate(e),e.featureState||{})],properties:[pt,[],e=>e.properties()],"geometry-type":[ht,[],e=>e.geometryType()],id:[ft,[],e=>e.id()],zoom:[ct,[],e=>e.globals.zoom],pitch:[ct,[],e=>e.globals.pitch||0],"distance-from-center":[ct,[],e=>e.distanceFromCenter()],"heatmap-density":[ct,[],e=>e.globals.heatmapDensity||0],"line-progress":[ct,[],e=>e.globals.lineProgress||0],"sky-radial-progress":[ct,[],e=>e.globals.skyRadialProgress||0],accumulated:[ft,[],e=>void 0===e.globals.accumulated?null:e.globals.accumulated],"+":[ct,Pr(ct),(e,t)=>{let i=0;for(const r of t)i+=r.evaluate(e);return i}],"*":[ct,Pr(ct),(e,t)=>{let i=1;for(const r of t)i*=r.evaluate(e);return i}],"-":{type:ct,overloads:[[[ct,ct],(e,[t,i])=>t.evaluate(e)-i.evaluate(e)],[[ct],(e,[t])=>-t.evaluate(e)]]},"/":[ct,[ct,ct],(e,[t,i])=>t.evaluate(e)/i.evaluate(e)],"%":[ct,[ct,ct],(e,[t,i])=>t.evaluate(e)%i.evaluate(e)],ln2:[ct,[],()=>Math.LN2],pi:[ct,[],()=>Math.PI],e:[ct,[],()=>Math.E],"^":[ct,[ct,ct],(e,[t,i])=>Math.pow(t.evaluate(e),i.evaluate(e))],sqrt:[ct,[ct],(e,[t])=>Math.sqrt(t.evaluate(e))],log10:[ct,[ct],(e,[t])=>Math.log(t.evaluate(e))/Math.LN10],ln:[ct,[ct],(e,[t])=>Math.log(t.evaluate(e))],log2:[ct,[ct],(e,[t])=>Math.log(t.evaluate(e))/Math.LN2],sin:[ct,[ct],(e,[t])=>Math.sin(t.evaluate(e))],cos:[ct,[ct],(e,[t])=>Math.cos(t.evaluate(e))],tan:[ct,[ct],(e,[t])=>Math.tan(t.evaluate(e))],asin:[ct,[ct],(e,[t])=>Math.asin(t.evaluate(e))],acos:[ct,[ct],(e,[t])=>Math.acos(t.evaluate(e))],atan:[ct,[ct],(e,[t])=>Math.atan(t.evaluate(e))],min:[ct,Pr(ct),(e,t)=>Math.min(...t.map((t=>t.evaluate(e))))],max:[ct,Pr(ct),(e,t)=>Math.max(...t.map((t=>t.evaluate(e))))],abs:[ct,[ct],(e,[t])=>Math.abs(t.evaluate(e))],round:[ct,[ct],(e,[t])=>{const i=t.evaluate(e);return i<0?-Math.round(-i):Math.round(i)}],floor:[ct,[ct],(e,[t])=>Math.floor(t.evaluate(e))],ceil:[ct,[ct],(e,[t])=>Math.ceil(t.evaluate(e))],"filter-==":[ut,[ht,ft],(e,[t,i])=>e.properties()[t.value]===i.value],"filter-id-==":[ut,[ft],(e,[t])=>e.id()===t.value],"filter-type-==":[ut,[ht],(e,[t])=>e.geometryType()===t.value],"filter-<":[ut,[ht,ft],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r{const i=e.id(),r=t.value;return typeof i==typeof r&&i":[ut,[ht,ft],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r>n}],"filter-id->":[ut,[ft],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i>r}],"filter-<=":[ut,[ht,ft],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r<=n}],"filter-id-<=":[ut,[ft],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i<=r}],"filter->=":[ut,[ht,ft],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r>=n}],"filter-id->=":[ut,[ft],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i>=r}],"filter-has":[ut,[ft],(e,[t])=>t.value in e.properties()],"filter-has-id":[ut,[],e=>null!==e.id()&&void 0!==e.id()],"filter-type-in":[ut,[yt(ht)],(e,[t])=>t.value.indexOf(e.geometryType())>=0],"filter-id-in":[ut,[yt(ft)],(e,[t])=>t.value.indexOf(e.id())>=0],"filter-in-small":[ut,[ht,yt(ft)],(e,[t,i])=>i.value.indexOf(e.properties()[t.value])>=0],"filter-in-large":[ut,[ht,yt(ft)],(e,[t,i])=>function(e,t,i,r){for(;i<=r;){const n=i+r>>1;if(t[n]===e)return!0;t[n]>e?r=n-1:i=n+1}return!1}(e.properties()[t.value],i.value,0,i.value.length-1)],all:{type:ut,overloads:[[[ut,ut],(e,[t,i])=>t.evaluate(e)&&i.evaluate(e)],[Pr(ut),(e,t)=>{for(const i of t)if(!i.evaluate(e))return!1;return!0}]]},any:{type:ut,overloads:[[[ut,ut],(e,[t,i])=>t.evaluate(e)||i.evaluate(e)],[Pr(ut),(e,t)=>{for(const i of t)if(i.evaluate(e))return!0;return!1}]]},"!":[ut,[ut],(e,[t])=>!t.evaluate(e)],"is-supported-script":[ut,[ht],(e,[t])=>{const i=e.globals&&e.globals.isSupportedScript;return!i||i(t.evaluate(e))}],upcase:[ht,[ht],(e,[t])=>t.evaluate(e).toUpperCase()],downcase:[ht,[ht],(e,[t])=>t.evaluate(e).toLowerCase()],concat:[ht,Pr(ft),(e,t)=>t.map((t=>Ut(t.evaluate(e)))).join("")],"resolved-locale":[ht,[mt],(e,[t])=>t.evaluate(e).resolvedLocale()]});var kr=Ar;function Dr(e){return{result:"success",value:e}}function Lr(e){return{result:"error",value:e}}function Rr(e){return"data-driven"===e["property-type"]}function Br(e){return!!e.expression&&e.expression.parameters.indexOf("zoom")>-1}function Or(e){return!!e.expression&&e.expression.interpolated}function Fr(e){return e instanceof Number?"number":e instanceof String?"string":e instanceof Boolean?"boolean":Array.isArray(e)?"array":null===e?"null":typeof e}function Ur(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function Vr(e){return e}function Nr(e,t){const i="color"===t.type,r=e.stops&&"object"==typeof e.stops[0][0],n=r||!(r||void 0!==e.property),o=e.type||(Or(t)?"exponential":"interval");if(i&&((e=tt({},e)).stops&&(e.stops=e.stops.map((e=>[e[0],Pt.parse(e[1])]))),e.default=Pt.parse(e.default?e.default:t.default)),e.colorSpace&&"rgb"!==e.colorSpace&&!Ki[e.colorSpace])throw new Error(`Unknown color space: ${e.colorSpace}`);let s,a,l;if("exponential"===o)s=Zr;else if("interval"===o)s=$r;else if("categorical"===o){s=Gr,a=Object.create(null);for(const t of e.stops)a[t[0]]=t[1];l=typeof e.stops[0][0]}else{if("identity"!==o)throw new Error(`Unknown function type "${o}"`);s=qr}if(r){const i={},r=[];for(let t=0;te[0])),evaluate:({zoom:i},r)=>Zr({stops:n,base:e.base},t,i).evaluate(i,r)}}if(n){const i="exponential"===o?{name:"exponential",base:void 0!==e.base?e.base:1}:null;return{kind:"camera",interpolationType:i,interpolationFactor:Qi.interpolationFactor.bind(void 0,i),zoomStops:e.stops.map((e=>e[0])),evaluate:({zoom:i})=>s(e,t,i,a,l)}}return{kind:"source",evaluate(i,r){const n=r&&r.properties?r.properties[e.property]:void 0;return void 0===n?jr(e.default,t.default):s(e,t,n,a,l)}}}function jr(e,t,i){return void 0!==e?e:void 0!==t?t:void 0!==i?i:void 0}function Gr(e,t,i,r,n){return jr(typeof i===n?r[i]:void 0,e.default,t.default)}function $r(e,t,i){if("number"!==Fr(i))return jr(e.default,t.default);const r=e.stops.length;if(1===r)return e.stops[0][1];if(i<=e.stops[0][0])return e.stops[0][1];if(i>=e.stops[r-1][0])return e.stops[r-1][1];const n=Ii(e.stops.map((e=>e[0])),i);return e.stops[n][1]}function Zr(e,t,i){const r=void 0!==e.base?e.base:1;if("number"!==Fr(i))return jr(e.default,t.default);const n=e.stops.length;if(1===n)return e.stops[0][1];if(i<=e.stops[0][0])return e.stops[0][1];if(i>=e.stops[n-1][0])return e.stops[n-1][1];const o=Ii(e.stops.map((e=>e[0])),i),s=function(e,t,i,r){const n=r-i,o=e-i;return 0===n?0:1===t?o/n:(Math.pow(t,o)-1)/(Math.pow(t,n)-1)}(i,r,e.stops[o][0],e.stops[o+1][0]),a=e.stops[o][1],l=e.stops[o+1][1];let c=ki[t.type]||Vr;if(e.colorSpace&&"rgb"!==e.colorSpace){const t=Ki[e.colorSpace];c=(e,i)=>t.reverse(t.interpolate(t.forward(e),t.forward(i),s))}return"function"==typeof a.evaluate?{evaluate(...e){const t=a.evaluate.apply(void 0,e),i=l.evaluate.apply(void 0,e);if(void 0!==t&&void 0!==i)return c(t,i,s)}}:c(a,l,s)}function qr(e,t,i){return"color"===t.type?i=Pt.parse(i):"formatted"===t.type?i=Lt.fromString(i.toString()):"resolvedImage"===t.type?i=Rt.fromString(i.toString()):Fr(i)===t.type||"enum"===t.type&&t.values[i]||(i=void 0),jr(i,e.default,t.default)}class Wr{constructor(e,t){this.expression=e,this._warningHistory={},this._evaluator=new Jt,this._defaultValue=t?function(e){return"color"===e.type&&(Ur(e.default)||Array.isArray(e.default))?new Pt(0,0,0,0):"color"===e.type?Pt.parse(e.default)||null:void 0===e.default?null:e.default}(t):null,this._enumValues=t&&"enum"===t.type?t.values:null}evaluateWithoutErrorHandling(e,t,i,r,n,o,s,a){return this._evaluator.globals=e,this._evaluator.feature=t,this._evaluator.featureState=i,this._evaluator.canonical=r||null,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=o,this._evaluator.featureTileCoord=s||null,this._evaluator.featureDistanceData=a||null,this.expression.evaluate(this._evaluator)}evaluate(e,t,i,r,n,o,s,a){this._evaluator.globals=e,this._evaluator.feature=t||null,this._evaluator.featureState=i||null,this._evaluator.canonical=r||null,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=o||null,this._evaluator.featureTileCoord=s||null,this._evaluator.featureDistanceData=a||null;try{const e=this.expression.evaluate(this._evaluator);if(null==e||"number"==typeof e&&e!=e)return this._defaultValue;if(this._enumValues&&!(e in this._enumValues))throw new jt(`Expected value to be one of ${Object.keys(this._enumValues).map((e=>JSON.stringify(e))).join(", ")}, but found ${JSON.stringify(e)} instead.`);return e}catch(e){return this._warningHistory[e.message]||(this._warningHistory[e.message]=!0,"undefined"!=typeof console&&console.warn(e.message)),this._defaultValue}}}function Xr(e){return Array.isArray(e)&&e.length>0&&"string"==typeof e[0]&&e[0]in kr}function Hr(e,t){const i=new Mi(kr,[],t?function(e){const t={color:dt,string:ht,number:ct,enum:ht,boolean:ut,formatted:_t,resolvedImage:gt};return"array"===e.type?yt(t[e.value]||ft,e.length):t[e.type]}(t):void 0),r=i.parse(e,void 0,void 0,void 0,t&&"string"===t.type?{typeAnnotation:"coerce"}:void 0);return r?Dr(new Wr(r,t)):Lr(i.errors)}class Kr{constructor(e,t){this.kind=e,this._styleExpression=t,this.isStateDependent="constant"!==e&&!bi(t.expression)}evaluateWithoutErrorHandling(e,t,i,r,n,o){return this._styleExpression.evaluateWithoutErrorHandling(e,t,i,r,n,o)}evaluate(e,t,i,r,n,o){return this._styleExpression.evaluate(e,t,i,r,n,o)}}class Yr{constructor(e,t,i,r){this.kind=e,this.zoomStops=i,this._styleExpression=t,this.isStateDependent="camera"!==e&&!bi(t.expression),this.interpolationType=r}evaluateWithoutErrorHandling(e,t,i,r,n,o){return this._styleExpression.evaluateWithoutErrorHandling(e,t,i,r,n,o)}evaluate(e,t,i,r,n,o){return this._styleExpression.evaluate(e,t,i,r,n,o)}interpolationFactor(e,t,i){return this.interpolationType?Qi.interpolationFactor(this.interpolationType,e,t,i):0}}function Jr(e,t){if("error"===(e=Hr(e,t)).result)return e;const i=e.value.expression,r=vi(i);if(!r&&!Rr(t))return Lr([new ot("","data expressions not supported")]);const n=wi(i,["zoom","pitch","distance-from-center"]);if(!n&&!Br(t))return Lr([new ot("","zoom expressions not supported")]);const o=en(i);return o||n?o instanceof ot?Lr([o]):o instanceof Qi&&!Or(t)?Lr([new ot("",'"interpolate" expressions cannot be used with this property')]):Dr(o?new Yr(r?"camera":"composite",e.value,o.labels,o instanceof Qi?o.interpolation:void 0):new Kr(r?"constant":"source",e.value)):Lr([new ot("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class Qr{constructor(e,t){this._parameters=e,this._specification=t,tt(this,Nr(this._parameters,this._specification))}static deserialize(e){return new Qr(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function en(e){let t=null;if(e instanceof rr)t=en(e.result);else if(e instanceof tr){for(const i of e.args)if(t=en(i),t)break}else(e instanceof zi||e instanceof Qi)&&e.input instanceof ei&&"zoom"===e.input.name&&(t=e);return t instanceof ot||e.eachChild((e=>{const i=en(e);i instanceof ot?t=i:!t&&i?t=new ot("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):t&&i&&t!==i&&(t=new ot("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))})),t}class tn{constructor(e,t,i,r){this.message=(e?`${e}: `:"")+i,r&&(this.identifier=r),null!=t&&t.__line__&&(this.line=t.__line__)}}function rn(e){const t=e.key,i=e.value,r=e.valueSpec||{},n=e.objectElementValidators||{},o=e.style,s=e.styleSpec;let a=[];const l=Fr(i);if("object"!==l)return[new tn(t,i,`object expected, ${l} found`)];for(const e in i){const l=e.split(".")[0];let c;n[l]?c=n[l]:r[l]?c=On:n["*"]?c=n["*"]:r["*"]&&(c=On),c?a=a.concat(c({key:(t?`${t}.`:t)+e,value:i[e],valueSpec:r[l]||r["*"],style:o,styleSpec:s,object:i,objectKey:e},i)):a.push(new tn(t,i[e],`unknown property "${e}"`))}for(const e in r)n[e]||r[e].required&&void 0===r[e].default&&void 0===i[e]&&a.push(new tn(t,i,`missing required property "${e}"`));return a}function nn(e){const t=e.value,i=e.valueSpec,r=e.style,n=e.styleSpec,o=e.key,s=e.arrayElementValidator||On;if("array"!==Fr(t))return[new tn(o,t,`array expected, ${Fr(t)} found`)];if(i.length&&t.length!==i.length)return[new tn(o,t,`array length ${i.length} expected, length ${t.length} found`)];if(i["min-length"]&&t.lengthn)return[new tn(t,i,`${i} is greater than the maximum value ${n}`)]}return[]}function sn(e){const t=e.valueSpec,i=it(e.value.type);let r,n,o,s={};const a="categorical"!==i&&void 0===e.value.property,l=!a,c="array"===Fr(e.value.stops)&&"array"===Fr(e.value.stops[0])&&"object"===Fr(e.value.stops[0][0]),h=rn({key:e.key,value:e.value,valueSpec:e.styleSpec.function,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{stops:function(e){if("identity"===i)return[new tn(e.key,e.value,'identity function may not have a "stops" property')];let t=[];const r=e.value;return t=t.concat(nn({key:e.key,value:r,valueSpec:e.valueSpec,style:e.style,styleSpec:e.styleSpec,arrayElementValidator:u})),"array"===Fr(r)&&0===r.length&&t.push(new tn(e.key,r,"array must have at least one stop")),t},default:function(e){return On({key:e.key,value:e.value,valueSpec:t,style:e.style,styleSpec:e.styleSpec})}}});return"identity"===i&&a&&h.push(new tn(e.key,e.value,'missing required property "property"')),"identity"===i||e.value.stops||h.push(new tn(e.key,e.value,'missing required property "stops"')),"exponential"===i&&e.valueSpec.expression&&!Or(e.valueSpec)&&h.push(new tn(e.key,e.value,"exponential functions not supported")),e.styleSpec.$version>=8&&(l&&!Rr(e.valueSpec)?h.push(new tn(e.key,e.value,"property functions not supported")):a&&!Br(e.valueSpec)&&h.push(new tn(e.key,e.value,"zoom functions not supported"))),"categorical"!==i&&!c||void 0!==e.value.property||h.push(new tn(e.key,e.value,'"property" property is required')),h;function u(e){let i=[];const r=e.value,a=e.key;if("array"!==Fr(r))return[new tn(a,r,`array expected, ${Fr(r)} found`)];if(2!==r.length)return[new tn(a,r,`array length 2 expected, length ${r.length} found`)];if(c){if("object"!==Fr(r[0]))return[new tn(a,r,`object expected, ${Fr(r[0])} found`)];if(void 0===r[0].zoom)return[new tn(a,r,"object stop key must have zoom")];if(void 0===r[0].value)return[new tn(a,r,"object stop key must have value")];const t=it(r[0].zoom);if("number"!=typeof t)return[new tn(a,r[0].zoom,"stop zoom values must be numbers")];if(o&&o>t)return[new tn(a,r[0].zoom,"stop zoom values must appear in ascending order")];t!==o&&(o=t,n=void 0,s={}),i=i.concat(rn({key:`${a}[0]`,value:r[0],valueSpec:{zoom:{}},style:e.style,styleSpec:e.styleSpec,objectElementValidators:{zoom:on,value:d}}))}else i=i.concat(d({key:`${a}[0]`,value:r[0],valueSpec:{},style:e.style,styleSpec:e.styleSpec},r));return Xr(rt(r[1]))?i.concat([new tn(`${a}[1]`,r[1],"expressions are not allowed in function stops.")]):i.concat(On({key:`${a}[1]`,value:r[1],valueSpec:t,style:e.style,styleSpec:e.styleSpec}))}function d(e,o){const a=Fr(e.value),l=it(e.value),c=null!==e.value?e.value:o;if(r){if(a!==r)return[new tn(e.key,c,`${a} stop domain type must match previous stop domain type ${r}`)]}else r=a;if("number"!==a&&"string"!==a&&"boolean"!==a&&"number"!=typeof l&&"string"!=typeof l&&"boolean"!=typeof l)return[new tn(e.key,c,"stop domain value must be a number, string, or boolean")];if("number"!==a&&"categorical"!==i){let r=`number expected, ${a} found`;return Rr(t)&&void 0===i&&(r+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new tn(e.key,c,r)]}return"categorical"!==i||"number"!==a||"number"==typeof l&&isFinite(l)&&Math.floor(l)===l?"categorical"!==i&&"number"===a&&"number"==typeof l&&"number"==typeof n&&void 0!==n&&lnew tn(`${e.key}${t.key}`,e.value,t.message)));const i=t.value.expression||t.value._styleExpression.expression;if("property"===e.expressionContext&&"text-font"===e.propertyKey&&!i.outputDefined())return[new tn(e.key,e.value,`Invalid data expression for "${e.propertyKey}". Output values must be contained as literals within the expression.`)];if("property"===e.expressionContext&&"layout"===e.propertyType&&!bi(i))return[new tn(e.key,e.value,'"feature-state" data expressions are not supported with layout properties.')];if("filter"===e.expressionContext)return ln(i,e);if(e.expressionContext&&0===e.expressionContext.indexOf("cluster")){if(!wi(i,["zoom","feature-state"]))return[new tn(e.key,e.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if("cluster-initial"===e.expressionContext&&!vi(i))return[new tn(e.key,e.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function ln(e,t){const i=new Set(["zoom","feature-state","pitch","distance-from-center"]);if(t.valueSpec&&t.valueSpec.expression)for(const e of t.valueSpec.expression.parameters)i.delete(e);if(0===i.size)return[];const r=[];return e instanceof ei&&i.has(e.name)?[new tn(t.key,t.value,`["${e.name}"] expression is not supported in a filter for a ${t.object.type} layer with id: ${t.object.id}`)]:(e.eachChild((e=>{r.push(...ln(e,t))})),r)}function cn(e){const t=e.key,i=e.value,r=e.valueSpec,n=[];return Array.isArray(r.values)?-1===r.values.indexOf(it(i))&&n.push(new tn(t,i,`expected one of [${r.values.join(", ")}], ${JSON.stringify(i)} found`)):-1===Object.keys(r.values).indexOf(it(i))&&n.push(new tn(t,i,`expected one of [${Object.keys(r.values).join(", ")}], ${JSON.stringify(i)} found`)),n}function hn(e){if(!0===e||!1===e)return!0;if(!Array.isArray(e)||0===e.length)return!1;switch(e[0]){case"has":return e.length>=2&&"$id"!==e[1]&&"$type"!==e[1];case"in":return e.length>=3&&("string"!=typeof e[1]||Array.isArray(e[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==e.length||Array.isArray(e[1])||Array.isArray(e[2]);case"any":case"all":for(const t of e.slice(1))if(!hn(t)&&"boolean"!=typeof t)return!1;return!0;default:return!0}}function un(e,t="fill"){if(null==e)return{filter:()=>!0,needGeometry:!1,needFeature:!1};hn(e)||(e=yn(e));const i=e;let r=!0;try{r=function(e){if(!fn(e))return e;let t=rt(e);return pn(t),t=dn(t),t}(i)}catch(e){console.warn(`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.\nThis is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md\nand paste the contents of this message in the report.\nThank you!\nFilter Expression:\n${JSON.stringify(i,null,2)}\n `)}const n=et[`filter_${t}`],o=Hr(r,n);let s=null;if("error"===o.result)throw new Error(o.value.map((e=>`${e.key}: ${e.message}`)).join(", "));s=(e,t,i)=>o.value.evaluate(e,t,{},i);let a=null,l=null;if(r!==i){const e=Hr(i,n);if("error"===e.result)throw new Error(e.value.map((e=>`${e.key}: ${e.message}`)).join(", "));a=(t,i,r,n,o)=>e.value.evaluate(t,i,{},r,void 0,void 0,n,o),l=!vi(e.value.expression)}return{filter:s,dynamicFilter:a||void 0,needGeometry:gn(r),needFeature:!!l}}function dn(e){if(!Array.isArray(e))return e;const t=function(e){if(mn.has(e[0]))for(let t=1;tdn(e)))}function pn(e){let t=!1;const i=[];if("case"===e[0]){for(let r=1;r",">=","<","<=","to-boolean"]);function _n(e,t){return et?1:0}function gn(e){if(!Array.isArray(e))return!1;if("within"===e[0])return!0;for(let t=1;t"===t||"<="===t||">="===t?xn(e[1],e[2],t):"any"===t?(i=e.slice(1),["any"].concat(i.map(yn))):"all"===t?["all"].concat(e.slice(1).map(yn)):"none"===t?["all"].concat(e.slice(1).map(yn).map(wn)):"in"===t?vn(e[1],e.slice(2)):"!in"===t?wn(vn(e[1],e.slice(2))):"has"===t?bn(e[1]):"!has"===t?wn(bn(e[1])):"within"!==t||e;var i}function xn(e,t,i){switch(e){case"$type":return[`filter-type-${i}`,t];case"$id":return[`filter-id-${i}`,t];default:return[`filter-${i}`,e,t]}}function vn(e,t){if(0===t.length)return!1;switch(e){case"$type":return["filter-type-in",["literal",t]];case"$id":return["filter-id-in",["literal",t]];default:return t.length>200&&!t.some((e=>typeof e!=typeof t[0]))?["filter-in-large",e,["literal",t.sort(_n)]]:["filter-in-small",e,["literal",t]]}}function bn(e){switch(e){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",e]}}function wn(e){return["!",e]}function Tn(e){return hn(rt(e.value))?an(tt({},e,{expressionContext:"filter",valueSpec:e.styleSpec[`filter_${e.layerType||"fill"}`]})):En(e)}function En(e){const t=e.value,i=e.key;if("array"!==Fr(t))return[new tn(i,t,`array expected, ${Fr(t)} found`)];const r=e.styleSpec;let n,o=[];if(t.length<1)return[new tn(i,t,"filter array must have at least 1 element")];switch(o=o.concat(cn({key:`${i}[0]`,value:t[0],valueSpec:r.filter_operator,style:e.style,styleSpec:e.styleSpec})),it(t[0])){case"<":case"<=":case">":case">=":t.length>=2&&"$type"===it(t[1])&&o.push(new tn(i,t,`"$type" cannot be use with operator "${t[0]}"`));case"==":case"!=":3!==t.length&&o.push(new tn(i,t,`filter array for operator "${t[0]}" must have 3 elements`));case"in":case"!in":t.length>=2&&(n=Fr(t[1]),"string"!==n&&o.push(new tn(`${i}[1]`,t[1],`string expected, ${n} found`)));for(let s=2;s{e in i&&t.push(new tn(r,i[e],`"${e}" is prohibited for ref layers`))})),n.layers.forEach((t=>{it(t.id)===a&&(e=t)})),e?e.ref?t.push(new tn(r,i.ref,"ref cannot reference another ref layer")):s=it(e.type):"string"==typeof a&&t.push(new tn(r,i.ref,`ref layer "${a}" not found`))}else if("background"!==s&&"sky"!==s)if(i.source){const e=n.sources&&n.sources[i.source],o=e&&it(e.type);e?"vector"===o&&"raster"===s?t.push(new tn(r,i.source,`layer "${i.id}" requires a raster source`)):"raster"===o&&"raster"!==s?t.push(new tn(r,i.source,`layer "${i.id}" requires a vector source`)):"vector"!==o||i["source-layer"]?"raster-dem"===o&&"hillshade"!==s?t.push(new tn(r,i.source,"raster-dem source can only be used with layer type 'hillshade'.")):"line"!==s||!i.paint||!i.paint["line-gradient"]&&!i.paint["line-trim-offset"]||"geojson"===o&&e.lineMetrics||t.push(new tn(r,i,`layer "${i.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):t.push(new tn(r,i,`layer "${i.id}" must specify a "source-layer"`)):t.push(new tn(r,i.source,`source "${i.source}" not found`))}else t.push(new tn(r,i,'missing required property "source"'));return t=t.concat(rn({key:r,value:i,valueSpec:o.layer,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{"*":()=>[],type:()=>On({key:`${r}.type`,value:i.type,valueSpec:o.layer.type,style:e.style,styleSpec:e.styleSpec,object:i,objectKey:"type"}),filter:e=>Tn(tt({layerType:s},e)),layout:e=>rn({layer:i,key:e.key,value:e.value,valueSpec:{},style:e.style,styleSpec:e.styleSpec,objectElementValidators:{"*":e=>An(tt({layerType:s},e))}}),paint:e=>rn({layer:i,key:e.key,value:e.value,valueSpec:{},style:e.style,styleSpec:e.styleSpec,objectElementValidators:{"*":e=>Mn(tt({layerType:s},e))}})}})),t}function Cn(e){const t=e.value,i=e.key,r=Fr(t);return"string"!==r?[new tn(i,t,`string expected, ${r} found`)]:[]}const zn={promoteId:function({key:e,value:t}){if("string"===Fr(t))return Cn({key:e,value:t});{const i=[];for(const r in t)i.push(...Cn({key:`${e}.${r}`,value:t[r]}));return i}}};function Pn(e){const t=e.value,i=e.key,r=e.styleSpec,n=e.style;if(!t.type)return[new tn(i,t,'"type" is required')];const o=it(t.type);let s;switch(o){case"vector":case"raster":case"raster-dem":return s=rn({key:i,value:t,valueSpec:r[`source_${o.replace("-","_")}`],style:e.style,styleSpec:r,objectElementValidators:zn}),s;case"geojson":if(s=rn({key:i,value:t,valueSpec:r.source_geojson,style:n,styleSpec:r,objectElementValidators:zn}),t.cluster)for(const e in t.clusterProperties){const[r,n]=t.clusterProperties[e],o="string"==typeof r?[r,["accumulated"],["get",e]]:r;s.push(...an({key:`${i}.${e}.map`,value:n,expressionContext:"cluster-map"})),s.push(...an({key:`${i}.${e}.reduce`,value:o,expressionContext:"cluster-reduce"}))}return s;case"video":return rn({key:i,value:t,valueSpec:r.source_video,style:n,styleSpec:r});case"image":return rn({key:i,value:t,valueSpec:r.source_image,style:n,styleSpec:r});case"canvas":return[new tn(i,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return cn({key:`${i}.type`,value:t.type,valueSpec:{values:kn(r)},style:n,styleSpec:r})}}function kn(e){return e.source.reduce(((t,i)=>{const r=e[i];return"enum"===r.type.type&&(t=t.concat(Object.keys(r.type.values))),t}),[])}function Dn(e){const t=e.value,i=e.styleSpec,r=i.light,n=e.style;let o=[];const s=Fr(t);if(void 0===t)return o;if("object"!==s)return o=o.concat([new tn("light",t,`object expected, ${s} found`)]),o;for(const e in t){const s=e.match(/^(.*)-transition$/);o=o.concat(s&&r[s[1]]&&r[s[1]].transition?On({key:e,value:t[e],valueSpec:i.transition,style:n,styleSpec:i}):r[e]?On({key:e,value:t[e],valueSpec:r[e],style:n,styleSpec:i}):[new tn(e,t[e],`unknown property "${e}"`)])}return o}function Ln(e){const t=e.value,i=e.key,r=e.style,n=e.styleSpec,o=n.terrain;let s=[];const a=Fr(t);if(void 0===t)return s;if("object"!==a)return s=s.concat([new tn("terrain",t,`object expected, ${a} found`)]),s;for(const e in t){const i=e.match(/^(.*)-transition$/);s=s.concat(i&&o[i[1]]&&o[i[1]].transition?On({key:e,value:t[e],valueSpec:n.transition,style:r,styleSpec:n}):o[e]?On({key:e,value:t[e],valueSpec:o[e],style:r,styleSpec:n}):[new tn(e,t[e],`unknown property "${e}"`)])}if(t.source){const e=r.sources&&r.sources[t.source],n=e&&it(e.type);e?"raster-dem"!==n&&s.push(new tn(i,t.source,`terrain cannot be used with a source of type ${String(n)}, it only be used with a "raster-dem" source type`)):s.push(new tn(i,t.source,`source "${t.source}" not found`))}else s.push(new tn(i,t,'terrain is missing required property "source"'));return s}function Rn(e){const t=e.value,i=e.style,r=e.styleSpec,n=r.fog;let o=[];const s=Fr(t);if(void 0===t)return o;if("object"!==s)return o=o.concat([new tn("fog",t,`object expected, ${s} found`)]),o;for(const e in t){const s=e.match(/^(.*)-transition$/);o=o.concat(s&&n[s[1]]&&n[s[1]].transition?On({key:e,value:t[e],valueSpec:r.transition,style:i,styleSpec:r}):n[e]?On({key:e,value:t[e],valueSpec:n[e],style:i,styleSpec:r}):[new tn(e,t[e],`unknown property "${e}"`)])}return o}const Bn={"*":()=>[],array:nn,boolean:function(e){const t=e.value,i=e.key,r=Fr(t);return"boolean"!==r?[new tn(i,t,`boolean expected, ${r} found`)]:[]},number:on,color:function(e){const t=e.key,i=e.value,r=Fr(i);return"string"!==r?[new tn(t,i,`color expected, ${r} found`)]:null===Et(i)?[new tn(t,i,`color expected, "${i}" found`)]:[]},enum:cn,filter:Tn,function:sn,layer:In,object:rn,source:Pn,light:Dn,terrain:Ln,fog:Rn,string:Cn,formatted:function(e){return 0===Cn(e).length?[]:an(e)},resolvedImage:function(e){return 0===Cn(e).length?[]:an(e)},projection:function(e){const t=e.value,i=e.styleSpec,r=i.projection,n=e.style;let o=[];const s=Fr(t);if("object"===s)for(const e in t)o=o.concat(On({key:e,value:t[e],valueSpec:r[e],style:n,styleSpec:i}));else"string"!==s&&(o=o.concat([new tn("projection",t,`object or string expected, ${s} found`)]));return o}};function On(e){const t=e.value,i=e.valueSpec,r=e.styleSpec;return i.expression&&Ur(it(t))?sn(e):i.expression&&Xr(rt(t))?an(e):i.type&&Bn[i.type]?Bn[i.type](e):rn(tt({},e,{valueSpec:i.type?r[i.type]:i}))}function Fn(e){const t=e.value,i=e.key,r=Cn(e);return r.length||(-1===t.indexOf("{fontstack}")&&r.push(new tn(i,t,'"glyphs" url must include a "{fontstack}" token')),-1===t.indexOf("{range}")&&r.push(new tn(i,t,'"glyphs" url must include a "{range}" token'))),r}function Un(e,t=et){return jn(On({key:"",value:e,valueSpec:t.$root,styleSpec:t,style:e,objectElementValidators:{glyphs:Fn,"*":()=>[]}}))}const Vn=e=>jn(Mn(e)),Nn=e=>jn(An(e));function jn(e){return e.slice().sort(((e,t)=>e.line&&t.line?e.line-t.line:0))}function Gn(e,t){let i=!1;if(t&&t.length)for(const r of t)e.fire(new Je(new Error(r.message))),i=!0;return i}var $n=qn,Zn=3;function qn(e,t,i){var r=this.cells=[];if(e instanceof ArrayBuffer){this.arrayBuffer=e;var n=new Int32Array(this.arrayBuffer);e=n[0],this.d=(t=n[1])+2*(i=n[2]);for(var o=0;o=h[p+0]&&r>=h[p+1])?(s[d]=!0,o.push(c[d])):s[d]=!1}}},qn.prototype._forEachCell=function(e,t,i,r,n,o,s,a){for(var l=this._convertToCellCoord(e),c=this._convertToCellCoord(t),h=this._convertToCellCoord(i),u=this._convertToCellCoord(r),d=l;d<=h;d++)for(var p=c;p<=u;p++){var f=this.d*p+d;if((!a||a(this._convertFromCellCoord(d),this._convertFromCellCoord(p),this._convertFromCellCoord(d+1),this._convertFromCellCoord(p+1)))&&n.call(this,e,t,i,r,f,o,s,a))return}},qn.prototype._convertFromCellCoord=function(e){return(e-this.padding)/this.scale},qn.prototype._convertToCellCoord=function(e){return Math.max(0,Math.min(this.d-1,Math.floor(e*this.scale)+this.padding))},qn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var e=this.cells,t=Zn+this.cells.length+1+1,i=0,r=0;r=0||(n[t]=Jn(e[t],i)));e instanceof Error&&(n.message=e.message)}if(n.$name)throw new Error("$name property is reserved for worker serialization logic.");return"Object"!==r&&(n.$name=r),n}throw new Error("can't serialize object of type "+typeof e)}function Qn(e){if(null==e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||e instanceof Boolean||e instanceof Number||e instanceof String||e instanceof Date||e instanceof RegExp||Kn(e)||Yn(e)||ArrayBuffer.isView(e)||e instanceof t.ImageData)return e;if(Array.isArray(e))return e.map(Qn);if("object"==typeof e){const t=e.$name||"Object",{klass:i}=Xn[t];if(!i)throw new Error(`can't deserialize unregistered class ${t}`);if(i.deserialize)return i.deserialize(e);const r=Object.create(i.prototype);for(const t of Object.keys(e))"$name"!==t&&(r[t]=Qn(e[t]));return r}throw new Error("can't deserialize object of type "+typeof e)}const eo={"Latin-1 Supplement":e=>e>=128&&e<=255,Arabic:e=>e>=1536&&e<=1791,"Arabic Supplement":e=>e>=1872&&e<=1919,"Arabic Extended-A":e=>e>=2208&&e<=2303,"Hangul Jamo":e=>e>=4352&&e<=4607,"Unified Canadian Aboriginal Syllabics":e=>e>=5120&&e<=5759,Khmer:e=>e>=6016&&e<=6143,"Unified Canadian Aboriginal Syllabics Extended":e=>e>=6320&&e<=6399,"General Punctuation":e=>e>=8192&&e<=8303,"Letterlike Symbols":e=>e>=8448&&e<=8527,"Number Forms":e=>e>=8528&&e<=8591,"Miscellaneous Technical":e=>e>=8960&&e<=9215,"Control Pictures":e=>e>=9216&&e<=9279,"Optical Character Recognition":e=>e>=9280&&e<=9311,"Enclosed Alphanumerics":e=>e>=9312&&e<=9471,"Geometric Shapes":e=>e>=9632&&e<=9727,"Miscellaneous Symbols":e=>e>=9728&&e<=9983,"Miscellaneous Symbols and Arrows":e=>e>=11008&&e<=11263,"CJK Radicals Supplement":e=>e>=11904&&e<=12031,"Kangxi Radicals":e=>e>=12032&&e<=12255,"Ideographic Description Characters":e=>e>=12272&&e<=12287,"CJK Symbols and Punctuation":e=>e>=12288&&e<=12351,Hiragana:e=>e>=12352&&e<=12447,Katakana:e=>e>=12448&&e<=12543,Bopomofo:e=>e>=12544&&e<=12591,"Hangul Compatibility Jamo":e=>e>=12592&&e<=12687,Kanbun:e=>e>=12688&&e<=12703,"Bopomofo Extended":e=>e>=12704&&e<=12735,"CJK Strokes":e=>e>=12736&&e<=12783,"Katakana Phonetic Extensions":e=>e>=12784&&e<=12799,"Enclosed CJK Letters and Months":e=>e>=12800&&e<=13055,"CJK Compatibility":e=>e>=13056&&e<=13311,"CJK Unified Ideographs Extension A":e=>e>=13312&&e<=19903,"Yijing Hexagram Symbols":e=>e>=19904&&e<=19967,"CJK Unified Ideographs":e=>e>=19968&&e<=40959,"Yi Syllables":e=>e>=40960&&e<=42127,"Yi Radicals":e=>e>=42128&&e<=42191,"Hangul Jamo Extended-A":e=>e>=43360&&e<=43391,"Hangul Syllables":e=>e>=44032&&e<=55215,"Hangul Jamo Extended-B":e=>e>=55216&&e<=55295,"Private Use Area":e=>e>=57344&&e<=63743,"CJK Compatibility Ideographs":e=>e>=63744&&e<=64255,"Arabic Presentation Forms-A":e=>e>=64336&&e<=65023,"Vertical Forms":e=>e>=65040&&e<=65055,"CJK Compatibility Forms":e=>e>=65072&&e<=65103,"Small Form Variants":e=>e>=65104&&e<=65135,"Arabic Presentation Forms-B":e=>e>=65136&&e<=65279,"Halfwidth and Fullwidth Forms":e=>e>=65280&&e<=65519};function to(e){for(const t of e)if(no(t.charCodeAt(0)))return!0;return!1}function io(e){for(const t of e)if(!ro(t.charCodeAt(0)))return!1;return!0}function ro(e){return!(eo.Arabic(e)||eo["Arabic Supplement"](e)||eo["Arabic Extended-A"](e)||eo["Arabic Presentation Forms-A"](e)||eo["Arabic Presentation Forms-B"](e))}function no(e){return!(746!==e&&747!==e&&(e<4352||!(eo["Bopomofo Extended"](e)||eo.Bopomofo(e)||eo["CJK Compatibility Forms"](e)&&!(e>=65097&&e<=65103)||eo["CJK Compatibility Ideographs"](e)||eo["CJK Compatibility"](e)||eo["CJK Radicals Supplement"](e)||eo["CJK Strokes"](e)||!(!eo["CJK Symbols and Punctuation"](e)||e>=12296&&e<=12305||e>=12308&&e<=12319||12336===e)||eo["CJK Unified Ideographs Extension A"](e)||eo["CJK Unified Ideographs"](e)||eo["Enclosed CJK Letters and Months"](e)||eo["Hangul Compatibility Jamo"](e)||eo["Hangul Jamo Extended-A"](e)||eo["Hangul Jamo Extended-B"](e)||eo["Hangul Jamo"](e)||eo["Hangul Syllables"](e)||eo.Hiragana(e)||eo["Ideographic Description Characters"](e)||eo.Kanbun(e)||eo["Kangxi Radicals"](e)||eo["Katakana Phonetic Extensions"](e)||eo.Katakana(e)&&12540!==e||!(!eo["Halfwidth and Fullwidth Forms"](e)||65288===e||65289===e||65293===e||e>=65306&&e<=65310||65339===e||65341===e||65343===e||e>=65371&&e<=65503||65507===e||e>=65512&&e<=65519)||!(!eo["Small Form Variants"](e)||e>=65112&&e<=65118||e>=65123&&e<=65126)||eo["Unified Canadian Aboriginal Syllabics"](e)||eo["Unified Canadian Aboriginal Syllabics Extended"](e)||eo["Vertical Forms"](e)||eo["Yijing Hexagram Symbols"](e)||eo["Yi Syllables"](e)||eo["Yi Radicals"](e))))}function oo(e){return!(no(e)||function(e){return!!(eo["Latin-1 Supplement"](e)&&(167===e||169===e||174===e||177===e||188===e||189===e||190===e||215===e||247===e)||eo["General Punctuation"](e)&&(8214===e||8224===e||8225===e||8240===e||8241===e||8251===e||8252===e||8258===e||8263===e||8264===e||8265===e||8273===e)||eo["Letterlike Symbols"](e)||eo["Number Forms"](e)||eo["Miscellaneous Technical"](e)&&(e>=8960&&e<=8967||e>=8972&&e<=8991||e>=8996&&e<=9e3||9003===e||e>=9085&&e<=9114||e>=9150&&e<=9165||9167===e||e>=9169&&e<=9179||e>=9186&&e<=9215)||eo["Control Pictures"](e)&&9251!==e||eo["Optical Character Recognition"](e)||eo["Enclosed Alphanumerics"](e)||eo["Geometric Shapes"](e)||eo["Miscellaneous Symbols"](e)&&!(e>=9754&&e<=9759)||eo["Miscellaneous Symbols and Arrows"](e)&&(e>=11026&&e<=11055||e>=11088&&e<=11097||e>=11192&&e<=11243)||eo["CJK Symbols and Punctuation"](e)||eo.Katakana(e)||eo["Private Use Area"](e)||eo["CJK Compatibility Forms"](e)||eo["Small Form Variants"](e)||eo["Halfwidth and Fullwidth Forms"](e)||8734===e||8756===e||8757===e||e>=9984&&e<=10087||e>=10102&&e<=10131||65532===e||65533===e)}(e))}function so(e){return e>=1424&&e<=2303||eo["Arabic Presentation Forms-A"](e)||eo["Arabic Presentation Forms-B"](e)}function ao(e,t){return!(!t&&so(e)||e>=2304&&e<=3583||e>=3840&&e<=4255||eo.Khmer(e))}function lo(e){for(const t of e)if(so(t.charCodeAt(0)))return!0;return!1}const co="deferred",ho="loading",uo="loaded";let po=null,fo="unavailable",mo=null;const _o=function(e){e&&"string"==typeof e&&e.indexOf("NetworkError")>-1&&(fo="error"),po&&po(e)};function go(){yo.fire(new Ye("pluginStateChange",{pluginStatus:fo,pluginURL:mo}))}const yo=new Qe,xo=function(){return fo},vo=function(){if(fo!==co||!mo)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");fo=ho,go(),mo&&de({url:mo},(e=>{e?_o(e):(fo=uo,go())}))},bo={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>fo===uo||null!=bo.applyArabicShaping,isLoading:()=>fo===ho,setState(e){fo=e.pluginStatus,mo=e.pluginURL},isParsed:()=>null!=bo.applyArabicShaping&&null!=bo.processBidirectionalText&&null!=bo.processStyledBidirectionalText,getPluginURL:()=>mo};class wo{constructor(e,t){this.zoom=e,t?(this.now=t.now,this.fadeDuration=t.fadeDuration,this.transition=t.transition,this.pitch=t.pitch):(this.now=0,this.fadeDuration=0,this.transition={},this.pitch=0)}isSupportedScript(e){return function(e,t){for(const i of e)if(!ao(i.charCodeAt(0),t))return!1;return!0}(e,bo.isLoaded())}}class To{constructor(e,t){this.property=e,this.value=t,this.expression=function(e,t){if(Ur(e))return new Qr(e,t);if(Xr(e)){const i=Jr(e,t);if("error"===i.result)throw new Error(i.value.map((e=>`${e.key}: ${e.message}`)).join(", "));return i.value}{let i=e;return"string"==typeof e&&"color"===t.type&&(i=Pt.parse(e)),{kind:"constant",evaluate:()=>i}}}(void 0===t?e.specification.default:t,e.specification)}isDataDriven(){return"source"===this.expression.kind||"composite"===this.expression.kind}possiblyEvaluate(e,t,i){return this.property.possiblyEvaluate(this,e,t,i)}}class Eo{constructor(e){this.property=e,this.value=new To(e,void 0)}transitioned(e,t){return new Mo(this.property,this.value,t,k({},e.transition,this.transition),e.now)}untransitioned(){return new Mo(this.property,this.value,null,{},0)}}class So{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues)}getValue(e){return j(this._values[e].value.value)}setValue(e,t){this._values.hasOwnProperty(e)||(this._values[e]=new Eo(this._values[e].property)),this._values[e].value=new To(this._values[e].property,null===t?void 0:j(t))}getTransition(e){return j(this._values[e].transition)}setTransition(e,t){this._values.hasOwnProperty(e)||(this._values[e]=new Eo(this._values[e].property)),this._values[e].transition=j(t)||void 0}serialize(){const e={};for(const t of Object.keys(this._values)){const i=this.getValue(t);void 0!==i&&(e[t]=i);const r=this.getTransition(t);void 0!==r&&(e[`${t}-transition`]=r)}return e}transitioned(e,t){const i=new Ao(this._properties);for(const r of Object.keys(this._values))i._values[r]=this._values[r].transitioned(e,t._values[r]);return i}untransitioned(){const e=new Ao(this._properties);for(const t of Object.keys(this._values))e._values[t]=this._values[t].untransitioned();return e}}class Mo{constructor(e,t,i,r,n){const o=r.delay||0,s=r.duration||0;n=n||0,this.property=e,this.value=t,this.begin=n+o,this.end=this.begin+s,e.specification.transition&&(r.delay||r.duration)&&(this.prior=i)}possiblyEvaluate(e,t,i){const r=e.now||0,n=this.value.possiblyEvaluate(e,t,i),o=this.prior;if(o){if(r>this.end)return this.prior=null,n;if(this.value.isDataDriven())return this.prior=null,n;if(rthis.capacity){this.capacity=Math.max(e,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const t=this.uint8;this._refreshViews(),t&&this.uint8.set(t)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}destroy(){this.int8=this.uint8=this.int16=this.uint16=this.int32=this.uint32=this.float32=null,this.arrayBuffer=null}}function Uo(e,t=1){let i=0,r=0;return{members:e.map((e=>{const n=Bo[e.type].BYTES_PER_ELEMENT,o=i=Vo(i,Math.max(t,n)),s=e.components||1;return r=Math.max(r,n),i+=n*s,{name:e.name,type:e.type,components:s,offset:o}})),size:Vo(i,Math.max(r,t)),alignment:t}}function Vo(e,t){return Math.ceil(e/t)*t}class No extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t){const i=this.length;return this.resize(i+1),this.emplace(i,e,t)}emplace(e,t,i){const r=2*e;return this.int16[r+0]=t,this.int16[r+1]=i,e}}No.prototype.bytesPerElement=4,Hn(No,"StructArrayLayout2i4");class jo extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.int16[n+0]=t,this.int16[n+1]=i,this.int16[n+2]=r,e}}jo.prototype.bytesPerElement=6,Hn(jo,"StructArrayLayout3i6");class Go extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const o=4*e;return this.int16[o+0]=t,this.int16[o+1]=i,this.int16[o+2]=r,this.int16[o+3]=n,e}}Go.prototype.bytesPerElement=8,Hn(Go,"StructArrayLayout4i8");class $o extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s){const a=this.length;return this.resize(a+1),this.emplace(a,e,t,i,r,n,o,s)}emplace(e,t,i,r,n,o,s,a){const l=6*e,c=12*e,h=3*e;return this.int16[l+0]=t,this.int16[l+1]=i,this.uint8[c+4]=r,this.uint8[c+5]=n,this.uint8[c+6]=o,this.uint8[c+7]=s,this.float32[h+2]=a,e}}$o.prototype.bytesPerElement=12,Hn($o,"StructArrayLayout2i4ub1f12");class Zo extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const o=4*e;return this.float32[o+0]=t,this.float32[o+1]=i,this.float32[o+2]=r,this.float32[o+3]=n,e}}Zo.prototype.bytesPerElement=16,Hn(Zo,"StructArrayLayout4f16");class qo extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n)}emplace(e,t,i,r,n,o){const s=6*e,a=3*e;return this.uint16[s+0]=t,this.uint16[s+1]=i,this.uint16[s+2]=r,this.uint16[s+3]=n,this.float32[a+2]=o,e}}qo.prototype.bytesPerElement=12,Hn(qo,"StructArrayLayout4ui1f12");class Wo extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const o=4*e;return this.uint16[o+0]=t,this.uint16[o+1]=i,this.uint16[o+2]=r,this.uint16[o+3]=n,e}}Wo.prototype.bytesPerElement=8,Hn(Wo,"StructArrayLayout4ui8");class Xo extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o){const s=this.length;return this.resize(s+1),this.emplace(s,e,t,i,r,n,o)}emplace(e,t,i,r,n,o,s){const a=6*e;return this.int16[a+0]=t,this.int16[a+1]=i,this.int16[a+2]=r,this.int16[a+3]=n,this.int16[a+4]=o,this.int16[a+5]=s,e}}Xo.prototype.bytesPerElement=12,Hn(Xo,"StructArrayLayout6i12");class Ho extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s,a,l,c,h,u){const d=this.length;return this.resize(d+1),this.emplace(d,e,t,i,r,n,o,s,a,l,c,h,u)}emplace(e,t,i,r,n,o,s,a,l,c,h,u,d){const p=12*e;return this.int16[p+0]=t,this.int16[p+1]=i,this.int16[p+2]=r,this.int16[p+3]=n,this.uint16[p+4]=o,this.uint16[p+5]=s,this.uint16[p+6]=a,this.uint16[p+7]=l,this.int16[p+8]=c,this.int16[p+9]=h,this.int16[p+10]=u,this.int16[p+11]=d,e}}Ho.prototype.bytesPerElement=24,Hn(Ho,"StructArrayLayout4i4ui4i24");class Ko extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o){const s=this.length;return this.resize(s+1),this.emplace(s,e,t,i,r,n,o)}emplace(e,t,i,r,n,o,s){const a=10*e,l=5*e;return this.int16[a+0]=t,this.int16[a+1]=i,this.int16[a+2]=r,this.float32[l+2]=n,this.float32[l+3]=o,this.float32[l+4]=s,e}}Ko.prototype.bytesPerElement=20,Hn(Ko,"StructArrayLayout3i3f20");class Yo extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){const t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){return this.uint32[1*e+0]=t,e}}Yo.prototype.bytesPerElement=4,Hn(Yo,"StructArrayLayout1ul4");class Jo extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s,a,l,c,h,u,d){const p=this.length;return this.resize(p+1),this.emplace(p,e,t,i,r,n,o,s,a,l,c,h,u,d)}emplace(e,t,i,r,n,o,s,a,l,c,h,u,d,p){const f=20*e,m=10*e;return this.int16[f+0]=t,this.int16[f+1]=i,this.int16[f+2]=r,this.int16[f+3]=n,this.int16[f+4]=o,this.float32[m+3]=s,this.float32[m+4]=a,this.float32[m+5]=l,this.float32[m+6]=c,this.int16[f+14]=h,this.uint32[m+8]=u,this.uint16[f+18]=d,this.uint16[f+19]=p,e}}Jo.prototype.bytesPerElement=40,Hn(Jo,"StructArrayLayout5i4f1i1ul2ui40");class Qo extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s){const a=this.length;return this.resize(a+1),this.emplace(a,e,t,i,r,n,o,s)}emplace(e,t,i,r,n,o,s,a){const l=8*e;return this.int16[l+0]=t,this.int16[l+1]=i,this.int16[l+2]=r,this.int16[l+4]=n,this.int16[l+5]=o,this.int16[l+6]=s,this.int16[l+7]=a,e}}Qo.prototype.bytesPerElement=16,Hn(Qo,"StructArrayLayout3i2i2i16");class es extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n)}emplace(e,t,i,r,n,o){const s=4*e,a=8*e;return this.float32[s+0]=t,this.float32[s+1]=i,this.float32[s+2]=r,this.int16[a+6]=n,this.int16[a+7]=o,e}}es.prototype.bytesPerElement=16,Hn(es,"StructArrayLayout2f1f2i16");class ts extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const o=12*e,s=3*e;return this.uint8[o+0]=t,this.uint8[o+1]=i,this.float32[s+1]=r,this.float32[s+2]=n,e}}ts.prototype.bytesPerElement=12,Hn(ts,"StructArrayLayout2ub2f12");class is extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.float32[n+0]=t,this.float32[n+1]=i,this.float32[n+2]=r,e}}is.prototype.bytesPerElement=12,Hn(is,"StructArrayLayout3f12");class rs extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.uint16[n+0]=t,this.uint16[n+1]=i,this.uint16[n+2]=r,e}}rs.prototype.bytesPerElement=6,Hn(rs,"StructArrayLayout3ui6");class ns extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v){const b=this.length;return this.resize(b+1),this.emplace(b,e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v)}emplace(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b){const w=30*e,T=15*e,E=60*e;return this.int16[w+0]=t,this.int16[w+1]=i,this.int16[w+2]=r,this.float32[T+2]=n,this.float32[T+3]=o,this.uint16[w+8]=s,this.uint16[w+9]=a,this.uint32[T+5]=l,this.uint32[T+6]=c,this.uint32[T+7]=h,this.uint16[w+16]=u,this.uint16[w+17]=d,this.uint16[w+18]=p,this.float32[T+10]=f,this.float32[T+11]=m,this.uint8[E+48]=_,this.uint8[E+49]=g,this.uint8[E+50]=y,this.uint32[T+13]=x,this.int16[w+28]=v,this.uint8[E+58]=b,e}}ns.prototype.bytesPerElement=60,Hn(ns,"StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60");class os extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,E,S,M,A,I,C){const z=this.length;return this.resize(z+1),this.emplace(z,e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,E,S,M,A,I,C)}emplace(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,E,S,M,A,I,C,z){const P=38*e,k=19*e;return this.int16[P+0]=t,this.int16[P+1]=i,this.int16[P+2]=r,this.float32[k+2]=n,this.float32[k+3]=o,this.int16[P+8]=s,this.int16[P+9]=a,this.int16[P+10]=l,this.int16[P+11]=c,this.int16[P+12]=h,this.int16[P+13]=u,this.uint16[P+14]=d,this.uint16[P+15]=p,this.uint16[P+16]=f,this.uint16[P+17]=m,this.uint16[P+18]=_,this.uint16[P+19]=g,this.uint16[P+20]=y,this.uint16[P+21]=x,this.uint16[P+22]=v,this.uint16[P+23]=b,this.uint16[P+24]=w,this.uint16[P+25]=T,this.uint16[P+26]=E,this.uint16[P+27]=S,this.uint16[P+28]=M,this.uint32[k+15]=A,this.float32[k+16]=I,this.float32[k+17]=C,this.float32[k+18]=z,e}}os.prototype.bytesPerElement=76,Hn(os,"StructArrayLayout3i2f6i15ui1ul3f76");class ss extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){const t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){return this.float32[1*e+0]=t,e}}ss.prototype.bytesPerElement=4,Hn(ss,"StructArrayLayout1f4");class as extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n)}emplace(e,t,i,r,n,o){const s=5*e;return this.float32[s+0]=t,this.float32[s+1]=i,this.float32[s+2]=r,this.float32[s+3]=n,this.float32[s+4]=o,e}}as.prototype.bytesPerElement=20,Hn(as,"StructArrayLayout5f20");class ls extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const o=6*e;return this.uint32[3*e+0]=t,this.uint16[o+2]=i,this.uint16[o+3]=r,this.uint16[o+4]=n,e}}ls.prototype.bytesPerElement=12,Hn(ls,"StructArrayLayout1ul3ui12");class cs extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t){const i=this.length;return this.resize(i+1),this.emplace(i,e,t)}emplace(e,t,i){const r=2*e;return this.uint16[r+0]=t,this.uint16[r+1]=i,e}}cs.prototype.bytesPerElement=4,Hn(cs,"StructArrayLayout2ui4");class hs extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){const t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){return this.uint16[1*e+0]=t,e}}hs.prototype.bytesPerElement=2,Hn(hs,"StructArrayLayout1ui2");class us extends Fo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t){const i=this.length;return this.resize(i+1),this.emplace(i,e,t)}emplace(e,t,i){const r=2*e;return this.float32[r+0]=t,this.float32[r+1]=i,e}}us.prototype.bytesPerElement=8,Hn(us,"StructArrayLayout2f8");class ds extends Oo{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.int16[this._pos2+3]}get tileAnchorY(){return this._structArray.int16[this._pos2+4]}get x1(){return this._structArray.float32[this._pos4+3]}get y1(){return this._structArray.float32[this._pos4+4]}get x2(){return this._structArray.float32[this._pos4+5]}get y2(){return this._structArray.float32[this._pos4+6]}get padding(){return this._structArray.int16[this._pos2+14]}get featureIndex(){return this._structArray.uint32[this._pos4+8]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+18]}get bucketIndex(){return this._structArray.uint16[this._pos2+19]}}ds.prototype.size=40;class ps extends Jo{get(e){return new ds(this,e)}}Hn(ps,"CollisionBoxArray");class fs extends Oo{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+8]}get numGlyphs(){return this._structArray.uint16[this._pos2+9]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+5]}get lineStartIndex(){return this._structArray.uint32[this._pos4+6]}get lineLength(){return this._structArray.uint32[this._pos4+7]}get segment(){return this._structArray.uint16[this._pos2+16]}get lowerSize(){return this._structArray.uint16[this._pos2+17]}get upperSize(){return this._structArray.uint16[this._pos2+18]}get lineOffsetX(){return this._structArray.float32[this._pos4+10]}get lineOffsetY(){return this._structArray.float32[this._pos4+11]}get writingMode(){return this._structArray.uint8[this._pos1+48]}get placedOrientation(){return this._structArray.uint8[this._pos1+49]}set placedOrientation(e){this._structArray.uint8[this._pos1+49]=e}get hidden(){return this._structArray.uint8[this._pos1+50]}set hidden(e){this._structArray.uint8[this._pos1+50]=e}get crossTileID(){return this._structArray.uint32[this._pos4+13]}set crossTileID(e){this._structArray.uint32[this._pos4+13]=e}get associatedIconIndex(){return this._structArray.int16[this._pos2+28]}get flipState(){return this._structArray.uint8[this._pos1+58]}set flipState(e){this._structArray.uint8[this._pos1+58]=e}}fs.prototype.size=60;class ms extends ns{get(e){return new fs(this,e)}}Hn(ms,"PlacedSymbolArray");class _s extends Oo{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+8]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+9]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+10]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+11]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+12]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+13]}get key(){return this._structArray.uint16[this._pos2+14]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+17]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+18]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+19]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+20]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+21]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+22]}get featureIndex(){return this._structArray.uint16[this._pos2+23]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+24]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+25]}get numIconVertices(){return this._structArray.uint16[this._pos2+26]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+27]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+28]}get crossTileID(){return this._structArray.uint32[this._pos4+15]}set crossTileID(e){this._structArray.uint32[this._pos4+15]=e}get textOffset0(){return this._structArray.float32[this._pos4+16]}get textOffset1(){return this._structArray.float32[this._pos4+17]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+18]}}_s.prototype.size=76;class gs extends os{get(e){return new _s(this,e)}}Hn(gs,"SymbolInstanceArray");class ys extends ss{getoffsetX(e){return this.float32[1*e+0]}}Hn(ys,"GlyphOffsetArray");class xs extends No{getx(e){return this.int16[2*e+0]}gety(e){return this.int16[2*e+1]}}Hn(xs,"SymbolLineVertexArray");class vs extends Oo{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}get layoutVertexArrayOffset(){return this._structArray.uint16[this._pos2+4]}}vs.prototype.size=12;class bs extends ls{get(e){return new vs(this,e)}}Hn(bs,"FeatureIndexArray");class ws extends cs{geta_centroid_pos0(e){return this.uint16[2*e+0]}geta_centroid_pos1(e){return this.uint16[2*e+1]}}Hn(ws,"FillExtrusionCentroidArray");const Ts=Uo([{name:"a_pattern",components:4,type:"Uint16"},{name:"a_pixel_ratio",components:1,type:"Float32"}]),Es=Uo([{name:"a_dash",components:4,type:"Uint16"}]);var Ss={exports:{}},Ms=function(e,t){var i,r,n,o,s,a,l,c;for(r=e.length-(i=3&e.length),n=t,s=3432918353,a=461845907,c=0;c>>16)*s&65535)<<16)&4294967295)<<15|l>>>17))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<13|n>>>19))+((5*(n>>>16)&65535)<<16)&4294967295))+((58964+(o>>>16)&65535)<<16);switch(l=0,i){case 3:l^=(255&e.charCodeAt(c+2))<<16;case 2:l^=(255&e.charCodeAt(c+1))<<8;case 1:n^=l=(65535&(l=(l=(65535&(l^=255&e.charCodeAt(c)))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<15|l>>>17))*a+(((l>>>16)*a&65535)<<16)&4294967295}return n^=e.length,n=2246822507*(65535&(n^=n>>>16))+((2246822507*(n>>>16)&65535)<<16)&4294967295,n=3266489909*(65535&(n^=n>>>13))+((3266489909*(n>>>16)&65535)<<16)&4294967295,(n^=n>>>16)>>>0},As=function(e,t){for(var i,r=e.length,n=t^r,o=0;r>=4;)i=1540483477*(65535&(i=255&e.charCodeAt(o)|(255&e.charCodeAt(++o))<<8|(255&e.charCodeAt(++o))<<16|(255&e.charCodeAt(++o))<<24))+((1540483477*(i>>>16)&65535)<<16),n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16)^(i=1540483477*(65535&(i^=i>>>24))+((1540483477*(i>>>16)&65535)<<16)),r-=4,++o;switch(r){case 3:n^=(255&e.charCodeAt(o+2))<<16;case 2:n^=(255&e.charCodeAt(o+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(o)))+((1540483477*(n>>>16)&65535)<<16)}return n=1540483477*(65535&(n^=n>>>13))+((1540483477*(n>>>16)&65535)<<16),(n^=n>>>15)>>>0};Ss.exports=Ms,Ss.exports.murmur3=Ms,Ss.exports.murmur2=As;var Is=d(Ss.exports);class Cs{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(e,t,i,r){this.ids.push(zs(e)),this.positions.push(t,i,r)}getPositions(e){const t=zs(e);let i=0,r=this.ids.length-1;for(;i>1;this.ids[e]>=t?r=e:i=e+1}const n=[];for(;this.ids[i]===t;)n.push({index:this.positions[3*i],start:this.positions[3*i+1],end:this.positions[3*i+2]}),i++;return n}static serialize(e,t){const i=new Float64Array(e.ids),r=new Uint32Array(e.positions);return Ps(i,r,0,i.length-1),t&&t.push(i.buffer,r.buffer),{ids:i,positions:r}}static deserialize(e){const t=new Cs;return t.ids=e.ids,t.positions=e.positions,t.indexed=!0,t}}function zs(e){const t=+e;return!isNaN(t)&&Number.MIN_SAFE_INTEGER<=t&&t<=Number.MAX_SAFE_INTEGER?t:Is(String(e))}function Ps(e,t,i,r){for(;i>1];let o=i-1,s=r+1;for(;;){do{o++}while(e[o]n);if(o>=s)break;ks(e,o,s),ks(t,3*o,3*s),ks(t,3*o+1,3*s+1),ks(t,3*o+2,3*s+2)}s-i`u_${e}`)),this.type=i}setUniform(e,t,i,r,n){t.set(e,n,r.constantOr(this.value))}getBinding(e,t){return"color"===this.type?new Bs(e):new Ls(e)}}class js{constructor(e,t){this.uniformNames=t.map((e=>`u_${e}`)),this.pattern=null,this.pixelRatio=1}setConstantPatternPositions(e){this.pixelRatio=e.pixelRatio||1,this.pattern=e.tl.concat(e.br)}setUniform(e,t,i,r,n){const o="u_pattern"===n||"u_dash"===n?this.pattern:"u_pixel_ratio"===n?this.pixelRatio:null;o&&t.set(e,n,o)}getBinding(e,t){return"u_pattern"===t||"u_dash"===t?new Rs(e):new Ls(e)}}class Gs{constructor(e,t,i,r){this.expression=e,this.type=i,this.maxValue=0,this.paintVertexAttributes=t.map((e=>({name:`a_${e}`,type:"Float32",components:"color"===i?2:1,offset:0}))),this.paintVertexArray=new r}populatePaintArray(e,t,i,r,n,o){const s=this.paintVertexArray.length,a=this.expression.evaluate(new wo(0),t,{},n,r,o);this.paintVertexArray.resize(e),this._setPaintValue(s,e,a)}updatePaintArray(e,t,i,r,n){const o=this.expression.evaluate({zoom:0},i,r,void 0,n);this._setPaintValue(e,t,o)}_setPaintValue(e,t,i){if("color"===this.type){const r=Vs(i);for(let i=e;i`u_${e}_t`)),this.type=i,this.useIntegerZoom=r,this.zoom=n,this.maxValue=0,this.paintVertexAttributes=t.map((e=>({name:`a_${e}`,type:"Float32",components:"color"===i?4:2,offset:0}))),this.paintVertexArray=new o}populatePaintArray(e,t,i,r,n,o){const s=this.expression.evaluate(new wo(this.zoom),t,{},n,r,o),a=this.expression.evaluate(new wo(this.zoom+1),t,{},n,r,o),l=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(l,e,s,a)}updatePaintArray(e,t,i,r,n){const o=this.expression.evaluate({zoom:this.zoom},i,r,void 0,n),s=this.expression.evaluate({zoom:this.zoom+1},i,r,void 0,n);this._setPaintValue(e,t,o,s)}_setPaintValue(e,t,i,r){if("color"===this.type){const n=Vs(i),o=Vs(r);for(let i=e;i!0)){this.binders={},this._buffers=[];const r=[];for(const n in e.paint._values){if(!i(n))continue;const o=e.paint.get(n);if(!(o instanceof Co&&Rr(o.property.specification)))continue;const s=Hs(n,e.type),a=o.value,l=o.property.specification.type,c=!!o.property.useIntegerZoom,h="line-dasharray"===n||n.endsWith("pattern"),u="line-dasharray"===n&&"constant"!==e.layout.get("line-cap").value.kind;if("constant"!==a.kind||u)if("source"===a.kind||u||h){const t=Js(n,l,"source");this.binders[n]=h?new Zs(a,s,l,t,e.id):new Gs(a,s,l,t),r.push(`/a_${n}`)}else{const e=Js(n,l,"composite");this.binders[n]=new $s(a,s,l,c,t,e),r.push(`/z_${n}`)}else this.binders[n]=h?new js(a.value,s):new Ns(a.value,s,l),r.push(`/u_${n}`)}this.cacheKey=r.sort().join("")}getMaxValue(e){const t=this.binders[e];return t instanceof Gs||t instanceof $s?t.maxValue:0}populatePaintArrays(e,t,i,r,n,o){for(const s in this.binders){const a=this.binders[s];(a instanceof Gs||a instanceof $s||a instanceof Zs)&&a.populatePaintArray(e,t,i,r,n,o)}}setConstantPatternPositions(e){for(const t in this.binders){const i=this.binders[t];i instanceof js&&i.setConstantPatternPositions(e)}}updatePaintArrays(e,t,i,r,n,o){let s=!1;for(const a in e){const l=t.getPositions(a);for(const t of l){const l=i.feature(t.index);for(const i in this.binders){const c=this.binders[i];if((c instanceof Gs||c instanceof $s||c instanceof Zs)&&!0===c.expression.isStateDependent){const h=r.paint.get(i);c.expression=h.value,c.updatePaintArray(t.start,t.end,l,e[a],n,o),s=!0}}}}return s}defines(){const e=[];for(const t in this.binders){const i=this.binders[t];(i instanceof Ns||i instanceof js)&&e.push(...i.uniformNames.map((e=>`#define HAS_UNIFORM_${e}`)))}return e}getBinderAttributes(){const e=[];for(const t in this.binders){const i=this.binders[t];if(i instanceof Gs||i instanceof $s||i instanceof Zs)for(let t=0;t!0)){this.programConfigurations={};for(const r of e)this.programConfigurations[r.id]=new qs(r,t,i);this.needsUpload=!1,this._featureMap=new Cs,this._bufferOffset=0}populatePaintArrays(e,t,i,r,n,o,s){for(const i in this.programConfigurations)this.programConfigurations[i].populatePaintArrays(e,t,r,n,o,s);void 0!==t.id&&this._featureMap.add(t.id,i,this._bufferOffset,e),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,t,i,r,n){for(const o of i)this.needsUpload=this.programConfigurations[o.id].updatePaintArrays(e,this._featureMap,t,o,r,n)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(const t in this.programConfigurations)this.programConfigurations[t].upload(e);this.needsUpload=!1}}destroy(){for(const e in this.programConfigurations)this.programConfigurations[e].destroy()}}const Xs={"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern","pixel_ratio"],"fill-pattern":["pattern","pixel_ratio"],"fill-extrusion-pattern":["pattern","pixel_ratio"],"line-dasharray":["dash"]};function Hs(e,t){return Xs[e]||[e.replace(`${t}-`,"").replace(/-/g,"_")]}const Ks={"line-pattern":{source:qo,composite:qo},"fill-pattern":{source:qo,composite:qo},"fill-extrusion-pattern":{source:qo,composite:qo},"line-dasharray":{source:Wo,composite:Wo}},Ys={color:{source:us,composite:Zo},number:{source:ss,composite:us}};function Js(e,t,i){const r=Ks[e];return r&&r[i]||Ys[t][i]}Hn(Ns,"ConstantBinder"),Hn(js,"PatternConstantBinder"),Hn(Gs,"SourceExpressionBinder"),Hn(Zs,"PatternCompositeBinder"),Hn($s,"CompositeExpressionBinder"),Hn(qs,"ProgramConfiguration",{omit:["_buffers"]}),Hn(Ws,"ProgramConfigurationSet");const Qs="-transition";class ea extends Qe{constructor(e,t){if(super(),this.id=e.id,this.type=e.type,this._featureFilter={filter:()=>!0,needGeometry:!1,needFeature:!1},this._filterCompiled=!1,"custom"!==e.type&&(this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,"background"!==e.type&&"sky"!==e.type&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter),t.layout&&(this._unevaluatedLayout=new Io(t.layout)),t.paint)){this._transitionablePaint=new So(t.paint);for(const t in e.paint)this.setPaintProperty(t,e.paint[t],{validate:!1});for(const t in e.layout)this.setLayoutProperty(t,e.layout[t],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new zo(t.paint)}}getLayoutProperty(e){return"visibility"===e?this.visibility:this._unevaluatedLayout.getValue(e)}setLayoutProperty(e,t,i={}){null!=t&&this._validate(Nn,`layers.${this.id}.layout.${e}`,e,t,i)||("visibility"!==e?this._unevaluatedLayout.setValue(e,t):this.visibility=t)}getPaintProperty(e){return U(e,Qs)?this._transitionablePaint.getTransition(e.slice(0,-11)):this._transitionablePaint.getValue(e)}setPaintProperty(e,t,i={}){if(null!=t&&this._validate(Vn,`layers.${this.id}.paint.${e}`,e,t,i))return!1;if(U(e,Qs))return this._transitionablePaint.setTransition(e.slice(0,-11),t||void 0),!1;{const i=this._transitionablePaint._values[e],r=i.value.isDataDriven(),n=i.value;this._transitionablePaint.setValue(e,t),this._handleSpecialPaintPropertyUpdate(e);const o=this._transitionablePaint._values[e].value,s=o.isDataDriven(),a=U(e,"pattern")||"line-dasharray"===e;return s||r||a||this._handleOverridablePaintPropertyUpdate(e,n,o)}}_handleSpecialPaintPropertyUpdate(e){}getProgramIds(){return null}getProgramConfiguration(e){return null}_handleOverridablePaintPropertyUpdate(e,t,i){return!1}isHidden(e){return!!(this.minzoom&&e=this.maxzoom)||"none"===this.visibility}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(e,t){this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,t)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,t)}serialize(){const e={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(e.layout=e.layout||{},e.layout.visibility=this.visibility),N(e,((e,t)=>!(void 0===e||"layout"===t&&!Object.keys(e).length||"paint"===t&&!Object.keys(e).length)))}_validate(e,t,i,r,n={}){return(!n||!1!==n.validate)&&Gn(this,e.call(Un,{key:t,layerType:this.type,objectKey:i,value:r,styleSpec:et,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isSky(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(const e in this.paint._values){const t=this.paint.get(e);if(t instanceof Co&&Rr(t.property.specification)&&("source"===t.value.kind||"composite"===t.value.kind)&&t.value.isStateDependent)return!0}return!1}compileFilter(){this._filterCompiled||(this._featureFilter=un(this.filter),this._filterCompiled=!0)}invalidateCompiledFilter(){this._filterCompiled=!1}dynamicFilter(){return this._featureFilter.dynamicFilter}dynamicFilterNeedsFeature(){return this._featureFilter.needFeature}}const ta=Uo([{name:"a_pos",components:2,type:"Int16"}],4),ia=Uo([{name:"a_pos_3",components:3,type:"Int16"},{name:"a_pos_normal_3",components:3,type:"Int16"}]);class ra{constructor(e=[]){this.segments=e}prepareSegment(e,t,i,r){let n=this.segments[this.segments.length-1];return e>ra.MAX_VERTEX_ARRAY_LENGTH&&$(`Max vertices per segment is ${ra.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${e}`),(!n||n.vertexLength+e>ra.MAX_VERTEX_ARRAY_LENGTH||n.sortKey!==r)&&(n={vertexOffset:t.length,primitiveOffset:i.length,vertexLength:0,primitiveLength:0},void 0!==r&&(n.sortKey=r),this.segments.push(n)),n}get(){return this.segments}destroy(){for(const e of this.segments)for(const t in e.vaos)e.vaos[t].destroy()}static simpleSegment(e,t,i,r){return new ra([{vertexOffset:e,primitiveOffset:t,vertexLength:i,primitiveLength:r,vaos:{},sortKey:0}])}}ra.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Hn(ra,"SegmentVector");var na=8192;class oa{constructor(e,t){e&&(t?this.setSouthWest(e).setNorthEast(t):4===e.length?this.setSouthWest([e[0],e[1]]).setNorthEast([e[2],e[3]]):this.setSouthWest(e[0]).setNorthEast(e[1]))}setNorthEast(e){return this._ne=e instanceof Fl?new Fl(e.lng,e.lat):Fl.convert(e),this}setSouthWest(e){return this._sw=e instanceof Fl?new Fl(e.lng,e.lat):Fl.convert(e),this}extend(e){const t=this._sw,i=this._ne;let r,n;if(e instanceof Fl)r=e,n=e;else{if(!(e instanceof oa))return Array.isArray(e)?4===e.length||e.every(Array.isArray)?this.extend(oa.convert(e)):this.extend(Fl.convert(e)):"object"==typeof e&&null!==e&&e.hasOwnProperty("lat")&&(e.hasOwnProperty("lon")||e.hasOwnProperty("lng"))?this.extend(Fl.convert(e)):this;if(r=e._sw,n=e._ne,!r||!n)return this}return t||i?(t.lng=Math.min(r.lng,t.lng),t.lat=Math.min(r.lat,t.lat),i.lng=Math.max(n.lng,i.lng),i.lat=Math.max(n.lat,i.lat)):(this._sw=new Fl(r.lng,r.lat),this._ne=new Fl(n.lng,n.lat)),this}getCenter(){return new Fl((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new Fl(this.getWest(),this.getNorth())}getSouthEast(){return new Fl(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(e){const{lng:t,lat:i}=Fl.convert(e);let r=this._sw.lng<=t&&t<=this._ne.lng;return this._sw.lng>this._ne.lng&&(r=this._sw.lng>=t&&t>=this._ne.lng),this._sw.lat<=i&&i<=this._ne.lat&&r}static convert(e){return!e||e instanceof oa?e:new oa(e)}}var sa=1e-6,aa="undefined"!=typeof Float32Array?Float32Array:Array;function la(){var e=new aa(9);return aa!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function ca(e,t,i){var r=t[0],n=t[1],o=t[2],s=t[3],a=t[4],l=t[5],c=t[6],h=t[7],u=t[8],d=i[0],p=i[1],f=i[2],m=i[3],_=i[4],g=i[5],y=i[6],x=i[7],v=i[8];return e[0]=d*r+p*s+f*c,e[1]=d*n+p*a+f*h,e[2]=d*o+p*l+f*u,e[3]=m*r+_*s+g*c,e[4]=m*n+_*a+g*h,e[5]=m*o+_*l+g*u,e[6]=y*r+x*s+v*c,e[7]=y*n+x*a+v*h,e[8]=y*o+x*l+v*u,e}function ha(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function ua(e,t){var i=t[0],r=t[1],n=t[2],o=t[3],s=t[4],a=t[5],l=t[6],c=t[7],h=t[8],u=t[9],d=t[10],p=t[11],f=t[12],m=t[13],_=t[14],g=t[15],y=i*a-r*s,x=i*l-n*s,v=i*c-o*s,b=r*l-n*a,w=r*c-o*a,T=n*c-o*l,E=h*m-u*f,S=h*_-d*f,M=h*g-p*f,A=u*_-d*m,I=u*g-p*m,C=d*g-p*_,z=y*C-x*I+v*A+b*M-w*S+T*E;return z?(e[0]=(a*C-l*I+c*A)*(z=1/z),e[1]=(n*I-r*C-o*A)*z,e[2]=(m*T-_*w+g*b)*z,e[3]=(d*w-u*T-p*b)*z,e[4]=(l*M-s*C-c*S)*z,e[5]=(i*C-n*M+o*S)*z,e[6]=(_*v-f*T-g*x)*z,e[7]=(h*T-d*v+p*x)*z,e[8]=(s*I-a*M+c*E)*z,e[9]=(r*M-i*I-o*E)*z,e[10]=(f*w-m*v+g*y)*z,e[11]=(u*v-h*w-p*y)*z,e[12]=(a*S-s*A-l*E)*z,e[13]=(i*A-r*S+n*E)*z,e[14]=(m*x-f*b-_*y)*z,e[15]=(h*b-u*x+d*y)*z,e):null}function da(e,t,i){var r=t[0],n=t[1],o=t[2],s=t[3],a=t[4],l=t[5],c=t[6],h=t[7],u=t[8],d=t[9],p=t[10],f=t[11],m=t[12],_=t[13],g=t[14],y=t[15],x=i[0],v=i[1],b=i[2],w=i[3];return e[0]=x*r+v*a+b*u+w*m,e[1]=x*n+v*l+b*d+w*_,e[2]=x*o+v*c+b*p+w*g,e[3]=x*s+v*h+b*f+w*y,e[4]=(x=i[4])*r+(v=i[5])*a+(b=i[6])*u+(w=i[7])*m,e[5]=x*n+v*l+b*d+w*_,e[6]=x*o+v*c+b*p+w*g,e[7]=x*s+v*h+b*f+w*y,e[8]=(x=i[8])*r+(v=i[9])*a+(b=i[10])*u+(w=i[11])*m,e[9]=x*n+v*l+b*d+w*_,e[10]=x*o+v*c+b*p+w*g,e[11]=x*s+v*h+b*f+w*y,e[12]=(x=i[12])*r+(v=i[13])*a+(b=i[14])*u+(w=i[15])*m,e[13]=x*n+v*l+b*d+w*_,e[14]=x*o+v*c+b*p+w*g,e[15]=x*s+v*h+b*f+w*y,e}function pa(e,t,i){var r,n,o,s,a,l,c,h,u,d,p,f,m=i[0],_=i[1],g=i[2];return t===e?(e[12]=t[0]*m+t[4]*_+t[8]*g+t[12],e[13]=t[1]*m+t[5]*_+t[9]*g+t[13],e[14]=t[2]*m+t[6]*_+t[10]*g+t[14],e[15]=t[3]*m+t[7]*_+t[11]*g+t[15]):(n=t[1],o=t[2],s=t[3],a=t[4],l=t[5],c=t[6],h=t[7],u=t[8],d=t[9],p=t[10],f=t[11],e[0]=r=t[0],e[1]=n,e[2]=o,e[3]=s,e[4]=a,e[5]=l,e[6]=c,e[7]=h,e[8]=u,e[9]=d,e[10]=p,e[11]=f,e[12]=r*m+a*_+u*g+t[12],e[13]=n*m+l*_+d*g+t[13],e[14]=o*m+c*_+p*g+t[14],e[15]=s*m+h*_+f*g+t[15]),e}function fa(e,t,i){var r=i[0],n=i[1],o=i[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*o,e[9]=t[9]*o,e[10]=t[10]*o,e[11]=t[11]*o,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function ma(e,t,i){var r=Math.sin(i),n=Math.cos(i),o=t[4],s=t[5],a=t[6],l=t[7],c=t[8],h=t[9],u=t[10],d=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=o*n+c*r,e[5]=s*n+h*r,e[6]=a*n+u*r,e[7]=l*n+d*r,e[8]=c*n-o*r,e[9]=h*n-s*r,e[10]=u*n-a*r,e[11]=d*n-l*r,e}function _a(e,t,i){var r=Math.sin(i),n=Math.cos(i),o=t[0],s=t[1],a=t[2],l=t[3],c=t[8],h=t[9],u=t[10],d=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=o*n-c*r,e[1]=s*n-h*r,e[2]=a*n-u*r,e[3]=l*n-d*r,e[8]=o*r+c*n,e[9]=s*r+h*n,e[10]=a*r+u*n,e[11]=l*r+d*n,e}function ga(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function ya(e,t,i){var r,n,o,s=i[0],a=i[1],l=i[2],c=Math.hypot(s,a,l);return c0&&(o=1/Math.sqrt(o)),e[0]=t[0]*o,e[1]=t[1]*o,e[2]=t[2]*o,e}function ka(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Da(e,t,i){var r=t[0],n=t[1],o=t[2],s=i[0],a=i[1],l=i[2];return e[0]=n*l-o*a,e[1]=o*s-r*l,e[2]=r*a-n*s,e}function La(e,t,i){var r=t[0],n=t[1],o=t[2],s=i[3]*r+i[7]*n+i[11]*o+i[15];return e[0]=(i[0]*r+i[4]*n+i[8]*o+i[12])/(s=s||1),e[1]=(i[1]*r+i[5]*n+i[9]*o+i[13])/s,e[2]=(i[2]*r+i[6]*n+i[10]*o+i[14])/s,e}function Ra(e,t,i){var r=i[0],n=i[1],o=i[2],s=t[0],a=t[1],l=t[2],c=n*l-o*a,h=o*s-r*l,u=r*a-n*s,d=n*u-o*h,p=o*c-r*u,f=r*h-n*c,m=2*i[3];return h*=m,u*=m,p*=2,f*=2,e[0]=s+(c*=m)+(d*=2),e[1]=a+h+p,e[2]=l+u+f,e}var Ba,Oa=Sa,Fa=Ma,Ua=wa;function Va(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e}function Na(e,t){var i=t[0],r=t[1],n=t[2],o=t[3],s=i*i+r*r+n*n+o*o;return s>0&&(s=1/Math.sqrt(s)),e[0]=i*s,e[1]=r*s,e[2]=n*s,e[3]=o*s,e}function ja(e,t,i){var r=t[0],n=t[1],o=t[2],s=t[3];return e[0]=i[0]*r+i[4]*n+i[8]*o+i[12]*s,e[1]=i[1]*r+i[5]*n+i[9]*o+i[13]*s,e[2]=i[2]*r+i[6]*n+i[10]*o+i[14]*s,e[3]=i[3]*r+i[7]*n+i[11]*o+i[15]*s,e}function Ga(){var e=new aa(4);return aa!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function $a(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function Za(e,t,i){i*=.5;var r=t[0],n=t[1],o=t[2],s=t[3],a=Math.sin(i),l=Math.cos(i);return e[0]=r*l+s*a,e[1]=n*l+o*a,e[2]=o*l-n*a,e[3]=s*l-r*a,e}function qa(e,t,i){i*=.5;var r=t[0],n=t[1],o=t[2],s=t[3],a=Math.sin(i),l=Math.cos(i);return e[0]=r*l-o*a,e[1]=n*l+s*a,e[2]=o*l+r*a,e[3]=s*l-n*a,e}va(),Ba=new aa(4),aa!=Float32Array&&(Ba[0]=0,Ba[1]=0,Ba[2]=0,Ba[3]=0);var Wa=Na;va(),Ta(1,0,0),Ta(0,1,0),Ga(),Ga(),la();const Xa=Uo([{type:"Float32",name:"a_globe_pos",components:3},{type:"Float32",name:"a_uv",components:2}]),{members:Ha}=Xa,Ka=Uo([{name:"a_pos_3",components:3,type:"Int16"}]);var Ya=Uo([{name:"a_pos",type:"Int16",components:2}]);class Ja{constructor(e,t){this.pos=e,this.dir=t}intersectsPlane(e,t,i){const r=ka(t,this.dir);if(Math.abs(r)<1e-6)return!1;const n=((e[0]-this.pos[0])*t[0]+(e[1]-this.pos[1])*t[1]+(e[2]-this.pos[2])*t[2])/r;return i[0]=this.pos[0]+this.dir[0]*n,i[1]=this.pos[1]+this.dir[1]*n,i[2]=this.pos[2]+this.dir[2]*n,!0}closestPointOnSphere(e,t,i){if(function(e,t){var i=e[0],r=e[1],n=e[2],o=t[0],s=t[1],a=t[2];return Math.abs(i-o)<=sa*Math.max(1,Math.abs(i),Math.abs(o))&&Math.abs(r-s)<=sa*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(n-a)<=sa*Math.max(1,Math.abs(n),Math.abs(a))}(this.pos,e)||0===t)return i[0]=i[1]=i[2]=0,!1;const[r,n,o]=this.dir,s=this.pos[0]-e[0],a=this.pos[1]-e[1],l=this.pos[2]-e[2],c=r*r+n*n+o*o,h=2*(s*r+a*n+l*o),u=h*h-4*c*(s*s+a*a+l*l-t*t);if(u<0){const e=Math.max(-h/2,0),c=s+r*e,u=a+n*e,d=l+o*e,p=Math.hypot(c,u,d);return i[0]=c*t/p,i[1]=u*t/p,i[2]=d*t/p,!1}{const e=(-h-Math.sqrt(u))/(2*c);if(e<0){const e=Math.hypot(s,a,l);return i[0]=s*t/e,i[1]=a*t/e,i[2]=l*t/e,!1}return i[0]=s+r*e,i[1]=a+n*e,i[2]=l+o*e,!0}}}class Qa{constructor(e,t,i,r,n){this.TL=e,this.TR=t,this.BR=i,this.BL=r,this.horizon=n}static fromInvProjectionMatrix(e,t,i){const r=[-1,1,1],n=[1,1,1],o=[1,-1,1],s=[-1,-1,1],a=La(r,r,e),l=La(n,n,e),c=La(o,o,e),h=La(s,s,e);return new Qa(a,l,c,h,t/i)}}class el{constructor(e,t){this.points=e,this.planes=t}static fromInvProjectionMatrix(e,t,i,r){const n=Math.pow(2,i),o=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((i=>{const o=ja([],i,e),s=1/o[3]/t*n;return function(e,t,i){return e[0]=t[0]*i[0],e[1]=t[1]*i[1],e[2]=t[2]*i[2],e[3]=t[3]*i[3],e}(o,o,[s,s,r?1/o[3]:s,s])})),s=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((e=>{const t=Pa([],Da([],Oa([],o[e[0]],o[e[1]]),Oa([],o[e[2]],o[e[1]]))),i=-ka(t,o[e[1]]);return t.concat(i)}));return new el(o,s)}}class tl{static fromPoints(e){const t=[1/0,1/0,1/0],i=[-1/0,-1/0,-1/0];for(const r of e)Aa(t,t,r),Ia(i,i,r);return new tl(t,i)}static applyTransform(e,t){const i=e.getCorners();for(let e=0;e=0;if(0===o)return 0;o!==t.length&&(i=!1)}if(i)return 2;for(let t=0;t<3;t++){let i=Number.MAX_VALUE,r=-Number.MAX_VALUE;for(let n=0;nthis.max[t]-this.min[t])return 0}return 1}}const il=5,rl=6,nl=na/Math.PI/2,ol=16383,sl=64,al=[sl,32,16],ll=-nl,cl=nl,hl=[new tl([ll,ll,ll],[cl,cl,cl]),new tl([ll,ll,ll],[0,0,cl]),new tl([0,ll,ll],[cl,0,cl]),new tl([ll,0,ll],[0,cl,cl]),new tl([0,0,ll],[cl,cl,cl])];function ul(e){return e*nl/Rl}function dl(e,t,i,r=!0){const n=Ca([],e._camera.position,e.worldSize),o=[t,i,1,1];ja(o,o,e.pixelMatrixInverse),Va(o,o,1/o[3]);const s=Pa([],Oa([],o,n)),a=e.globeMatrix,l=[a[12],a[13],a[14]],c=Oa([],l,n),h=wa(c),u=Pa([],c),d=e.worldSize/(2*Math.PI),p=ka(u,s),f=Math.asin(d/h);if(f1?null:function(e,t,i,r){const n=Math.sin(i);return e*(Math.sin((1-r)*i)/n)+t*(Math.sin(r*i)/n)}(e.a[t],e.b[t],e.angle,A(i,0,1))+e.center[t]}function ml(e){if(e.z<=1)return hl[e.z+2*e.y+e.x];const t=vl(xl(e));return tl.fromPoints(t)}function _l(e,t,i){return Ca(e,e,1-i),za(e,e,t,i)}function gl(e,t){const i=Cl(t.zoom);if(0===i)return ml(e);const r=xl(e),n=vl(r),o=Vl(r.getWest())*t.worldSize,s=Vl(r.getEast())*t.worldSize,a=Nl(r.getNorth())*t.worldSize,l=Nl(r.getSouth())*t.worldSize,c=[o,a,0],h=[s,a,0],u=[o,l,0],d=[s,l,0],p=ua([],t.globeMatrix);return La(c,c,p),La(h,h,p),La(u,u,p),La(d,d,p),n[0]=_l(n[0],u,i),n[1]=_l(n[1],d,i),n[2]=_l(n[2],h,i),n[3]=_l(n[3],c,i),tl.fromPoints(n)}function yl(e,t,i){for(const r of e)La(r,r,t),Ca(r,r,i)}function xl({x:e,y:t,z:i}){const r=1/(1<Math.PI/2*1.01}const kl=b(85),Dl=Math.cos(kl),Ll=Math.sin(kl),Rl=6371008.8,Bl=2*Math.PI*Rl;class Ol{constructor(e,t){if(isNaN(e)||isNaN(t))throw new Error(`Invalid LngLat object: (${e}, ${t})`);if(this.lng=+e,this.lat=+t,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new Ol(C(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){const t=Math.PI/180,i=this.lat*t,r=e.lat*t,n=Math.sin(i)*Math.sin(r)+Math.cos(i)*Math.cos(r)*Math.cos((e.lng-this.lng)*t);return Rl*Math.acos(Math.min(n,1))}toBounds(e=0){const t=360*e/40075017,i=t/Math.cos(Math.PI/180*this.lat);return new oa(new Ol(this.lng-i,this.lat-t),new Ol(this.lng+i,this.lat+t))}toEcef(e){const t=ul(e);return wl(this.lat,this.lng,nl+t)}static convert(e){if(e instanceof Ol)return e;if(Array.isArray(e)&&(2===e.length||3===e.length))return new Ol(Number(e[0]),Number(e[1]));if(!Array.isArray(e)&&"object"==typeof e&&null!==e)return new Ol(Number("lng"in e?e.lng:e.lon),Number(e.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}var Fl=Ol;function Ul(e){return Bl*Math.cos(e*Math.PI/180)}function Vl(e){return(180+e)/360}function Nl(e){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+e*Math.PI/360)))/360}function jl(e,t){return e/Ul(t)}function Gl(e){return 360*e-180}function $l(e){return 360/Math.PI*Math.atan(Math.exp((180-360*e)*Math.PI/180))-90}function Zl(e,t){return e*Ul($l(t))}const ql=85.051129;function Wl(e){return 1/Math.cos(e*Math.PI/180)}class Xl{constructor(e,t,i=0){this.x=+e,this.y=+t,this.z=+i}static fromLngLat(e,t=0){const i=Fl.convert(e);return new Xl(Vl(i.lng),Nl(i.lat),jl(t,i.lat))}toLngLat(){return new Fl(Gl(this.x),$l(this.y))}toAltitude(){return Zl(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/Bl*Wl($l(this.y))}}function Hl(e,t,i,r,n,o,s,a,l){const c=(t+r)/2,h=(i+n)/2,u=new y(c,h);a(u),function(e,t,i,r,n,o){const s=i-n,a=r-o;return Math.abs((r-t)*s-(i-e)*a)/Math.hypot(s,a)}(u.x,u.y,o.x,o.y,s.x,s.y)>=l?(Hl(e,t,i,c,h,o,u,a,l),Hl(e,c,h,r,n,u,s,a,l)):e.push(s)}function Kl(e,t,i){let r=e[0],n=r.x,o=r.y;t(r);const s=[r];for(let a=1;ae.x+1||re.y+1)&&$("Geometry exceeds allowed extent, reduce your vector tile buffer size"),e}function ic(e,t,i){const r=e.loadGeometry(),n=e.extent,o=na/n;if(t&&i&&i.projection.isReprojectedInTileSpace){const o=1<{const i=Gl((t.x+e.x/n)/o),r=$l((t.y+e.y/n)/o),h=c.project(i,r);e.x=(h.x*s-a)*n,e.y=(h.y*s-l)*n};for(let t=0;t=n||i.y<0||i.y>=n||(h(i),e.push(i));r[t]=e}}for(const e of r)for(const t of e)tc(t,o);return r}function rc(e,t){return{type:e.type,id:e.id,properties:e.properties,geometry:t?ic(e):[]}}function nc(e,t,i,r,n){e.emplaceBack(2*t+(r+1)/2,2*i+(n+1)/2)}function oc(e,t,i){const r=16384;e.emplaceBack(t.x,t.y,t.z,i[0]*r,i[1]*r,i[2]*r)}class sc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((e=>e.id)),this.index=e.index,this.hasPattern=!1,this.projection=e.projection,this.layoutVertexArray=new No,this.indexArray=new rs,this.segments=new ra,this.programConfigurations=new Ws(e.layers,e.zoom),this.stateDependentLayerIds=this.layers.filter((e=>e.isStateDependent())).map((e=>e.id))}populate(e,t,i,r){const n=this.layers[0],o=[];let s=null;"circle"===n.type&&(s=n.layout.get("circle-sort-key"));for(const{feature:t,id:n,index:a,sourceLayerIndex:l}of e){const e=this.layers[0]._featureFilter.needGeometry,c=rc(t,e);if(!this.layers[0]._featureFilter.filter(new wo(this.zoom),c,i))continue;const h=s?s.evaluate(c,{},i):void 0,u={id:n,properties:t.properties,type:t.type,sourceLayerIndex:l,index:a,geometry:e?c.geometry:ic(t,i,r),patterns:{},sortKey:h};o.push(u)}s&&o.sort(((e,t)=>e.sortKey-t.sortKey));let a=null;"globe"===r.projection.name&&(this.globeExtVertexArray=new Xo,a=r.projection);for(const r of o){const{geometry:n,index:o,sourceLayerIndex:s}=r,l=e[o].feature;this.addFeature(r,n,o,t.availableImages,i,a),t.featureIndex.insert(l,n,o,s,this.index)}}update(e,t,i,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,i,r)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,ta.members),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.globeExtVertexArray&&(this.globeExtVertexBuffer=e.createVertexBuffer(this.globeExtVertexArray,ia.members))),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.globeExtVertexBuffer&&this.globeExtVertexBuffer.destroy())}addFeature(e,t,i,r,n,o){for(const i of t)for(const t of i){const i=t.x,r=t.y;if(i<0||i>=na||r<0||r>=na)continue;if(o){const e=o.projectTilePoint(i,r,n),t=o.upVector(n,i,r),s=this.globeExtVertexArray;oc(s,e,t),oc(s,e,t),oc(s,e,t),oc(s,e,t)}const s=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,e.sortKey),a=s.vertexLength;nc(this.layoutVertexArray,i,r,-1,-1),nc(this.layoutVertexArray,i,r,1,-1),nc(this.layoutVertexArray,i,r,1,1),nc(this.layoutVertexArray,i,r,-1,1),this.indexArray.emplaceBack(a,a+1,a+2),this.indexArray.emplaceBack(a,a+2,a+3),s.vertexLength+=4,s.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,i,{},r,n)}}function ac(e,t){for(let i=0;i1){if(uc(e,t))return!0;for(let r=0;r1?i:i.sub(t)._mult(n)._add(t))}function mc(e,t){let i,r,n,o=!1;for(let s=0;st.y!=n.y>t.y&&t.x<(n.x-r.x)*(t.y-r.y)/(n.y-r.y)+r.x&&(o=!o)}return o}function _c(e,t){let i=!1;for(let r=0,n=e.length-1;rt.y!=s.y>t.y&&t.x<(s.x-o.x)*(t.y-o.y)/(s.y-o.y)+o.x&&(i=!i)}return i}function gc(e,t,i,r,n){for(const o of e)if(t<=o.x&&i<=o.y&&r>=o.x&&n>=o.y)return!0;const o=[new y(t,i),new y(t,n),new y(r,n),new y(r,i)];if(e.length>2)for(const t of o)if(_c(e,t))return!0;for(let t=0;tn.x&&t.x>n.x||e.yn.y&&t.y>n.y)return!1;const o=Z(e,t,i[0]);return o!==Z(e,t,i[1])||o!==Z(e,t,i[2])||o!==Z(e,t,i[3])}function xc(e,t,i){const r=t.paint.get(e).value;return"constant"===r.kind?r.value:i.programConfigurations.get(t.id).getMaxValue(e)}function vc(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])}function bc(e,t,i,r,n){if(!t[0]&&!t[1])return e;const o=y.convert(t)._mult(n);"viewport"===i&&o._rotate(-r);const s=[];for(let t=0;t0){const e=i.projection.upVector(c,u.x,u.y);p.x+=e[0]*h*d,p.y+=e[1]*h*d,p.z+=e[2]*h*d}const f=o?u:Mc(p.x,p.y,p.z,r),m=o?e.tilespaceRays.map((e=>Cc(e,d))):e.queryGeometry.screenGeometry,_=ja([],[p.x,p.y,p.z,1],r);if(!s&&o?l*=_[3]/i.cameraToCenterDistance:s&&!o&&(l*=i.cameraToCenterDistance/_[3]),o){const e=$l((t.y/na+c.y)/(1<e.width||n.height>e.height||i.x>e.width-n.width||i.y>e.height-n.height)throw new RangeError("out of range source coordinates for image copy");if(n.width>t.width||n.height>t.height||r.x>t.width-n.width||r.y>t.height-n.height)throw new RangeError("out of range destination coordinates for image copy");const s=e.data,a=t.data;for(let l=0;l{t[e.evaluationKey]=o;const s=e.expression.evaluate(t);n.data[i+r+0]=Math.floor(255*s.r/s.a),n.data[i+r+1]=Math.floor(255*s.g/s.a),n.data[i+r+2]=Math.floor(255*s.b/s.a),n.data[i+r+3]=Math.floor(255*s.a)};if(e.clips)for(let t=0,n=0;t80*i){r=o=e[0],n=s=e[1];for(var f=i;fo&&(o=a),l>s&&(s=l);c=0!==(c=Math.max(o-r,s-n))?32767/c:0}return Zc(d,p,i,r,n,c,0),p}function Gc(e,t,i,r,n){var o,s;if(n===ph(e,t,i,r)>0)for(o=t;o=t;o-=r)s=hh(o,e[o],e[o+1],s);return s&&nh(s,s.next)&&(uh(s),s=s.next),s}function $c(e,t){if(!e)return e;t||(t=e);var i,r=e;do{if(i=!1,r.steiner||!nh(r,r.next)&&0!==rh(r.prev,r,r.next))r=r.next;else{if(uh(r),(r=t=r.prev)===r.next)break;i=!0}}while(i||r!==t);return t}function Zc(e,t,i,r,n,o,s){if(e){!s&&o&&function(e,t,i,r){var n=e;do{0===n.z&&(n.z=Qc(n.x,n.y,t,i,r)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,function(e){var t,i,r,n,o,s,a,l,c=1;do{for(i=e,e=null,o=null,s=0;i;){for(s++,r=i,a=0,t=0;t0||l>0&&r;)0!==a&&(0===l||!r||i.z<=r.z)?(n=i,i=i.nextZ,a--):(n=r,r=r.nextZ,l--),o?o.nextZ=n:e=n,n.prevZ=o,o=n;i=r}o.nextZ=null,c*=2}while(s>1)}(n)}(e,r,n,o);for(var a,l,c=e;e.prev!==e.next;)if(a=e.prev,l=e.next,o?Wc(e,r,n,o):qc(e))t.push(a.i/i|0),t.push(e.i/i|0),t.push(l.i/i|0),uh(e),e=l.next,c=l.next;else if((e=l)===c){s?1===s?Zc(e=Xc($c(e),t,i),t,i,r,n,o,2):2===s&&Hc(e,t,i,r,n,o):Zc($c(e),t,i,r,n,o,1);break}}}function qc(e){var t=e.prev,i=e,r=e.next;if(rh(t,i,r)>=0)return!1;for(var n=t.x,o=i.x,s=r.x,a=t.y,l=i.y,c=r.y,h=no?n>s?n:s:o>s?o:s,p=a>l?a>c?a:c:l>c?l:c,f=r.next;f!==t;){if(f.x>=h&&f.x<=d&&f.y>=u&&f.y<=p&&th(n,a,o,l,s,c,f.x,f.y)&&rh(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function Wc(e,t,i,r){var n=e.prev,o=e,s=e.next;if(rh(n,o,s)>=0)return!1;for(var a=n.x,l=o.x,c=s.x,h=n.y,u=o.y,d=s.y,p=al?a>c?a:c:l>c?l:c,_=h>u?h>d?h:d:u>d?u:d,g=Qc(p,f,t,i,r),y=Qc(m,_,t,i,r),x=e.prevZ,v=e.nextZ;x&&x.z>=g&&v&&v.z<=y;){if(x.x>=p&&x.x<=m&&x.y>=f&&x.y<=_&&x!==n&&x!==s&&th(a,h,l,u,c,d,x.x,x.y)&&rh(x.prev,x,x.next)>=0)return!1;if(x=x.prevZ,v.x>=p&&v.x<=m&&v.y>=f&&v.y<=_&&v!==n&&v!==s&&th(a,h,l,u,c,d,v.x,v.y)&&rh(v.prev,v,v.next)>=0)return!1;v=v.nextZ}for(;x&&x.z>=g;){if(x.x>=p&&x.x<=m&&x.y>=f&&x.y<=_&&x!==n&&x!==s&&th(a,h,l,u,c,d,x.x,x.y)&&rh(x.prev,x,x.next)>=0)return!1;x=x.prevZ}for(;v&&v.z<=y;){if(v.x>=p&&v.x<=m&&v.y>=f&&v.y<=_&&v!==n&&v!==s&&th(a,h,l,u,c,d,v.x,v.y)&&rh(v.prev,v,v.next)>=0)return!1;v=v.nextZ}return!0}function Xc(e,t,i){var r=e;do{var n=r.prev,o=r.next.next;!nh(n,o)&&oh(n,r,r.next,o)&&lh(n,o)&&lh(o,n)&&(t.push(n.i/i|0),t.push(r.i/i|0),t.push(o.i/i|0),uh(r),uh(r.next),r=e=o),r=r.next}while(r!==e);return $c(r)}function Hc(e,t,i,r,n,o){var s=e;do{for(var a=s.next.next;a!==s.prev;){if(s.i!==a.i&&ih(s,a)){var l=ch(s,a);return s=$c(s,s.next),l=$c(l,l.next),Zc(s,t,i,r,n,o,0),void Zc(l,t,i,r,n,o,0)}a=a.next}s=s.next}while(s!==e)}function Kc(e,t){return e.x-t.x}function Yc(e,t){var i=function(e,t){var i,r=t,n=e.x,o=e.y,s=-1/0;do{if(o<=r.y&&o>=r.next.y&&r.next.y!==r.y){var a=r.x+(o-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(a<=n&&a>s&&(s=a,i=r.x=r.x&&r.x>=h&&n!==r.x&&th(oi.x||r.x===i.x&&Jc(i,r)))&&(i=r,d=l)),r=r.next}while(r!==c);return i}(e,t);if(!i)return t;var r=ch(i,e);return $c(r,r.next),$c(i,i.next)}function Jc(e,t){return rh(e.prev,e,t.prev)<0&&rh(t.next,e,e.next)<0}function Qc(e,t,i,r,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-i)*n|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*n|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function eh(e){var t=e,i=e;do{(t.x=(e-s)*(o-a)&&(e-s)*(r-a)>=(i-s)*(t-a)&&(i-s)*(o-a)>=(n-s)*(r-a)}function ih(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&oh(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(lh(e,t)&&lh(t,e)&&function(e,t){var i=e,r=!1,n=(e.x+t.x)/2,o=(e.y+t.y)/2;do{i.y>o!=i.next.y>o&&i.next.y!==i.y&&n<(i.next.x-i.x)*(o-i.y)/(i.next.y-i.y)+i.x&&(r=!r),i=i.next}while(i!==e);return r}(e,t)&&(rh(e.prev,e,t.prev)||rh(e,t.prev,t))||nh(e,t)&&rh(e.prev,e,e.next)>0&&rh(t.prev,t,t.next)>0)}function rh(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function nh(e,t){return e.x===t.x&&e.y===t.y}function oh(e,t,i,r){var n=ah(rh(e,t,i)),o=ah(rh(e,t,r)),s=ah(rh(i,r,e)),a=ah(rh(i,r,t));return n!==o&&s!==a||!(0!==n||!sh(e,i,t))||!(0!==o||!sh(e,r,t))||!(0!==s||!sh(i,e,r))||!(0!==a||!sh(i,t,r))}function sh(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function ah(e){return e>0?1:e<0?-1:0}function lh(e,t){return rh(e.prev,e,e.next)<0?rh(e,t,e.next)>=0&&rh(e,e.prev,t)>=0:rh(e,t,e.prev)<0||rh(e,e.next,t)<0}function ch(e,t){var i=new dh(e.i,e.x,e.y),r=new dh(t.i,t.x,t.y),n=e.next,o=t.prev;return e.next=t,t.prev=e,i.next=n,n.prev=i,r.next=i,i.prev=r,o.next=r,r.prev=o,r}function hh(e,t,i,r){var n=new dh(e,t,i);return r?(n.next=r.next,n.prev=r,r.next.prev=n,r.next=n):(n.prev=n,n.next=n),n}function uh(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function dh(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function ph(e,t,i,r){for(var n=0,o=t,s=i-r;o0&&i.holes.push(r+=e[n-1].length)}return i};var fh=d(Nc.exports);function mh(e,t,i,r,n){_h(e,t,i||0,r||e.length-1,n||yh)}function _h(e,t,i,r,n){for(;r>i;){if(r-i>600){var o=r-i+1,s=t-i+1,a=Math.log(o),l=.5*Math.exp(2*a/3),c=.5*Math.sqrt(a*l*(o-l)/o)*(s-o/2<0?-1:1);_h(e,t,Math.max(i,Math.floor(t-s*l/o+c)),Math.min(r,Math.floor(t+(o-s)*l/o+c)),n)}var h=e[t],u=i,d=r;for(gh(e,i,t),n(e[r],h)>0&&gh(e,i,r);u0;)d--}0===n(e[i],h)?gh(e,i,d):gh(e,++d,r),d<=t&&(i=d+1),t<=d&&(r=d-1)}}function gh(e,t,i){var r=e[t];e[t]=e[i],e[i]=r}function yh(e,t){return et?1:0}function xh(e,t){const i=e.length;if(i<=1)return[e];const r=[];let n,o;for(let t=0;t1)for(let e=0;ee.id)),this.index=e.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new No,this.indexArray=new rs,this.indexArray2=new cs,this.programConfigurations=new Ws(e.layers,e.zoom),this.segments=new ra,this.segments2=new ra,this.stateDependentLayerIds=this.layers.filter((e=>e.isStateDependent())).map((e=>e.id)),this.projection=e.projection}populate(e,t,i,r){this.hasPattern=bh("fill",this.layers,t);const n=this.layers[0].layout.get("fill-sort-key"),o=[];for(const{feature:s,id:a,index:l,sourceLayerIndex:c}of e){const e=this.layers[0]._featureFilter.needGeometry,h=rc(s,e);if(!this.layers[0]._featureFilter.filter(new wo(this.zoom),h,i))continue;const u=n?n.evaluate(h,{},i,t.availableImages):void 0,d={id:a,properties:s.properties,type:s.type,sourceLayerIndex:c,index:l,geometry:e?h.geometry:ic(s,i,r),patterns:{},sortKey:u};o.push(d)}n&&o.sort(((e,t)=>e.sortKey-t.sortKey));for(const r of o){const{geometry:n,index:o,sourceLayerIndex:s}=r;if(this.hasPattern){const e=wh("fill",this.layers,r,this.zoom,t);this.patternFeatures.push(e)}else this.addFeature(r,n,o,i,{},t.availableImages);t.featureIndex.insert(e[o].feature,n,o,s,this.index)}}update(e,t,i,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,i,r)}addFeatures(e,t,i,r,n){for(const e of this.patternFeatures)this.addFeature(e,e.geometry,e.index,t,i,r)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Vc),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.indexBuffer2=e.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(e,t,i,r,n,o=[]){for(const e of xh(t,500)){let t=0;for(const i of e)t+=i.length;const i=this.segments.prepareSegment(t,this.layoutVertexArray,this.indexArray),r=i.vertexLength,n=[],o=[];for(const t of e){if(0===t.length)continue;t!==e[0]&&o.push(n.length/2);const i=this.segments2.prepareSegment(t.length,this.layoutVertexArray,this.indexArray2),r=i.vertexLength;this.layoutVertexArray.emplaceBack(t[0].x,t[0].y),this.indexArray2.emplaceBack(r+t.length-1,r),n.push(t[0].x),n.push(t[0].y);for(let e=1;e>3}if(n--,1===r||2===r)o+=e.readSVarint(),s+=e.readSVarint(),1===r&&(t&&a.push(t),t=[]),t.push(new Ph(o,s));else{if(7!==r)throw new Error("unknown command "+r);t&&t.push(t[0].clone())}}return t&&a.push(t),a},Dh.prototype.bbox=function(){var e=this._pbf;e.pos=this._geometry;for(var t=e.readVarint()+e.pos,i=1,r=0,n=0,o=0,s=1/0,a=-1/0,l=1/0,c=-1/0;e.pos>3}if(r--,1===i||2===i)(n+=e.readSVarint())a&&(a=n),(o+=e.readSVarint())c&&(c=o);else if(7!==i)throw new Error("unknown command "+i)}return[s,l,a,c]},Dh.prototype.toGeoJSON=function(e,t,i){var r,n,o=this.extent*Math.pow(2,i),s=this.extent*e,a=this.extent*t,l=this.loadGeometry(),c=Dh.types[this.type];function h(e){for(var t=0;t>3;t=1===r?e.readString():2===r?e.readFloat():3===r?e.readDouble():4===r?e.readVarint64():5===r?e.readVarint():6===r?e.readSVarint():7===r?e.readBoolean():null}return t}(i))}Fh.prototype.feature=function(e){if(e<0||e>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];var t=this._pbf.readVarint()+this._pbf.pos;return new Bh(this._pbf,t,this.extent,this._keys,this._values)};var Vh=Oh;function Nh(e,t,i){if(3===e){var r=new Vh(i,i.readVarint()+i.pos);r.length&&(t[r.name]=r)}}var jh=zh.VectorTile=function(e,t){this.layers=e.readFields(Nh,{},t)},Gh=zh.VectorTileFeature=kh;function $h(e,t,i,r){const n=[],o=0===r?(e,t,i,r,n,o)=>{e.push(new y(o,i+(o-t)/(r-t)*(n-i)))}:(e,t,i,r,n,o)=>{e.push(new y(t+(o-i)/(n-i)*(r-t),o))};for(const s of e){const e=[];for(const n of s){if(n.length<=2)continue;const s=[];for(let e=0;et&&o(s,a,l,c,h,t):u>i?d=t&&o(s,a,l,c,h,t),d>i&&u<=i&&o(s,a,l,c,h,i)}let a=n[n.length-1];const l=0===r?a.x:a.y;l>=t&&l<=i&&s.push(a),s.length&&(a=s[s.length-1],s[0].x===a.x&&s[0].y===a.y||s.push(s[0]),e.push(s))}e.length&&n.push(e)}return n}zh.VectorTileLayer=Oh;const Zh=Gh.types,qh=Math.pow(2,13);function Wh(e,t,i,r,n,o,s,a){e.emplaceBack((t<<1)+s,(i<<1)+o,(Math.floor(r*qh)<<1)+n,Math.round(a))}function Xh(e,t,i){const r=16384;e.emplaceBack(t.x,t.y,t.z,i[0]*r,i[1]*r,i[2]*r)}class Hh{constructor(){this.acc=new y(0,0),this.polyCount=[]}startRing(e){this.currentPolyCount={edges:0,top:0},this.polyCount.push(this.currentPolyCount),this.min||(this.min=new y(e.x,e.y),this.max=new y(e.x,e.y))}append(e,t){this.currentPolyCount.edges++,this.acc._add(e);const i=this.min,r=this.max;e.xr.x&&(r.x=e.x),e.yr.y&&(r.y=e.y),((0===e.x||e.x===na)&&e.x===t.x)!=((0===e.y||e.y===na)&&e.y===t.y)&&this.processBorderOverlap(e,t),t.x<0!=e.x<0&&this.addBorderIntersection(0,Pi(t.y,e.y,(0-t.x)/(e.x-t.x))),t.x>na!=e.x>na&&this.addBorderIntersection(1,Pi(t.y,e.y,(na-t.x)/(e.x-t.x))),t.y<0!=e.y<0&&this.addBorderIntersection(2,Pi(t.x,e.x,(0-t.y)/(e.y-t.y))),t.y>na!=e.y>na&&this.addBorderIntersection(3,Pi(t.x,e.x,(na-t.y)/(e.y-t.y)))}addBorderIntersection(e,t){this.borders||(this.borders=[[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE]]);const i=this.borders[e];ti[1]&&(i[1]=t)}processBorderOverlap(e,t){if(e.x===t.x){if(e.y===t.y)return;const i=0===e.x?0:1;this.addBorderIntersection(i,t.y),this.addBorderIntersection(i,e.y)}else{const i=0===e.y?2:3;this.addBorderIntersection(i,t.x),this.addBorderIntersection(i,e.x)}}centroid(){const e=this.polyCount.reduce(((e,t)=>e+t.edges),0);return 0!==e?this.acc.div(e)._round():new y(0,0)}span(){return new y(this.max.x-this.min.x,this.max.y-this.min.y)}intersectsCount(){return this.borders.reduce(((e,t)=>e+ +(t[0]!==Number.MAX_VALUE)),0)}}class Kh{constructor(e){this.zoom=e.zoom,this.canonical=e.canonical,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((e=>e.id)),this.index=e.index,this.hasPattern=!1,this.edgeRadius=0,this.projection=e.projection,this.layoutVertexArray=new Go,this.centroidVertexArray=new ws,this.indexArray=new rs,this.programConfigurations=new Ws(e.layers,e.zoom),this.segments=new ra,this.stateDependentLayerIds=this.layers.filter((e=>e.isStateDependent())).map((e=>e.id)),this.enableTerrain=e.enableTerrain}populate(e,t,i,r){this.features=[],this.hasPattern=bh("fill-extrusion",this.layers,t),this.featuresOnBorder=[],this.borders=[[],[],[],[]],this.borderDoneWithNeighborZ=[-1,-1,-1,-1],this.tileToMeter=function(e){const t=Math.exp(Math.PI*(1-e.y/(1<=0;e--){const t=d[e];(0===t.length||(p=t[0]).every((e=>e.x<=0))||p.every((e=>e.x>=na))||p.every((e=>e.y<=0))||p.every((e=>e.y>=na)))&&d.splice(e,1)}var p;let f;if(c)f=nu(d,a,r);else{f=[];for(const e of d)f.push({polygon:e,bounds:a})}const m=u?this.edgeRadius:0;for(const{polygon:e,bounds:t}of f){let i=0,n=0;for(const t of e)u&&!t[0].equals(t[t.length-1])&&t.push(t[0]),n+=u?t.length-1:t.length;const o=this.segments.prepareSegment((u?5:4)*n,this.layoutVertexArray,this.indexArray);if(u){const t=[],n=[];i=o.vertexLength;for(const i of e){let s,a;i.length&&i!==e[0]&&n.push(t.length/2),s=i[1].sub(i[0])._perp()._unit();for(let e=1;e4&&tu(n[n.length-2],n[0],n[1]),p=m?Jh(n[n.length-2],n[0],n[1],m):0;s=n[1].sub(n[0])._perp()._unit();let f=!0;for(let _=1,g=0;_0?1:0,E=y.dist(x);if(g+E>32768&&(g=0),m){a=v.sub(x)._perp()._unit();let e=Qh(y,x,v,Yh(s,a),m);isNaN(e)&&(e=0);const t=x.sub(y)._unit();y=y.add(t.mult(p))._round(),x=x.add(t.mult(-e))._round(),p=e,s=a}const S=o.vertexLength,M=n.length>4&&tu(y,x,v);let A=iu(g,d,f);if(Wh(this.layoutVertexArray,y.x,y.y,w,T,0,0,A),Wh(this.layoutVertexArray,y.x,y.y,w,T,0,1,A),g+=E,A=iu(g,M,!f),d=M,Wh(this.layoutVertexArray,x.x,x.y,w,T,0,0,A),Wh(this.layoutVertexArray,x.x,x.y,w,T,0,1,A),o.vertexLength+=4,this.indexArray.emplaceBack(S+0,S+1,S+2),this.indexArray.emplaceBack(S+1,S+3,S+2),o.primitiveLength+=2,m){const r=i+(1===_?n.length-2:_-2),s=1===_?i:r+1;if(this.indexArray.emplaceBack(S+1,r,S+3),this.indexArray.emplaceBack(r,s,S+3),o.primitiveLength+=2,void 0===e&&(e=S),!eu(v,n[_],t)){const t=_===n.length-1?e:o.vertexLength;this.indexArray.emplaceBack(S+2,S+3,t),this.indexArray.emplaceBack(S+3,t+1,t),this.indexArray.emplaceBack(S+3,s,t+1),o.primitiveLength+=3}f=!f}if(c){const e=this.layoutVertexExtArray,t=l.projectTilePoint(y.x,y.y,r),i=l.projectTilePoint(x.x,x.y,r),n=l.upVector(r,y.x,y.y),o=l.upVector(r,x.x,x.y);Xh(e,t,n),Xh(e,t,n),Xh(e,i,o),Xh(e,i,o)}}u&&(i+=n.length-1)}}if(h&&h.polyCount.length>0){if(h.borders){h.vertexArrayOffset=this.centroidVertexArray.length;const e=h.borders,t=this.featuresOnBorder.push(h)-1;for(let i=0;i<4;i++)e[i][0]!==Number.MAX_VALUE&&this.borders[i].push(t)}this.encodeCentroid(h.borders?void 0:h.centroid(),h)}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,i,n,o,r)}sortBorders(){for(let e=0;e<4;e++)this.borders[e].sort(((t,i)=>this.featuresOnBorder[t].borders[e][0]-this.featuresOnBorder[i].borders[e][0]))}encodeCentroid(e,t,i=!0){let r,n;if(e)if(0!==e.y){const i=t.span()._mult(this.tileToMeter);r=(Math.max(e.x,1)<<3)+Math.min(7,Math.round(i.x/10)),n=(Math.max(e.y,1)<<3)+Math.min(7,Math.round(i.y/10))}else r=Math.ceil(7*(e.x+450)),n=0;else r=0,n=+i;let o=i?this.centroidVertexArray.length:t.vertexArrayOffset;for(const e of t.polyCount){i&&this.centroidVertexArray.resize(this.centroidVertexArray.length+4*e.edges+e.top);for(let t=0;ti[1].x&&t.x>i[1].x||e.yi[1].y&&t.y>i[1].y}function tu(e,t,i){if(e.x<0||e.x>=na||t.x<0||t.x>=na||i.x<0||i.x>=na)return!1;const r=i.sub(t),n=r.perp(),o=e.sub(t);return(r.x*o.x+r.y*o.y)/Math.sqrt((r.x*r.x+r.y*r.y)*(o.x*o.x+o.y*o.y))>-.866&&n.x*o.x+n.y*o.y<0}function iu(e,t,i){const r=t?2|e:-3&e;return i?1|r:-2&r}function ru(){const e=Math.PI/32,t=Math.tan(e),i=Rl;return i*Math.sqrt(1+2*t*t)-i}function nu(e,t,i){const r=1<{for(const i of e)s.push({polygon:i,bounds:t})},l=Math.ceil(Math.log2(i)),c=Math.ceil(Math.log2(r)),h=l-c,u=[];for(let e=0;e0?0:1);for(let e=0;et+1?p.push({polygons:d,bounds:e,depth:t+1}):a(d,e)}if(f.length){const e=[new y(0===i?h:r.x,1===i?h:r.y),s];u.length>t+1?p.push({polygons:f,bounds:e,depth:t+1}):a(f,e)}}return s}(e,t,Math.ceil((o-n)/11.25),Math.ceil((s-a)/11.25),1,((e,t,n)=>{if(0===e)return.5*(t+n);{const e=$l((i.y+t/na)/r);return(Nl(.5*($l((i.y+n/na)/r)+e))*r-i.y)*na}}))}Hn(Kh,"FillExtrusionBucket",{omit:["layers","features"]}),Hn(Hh,"PartMetadata");const ou=new Lo({"fill-extrusion-edge-radius":new Po(et["layout_fill-extrusion"]["fill-extrusion-edge-radius"])});var su={paint:new Lo({"fill-extrusion-opacity":new Po(et["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new ko(et["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Po(et["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Po(et["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new ko(et["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new ko(et["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new ko(et["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Po(et["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"]),"fill-extrusion-ambient-occlusion-intensity":new Po(et["paint_fill-extrusion"]["fill-extrusion-ambient-occlusion-intensity"]),"fill-extrusion-ambient-occlusion-radius":new Po(et["paint_fill-extrusion"]["fill-extrusion-ambient-occlusion-radius"]),"fill-extrusion-rounded-roof":new Po(et["paint_fill-extrusion"]["fill-extrusion-rounded-roof"])}),layout:ou};function au(e,t,i){var r=2*Math.PI*6378137/256/Math.pow(2,i);return[e*r-2*Math.PI*6378137/2,t*r-2*Math.PI*6378137/2]}class lu{constructor(e,t,i){this.z=e,this.x=t,this.y=i,this.key=uu(0,e,e,t,i)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,t){const i=function(e,t,i){var r=au(256*e,256*(t=Math.pow(2,i)-t-1),i),n=au(256*(e+1),256*(t+1),i);return r[0]+","+r[1]+","+n[0]+","+n[1]}(this.x,this.y,this.z),r=function(e,t,i){let r,n="";for(let o=e;o>0;o--)r=1<this.canonical.z?new hu(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new hu(e,this.wrap,e,this.canonical.x>>t,this.canonical.y>>t)}calculateScaledKey(e,t=!0){if(this.overscaledZ===e&&t)return this.key;if(e>this.canonical.z)return uu(this.wrap*+t,e,this.canonical.z,this.canonical.x,this.canonical.y);{const i=this.canonical.z-e;return uu(this.wrap*+t,e,e,this.canonical.x>>i,this.canonical.y>>i)}}isChildOf(e){if(e.wrap!==this.wrap)return!1;const t=this.canonical.z-e.canonical.z;return 0===e.overscaledZ||e.overscaledZ>t&&e.canonical.y===this.canonical.y>>t}children(e){if(this.overscaledZ>=e)return[new hu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const t=this.canonical.z+1,i=2*this.canonical.x,r=2*this.canonical.y;return[new hu(t,this.wrap,t,i,r),new hu(t,this.wrap,t,i+1,r),new hu(t,this.wrap,t,i,r+1),new hu(t,this.wrap,t,i+1,r+1)]}isLessThan(e){return this.wrape.wrap)&&(this.overscaledZe.overscaledZ)&&(this.canonical.xe.canonical.x)&&this.canonical.ye.id)),this.index=e.index,this.projection=e.projection,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach((e=>{this.gradients[e.id]={}})),this.layoutVertexArray=new $o,this.layoutVertexArray2=new Zo,this.indexArray=new rs,this.programConfigurations=new Ws(e.layers,e.zoom),this.segments=new ra,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((e=>e.isStateDependent())).map((e=>e.id))}populate(e,t,i,r){this.hasPattern=bh("line",this.layers,t);const n=this.layers[0].layout.get("line-sort-key"),o=[];for(const{feature:t,id:s,index:a,sourceLayerIndex:l}of e){const e=this.layers[0]._featureFilter.needGeometry,c=rc(t,e);if(!this.layers[0]._featureFilter.filter(new wo(this.zoom),c,i))continue;const h=n?n.evaluate(c,{},i):void 0,u={id:s,properties:t.properties,type:t.type,sourceLayerIndex:l,index:a,geometry:e?c.geometry:ic(t,i,r),patterns:{},sortKey:h};o.push(u)}n&&o.sort(((e,t)=>e.sortKey-t.sortKey));const{lineAtlas:s,featureIndex:a}=t,l=this.addConstantDashes(s);for(const r of o){const{geometry:n,index:o,sourceLayerIndex:c}=r;if(l&&this.addFeatureDashes(r,s),this.hasPattern){const e=wh("line",this.layers,r,this.zoom,t);this.patternFeatures.push(e)}else this.addFeature(r,n,o,i,s.positions,t.availableImages);a.insert(e[o].feature,n,o,c,this.index)}}addConstantDashes(e){let t=!1;for(const i of this.layers){const r=i.paint.get("line-dasharray").value,n=i.layout.get("line-cap").value;if("constant"!==r.kind||"constant"!==n.kind)t=!0;else{const t=n.value,i=r.value;if(!i)continue;e.addDash(i,t)}}return t}addFeatureDashes(e,t){const i=this.zoom;for(const r of this.layers){const n=r.paint.get("line-dasharray").value,o=r.layout.get("line-cap").value;if("constant"===n.kind&&"constant"===o.kind)continue;let s,a;if("constant"===n.kind){if(s=n.value,!s)continue}else s=n.evaluate({zoom:i},e);a="constant"===o.kind?o.value:o.evaluate({zoom:i},e),t.addDash(s,a),e.patterns[r.id]=t.getKey(s,a)}}update(e,t,i,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,i,r)}addFeatures(e,t,i,r,n){for(const e of this.patternFeatures)this.addFeature(e,e.geometry,e.index,t,i,r)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=e.createVertexBuffer(this.layoutVertexArray2,xu)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,gu),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(e){if(e.properties&&e.properties.hasOwnProperty("mapbox_clip_start")&&e.properties.hasOwnProperty("mapbox_clip_end"))return{start:+e.properties.mapbox_clip_start,end:+e.properties.mapbox_clip_end}}addFeature(e,t,i,r,n,o){const s=this.layers[0].layout,a=s.get("line-join").evaluate(e,{}),l=s.get("line-cap").evaluate(e,{}),c=s.get("line-miter-limit"),h=s.get("line-round-limit");this.lineClips=this.lineFeatureClips(e);for(const i of t)this.addLine(i,e,a,l,c,h);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,i,n,o,r)}addLine(e,t,i,r,n,o){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineSoFar=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let t=0;t=2&&e[a-1].equals(e[a-2]);)a--;let l=0;for(;l0;if(b&&t>l){const e=u.dist(d);if(e>2*c){const t=u.sub(u.sub(d)._mult(c/e)._round());this.updateDistance(d,t),this.addCurrentVertex(t,f,0,0,h),d=t}}const T=d&&p;let E=T?i:s?"butt":r;if(T&&"round"===E&&(xn&&(E="bevel"),"bevel"===E&&(x>2&&(E="flipbevel"),x100)_=m.mult(-1);else{const e=x*f.add(m).mag()/f.sub(m).mag();_._perp()._mult(e*(w?-1:1))}this.addCurrentVertex(u,_,0,0,h),this.addCurrentVertex(u,_.mult(-1),0,0,h)}else if("bevel"===E||"fakeround"===E){const e=-Math.sqrt(x*x-1),t=w?e:0,i=w?0:e;if(d&&this.addCurrentVertex(u,f,t,i,h),"fakeround"===E){const e=Math.round(180*v/Math.PI/20);for(let t=1;t2*c){const t=u.add(p.sub(u)._mult(c/e)._round());this.updateDistance(u,t),this.addCurrentVertex(t,m,0,0,h),u=t}}}}addCurrentVertex(e,t,i,r,n,o=!1){const s=t.y*r-t.x,a=-t.y-t.x*r;this.addHalfVertex(e,t.x+t.y*i,t.y-t.x*i,o,!1,i,n),this.addHalfVertex(e,s,a,o,!0,-r,n)}addHalfVertex({x:e,y:t},i,r,n,o,s,a){this.layoutVertexArray.emplaceBack((e<<1)+(n?1:0),(t<<1)+(o?1:0),Math.round(63*i)+128,Math.round(63*r)+128,1+(0===s?0:s<0?-1:1),0,this.lineSoFar),this.lineClips&&this.layoutVertexArray2.emplaceBack(this.scaledDistance,this.lineClipsArray.length,this.lineClips.start,this.lineClips.end);const l=a.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,l),a.primitiveLength++),o?this.e2=l:this.e1=l}updateScaledDistance(){if(this.lineClips){const e=this.totalDistance/(this.lineClips.end-this.lineClips.start);this.scaledDistance=this.distance/this.totalDistance,this.lineSoFar=e*this.lineClips.start+this.distance}else this.lineSoFar=this.distance}updateDistance(e,t){this.distance+=e.dist(t),this.updateScaledDistance()}}Hn(wu,"LineBucket",{omit:["layers","patternFeatures"]});const Tu=new Lo({"line-cap":new ko(et.layout_line["line-cap"]),"line-join":new ko(et.layout_line["line-join"]),"line-miter-limit":new Po(et.layout_line["line-miter-limit"]),"line-round-limit":new Po(et.layout_line["line-round-limit"]),"line-sort-key":new ko(et.layout_line["line-sort-key"])});var Eu={paint:new Lo({"line-opacity":new ko(et.paint_line["line-opacity"]),"line-color":new ko(et.paint_line["line-color"]),"line-translate":new Po(et.paint_line["line-translate"]),"line-translate-anchor":new Po(et.paint_line["line-translate-anchor"]),"line-width":new ko(et.paint_line["line-width"]),"line-gap-width":new ko(et.paint_line["line-gap-width"]),"line-offset":new ko(et.paint_line["line-offset"]),"line-blur":new ko(et.paint_line["line-blur"]),"line-dasharray":new ko(et.paint_line["line-dasharray"]),"line-pattern":new ko(et.paint_line["line-pattern"]),"line-gradient":new Do(et.paint_line["line-gradient"]),"line-trim-offset":new Po(et.paint_line["line-trim-offset"])}),layout:Tu};const Su=new class extends ko{possiblyEvaluate(e,t){return t=new wo(Math.floor(t.zoom),{now:t.now,fadeDuration:t.fadeDuration,transition:t.transition}),super.possiblyEvaluate(e,t)}evaluate(e,t,i,r){return t=k({},t,{zoom:Math.floor(t.zoom)}),super.evaluate(e,t,i,r)}}(Eu.paint.properties["line-width"].specification);function Mu(e,t){return t>0?t+2*e:e}Su.useIntegerZoom=!0;const Au=Uo([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_tex_size",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),Iu=Uo([{name:"a_globe_anchor",components:3,type:"Int16"},{name:"a_globe_normal",components:3,type:"Float32"}],4),Cu=Uo([{name:"a_projected_pos",components:4,type:"Float32"}],4);Uo([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const zu=Uo([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}]),Pu=Uo([{name:"a_size_scale",components:1,type:"Float32"},{name:"a_padding",components:2,type:"Float32"}]);Uo([{type:"Int16",name:"projectedAnchorX"},{type:"Int16",name:"projectedAnchorY"},{type:"Int16",name:"projectedAnchorZ"},{type:"Int16",name:"tileAnchorX"},{type:"Int16",name:"tileAnchorY"},{type:"Float32",name:"x1"},{type:"Float32",name:"y1"},{type:"Float32",name:"x2"},{type:"Float32",name:"y2"},{type:"Int16",name:"padding"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);const ku=Uo([{name:"a_pos",components:3,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),Du=Uo([{name:"a_pos_2f",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);Uo([{name:"triangle",components:3,type:"Uint16"}]),Uo([{type:"Int16",name:"projectedAnchorX"},{type:"Int16",name:"projectedAnchorY"},{type:"Int16",name:"projectedAnchorZ"},{type:"Float32",name:"tileAnchorX"},{type:"Float32",name:"tileAnchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"},{type:"Uint8",name:"flipState"}]),Uo([{type:"Int16",name:"projectedAnchorX"},{type:"Int16",name:"projectedAnchorY"},{type:"Int16",name:"projectedAnchorZ"},{type:"Float32",name:"tileAnchorX"},{type:"Float32",name:"tileAnchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",components:2,name:"textOffset"},{type:"Float32",name:"collisionCircleDiameter"}]),Uo([{type:"Float32",name:"offsetX"}]),Uo([{type:"Int16",name:"x"},{type:"Int16",name:"y"}]);var Lu=24;const Ru=128;function Bu(e,t){const{expression:i}=t;if("constant"===i.kind)return{kind:"constant",layoutSize:i.evaluate(new wo(e+1))};if("source"===i.kind)return{kind:"source"};{const{zoomStops:t,interpolationType:r}=i;let n=0;for(;n{e.text=function(e,t,i){const r=t.layout.get("text-transform").evaluate(i,{});return"uppercase"===r?e=e.toLocaleUpperCase():"lowercase"===r&&(e=e.toLocaleLowerCase()),bo.applyArabicShaping&&(e=bo.applyArabicShaping(e)),e}(e.text,t,i)})),e}const Nu={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂","←":"↑","→":"↓"};function ju(e){return"︶"===e||"﹈"===e||"︸"===e||"﹄"===e||"﹂"===e||"︾"===e||"︼"===e||"︺"===e||"︘"===e||"﹀"===e||"︐"===e||"︓"===e||"︔"===e||"`"===e||" ̄"===e||"︑"===e||"︒"===e}function Gu(e){return"︵"===e||"﹇"===e||"︷"===e||"﹃"===e||"﹁"===e||"︽"===e||"︻"===e||"︹"===e||"︗"===e||"︿"===e}var $u=Wu,Zu=function(e,t,i,r,n){var o,s,a=8*n-r-1,l=(1<>1,h=-7,u=i?n-1:0,d=i?-1:1,p=e[t+u];for(u+=d,o=p&(1<<-h)-1,p>>=-h,h+=a;h>0;o=256*o+e[t+u],u+=d,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=r;h>0;s=256*s+e[t+u],u+=d,h-=8);if(0===o)o=1-c;else{if(o===l)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,r),o-=c}return(p?-1:1)*s*Math.pow(2,o-r)},qu=function(e,t,i,r,n,o){var s,a,l,c=8*o-n-1,h=(1<>1,d=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:o-1,f=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=h):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+u>=1?d/l:d*Math.pow(2,1-u))*l>=2&&(s++,l/=2),s+u>=h?(a=0,s=h):s+u>=1?(a=(t*l-1)*Math.pow(2,n),s+=u):(a=t*Math.pow(2,u-1)*Math.pow(2,n),s=0));n>=8;e[i+p]=255&a,p+=f,a/=256,n-=8);for(s=s<0;e[i+p]=255&s,p+=f,s/=256,c-=8);e[i+p-f]|=128*m};function Wu(e){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(e)?e:new Uint8Array(e||0),this.pos=0,this.type=0,this.length=this.buf.length}Wu.Varint=0,Wu.Fixed64=1,Wu.Bytes=2,Wu.Fixed32=5;var Xu=4294967296,Hu=1/Xu,Ku="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function Yu(e){return e.type===Wu.Bytes?e.readVarint()+e.pos:e.pos+1}function Ju(e,t,i){return i?4294967296*t+(e>>>0):4294967296*(t>>>0)+(e>>>0)}function Qu(e,t,i){var r=t<=16383?1:t<=2097151?2:t<=268435455?3:Math.floor(Math.log(t)/(7*Math.LN2));i.realloc(r);for(var n=i.pos-1;n>=e;n--)i.buf[n+r]=i.buf[n]}function ed(e,t){for(var i=0;i>>8,e[i+2]=t>>>16,e[i+3]=t>>>24}function ud(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16)+(e[t+3]<<24)}Wu.prototype={destroy:function(){this.buf=null},readFields:function(e,t,i){for(i=i||this.length;this.pos>3,o=this.pos;this.type=7&r,e(n,t,this),this.pos===o&&this.skip(r)}return t},readMessage:function(e,t){return this.readFields(e,t,this.readVarint()+this.pos)},readFixed32:function(){var e=cd(this.buf,this.pos);return this.pos+=4,e},readSFixed32:function(){var e=ud(this.buf,this.pos);return this.pos+=4,e},readFixed64:function(){var e=cd(this.buf,this.pos)+cd(this.buf,this.pos+4)*Xu;return this.pos+=8,e},readSFixed64:function(){var e=cd(this.buf,this.pos)+ud(this.buf,this.pos+4)*Xu;return this.pos+=8,e},readFloat:function(){var e=Zu(this.buf,this.pos,!0,23,4);return this.pos+=4,e},readDouble:function(){var e=Zu(this.buf,this.pos,!0,52,8);return this.pos+=8,e},readVarint:function(e){var t,i,r=this.buf;return t=127&(i=r[this.pos++]),i<128?t:(t|=(127&(i=r[this.pos++]))<<7,i<128?t:(t|=(127&(i=r[this.pos++]))<<14,i<128?t:(t|=(127&(i=r[this.pos++]))<<21,i<128?t:function(e,t,i){var r,n,o=i.buf;if(r=(112&(n=o[i.pos++]))>>4,n<128)return Ju(e,r,t);if(r|=(127&(n=o[i.pos++]))<<3,n<128)return Ju(e,r,t);if(r|=(127&(n=o[i.pos++]))<<10,n<128)return Ju(e,r,t);if(r|=(127&(n=o[i.pos++]))<<17,n<128)return Ju(e,r,t);if(r|=(127&(n=o[i.pos++]))<<24,n<128)return Ju(e,r,t);if(r|=(1&(n=o[i.pos++]))<<31,n<128)return Ju(e,r,t);throw new Error("Expected varint not more than 10 bytes")}(t|=(15&(i=r[this.pos]))<<28,e,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var e=this.readVarint();return e%2==1?(e+1)/-2:e/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var e=this.readVarint()+this.pos,t=this.pos;return this.pos=e,e-t>=12&&Ku?function(e,t,i){return Ku.decode(e.subarray(t,i))}(this.buf,t,e):function(e,t,i){for(var r="",n=t;n239?4:l>223?3:l>191?2:1;if(n+h>i)break;1===h?l<128&&(c=l):2===h?128==(192&(o=e[n+1]))&&(c=(31&l)<<6|63&o)<=127&&(c=null):3===h?(s=e[n+2],128==(192&(o=e[n+1]))&&128==(192&s)&&((c=(15&l)<<12|(63&o)<<6|63&s)<=2047||c>=55296&&c<=57343)&&(c=null)):4===h&&(s=e[n+2],a=e[n+3],128==(192&(o=e[n+1]))&&128==(192&s)&&128==(192&a)&&((c=(15&l)<<18|(63&o)<<12|(63&s)<<6|63&a)<=65535||c>=1114112)&&(c=null)),null===c?(c=65533,h=1):c>65535&&(c-=65536,r+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),r+=String.fromCharCode(c),n+=h}return r}(this.buf,t,e)},readBytes:function(){var e=this.readVarint()+this.pos,t=this.buf.subarray(this.pos,e);return this.pos=e,t},readPackedVarint:function(e,t){if(this.type!==Wu.Bytes)return e.push(this.readVarint(t));var i=Yu(this);for(e=e||[];this.pos127;);else if(t===Wu.Bytes)this.pos=this.readVarint()+this.pos;else if(t===Wu.Fixed32)this.pos+=4;else{if(t!==Wu.Fixed64)throw new Error("Unimplemented type: "+t);this.pos+=8}},writeTag:function(e,t){this.writeVarint(e<<3|t)},realloc:function(e){for(var t=this.length||16;t268435455||e<0?function(e,t){var i,r;if(e>=0?(i=e%4294967296|0,r=e/4294967296|0):(r=~(-e/4294967296),4294967295^(i=~(-e%4294967296))?i=i+1|0:(i=0,r=r+1|0)),e>=0x10000000000000000||e<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");t.realloc(10),function(e,t,i){i.buf[i.pos++]=127&e|128,e>>>=7,i.buf[i.pos++]=127&e|128,e>>>=7,i.buf[i.pos++]=127&e|128,e>>>=7,i.buf[i.pos++]=127&e|128,i.buf[i.pos]=127&(e>>>=7)}(i,0,t),function(e,t){var i=(7&e)<<4;t.buf[t.pos++]|=i|((e>>>=3)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e)))))}(r,t)}(e,this):(this.realloc(4),this.buf[this.pos++]=127&e|(e>127?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),e<=127||(this.buf[this.pos++]=e>>>7&127))))},writeSVarint:function(e){this.writeVarint(e<0?2*-e-1:2*e)},writeBoolean:function(e){this.writeVarint(Boolean(e))},writeString:function(e){e=String(e),this.realloc(4*e.length),this.pos++;var t=this.pos;this.pos=function(e,t,i){for(var r,n,o=0;o55295&&r<57344){if(!n){r>56319||o+1===t.length?(e[i++]=239,e[i++]=191,e[i++]=189):n=r;continue}if(r<56320){e[i++]=239,e[i++]=191,e[i++]=189,n=r;continue}r=n-55296<<10|r-56320|65536,n=null}else n&&(e[i++]=239,e[i++]=191,e[i++]=189,n=null);r<128?e[i++]=r:(r<2048?e[i++]=r>>6|192:(r<65536?e[i++]=r>>12|224:(e[i++]=r>>18|240,e[i++]=r>>12&63|128),e[i++]=r>>6&63|128),e[i++]=63&r|128)}return i}(this.buf,e,this.pos);var i=this.pos-t;i>=128&&Qu(t,i,this),this.pos=t-1,this.writeVarint(i),this.pos+=i},writeFloat:function(e){this.realloc(4),qu(this.buf,e,this.pos,!0,23,4),this.pos+=4},writeDouble:function(e){this.realloc(8),qu(this.buf,e,this.pos,!0,52,8),this.pos+=8},writeBytes:function(e){var t=e.length;this.writeVarint(t),this.realloc(t);for(var i=0;i=128&&Qu(i,r,this),this.pos=i-1,this.writeVarint(r),this.pos+=r},writeMessage:function(e,t,i){this.writeTag(e,Wu.Bytes),this.writeRawMessage(t,i)},writePackedVarint:function(e,t){t.length&&this.writeMessage(e,ed,t)},writePackedSVarint:function(e,t){t.length&&this.writeMessage(e,td,t)},writePackedBoolean:function(e,t){t.length&&this.writeMessage(e,nd,t)},writePackedFloat:function(e,t){t.length&&this.writeMessage(e,id,t)},writePackedDouble:function(e,t){t.length&&this.writeMessage(e,rd,t)},writePackedFixed32:function(e,t){t.length&&this.writeMessage(e,od,t)},writePackedSFixed32:function(e,t){t.length&&this.writeMessage(e,sd,t)},writePackedFixed64:function(e,t){t.length&&this.writeMessage(e,ad,t)},writePackedSFixed64:function(e,t){t.length&&this.writeMessage(e,ld,t)},writeBytesField:function(e,t){this.writeTag(e,Wu.Bytes),this.writeBytes(t)},writeFixed32Field:function(e,t){this.writeTag(e,Wu.Fixed32),this.writeFixed32(t)},writeSFixed32Field:function(e,t){this.writeTag(e,Wu.Fixed32),this.writeSFixed32(t)},writeFixed64Field:function(e,t){this.writeTag(e,Wu.Fixed64),this.writeFixed64(t)},writeSFixed64Field:function(e,t){this.writeTag(e,Wu.Fixed64),this.writeSFixed64(t)},writeVarintField:function(e,t){this.writeTag(e,Wu.Varint),this.writeVarint(t)},writeSVarintField:function(e,t){this.writeTag(e,Wu.Varint),this.writeSVarint(t)},writeStringField:function(e,t){this.writeTag(e,Wu.Bytes),this.writeString(t)},writeFloatField:function(e,t){this.writeTag(e,Wu.Fixed32),this.writeFloat(t)},writeDoubleField:function(e,t){this.writeTag(e,Wu.Fixed64),this.writeDouble(t)},writeBooleanField:function(e,t){this.writeVarintField(e,Boolean(t))}};var dd=d($u);const pd=3;function fd(e,t,i){t.glyphs=[],1===e&&i.readMessage(md,t)}function md(e,t,i){if(3===e){const{id:e,bitmap:r,width:n,height:o,left:s,top:a,advance:l}=i.readMessage(_d,{});t.glyphs.push({id:e,bitmap:new Lc({width:n+2*pd,height:o+2*pd},r),metrics:{width:n,height:o,left:s,top:a,advance:l}})}else 4===e?t.ascender=i.readSVarint():5===e&&(t.descender=i.readSVarint())}function _d(e,t,i){1===e?t.id=i.readVarint():2===e?t.bitmap=i.readBytes():3===e?t.width=i.readVarint():4===e?t.height=i.readVarint():5===e?t.left=i.readSVarint():6===e?t.top=i.readSVarint():7===e&&(t.advance=i.readVarint())}const gd=pd;function yd(e){let t=0,i=0;for(const r of e)t+=r.w*r.h,i=Math.max(i,r.w);e.sort(((e,t)=>t.h-e.h));const r=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(t/.95)),i),h:1/0}];let n=0,o=0;for(const t of e)for(let e=r.length-1;e>=0;e--){const i=r[e];if(!(t.w>i.w||t.h>i.h)){if(t.x=i.x,t.y=i.y,o=Math.max(o,t.y+t.h),n=Math.max(n,t.x+t.w),t.w===i.w&&t.h===i.h){const t=r.pop();ee.hasImage(t))),e.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const i in e.updatedImages)this.patchUpdatedImage(this.iconPositions[i],e.getImage(i),t),this.patchUpdatedImage(this.patternPositions[i],e.getImage(i),t)}patchUpdatedImage(e,t,i){if(!e||!t)return;if(e.version===t.version)return;e.version=t.version;const[r,n]=e.tl;i.update(t.data,void 0,{x:r,y:n})}}Hn(vd,"ImagePosition"),Hn(bd,"ImageAtlas");const wd={horizontal:1,vertical:2,horizontalOnly:3},Td=-17;class Ed{constructor(){this.scale=1,this.fontStack="",this.imageName=null}static forText(e,t){const i=new Ed;return i.scale=e||1,i.fontStack=t,i}static forImage(e){const t=new Ed;return t.imageName=e,t}}class Sd{constructor(){this.text="",this.sectionIndex=[],this.sections=[],this.imageSectionID=null}static fromFeature(e,t){const i=new Sd;for(let r=0;r=0&&i>=e&&Ad[this.text.charCodeAt(i)];i--)t--;this.text=this.text.substring(e,t),this.sectionIndex=this.sectionIndex.slice(e,t)}substring(e,t){const i=new Sd;return i.text=this.text.substring(e,t),i.sectionIndex=this.sectionIndex.slice(e,t),i.sections=this.sections,i}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce(((e,t)=>Math.max(e,this.sections[t].scale)),0)}addTextSection(e,t){this.text+=e.text,this.sections.push(Ed.forText(e.scale,e.fontStack||t));const i=this.sections.length-1;for(let t=0;t=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Md(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f){const m=Sd.fromFeature(e,n);u===wd.vertical&&m.verticalizePunctuation(d);let _=[];const g=function(e,t,i,r,n,o){if(!e)return[];const s=[],a=function(e,t,i,r,n,o){let s=0;for(let i=0;i=0;let c=0;for(let i=0;i0&&o>b&&(b=o)}else{const e=i[a.fontStack];if(!e)continue;e[m]&&(E=e[m]);const r=t[a.fontStack];if(!r)continue;const o=r.glyphs[m];if(!o)continue;if(x=o.metrics,M=8203!==m?Lu:0,_){const e=void 0!==r.ascender?Math.abs(r.ascender):0,t=void 0!==r.descender?Math.abs(r.descender):0,i=(e+t)*g;w-i/2;){if(s--,s<0)return!1;a-=e[s].dist(o),o=e[s]}a+=e[s].dist(e[s+1]),s++;const l=[];let c=0;for(;ar;)c-=l.shift().angleDelta;if(c>n)return!1;s++,a+=t.dist(i)}return!0}function Vd(e){let t=0;for(let i=0;ic){const h=(c-l)/o,u=Pi(r.x,n.x,h),d=Pi(r.y,n.y,h),p=new Fd(u,d,0,n.angleTo(r),i);return!s||Ud(e,p,a,s,t)?p:void 0}l+=o}}function $d(e,t,i,r,n,o,s,a,l){const c=Nd(r,o,s),h=jd(r,n),u=h*s,d=0===e[0].x||e[0].x===l||0===e[0].y||e[0].y===l;return t-u=0&&g=0&&y=0&&d+c<=h){const i=new Fd(g,y,0,m,t);i._round(),r&&!Ud(e,i,o,r,n)||p.push(i)}}u+=f}return a||p.length||s||(p=Zd(e,u/2,i,r,n,o,s,!0,l)),p}function qd(e,t,i,r,n){const o=[];for(let s=0;s=r&&c.x>=r||(s.x>=r?s=new y(r,s.y+(r-s.x)/(c.x-s.x)*(c.y-s.y))._round():c.x>=r&&(c=new y(r,s.y+(r-s.x)/(c.x-s.x)*(c.y-s.y))._round()),s.y>=n&&c.y>=n||(s.y>=n?s=new y(s.x+(n-s.y)/(c.y-s.y)*(c.x-s.x),n)._round():c.y>=n&&(c=new y(s.x+(n-s.y)/(c.y-s.y)*(c.x-s.x),n)._round()),l&&s.equals(l[l.length-1])||(l=[s],o.push(l)),l.push(c)))))}}return o}Hn(Fd,"Anchor");const Wd=1e20;function Xd(e,t,i,r,n,o,s,a,l){for(let c=t;c-1);l++,o[l]=a,s[l]=c,s[l+1]=Wd}for(let a=0,l=0;a{let r=this.entries[e];r||(r=this.entries[e]={glyphs:{},requests:{},ranges:{},ascender:void 0,descender:void 0});let n=r.glyphs[t];if(void 0!==n)return void i(null,{stack:e,id:t,glyph:n});if(n=this._tinySDF(r,e,t),n)return r.glyphs[t]=n,void i(null,{stack:e,id:t,glyph:n});const o=Math.floor(t/256);if(256*o>65535)return void i(new Error("glyphs > 65535 not supported"));if(r.ranges[o])return void i(null,{stack:e,id:t,glyph:n});let s=r.requests[o];s||(s=r.requests[o]=[],Jd.loadGlyphRange(e,o,this.url,this.requestManager,((e,t)=>{if(t){r.ascender=t.ascender,r.descender=t.descender;for(const e in t.glyphs)this._doesCharSupportLocalGlyph(+e)||(r.glyphs[+e]=t.glyphs[+e]);r.ranges[o]=!0}for(const i of s)i(e,t);delete r.requests[o]}))),s.push(((r,n)=>{r?i(r):n&&i(null,{stack:e,id:t,glyph:n.glyphs[t]||null})}))}),((e,i)=>{if(e)t(e);else if(i){const e={};for(const{stack:t,id:r,glyph:n}of i)void 0===e[t]&&(e[t]={}),void 0===e[t].glyphs&&(e[t].glyphs={}),e[t].glyphs[r]=n&&{id:n.id,bitmap:n.bitmap.clone(),metrics:n.metrics},e[t].ascender=this.entries[t].ascender,e[t].descender=this.entries[t].descender;t(null,e)}}))}_doesCharSupportLocalGlyph(e){return this.localGlyphMode!==Yd.none&&(this.localGlyphMode===Yd.all?!!this.localFontFamily:!!this.localFontFamily&&(eo["CJK Unified Ideographs"](e)||eo["Hangul Syllables"](e)||eo.Hiragana(e)||eo.Katakana(e)||eo["CJK Symbols and Punctuation"](e)))}_tinySDF(e,t,i){const r=this.localFontFamily;if(!r||!this._doesCharSupportLocalGlyph(i))return;let n=e.tinySDF;if(!n){let i="400";/bold/i.test(t)?i="900":/medium/i.test(t)?i="500":/light/i.test(t)&&(i="200"),n=e.tinySDF=new Jd.TinySDF({fontFamily:r,fontWeight:i,fontSize:24*Kd,buffer:3*Kd,radius:8*Kd}),n.fontWeight=i}if(this.localGlyphs[n.fontWeight][i])return this.localGlyphs[n.fontWeight][i];const o=String.fromCharCode(i),{data:s,width:a,height:l,glyphWidth:c,glyphHeight:h,glyphLeft:u,glyphTop:d,glyphAdvance:p}=n.draw(o);return this.localGlyphs[n.fontWeight][i]={id:i,bitmap:new Lc({width:a,height:l},s),metrics:{width:c/Kd,height:h/Kd,left:u/Kd,top:d/Kd-27,advance:p/Kd,localGlyph:!0}}}}Jd.loadGlyphRange=function(e,t,i,r,n){const o=256*t,s=o+255,a=r.transformRequest(r.normalizeGlyphsURL(i).replace("{fontstack}",e).replace("{range}",`${o}-${s}`),le.Glyphs);de(a,((e,t)=>{if(e)n(e);else if(t){const e={},i=function(e){return new dd(e).readFields(fd,{})}(t);for(const t of i.glyphs)e[t.id]=t;n(null,{glyphs:e,ascender:i.ascender,descender:i.descender})}}))},Jd.TinySDF=class{constructor({fontSize:e=24,buffer:t=3,radius:i=8,cutoff:r=.25,fontFamily:n="sans-serif",fontWeight:o="normal",fontStyle:s="normal"}={}){this.buffer=t,this.cutoff=r,this.radius=i;const a=this.size=e+4*t,l=this._createCanvas(a),c=this.ctx=l.getContext("2d",{willReadFrequently:!0});c.font=`${s} ${o} ${e}px ${n}`,c.textBaseline="alphabetic",c.textAlign="left",c.fillStyle="black",this.gridOuter=new Float64Array(a*a),this.gridInner=new Float64Array(a*a),this.f=new Float64Array(a),this.z=new Float64Array(a+1),this.v=new Uint16Array(a)}_createCanvas(e){const t=document.createElement("canvas");return t.width=t.height=e,t}draw(e){const{width:t,actualBoundingBoxAscent:i,actualBoundingBoxDescent:r,actualBoundingBoxLeft:n,actualBoundingBoxRight:o}=this.ctx.measureText(e),s=Math.ceil(i),a=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(o-n))),l=Math.min(this.size-this.buffer,s+Math.ceil(r)),c=a+2*this.buffer,h=l+2*this.buffer,u=Math.max(c*h,0),d=new Uint8ClampedArray(u),p={data:d,width:c,height:h,glyphWidth:a,glyphHeight:l,glyphTop:s,glyphLeft:0,glyphAdvance:t};if(0===a||0===l)return p;const{ctx:f,buffer:m,gridInner:_,gridOuter:g}=this;f.clearRect(m,m,a,l),f.fillText(e,m,m+s);const y=f.getImageData(m,m,a,l);g.fill(Wd,0,u),_.fill(0,0,u);for(let e=0;e0?e*e:0,_[r]=e<0?e*e:0}}Xd(g,0,0,c,h,c,this.f,this.v,this.z),Xd(_,m,m,a,l,c,this.f,this.v,this.z);for(let e=0;ee+t[1]-t[0],f=u.reduce(p,0),m=d.reduce(p,0),_=a-f,g=l-m;let x=0,v=f,b=0,w=m,T=0,E=_,S=0,M=g;if(o.content&&r){const e=o.content;x=tp(u,0,e[0]),b=tp(d,0,e[1]),v=tp(u,e[0],e[2]),w=tp(d,e[1],e[3]),T=e[0]-x,S=e[1]-b,E=e[2]-e[0]-v,M=e[3]-e[1]-w}const A=(r,n,a,l)=>{const u=rp(r.stretch-x,v,c,e.left),d=np(r.fixed-T,E,r.stretch,f),p=rp(n.stretch-b,w,h,e.top),_=np(n.fixed-S,M,n.stretch,m),g=rp(a.stretch-x,v,c,e.left),A=np(a.fixed-T,E,a.stretch,f),I=rp(l.stretch-b,w,h,e.top),C=np(l.fixed-S,M,l.stretch,m),z=new y(u,p),P=new y(g,p),k=new y(g,I),D=new y(u,I),L=new y(d/s,_/s),R=new y(A/s,C/s),B=t*Math.PI/180;if(B){const e=Math.sin(B),t=Math.cos(B),i=[t,-e,e,t];z._matMult(i),P._matMult(i),D._matMult(i),k._matMult(i)}const O=r.stretch+r.fixed,F=n.stretch+n.fixed;return{tl:z,tr:P,bl:D,br:k,tex:{x:o.paddedRect.x+Qd+O,y:o.paddedRect.y+Qd+F,w:a.stretch+a.fixed-O,h:l.stretch+l.fixed-F},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:L,pixelOffsetBR:R,minFontScaleX:E/s/c,minFontScaleY:M/s/h,isSDF:i}};if(r&&(o.stretchX||o.stretchY)){const e=ip(u,_,f),t=ip(d,g,m);for(let i=0;i0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:i}=this,r=t[e];for(;e>0;){const n=e-1>>1,o=t[n];if(i(r,o)>=0)break;t[e]=o,e=n}t[e]=r}_down(e){const{data:t,compare:i}=this,r=this.length>>1,n=t[e];for(;e=0)break;t[e]=o,e=r}t[e]=n}}function ap(e,t){return et?1:0}function lp(e,t=1,i=!1){let r=1/0,n=1/0,o=-1/0,s=-1/0;const a=e[0];for(let e=0;eo)&&(o=t.x),(!e||t.y>s)&&(s=t.y)}const l=Math.min(o-r,s-n);let c=l/2;const h=new sp([],cp);if(0===l)return new y(r,n);for(let t=r;tu.d||!u.d)&&(u=r,i&&console.log("found best %d after %d probes",Math.round(1e4*r.d)/1e4,d)),r.max-u.d<=t||(c=r.h/2,h.push(new hp(r.p.x-c,r.p.y-c,c,e)),h.push(new hp(r.p.x+c,r.p.y-c,c,e)),h.push(new hp(r.p.x-c,r.p.y+c,c,e)),h.push(new hp(r.p.x+c,r.p.y+c,c,e)),d+=4)}return i&&(console.log(`num probes: ${d}`),console.log(`best distance: ${u.d}`)),u.p}function cp(e,t){return t.max-e.max}class hp{constructor(e,t,i,r){this.p=new y(e,t),this.h=i,this.d=function(e,t){let i=!1,r=1/0;for(let n=0;ne.y!=a.y>e.y&&e.x<(a.x-n.x)*(e.y-n.y)/(a.y-n.y)+n.x&&(i=!i),r=Math.min(r,fc(e,n,a))}}return(i?1:-1)*Math.sqrt(r)}(this.p,r),this.max=this.d+this.h*Math.SQRT2}}const up=7,dp=Number.POSITIVE_INFINITY,pp=Math.sqrt(2);function fp(e,[t,i]){let r=0,n=0;if(i===dp){t<0&&(t=0);const i=t/pp;switch(e){case"top-right":case"top-left":n=i-up;break;case"bottom-right":case"bottom-left":n=-i+up;break;case"bottom":n=-t+up;break;case"top":n=t-up}switch(e){case"top-right":case"bottom-right":r=-i;break;case"top-left":case"bottom-left":r=i;break;case"left":r=t;break;case"right":r=-t}}else{switch(t=Math.abs(t),i=Math.abs(i),e){case"top-right":case"top-left":case"top":n=i-up;break;case"bottom-right":case"bottom-left":case"bottom":n=-i+up}switch(e){case"top-right":case"bottom-right":case"right":r=-t;break;case"top-left":case"bottom-left":case"left":r=t}}return[r,n]}function mp(e,t,i,r,n,o,s,a,l,c){e.createArrays(),e.tilePixelRatio=na/(512*e.overscaling),e.compareText={},e.iconsNeedLinear=!1;const h=e.layers[0].layout,u=e.layers[0]._unevaluatedLayout._values,d={};if("composite"===e.textSizeData.kind){const{minZoom:t,maxZoom:i}=e.textSizeData;d.compositeTextSizes=[u["text-size"].possiblyEvaluate(new wo(t),a),u["text-size"].possiblyEvaluate(new wo(i),a)]}if("composite"===e.iconSizeData.kind){const{minZoom:t,maxZoom:i}=e.iconSizeData;d.compositeIconSizes=[u["icon-size"].possiblyEvaluate(new wo(t),a),u["icon-size"].possiblyEvaluate(new wo(i),a)]}d.layoutTextSize=u["text-size"].possiblyEvaluate(new wo(l+1),a),d.layoutIconSize=u["icon-size"].possiblyEvaluate(new wo(l+1),a),d.textMaxSize=u["text-size"].possiblyEvaluate(new wo(18),a);const p="map"===h.get("text-rotation-alignment")&&"point"!==h.get("symbol-placement"),f=h.get("text-size");for(const o of e.features){const l=h.get("text-font").evaluate(o,{},a).join(","),u=f.evaluate(o,{},a),m=d.layoutTextSize.evaluate(o,{},a),_=(d.layoutIconSize.evaluate(o,{},a),{horizontal:{},vertical:void 0}),g=o.text;let y,x=[0,0];if(g){const r=g.toString(),s=h.get("text-letter-spacing").evaluate(o,{},a)*Lu,c=h.get("text-line-height").evaluate(o,{},a)*Lu,d=io(r)?s:0,f=h.get("text-anchor").evaluate(o,{},a),y=h.get("text-variable-anchor");if(!y){const e=h.get("text-radial-offset").evaluate(o,{},a);x=e?fp(f,[e*Lu,dp]):h.get("text-offset").evaluate(o,{},a).map((e=>e*Lu))}let v=p?"center":h.get("text-justify").evaluate(o,{},a);const b="point"===h.get("symbol-placement"),w=b?h.get("text-max-width").evaluate(o,{},a)*Lu:1/0,T=o=>{e.allowVerticalPlacement&&to(r)&&(_.vertical=Md(g,t,i,n,l,w,c,f,o,d,x,wd.vertical,!0,m,u))};if(!p&&y){const e="auto"===v?y.map((e=>_p(e))):[v];let r=!1;for(let o=0;o=0||!to(r)){const e=Md(g,t,i,n,l,w,c,f,v,d,x,wd.horizontal,!1,m,u);e&&(_.horizontal[v]=e)}T(b?"left":v)}}let v=!1;if(o.icon&&o.icon.name){const t=r[o.icon.name];t&&(y=Bd(n[o.icon.name],h.get("icon-offset").evaluate(o,{},a),h.get("icon-anchor").evaluate(o,{},a)),v=t.sdf,void 0===e.sdfIcons?e.sdfIcons=t.sdf:e.sdfIcons!==t.sdf&&$("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"),(t.pixelRatio!==e.pixelRatio||0!==h.get("icon-rotate").constantOr(1))&&(e.iconsNeedLinear=!0))}const b=bp(_.horizontal)||_.vertical;e.iconsInText||(e.iconsInText=!!b&&b.iconsInText),(b||y)&&gp(e,o,_,y,r,d,m,0,x,v,s,a,c)}o&&e.generateCollisionDebugBuffers(l,e.collisionBoxArray)}function _p(e){switch(e){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function gp(e,t,i,r,n,o,s,a,l,c,h,u,d){let p=o.textMaxSize.evaluate(t,{},u);void 0===p&&(p=s);const f=e.layers[0].layout,m=f.get("icon-offset").evaluate(t,{},u),_=bp(i.horizontal)||i.vertical,g="globe"===d.name,y=Lu,x=s/y,v=e.tilePixelRatio*p/y,w=(z=e.overscaling,e.zoom>18&&z>2&&(z>>=1),Math.max(na/(512*z),1)*f.get("symbol-spacing")),T=f.get("text-padding")*e.tilePixelRatio,E=f.get("icon-padding")*e.tilePixelRatio,S=b(f.get("text-max-angle")),M="map"===f.get("text-rotation-alignment")&&"point"!==f.get("symbol-placement"),A="map"===f.get("icon-rotation-alignment")&&"point"!==f.get("symbol-placement"),I=f.get("symbol-placement"),C=w/2;var z;const P=f.get("icon-text-fit");let k;r&&"none"!==P&&(e.allowVerticalPlacement&&i.vertical&&(k=Od(r,i.vertical,P,f.get("icon-text-fit-padding"),m,x)),_&&(r=Od(r,_,P,f.get("icon-text-fit-padding"),m,x)));const D=(s,a,p)=>{if(a.x<0||a.x>=na||a.y<0||a.y>=na)return;let f=null;if(g){const{x:e,y:t,z:i}=d.projectTilePoint(a.x,a.y,p);f={anchor:new Fd(e,t,i,0,void 0),up:d.upVector(p,a.x,a.y)}}!function(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,E){const S=e.addToLineVertexArray(t,r);let M,A,I,C,z,P,k,D=0,L=0,R=0,B=0,O=-1,F=-1;const U={};let V=Is("");const N=i?i.anchor:t;let j=0,G=0;if(void 0===l._unevaluatedLayout.getValue("text-radial-offset")?[j,G]=l.layout.get("text-offset").evaluate(v,{},E).map((e=>e*Lu)):(j=l.layout.get("text-radial-offset").evaluate(v,{},E)*Lu,G=dp),e.allowVerticalPlacement&&n.vertical){const e=n.vertical;if(f)P=Tp(e),a&&(k=Tp(a));else{const i=l.layout.get("text-rotate").evaluate(v,{},E)+90;I=wp(c,N,t,h,u,d,e,p,i,m),a&&(C=wp(c,N,t,h,u,d,a,g,i))}}if(o){const r=l.layout.get("icon-rotate").evaluate(v,{},E),n="none"!==l.layout.get("icon-text-fit"),s=ep(o,r,w,n),p=a?ep(a,r,w,n):void 0;A=wp(c,N,t,h,u,d,o,g,r),D=4*s.length;const f=e.iconSizeData;let m=null;"source"===f.kind?(m=[Ru*l.layout.get("icon-size").evaluate(v,{},E)],m[0]>xp&&$(`${e.layerIds[0]}: Value for "icon-size" is >= ${yp}. Reduce your "icon-size".`)):"composite"===f.kind&&(m=[Ru*b.compositeIconSizes[0].evaluate(v,{},E),Ru*b.compositeIconSizes[1].evaluate(v,{},E)],(m[0]>xp||m[1]>xp)&&$(`${e.layerIds[0]}: Value for "icon-size" is >= ${yp}. Reduce your "icon-size".`)),e.addSymbols(e.icon,s,m,x,y,v,!1,i,t,S.lineStartIndex,S.lineLength,-1,T,E),O=e.icon.placedSymbolArray.length-1,p&&(L=4*p.length,e.addSymbols(e.icon,p,m,x,y,v,wd.vertical,i,t,S.lineStartIndex,S.lineLength,-1,T,E),F=e.icon.placedSymbolArray.length-1)}for(const r in n.horizontal){const o=n.horizontal[r];M||(V=Is(o.text),f?z=Tp(o):M=wp(c,N,t,h,u,d,o,p,l.layout.get("text-rotate").evaluate(v,{},E),m));const a=1===o.positionedLines.length;if(R+=vp(e,i,t,o,s,l,f,v,m,S,n.vertical?wd.horizontal:wd.horizontalOnly,a?Object.keys(n.horizontal):[r],U,O,b,T,E),a)break}n.vertical&&(B+=vp(e,i,t,n.vertical,s,l,f,v,m,S,wd.vertical,["vertical"],U,F,b,T,E));let Z=-1;const q=(e,t)=>e?Math.max(e,t):t;Z=q(z,Z),Z=q(P,Z),Z=q(k,Z);const W=Z>-1?1:0;e.glyphOffsetArray.length>=rf.MAX_GLYPHS&&$("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==v.sortKey&&e.addToSortKeyRanges(e.symbolInstances.length,v.sortKey),e.symbolInstances.emplaceBack(N.x,N.y,N.z,t.x,t.y,U.right>=0?U.right:-1,U.center>=0?U.center:-1,U.left>=0?U.left:-1,U.vertical>=0?U.vertical:-1,O,F,V,void 0!==M?M:e.collisionBoxArray.length,void 0!==M?M+1:e.collisionBoxArray.length,void 0!==I?I:e.collisionBoxArray.length,void 0!==I?I+1:e.collisionBoxArray.length,void 0!==A?A:e.collisionBoxArray.length,void 0!==A?A+1:e.collisionBoxArray.length,C||e.collisionBoxArray.length,C?C+1:e.collisionBoxArray.length,h,R,B,D,L,W,0,j,G,Z)}(e,a,f,s,i,r,n,k,e.layers[0],e.collisionBoxArray,t.index,t.sourceLayerIndex,e.index,T,M,l,0,E,A,m,t,o,c,h,u)};if("line"===I)for(const n of qd(t.geometry,0,0,na,na)){const t=$d(n,w,S,i.vertical||_,r,y,v,e.overscaling,na);for(const i of t)_&&Ep(e,_.text,C,i)||D(n,i,u)}else if("line-center"===I){for(const e of t.geometry)if(e.length>1){const t=Gd(e,S,i.vertical||_,r,y,v);t&&D(e,t,u)}}else if("Polygon"===t.type)for(const e of xh(t.geometry,0)){const t=lp(e,16);D(e[0],new Fd(t.x,t.y,0,0,void 0),u)}else if("LineString"===t.type)for(const e of t.geometry)D(e,new Fd(e[0].x,e[0].y,0,0,void 0),u);else if("Point"===t.type)for(const e of t.geometry)for(const t of e)D([t],new Fd(t.x,t.y,0,0,void 0),u)}const yp=255,xp=yp*Ru;function vp(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_){const g=function(e,t,i,r,n,o,s,a){const l=[];if(0===t.positionedLines.length)return l;const c=r.layout.get("text-rotate").evaluate(o,{})*Math.PI/180,h=function(e){const t=e[0],i=e[1],r=t*i;return r>0?[t,-i]:r<0?[-t,i]:0===t?[i,t]:[i,-t]}(i);let u=Math.abs(t.top-t.bottom);for(const e of t.positionedLines)u-=e.lineOffset;const d=t.positionedLines.length,p=u/d;let f=t.top-i[1];for(let e=0;exp&&$(`${e.layerIds[0]}: Value for "text-size" is >= ${yp}. Reduce your "text-size".`)):"composite"===x.kind&&(v=[Ru*f.compositeTextSizes[0].evaluate(a,{},_),Ru*f.compositeTextSizes[1].evaluate(a,{},_)],(v[0]>xp||v[1]>xp)&&$(`${e.layerIds[0]}: Value for "text-size" is >= ${yp}. Reduce your "text-size".`)),e.addSymbols(e.text,g,v,l,s,a,h,t,i,c.lineStartIndex,c.lineLength,p,m,_);for(const t of u)d[t]=e.text.placedSymbolArray.length-1;return 4*g.length}function bp(e){for(const t in e)return e[t];return null}function wp(e,t,i,r,n,o,s,a,l,c){let h=s.top,u=s.bottom,d=s.left,p=s.right;const f=s.collisionPadding;if(f&&(d-=f[0],h-=f[1],p+=f[2],u+=f[3]),l){const e=new y(d,h),t=new y(p,h),i=new y(d,u),r=new y(p,u),n=b(l);let o=new y(0,0);c&&(o=new y(c[0],c[1])),e._rotateAround(n,o),t._rotateAround(n,o),i._rotateAround(n,o),r._rotateAround(n,o),d=Math.min(e.x,t.x,i.x,r.x),p=Math.max(e.x,t.x,i.x,r.x),h=Math.min(e.y,t.y,i.y,r.y),u=Math.max(e.y,t.y,i.y,r.y)}return e.emplaceBack(t.x,t.y,t.z,i.x,i.y,d,h,p,u,a,r,n,o),e.length-1}function Tp(e){e.collisionPadding&&(e.top-=e.collisionPadding[1],e.bottom+=e.collisionPadding[3]);const t=e.bottom-e.top;return t>0?Math.max(10,t):null}function Ep(e,t,i,r){const n=e.compareText;if(t in n){const e=n[t];for(let t=e.length-1;t>=0;t--)if(r.dist(e[t])x&&(v(e,c,r,n,a,l),v(c,i,a,l,o,s))}v(u,d,r,o,n,o),v(d,p,n,o,n,s),v(p,f,n,s,r,s),v(f,u,r,s,r,o),m-=x,_-=x,g+=x,y+=x;const b=1/Math.max(g-m,y-_);return{scale:b,x:m*b,y:_*b,x2:g*b,y2:y*b,projection:t}}const Ap=ha(new Float32Array(16));class Ip{constructor(e){this.spec=e,this.name=e.name,this.wrap=!1,this.requiresDraping=!1,this.supportsWorldCopies=!1,this.supportsTerrain=!1,this.supportsFog=!1,this.supportsFreeCamera=!1,this.zAxisUnit="meters",this.isReprojectedInTileSpace=!0,this.unsupportedLayers=["custom"],this.center=[0,0],this.range=[3.5,7]}project(e,t){return{x:0,y:0,z:0}}unproject(e,t){return new Fl(0,0)}projectTilePoint(e,t,i){return{x:e,y:t,z:0}}locationPoint(e,t,i=!0){return e._coordinatePoint(e.locationCoordinate(t),i)}pixelsPerMeter(e,t){return jl(1,e)*t}pixelSpaceConversion(e,t,i){return 1}farthestPixelDistance(e){return Sp(e,e.pixelsPerMeter)}pointCoordinate(e,t,i,r){const n=e.horizonLineFromTop(!1),o=new y(t,Math.max(n,i));return e.rayIntersectionCoordinate(e.pointRayIntersection(o,r))}pointCoordinate3D(e,t,i){const r=new y(t,i);if(e.elevation)return e.elevation.pointCoordinate(r);{const t=this.pointCoordinate(e,r.x,r.y,0);return[t.x,t.y,t.z]}}isPointAboveHorizon(e,t){if(e.elevation)return!this.pointCoordinate3D(e,t.x,t.y);const i=e.horizonLineFromTop();return t.y0?t<-Op+i&&(t=-Op+i):t>Op-i&&(t=Op-i);const o=n/Math.pow(Fp(t),r);let s=o*Math.sin(r*e),a=n-o*Math.cos(r*e);return s=.5*(s/Math.PI+.5),a=.5*(a/Math.PI+.5),{x:s,y:this.southernCenter?a:1-a,z:0}}unproject(e,t){e=(2*e-.5)*Math.PI,this.southernCenter&&(t=1-t),t=(2*(1-t)-.5)*Math.PI;const{n:i,f:r}=this,n=r-t,o=Math.sign(n),s=Math.sign(i)*Math.sqrt(e*e+n*n);let a=Math.atan2(e,Math.abs(n))*o;n*i<0&&(a-=Math.PI*Math.sign(e)*o);const l=A(w(a/i)+this.center[0],-180,180),c=A(w(2*Math.atan(Math.pow(r/s,1/i))-Op),-ql,ql);return new Fl(l,this.southernCenter?-c:c)}}class Vp extends Ip{constructor(e){super(e),this.wrap=!0,this.supportsWorldCopies=!0,this.supportsTerrain=!0,this.supportsFog=!0,this.supportsFreeCamera=!0,this.isReprojectedInTileSpace=!1,this.unsupportedLayers=[],this.range=null}project(e,t){return{x:Vl(e),y:Nl(t),z:0}}unproject(e,t){const i=Gl(e),r=$l(t);return new Fl(i,r)}}const Np=b(ql);class jp extends Ip{project(e,t){const i=(t=b(t))*t,r=i*i;return{x:.5*((e=b(e))*(.8707-.131979*i+r*(r*(.003971*i-.001529*r)-.013791))/Math.PI+.5),y:1-.5*(t*(1.007226+i*(.015085+r*(.028874*i-.044475-.005916*r)))/Math.PI+1),z:0}}unproject(e,t){e=(2*e-.5)*Math.PI;let i=t=(2*(1-t)-1)*Math.PI,r=25,n=0,o=i*i;do{o=i*i;const e=o*o;n=(i*(1.007226+o*(.015085+e*(.028874*o-.044475-.005916*e)))-t)/(1.007226+o*(.045255+e*(.259866*o-.311325-.005916*11*e))),i=A(i-n,-Np,Np)}while(Math.abs(n)>1e-6&&--r>0);o=i*i;const s=A(w(e/(.8707+o*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979))),-180,180),a=w(i);return new Fl(s,a)}}const Gp=b(ql);class $p extends Ip{project(e,t){t=b(t),e=b(e);const i=Math.cos(t),r=2/Math.PI,n=Math.acos(i*Math.cos(e/2)),o=Math.sin(n)/n,s=.5*(e*r+2*i*Math.sin(e/2)/o)||0,a=.5*(t+Math.sin(t)/o)||0;return{x:.5*(s/Math.PI+.5),y:1-.5*(a/Math.PI+1),z:0}}unproject(e,t){let i=e=(2*e-.5)*Math.PI,r=t=(2*(1-t)-1)*Math.PI,n=25;const o=1e-6;let s=0,a=0;do{const n=Math.cos(r),o=Math.sin(r),l=2*o*n,c=o*o,h=n*n,u=Math.cos(i/2),d=Math.sin(i/2),p=2*u*d,f=d*d,m=1-h*u*u,_=m?1/m:0,g=m?Math.acos(n*u)*Math.sqrt(1/m):0,y=.5*(2*g*n*d+2*i/Math.PI)-e,x=.5*(g*o+r)-t,v=.5*_*(h*f+g*n*u*c)+1/Math.PI,b=_*(p*l/4-g*o*d),w=.125*_*(l*d-g*o*h*p),T=.5*_*(c*u+g*f*n)+.5,E=b*w-T*v;s=(x*b-y*T)/E,a=(y*w-x*v)/E,i=A(i-s,-Math.PI,Math.PI),r=A(r-a,-Gp,Gp)}while((Math.abs(s)>o||Math.abs(a)>o)&&--n>0);return new Fl(w(i),w(r))}}class Zp extends Ip{constructor(e){super(e),this.center=e.center||[0,0],this.parallels=e.parallels||[0,0],this.cosPhi=Math.max(.01,Math.cos(b(this.parallels[0]))),this.scale=1/(2*Math.max(Math.PI*this.cosPhi,1/this.cosPhi)),this.wrap=!0,this.supportsWorldCopies=!0}project(e,t){const{scale:i,cosPhi:r}=this;return{x:b(e)*r*i+.5,y:-Math.sin(b(t))/r*i+.5,z:0}}unproject(e,t){const{scale:i,cosPhi:r}=this,n=-(t-.5)/i,o=A(w((e-.5)/i)/r,-180,180),s=Math.asin(A(n*r,-1,1)),a=A(w(s),-ql,ql);return new Fl(o,a)}}class qp extends Vp{constructor(e){super(e),this.requiresDraping=!0,this.supportsWorldCopies=!1,this.supportsFog=!0,this.zAxisUnit="pixels",this.unsupportedLayers=["debug"],this.range=[3,5]}projectTilePoint(e,t,i){const r=Tl(e,t,i);return La(r,r,Ml(ml(i))),{x:r[0],y:r[1],z:r[2]}}locationPoint(e,t){const i=wl(t.lat,t.lng),r=Pa([],i),n=e.elevation?e.elevation.getAtPointOrZero(e.locationCoordinate(t),e._centerAltitude):e._centerAltitude;za(i,i,r,jl(1,0)*na*n);const o=ha(new Float64Array(16));return da(o,e.pixelMatrix,e.globeMatrix),La(i,i,o),new y(i[0],i[1])}pixelsPerMeter(e,t){return jl(1,0)*t}pixelSpaceConversion(e,t,i){const r=jl(1,e)*t,n=Pi(jl(1,45)*t,r,i);return this.pixelsPerMeter(e,t)/n}createTileMatrix(e,t,i){const r=Al(ml(i.canonical));return da(new Float64Array(16),e.globeMatrix,r)}createInversionMatrix(e,t){const{center:i}=e,r=Ml(ml(t));return _a(r,r,b(i.lng)),ma(r,r,b(i.lat)),fa(r,r,[e._pixelsPerMercatorPixel,e._pixelsPerMercatorPixel,1]),Float32Array.from(r)}pointCoordinate(e,t,i,r){return dl(e,t,i,!0)||new Xl(0,0)}pointCoordinate3D(e,t,i){const r=this.pointCoordinate(e,t,i,0);return[r.x,r.y,r.z]}isPointAboveHorizon(e,t){return!dl(e,t.x,t.y,!1)}farthestPixelDistance(e){const t=function(e,t){const i=e.cameraToCenterDistance,r=e._centerAltitude*t,n=e._camera,o=e._camera.forward(),s=Ea([],Ca([],o,-i),[0,0,r]),a=e.worldSize/(2*Math.PI),l=[0,0,-a],c=e.width/e.height,h=Math.tan(e.fovAboveCenter),u=Ca([],n.up(),h),d=Ca([],n.right(),h*c),p=Pa([],Ea([],Ea([],o,u),d)),f=[];let m;if(new Ja(s,p).closestPointOnSphere(l,a,f)){const t=Ea([],f,l),i=Oa([],t,s);m=Math.cos(e.fovAboveCenter)*wa(i)}else{const e=Oa([],s,l),t=Oa([],l,s);Pa(t,t);const i=wa(e)-a;m=Math.sqrt(i*(i+2*a));const r=Math.acos(m/(a+i))-Math.acos(ka(o,t));m*=Math.cos(r)}return 1.01*m}(e,this.pixelsPerMeter(e.center.lat,e.worldSize)),i=Cl(e.zoom);if(i>0){const r=Sp(e,jl(1,e.center.lat)*e.worldSize),n=e.worldSize/(2*Math.PI),o=Math.max(e.width,e.height)/e.worldSize*Math.PI;return Pi(t,r+n*(1-Math.cos(o)),Math.pow(i,10))}return t}upVector(e,t,i){return Tl(t,i,e,1)}upVectorScale(e){return{metersToTile:ul(El(ml(e)))}}}function Wp(e){const t=e.parallels,i=!!t&&Math.abs(t[0]+t[1])<.01;switch(e.name){case"mercator":return new Vp(e);case"equirectangular":return new Bp(e);case"naturalEarth":return new jp(e);case"equalEarth":return new Rp(e);case"winkelTripel":return new $p(e);case"albers":return i?new Zp(e):new Cp(e);case"lambertConformalConic":return i?new Zp(e):new Up(e);case"globe":return new qp(e)}throw new Error(`Invalid projection name: ${e.name}`)}const Xp=Gh.types,Hp=[{name:"a_fade_opacity",components:1,type:"Uint8",offset:0}];function Kp(e,t,i,r,n,o,s,a,l,c,h,u,d){const p=a?Math.min(xp,Math.round(a[0])):0,f=a?Math.min(xp,Math.round(a[1])):0;e.emplaceBack(t,i,Math.round(32*r),Math.round(32*n),o,s,(p<<1)+(l?1:0),f,16*c,16*h,256*u,256*d)}function Yp(e,t,i,r,n,o,s){e.emplaceBack(t,i,r,n,o,s)}function Jp(e,t,i,r,n){e.emplaceBack(t,i,r,n),e.emplaceBack(t,i,r,n),e.emplaceBack(t,i,r,n),e.emplaceBack(t,i,r,n)}function Qp(e){for(const t of e.sections)if(lo(t.text))return!0;return!1}class ef{constructor(e){this.layoutVertexArray=new Ho,this.indexArray=new rs,this.programConfigurations=e,this.segments=new ra,this.dynamicLayoutVertexArray=new Zo,this.opacityVertexArray=new Yo,this.placedSymbolArray=new ms,this.globeExtVertexArray=new Ko}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.indexArray.length&&0===this.dynamicLayoutVertexArray.length&&0===this.opacityVertexArray.length}upload(e,t,i,r){this.isEmpty()||(i&&(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Au.members),this.indexBuffer=e.createIndexBuffer(this.indexArray,t),this.dynamicLayoutVertexBuffer=e.createVertexBuffer(this.dynamicLayoutVertexArray,Cu.members,!0),this.opacityVertexBuffer=e.createVertexBuffer(this.opacityVertexArray,Hp,!0),this.globeExtVertexArray.length>0&&(this.globeExtVertexBuffer=e.createVertexBuffer(this.globeExtVertexArray,Iu.members,!0)),this.opacityVertexBuffer.itemSize=1),(i||r)&&this.programConfigurations.upload(e))}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy(),this.globeExtVertexBuffer&&this.globeExtVertexBuffer.destroy())}}Hn(ef,"SymbolBuffers");class tf{constructor(e,t,i){this.layoutVertexArray=new e,this.layoutAttributes=t,this.indexArray=new i,this.segments=new ra,this.collisionVertexArray=new ts,this.collisionVertexArrayExt=new is}upload(e){this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=e.createVertexBuffer(this.collisionVertexArray,zu.members,!0),this.collisionVertexBufferExt=e.createVertexBuffer(this.collisionVertexArrayExt,Pu.members,!0)}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy(),this.collisionVertexBufferExt.destroy())}}Hn(tf,"CollisionBuffers");class rf{constructor(e){this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((e=>e.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.fullyClipped=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=ha([]),this.placementViewportMatrix=ha([]);const t=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Bu(this.zoom,t["text-size"]),this.iconSizeData=Bu(this.zoom,t["icon-size"]);const i=this.layers[0].layout,r=i.get("symbol-sort-key"),n=i.get("symbol-z-order");this.canOverlap=i.get("text-allow-overlap")||i.get("icon-allow-overlap")||i.get("text-ignore-placement")||i.get("icon-ignore-placement"),this.sortFeaturesByKey="viewport-y"!==n&&void 0!==r.constantOr(1),this.sortFeaturesByY=("viewport-y"===n||"auto"===n&&!this.sortFeaturesByKey)&&this.canOverlap,this.writingModes=i.get("text-writing-mode").map((e=>wd[e])),this.stateDependentLayerIds=this.layers.filter((e=>e.isStateDependent())).map((e=>e.id)),this.sourceID=e.sourceID,this.projection=e.projection}createArrays(){this.text=new ef(new Ws(this.layers,this.zoom,(e=>/^text/.test(e)))),this.icon=new ef(new Ws(this.layers,this.zoom,(e=>/^icon/.test(e)))),this.glyphOffsetArray=new ys,this.lineVertexArray=new xs,this.symbolInstances=new gs}calculateGlyphDependencies(e,t,i,r,n){for(let i=0;i0)&&("constant"!==a.value.kind||a.value.value.length>0),u="constant"!==c.value.kind||!!c.value.value||Object.keys(c.parameters).length>0,d=o.get("symbol-sort-key");if(this.features=[],!h&&!u)return;const p=t.iconDependencies,f=t.glyphDependencies,m=t.availableImages,_=new wo(this.zoom);for(const{feature:t,id:l,index:c,sourceLayerIndex:g}of e){const e=n._featureFilter.needGeometry,y=rc(t,e);if(!n._featureFilter.filter(_,y,i))continue;if(e||(y.geometry=ic(t,i,r)),s&&1!==t.type&&i.z<=5){const e=y.geometry,t=.98078528056,r=(e,r)=>ka(Tl(e.x,e.y,i,1),Tl(r.x,r.y,i,1))=0;for(const i of x.sections)if(i.image)p[i.image.name]=!0;else{const r=to(x.toString()),n=i.fontStack||e,o=f[n]=f[n]||{};this.calculateGlyphDependencies(i.text,o,t,this.allowVerticalPlacement,r)}}}"line"===o.get("symbol-placement")&&(this.features=function(e){const t={},i={},r=[];let n=0;function o(t){r.push(e[t]),n++}function s(e,t,n){const o=i[e];return delete i[e],i[t]=o,r[o].geometry[0].pop(),r[o].geometry[0]=r[o].geometry[0].concat(n[0]),o}function a(e,i,n){const o=t[i];return delete t[i],t[e]=o,r[o].geometry[0].shift(),r[o].geometry[0]=n[0].concat(r[o].geometry[0]),o}function l(e,t,i){const r=i?t[0][t[0].length-1]:t[0][0];return`${e}:${r.x}:${r.y}`}for(let c=0;ce.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((e,t)=>e.sortKey-t.sortKey))}update(e,t,i,r){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,t,this.layers,i,r),this.icon.programConfigurations.updatePaintArrays(e,t,this.layers,i,r))}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(e){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(e),this.iconCollisionBox.upload(e)),this.text.upload(e,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(e,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}getProjection(){return this.projectionInstance||(this.projectionInstance=Wp(this.projection)),this.projectionInstance}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(e,t){const i=this.lineVertexArray.length;if(void 0!==e.segment)for(const{x:e,y:i}of t)this.lineVertexArray.emplaceBack(e,i);return{lineStartIndex:i,lineLength:this.lineVertexArray.length-i}}addSymbols(e,t,i,r,n,o,s,a,l,c,h,u,d,p){const f=e.indexArray,m=e.layoutVertexArray,_=e.globeExtVertexArray,g=e.segments.prepareSegment(4*t.length,m,f,this.canOverlap?o.sortKey:void 0),y=this.glyphOffsetArray.length,x=g.vertexLength,v=this.allowVerticalPlacement&&s===wd.vertical?Math.PI/2:0,b=o.text&&o.text.sections;for(let r=0;r=0?t.rightJustifiedTextSymbolIndex:t.centerJustifiedTextSymbolIndex>=0?t.centerJustifiedTextSymbolIndex:t.leftJustifiedTextSymbolIndex>=0?t.leftJustifiedTextSymbolIndex:t.verticalPlacedTextSymbolIndex>=0?t.verticalPlacedTextSymbolIndex:r),o=Ou(this.textSizeData,e,n)/Lu;return this.tilePixelRatio*o}getSymbolInstanceIconSize(e,t,i){const r=this.icon.placedSymbolArray.get(i),n=Ou(this.iconSizeData,e,r);return this.tilePixelRatio*n}_commitDebugCollisionVertexUpdate(e,t,i){e.emplaceBack(t,-i,-i),e.emplaceBack(t,i,-i),e.emplaceBack(t,i,i),e.emplaceBack(t,-i,i)}_updateTextDebugCollisionBoxes(e,t,i,r,n,o){for(let s=r;s0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(e,t){const i=e.placedSymbolArray.get(t),r=i.vertexStartIndex+4*i.numGlyphs;for(let t=i.vertexStartIndex;tr[e]-r[t]||n[t]-n[e])),o}addToSortKeyRanges(e,t){const i=this.sortKeyRanges[this.sortKeyRanges.length-1];i&&i.sortKey===t?i.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:t,symbolInstanceStart:e,symbolInstanceEnd:e+1})}sortFeatures(e){if(this.sortFeaturesByY&&this.sortedAngle!==e&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(e),this.sortedAngle=e,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const e of this.symbolInstanceIndexes){const t=this.symbolInstances.get(e);this.featureSortOrder.push(t.featureIndex);const{rightJustifiedTextSymbolIndex:i,centerJustifiedTextSymbolIndex:r,leftJustifiedTextSymbolIndex:n,verticalPlacedTextSymbolIndex:o,placedIconSymbolIndex:s,verticalPlacedIconSymbolIndex:a}=t;i>=0&&this.addIndicesForPlacedSymbol(this.text,i),r>=0&&r!==i&&this.addIndicesForPlacedSymbol(this.text,r),n>=0&&n!==r&&n!==i&&this.addIndicesForPlacedSymbol(this.text,n),o>=0&&this.addIndicesForPlacedSymbol(this.text,o),s>=0&&this.addIndicesForPlacedSymbol(this.icon,s),a>=0&&this.addIndicesForPlacedSymbol(this.icon,a)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}Hn(rf,"SymbolBucket",{omit:["layers","collisionBoxArray","features","compareText"]}),rf.MAX_GLYPHS=65535,rf.addDynamicAttributes=Jp;const nf=new Lo({"symbol-placement":new Po(et.layout_symbol["symbol-placement"]),"symbol-spacing":new Po(et.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Po(et.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new ko(et.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Po(et.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Po(et.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new Po(et.layout_symbol["icon-ignore-placement"]),"icon-optional":new Po(et.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Po(et.layout_symbol["icon-rotation-alignment"]),"icon-size":new ko(et.layout_symbol["icon-size"]),"icon-text-fit":new Po(et.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Po(et.layout_symbol["icon-text-fit-padding"]),"icon-image":new ko(et.layout_symbol["icon-image"]),"icon-rotate":new ko(et.layout_symbol["icon-rotate"]),"icon-padding":new Po(et.layout_symbol["icon-padding"]),"icon-keep-upright":new Po(et.layout_symbol["icon-keep-upright"]),"icon-offset":new ko(et.layout_symbol["icon-offset"]),"icon-anchor":new ko(et.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Po(et.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Po(et.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Po(et.layout_symbol["text-rotation-alignment"]),"text-field":new ko(et.layout_symbol["text-field"]),"text-font":new ko(et.layout_symbol["text-font"]),"text-size":new ko(et.layout_symbol["text-size"]),"text-max-width":new ko(et.layout_symbol["text-max-width"]),"text-line-height":new ko(et.layout_symbol["text-line-height"]),"text-letter-spacing":new ko(et.layout_symbol["text-letter-spacing"]),"text-justify":new ko(et.layout_symbol["text-justify"]),"text-radial-offset":new ko(et.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Po(et.layout_symbol["text-variable-anchor"]),"text-anchor":new ko(et.layout_symbol["text-anchor"]),"text-max-angle":new Po(et.layout_symbol["text-max-angle"]),"text-writing-mode":new Po(et.layout_symbol["text-writing-mode"]),"text-rotate":new ko(et.layout_symbol["text-rotate"]),"text-padding":new Po(et.layout_symbol["text-padding"]),"text-keep-upright":new Po(et.layout_symbol["text-keep-upright"]),"text-transform":new ko(et.layout_symbol["text-transform"]),"text-offset":new ko(et.layout_symbol["text-offset"]),"text-allow-overlap":new Po(et.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new Po(et.layout_symbol["text-ignore-placement"]),"text-optional":new Po(et.layout_symbol["text-optional"])});var of={paint:new Lo({"icon-opacity":new ko(et.paint_symbol["icon-opacity"]),"icon-color":new ko(et.paint_symbol["icon-color"]),"icon-halo-color":new ko(et.paint_symbol["icon-halo-color"]),"icon-halo-width":new ko(et.paint_symbol["icon-halo-width"]),"icon-halo-blur":new ko(et.paint_symbol["icon-halo-blur"]),"icon-translate":new Po(et.paint_symbol["icon-translate"]),"icon-translate-anchor":new Po(et.paint_symbol["icon-translate-anchor"]),"text-opacity":new ko(et.paint_symbol["text-opacity"]),"text-color":new ko(et.paint_symbol["text-color"],{runtimeType:dt,getOverride:e=>e.textColor,hasOverride:e=>!!e.textColor}),"text-halo-color":new ko(et.paint_symbol["text-halo-color"]),"text-halo-width":new ko(et.paint_symbol["text-halo-width"]),"text-halo-blur":new ko(et.paint_symbol["text-halo-blur"]),"text-translate":new Po(et.paint_symbol["text-translate"]),"text-translate-anchor":new Po(et.paint_symbol["text-translate-anchor"])}),layout:nf};class sf{constructor(e){this.type=e.property.overrides?e.property.overrides.runtimeType:lt,this.defaultValue=e}evaluate(e){if(e.formattedSection){const t=this.defaultValue.property.overrides;if(t&&t.hasOverride(e.formattedSection))return t.getOverride(e.formattedSection)}return e.feature&&e.featureState?this.defaultValue.evaluate(e.feature,e.featureState):this.defaultValue.property.specification.default}eachChild(e){this.defaultValue.isConstant()||e(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}Hn(sf,"FormatSectionOverride",{omit:["defaultValue"]});class af extends ea{constructor(e){super(e,of)}recalculate(e,t){super.recalculate(e,t),"auto"===this.layout.get("icon-rotation-alignment")&&(this.layout._values["icon-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-rotation-alignment")&&(this.layout._values["text-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment"));const i=this.layout.get("text-writing-mode");if(i){const e=[];for(const t of i)e.indexOf(t)<0&&e.push(t);this.layout._values["text-writing-mode"]=e}else this.layout._values["text-writing-mode"]="point"===this.layout.get("symbol-placement")?["horizontal"]:["horizontal","vertical"];this._setPaintOverrides()}getValueAndResolveTokens(e,t,i,r){const n=this.layout.get(e).evaluate(t,{},i,r),o=this._unevaluatedLayout._values[e];return o.isDataDriven()||Xr(o.value)||!n?n:function(e,t){return t.replace(/{([^{}]+)}/g,((t,i)=>i in e?String(e[i]):""))}(t.properties,n)}createBucket(e){return new rf(e)}queryRadius(){return 0}queryIntersectsFeature(){return!1}_setPaintOverrides(){for(const e of of.paint.overridableProperties){if(!af.hasPaintOverride(this.layout,e))continue;const t=this.paint.get(e),i=new sf(t),r=new Wr(i,t.property.specification);let n=null;n="constant"===t.value.kind||"source"===t.value.kind?new Kr("source",r):new Yr("composite",r,t.value.zoomStops,t.value._interpolationType),this.paint._values[e]=new Co(t.property,n,t.parameters)}}_handleOverridablePaintPropertyUpdate(e,t,i){return!(!this.layout||t.isDataDriven()||i.isDataDriven())&&af.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,t){const i=e.get("text-field"),r=of.paint.properties[t];let n=!1;const o=e=>{for(const t of e)if(r.overrides&&r.overrides.hasOverride(t))return void(n=!0)};if("constant"===i.value.kind&&i.value.value instanceof Lt)o(i.value.value.sections);else if("source"===i.value.kind){const e=t=>{n||(t instanceof Nt&&Ft(t.value)===_t?o(t.value.sections):t instanceof qt?o(t.sections):t.eachChild(e))},t=i.value;t._styleExpression&&e(t._styleExpression.expression)}return n}getProgramConfiguration(e){return new qs(this,e)}}var lf={paint:new Lo({"background-color":new Po(et.paint_background["background-color"]),"background-pattern":new Po(et.paint_background["background-pattern"]),"background-opacity":new Po(et.paint_background["background-opacity"])})},cf={paint:new Lo({"raster-opacity":new Po(et.paint_raster["raster-opacity"]),"raster-hue-rotate":new Po(et.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new Po(et.paint_raster["raster-brightness-min"]),"raster-brightness-max":new Po(et.paint_raster["raster-brightness-max"]),"raster-saturation":new Po(et.paint_raster["raster-saturation"]),"raster-contrast":new Po(et.paint_raster["raster-contrast"]),"raster-resampling":new Po(et.paint_raster["raster-resampling"]),"raster-fade-duration":new Po(et.paint_raster["raster-fade-duration"])})};class hf extends ea{constructor(e){super(e,{}),this.implementation=e}is3D(){return"3d"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}isLayerDraped(){return void 0!==this.implementation.renderToTile}shouldRedrape(){return!!this.implementation.shouldRerenderTiles&&this.implementation.shouldRerenderTiles()}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){}onAdd(e){this.implementation.onAdd&&this.implementation.onAdd(e,e.painter.context.gl)}onRemove(e){this.implementation.onRemove&&this.implementation.onRemove(e,e.painter.context.gl)}}var uf={paint:new Lo({"sky-type":new Po(et.paint_sky["sky-type"]),"sky-atmosphere-sun":new Po(et.paint_sky["sky-atmosphere-sun"]),"sky-atmosphere-sun-intensity":new Po(et.paint_sky["sky-atmosphere-sun-intensity"]),"sky-gradient-center":new Po(et.paint_sky["sky-gradient-center"]),"sky-gradient-radius":new Po(et.paint_sky["sky-gradient-radius"]),"sky-gradient":new Do(et.paint_sky["sky-gradient"]),"sky-atmosphere-halo-color":new Po(et.paint_sky["sky-atmosphere-halo-color"]),"sky-atmosphere-color":new Po(et.paint_sky["sky-atmosphere-color"]),"sky-opacity":new Po(et.paint_sky["sky-opacity"])})};function df(e,t,i){const r=[0,0,1],n=$a([]);return qa(n,n,i?-b(e)+Math.PI:b(e)),Za(n,n,-b(t)),Ra(r,r,n),Pa(r,r)}const pf={circle:class extends ea{constructor(e){super(e,Ec)}createBucket(e){return new sc(e)}queryRadius(e){const t=e;return xc("circle-radius",this,t)+xc("circle-stroke-width",this,t)+vc(this.paint.get("circle-translate"))}queryIntersectsFeature(e,t,i,r,n,o,s,a){const l=wc(this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),o.angle,e.pixelToTileUnitsFactor),c=this.paint.get("circle-radius").evaluate(t,i)+this.paint.get("circle-stroke-width").evaluate(t,i);return Sc(e,r,o,s,a,"map"===this.paint.get("circle-pitch-alignment"),"map"===this.paint.get("circle-pitch-scale"),l,c)}getProgramIds(){return["circle"]}getProgramConfiguration(e){return new qs(this,e)}},heatmap:class extends ea{createBucket(e){return new zc(e)}constructor(e){super(e,Bc),this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(e){"heatmap-color"===e&&this._updateColorRamp()}_updateColorRamp(){this.colorRamp=Oc({expression:this._transitionablePaint._values["heatmap-color"].value.expression,evaluationKey:"heatmapDensity",image:this.colorRamp}),this.colorRampTexture=null}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null)}queryRadius(e){return xc("heatmap-radius",this,e)}queryIntersectsFeature(e,t,i,r,n,o,s,a){const l=this.paint.get("heatmap-radius").evaluate(t,i);return Sc(e,r,o,s,a,!0,!0,new y(0,0),l)}hasOffscreenPass(){return 0!==this.paint.get("heatmap-opacity")&&"none"!==this.visibility}getProgramIds(){return["heatmap","heatmapTexture"]}getProgramConfiguration(e){return new qs(this,e)}},hillshade:class extends ea{constructor(e){super(e,Fc)}hasOffscreenPass(){return 0!==this.paint.get("hillshade-exaggeration")&&"none"!==this.visibility}getProgramIds(){return["hillshade","hillshadePrepare"]}},fill:class extends ea{constructor(e){super(e,Sh)}getProgramIds(){const e=this.paint.get("fill-pattern"),t=e&&e.constantOr(1),i=[t?"fillPattern":"fill"];return this.paint.get("fill-antialias")&&i.push(t&&!this.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline"),i}getProgramConfiguration(e){return new qs(this,e)}recalculate(e,t){super.recalculate(e,t);const i=this.paint._values["fill-outline-color"];"constant"===i.value.kind&&void 0===i.value.value&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(e){return new Th(e)}queryRadius(){return vc(this.paint.get("fill-translate"))}queryIntersectsFeature(e,t,i,r,n,o){return!e.queryGeometry.isAboveHorizon&&cc(bc(e.tilespaceGeometry,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),o.angle,e.pixelToTileUnitsFactor),r)}isTileClipped(){return!0}},"fill-extrusion":class extends ea{constructor(e){super(e,su)}createBucket(e){return new Kh(e)}queryRadius(){return vc(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}getProgramIds(){return[this.paint.get("fill-extrusion-pattern").constantOr(1)?"fillExtrusionPattern":"fillExtrusion"]}getProgramConfiguration(e){return new qs(this,e)}queryIntersectsFeature(e,t,i,r,n,o,s,a,l){const c=wc(this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),o.angle,e.pixelToTileUnitsFactor),h=this.paint.get("fill-extrusion-height").evaluate(t,i),u=this.paint.get("fill-extrusion-base").evaluate(t,i),d=[0,0],p=a&&o.elevation,f=o.elevation?o.elevation.exaggeration():1,m=e.tile.getBucket(this);if(p&&m instanceof Kh){const e=m.centroidVertexArray,t=l+1;te.polygon)).flat());const _=p?a:null,[g,x]=function(e,t,i,r,n,o,s,a,l,c,h){return"globe"===e.projection.name?function(e,t,i,r,n,o,s,a,l,c,h){const u=[],d=[],p=e.projection.upVectorScale(h,e.center.lat,e.worldSize).metersToTile,f=[0,0,0,1],m=[0,0,0,1],_=(e,t,i,r)=>{e[0]=t,e[1]=i,e[2]=r,e[3]=1},g=ru();i>0&&(i+=g),r+=g;for(const g of t){const t=[],y=[];for(const u of g){const d=u.x+n.x,g=u.y+n.y,x=e.projection.projectTilePoint(d,g,h),v=e.projection.upVector(h,u.x,u.y);let b=i,w=r;if(s){const e=mu(d,g,i,r,s,a,l,c);b+=e.base,w+=e.top}0!==i?_(f,x.x+v[0]*p*b,x.y+v[1]*p*b,x.z+v[2]*p*b):_(f,x.x,x.y,x.z),_(m,x.x+v[0]*p*w,x.y+v[1]*p*w,x.z+v[2]*p*w),La(f,f,o),La(m,m,o),t.push(new du(f[0],f[1],f[2])),y.push(new du(m[0],m[1],m[2]))}u.push(t),d.push(y)}return[u,d]}(e,t,i,r,n,o,s,a,l,c,h):s?function(e,t,i,r,n,o,s,a,l){const c=[],h=[],u=[0,0,0,1];for(const d of e){const e=[],p=[];for(const c of d){const h=c.x+r.x,d=c.y+r.y,f=mu(h,d,t,i,o,s,a,l);u[0]=h,u[1]=d,u[2]=f.base,u[3]=1,ja(u,u,n),u[3]=Math.max(u[3],1e-5);const m=new du(u[0]/u[3],u[1]/u[3],u[2]/u[3]);u[0]=h,u[1]=d,u[2]=f.top,u[3]=1,ja(u,u,n),u[3]=Math.max(u[3],1e-5);const _=new du(u[0]/u[3],u[1]/u[3],u[2]/u[3]);e.push(m),p.push(_)}c.push(e),h.push(p)}return[c,h]}(t,i,r,n,o,s,a,l,c):function(e,t,i,r,n){const o=[],s=[],a=n[8]*t,l=n[9]*t,c=n[10]*t,h=n[11]*t,u=n[8]*i,d=n[9]*i,p=n[10]*i,f=n[11]*i;for(const t of e){const e=[],i=[];for(const o of t){const t=o.x+r.x,s=o.y+r.y,m=n[0]*t+n[4]*s+n[12],_=n[1]*t+n[5]*s+n[13],g=n[2]*t+n[6]*s+n[14],y=n[3]*t+n[7]*s+n[15],x=m+a,v=_+l,b=g+c,w=Math.max(y+h,1e-5),T=m+u,E=_+d,S=g+p,M=Math.max(y+f,1e-5);e.push(new du(x/w,v/w,b/w)),i.push(new du(T/M,E/M,S/M))}o.push(e),s.push(i)}return[o,s]}(t,i,r,n,o)}(o,r,u,h,c,s,_,d,f,o.center.lat,e.tileID.canonical),v=e.queryGeometry;return function(e,t,i){let r=1/0;cc(i,t)&&(r=fu(i,t[0]));for(let n=0;n=3)for(let t=0;t{this._triggered=!1,this._callback()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._callback()}),0))}remove(){this._channel=void 0,this._callback=()=>{}}}class _f{constructor(){this.tasks={},this.taskQueue=[],F(["process"],this),this.invoker=new mf(this.process),this.nextId=0}add(e,t){const i=this.nextId++,r=function({type:e,isSymbolTile:t,zoom:i}){return i=i||0,"message"===e?0:"maybePrepare"!==e||t?"parseTile"!==e||t?"parseTile"===e&&t?300-i:"maybePrepare"===e&&t?400-i:500:200-i:100-i}(t);if(0===r){W();try{e()}finally{}return{cancel:()=>{}}}return this.tasks[i]={fn:e,metadata:t,priority:r,id:i},this.taskQueue.push(i),this.invoker.trigger(),{cancel:()=>{delete this.tasks[i]}}}process(){W();try{if(this.taskQueue=this.taskQueue.filter((e=>!!this.tasks[e])),!this.taskQueue.length)return;const e=this.pick();if(null===e)return;const t=this.tasks[e];if(delete this.tasks[e],this.taskQueue.length&&this.invoker.trigger(),!t)return;t.fn()}finally{}}pick(){let e=null,t=1/0;for(let i=0;i>=1)>1;){const e=i+n>>1,l=r+o>>1;1&t?(n=i,o=r,i=s,r=a):(i=n,r=o,n=s,o=a),s=e,a=l}const l=4*e;wf[l+0]=i,wf[l+1]=r,wf[l+2]=n,wf[l+3]=o}const Tf=new Uint16Array(2178),Ef=new Uint8Array(1089),Sf=new Uint16Array(1089);function Mf(e){return 0===e?-.03125:32===e?.03125:0}var Af=Uo([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);const If={type:2,extent:na,loadGeometry:()=>[[new y(0,0),new y(na+1,0),new y(na+1,na+1),new y(0,na+1),new y(0,0)]]};class Cf{constructor(e,t,i,r,n){this.tileID=e,this.uid=L(),this.uses=0,this.tileSize=t,this.tileZoom=i,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.isRaster=n,this.expiredRequestCount=0,this.state="loading",r&&r.transform&&(this.projection=r.transform.projection)}registerFadeDuration(e){const t=e+this.timeAdded;tt.getLayer(e))).filter(Boolean);if(0!==e.length){r.layers=e,r.stateDependentLayerIds&&(r.stateDependentLayers=r.stateDependentLayerIds.map((t=>e.filter((e=>e.id===t))[0])));for(const t of e)i[t.id]=r}}return i}(e.buckets,t.style),this.hasSymbolBuckets=!1;for(const e in this.buckets){const t=this.buckets[e];if(t instanceof rf){if(this.hasSymbolBuckets=!0,!i)break;t.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const e in this.buckets){const t=this.buckets[e];if(t instanceof rf&&t.hasRTLText){this.hasRTLText=!0,bo.isLoading()||bo.isLoaded()||"deferred"!==xo()||vo();break}}this.queryPadding=0;for(const e in this.buckets){const i=this.buckets[e];this.queryPadding=Math.max(this.queryPadding,t.style.getLayer(e).queryRadius(i))}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage),e.lineAtlas&&(this.lineAtlas=e.lineAtlas)}else this.collisionBoxArray=new ps}unloadVectorData(){if(this.hasData()){for(const e in this.buckets)this.buckets[e].destroy();this.buckets={},this.imageAtlas&&(this.imageAtlas=null),this.lineAtlas&&(this.lineAtlas=null),this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.lineAtlasTexture&&this.lineAtlasTexture.destroy(),this._tileBoundsBuffer&&(this._tileBoundsBuffer.destroy(),this._tileBoundsIndexBuffer.destroy(),this._tileBoundsSegments.destroy(),this._tileBoundsBuffer=null),this._tileDebugBuffer&&(this._tileDebugBuffer.destroy(),this._tileDebugSegments.destroy(),this._tileDebugBuffer=null),this._tileDebugIndexBuffer&&(this._tileDebugIndexBuffer.destroy(),this._tileDebugIndexBuffer=null),this._globeTileDebugBorderBuffer&&(this._globeTileDebugBorderBuffer.destroy(),this._globeTileDebugBorderBuffer=null),this._tileDebugTextBuffer&&(this._tileDebugTextBuffer.destroy(),this._tileDebugTextSegments.destroy(),this._tileDebugTextIndexBuffer.destroy(),this._tileDebugTextBuffer=null),this._globeTileDebugTextBuffer&&(this._globeTileDebugTextBuffer.destroy(),this._globeTileDebugTextBuffer=null),this.latestFeatureIndex=null,this.state="unloaded"}}getBucket(e){return this.buckets[e.id]}upload(e){for(const t in this.buckets){const i=this.buckets[t];i.uploadPending()&&i.upload(e)}const t=e.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new ff(e,this.imageAtlas.image,t.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new ff(e,this.glyphAtlasImage,t.ALPHA),this.glyphAtlasImage=null),this.lineAtlas&&!this.lineAtlas.uploaded&&(this.lineAtlasTexture=new ff(e,this.lineAtlas.image,t.ALPHA),this.lineAtlas.uploaded=!0)}prepare(e){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(e,this.imageAtlasTexture)}queryRenderedFeatures(e,t,i,r,n,o,s,a){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({tileResult:r,pixelPosMatrix:s,transform:o,params:n,tileTransform:this.tileTransform},e,t,i):{}}querySourceFeatures(e,t){const i=this.latestFeatureIndex;if(!i||!i.rawTileData)return;const r=i.loadVTLayers(),n=t?t.sourceLayer:"",o=r._geojsonTileLayer||r[n];if(!o)return;const s=un(t&&t.filter),{z:a,x:l,y:c}=this.tileID.canonical,h={z:a,x:l,y:c};for(let t=0;te)i=!1;else if(t)if(this.expirationTime=0;e--){const t=4*e,i=wf[t+0],r=wf[t+1],n=wf[t+2],o=wf[t+3],s=i+n>>1,a=r+o>>1,l=s+a-r,c=a+i-s,h=r*bf+i,u=o*bf+n,d=a*bf+s,p=Math.hypot((Tf[2*h+0]+Tf[2*u+0])/2-Tf[2*d+0],(Tf[2*h+1]+Tf[2*u+1])/2-Tf[2*d+1])>=16;Ef[d]=Ef[d]||(p?1:0),e<1022&&(Ef[d]=Ef[d]||Ef[(r+c>>1)*bf+(i+l>>1)]||Ef[(o+c>>1)*bf+(n+l>>1)])}const n=new Go,o=new rs;let s=0;function a(e,t){const i=t*bf+e;return 0===Sf[i]&&(n.emplaceBack(Tf[2*i+0],Tf[2*i+1],e*na/vf,t*na/vf),Sf[i]=++s),Sf[i]-1}function l(e,t,i,r,n,s){const c=e+i>>1,h=t+r>>1;if(Math.abs(e-n)+Math.abs(t-s)>1&&Ef[h*bf+c])l(n,s,e,t,c,h),l(i,r,n,s,c,h);else{const l=a(e,t),c=a(i,r),h=a(n,s);o.emplaceBack(l,c,h)}}return l(0,0,vf,vf,vf,0),l(vf,vf,0,0,0,vf),{vertices:n,indices:o}}(this.tileID.canonical,t);r=e.vertices,n=e.indices}else{r=new Go,n=new rs;for(const{x:e,y:t}of i)r.emplaceBack(e,t,0,0);const e=fh(r.int16,void 0,4);for(let t=0;t0&&(s=ua(new Float64Array(16),t.globeMatrix)),this._makeGlobeTileDebugBorderBuffer(e,r,t,n,s,o),this._makeGlobeTileDebugTextBuffer(e,r,t,n,s,o)}_globePoint(e,t,i,r,n,o,s){let a=Tl(e,t,i);if(o){const n=1<.5?u=-1:h<-.5&&(u=1);let d=(e/na+i.x)/n+u,p=(t/na+i.y)/n;d=(d-l)*r._pixelsPerMercatorPixel+l,p=(p-c)*r._pixelsPerMercatorPixel+c;const f=[d*r.worldSize,p*r.worldSize,0];La(f,f,o),a=_l(a,f,s)}return La(a,a,n)}_makeGlobeTileDebugBorderBuffer(e,t,i,r,n,o){const s=new No,a=new hs,l=new jo,c=(e,c,h,u,d)=>{const p=(h-e)/(d-1),f=(u-c)/(d-1),m=s.length;for(let h=0;hh*e+t;for(let e=0;et[s])return null}else{const a=1/r[s];let l=(e[s]-i[s])*a,c=(t[s]-i[s])*a;if(l>c){const e=l;l=c,c=e}if(l>n&&(n=l),co)return null}return n}function Df(e,t,i,r,n,o,s,a,l,c,h){const u=r-e,d=n-t,p=o-i,f=s-e,m=a-t,_=l-i,g=h[1]*_-h[2]*m,y=h[2]*f-h[0]*_,x=h[0]*m-h[1]*f,v=u*g+d*y+p*x;if(Math.abs(v)<1e-15)return null;const b=1/v,w=c[0]-e,T=c[1]-t,E=c[2]-i,S=(w*g+T*y+E*x)*b;if(S<0||S>1)return null;const M=T*p-E*d,A=E*u-w*p,I=w*d-T*u,C=(h[0]*M+h[1]*A+h[2]*I)*b;return C<0||S+C>1?null:(f*M+m*A+_*I)*b}function Lf(e,t,i){return(e-t)/(i-t)}function Rf(e,t,i,r,n,o,s,a,l){const c=1<{const o=r?1:0,s=(e+1)*i-o,a=t*i,l=(t+1)*i-o;n[0]=e*i,n[1]=a,n[2]=s,n[3]=l};let s=new Pf(r);const a=[];for(let t=0;t=1;r/=2){const e=i[i.length-1];s=new Pf(r);for(let t=0;t0;){const{idx:a,t:p,nodex:f,nodey:m,depth:_}=d.pop();if(this.leaves[a]){Rf(f,m,_,e,t,i,r,h,u);const a=1<<_,l=(f+0)/a,c=(f+1)/a,d=(m+0)/a,g=(m+1)/a,y=Ff(l,d,this.dem)*s,x=Ff(c,d,this.dem)*s,v=Ff(c,g,this.dem)*s,b=Ff(l,g,this.dem)*s,w=Df(h[0],h[1],y,u[0],h[1],x,u[0],u[1],v,n,o),T=Df(u[0],u[1],v,h[0],u[1],b,h[0],h[1],y,n,o),E=Math.min(null!==w?w:Number.MAX_VALUE,null!==T?T:Number.MAX_VALUE);if(E!==Number.MAX_VALUE)return E;{const e=za([],n,o,p);if(Of(y,x,b,v,Lf(e[0],h[0],u[0]),Lf(e[1],h[1],u[1]))>=e[2])return p}continue}let g=0;for(let d=0;d=l[c[i]]&&(c.splice(i,0,d),t=!0);t||(c[g]=d),g++}}for(let e=0;e=this.dim+1||t<-1||t>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(t+1)*this.stride+(e+1)}static pack(e,t){const i=[0,0,0,0],r=jf.getUnpackVector(t);let n=Math.floor((e+r[3])/r[2]);return i[2]=n%256,n=Math.floor(n/256),i[1]=n%256,n=Math.floor(n/256),i[0]=n,i}getPixels(){return new Rc({width:this.stride,height:this.stride},this.pixels)}backfillBorder(e,t,i){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let r=t*this.dim,n=t*this.dim+this.dim,o=i*this.dim,s=i*this.dim+this.dim;switch(t){case-1:r=n-1;break;case 1:n=r+1}switch(i){case-1:o=s-1;break;case 1:s=o+1}const a=-t*this.dim,l=-i*this.dim;for(let t=o;t{this.remove(e,n)}),i)),this.data[r].push(n),this.order.push(r),this.order.length>this.max){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}has(e){return e.wrapped().key in this.data}getAndRemove(e){return this.has(e)?this._getAndRemoveByKey(e.wrapped().key):null}_getAndRemoveByKey(e){const t=this.data[e].shift();return t.timeout&&clearTimeout(t.timeout),0===this.data[e].length&&delete this.data[e],this.order.splice(this.order.indexOf(e),1),t.value}getByKey(e){const t=this.data[e];return t?t[0].value:null}get(e){return this.has(e)?this.data[e.wrapped().key][0].value:null}remove(e,t){if(!this.has(e))return this;const i=e.wrapped().key,r=void 0===t?0:this.data[i].indexOf(t),n=this.data[i][r];return this.data[i].splice(r,1),n.timeout&&clearTimeout(n.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(n.value),this.order.splice(this.order.indexOf(i),1),this}setMaxSize(e){for(this.max=e;this.order.length>this.max;){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}filter(e){const t=[];for(const i in this.data)for(const r of this.data[i])e(r.value)||t.push(r);for(const e of t)this.remove(e.value.tileID,e)}}class $f{constructor(e,t,i){this.func=e,this.mask=t,this.range=i}}$f.ReadOnly=!1,$f.ReadWrite=!0,$f.disabled=new $f(519,$f.ReadOnly,[0,1]);const Zf=7680;class qf{constructor(e,t,i,r,n,o){this.test=e,this.ref=t,this.mask=i,this.fail=r,this.depthFail=n,this.pass=o}}qf.disabled=new qf({func:519,mask:0},0,0,Zf,Zf,Zf);class Wf{constructor(e,t,i){this.blendFunction=e,this.blendColor=t,this.mask=i}}Wf.Replace=[1,0],Wf.disabled=new Wf(Wf.Replace,Pt.transparent,[!1,!1,!1,!1]),Wf.unblended=new Wf(Wf.Replace,Pt.transparent,[!0,!0,!0,!0]),Wf.alphaBlended=new Wf([1,771],Pt.transparent,[!0,!0,!0,!0]);const Xf=1029,Hf=2305;class Kf{constructor(e,t,i){this.enable=e,this.mode=t,this.frontFace=i}}Kf.disabled=new Kf(!1,Xf,Hf),Kf.backCCW=new Kf(!0,Xf,Hf),Kf.backCW=new Kf(!0,Xf,2304),Kf.frontCW=new Kf(!0,1028,2304),Kf.frontCCW=new Kf(!0,1028,Hf);class Yf extends Qe{constructor(e,t,i){super(),this.id=e,this._onlySymbols=i,t.on("data",(e=>{"source"===e.dataType&&"metadata"===e.sourceDataType&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&"source"===e.dataType&&"content"===e.sourceDataType&&(this.reload(),this.transform&&this.update(this.transform))})),t.on("error",(()=>{this._sourceErrored=!0})),this._source=t,this._tiles={},this._cache=new Gf(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._minTileCacheSize=t.minTileCacheSize,this._maxTileCacheSize=t.maxTileCacheSize,this._loadedParentTiles={},this._coveredTiles={},this._state=new zf,this._isRaster="raster"===this._source.type||"raster-dem"===this._source.type||"custom"===this._source.type&&"raster"===this._source._dataType}onAdd(e){this.map=e,this._minTileCacheSize=void 0===this._minTileCacheSize&&e?e._minTileCacheSize:this._minTileCacheSize,this._maxTileCacheSize=void 0===this._maxTileCacheSize&&e?e._maxTileCacheSize:this._maxTileCacheSize}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded)return!1;if(!this._source.loaded())return!1;for(const e in this._tiles){const t=this._tiles[e];if("loaded"!==t.state&&"errored"!==t.state)return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;const e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform)}_loadTile(e,t){return e.isSymbolTile=this._onlySymbols,this._source.loadTile(e,t)}_unloadTile(e){if(this._source.unloadTile)return this._source.unloadTile(e,(()=>{}))}_abortTile(e){if(this._source.abortTile)return this._source.abortTile(e,(()=>{}))}serialize(){return this._source.serialize()}prepare(e){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const t in this._tiles){const i=this._tiles[t];i.upload(e),i.prepare(this.map.style.imageManager)}}getIds(){return P(this._tiles).map((e=>e.tileID)).sort(Jf).map((e=>e.key))}getRenderableIds(e){const t=[];for(const i in this._tiles)this._isIdRenderable(+i,e)&&t.push(this._tiles[i]);return e?t.sort(((e,t)=>{const i=e.tileID,r=t.tileID,n=new y(i.canonical.x,i.canonical.y)._rotate(this.transform.angle),o=new y(r.canonical.x,r.canonical.y)._rotate(this.transform.angle);return i.overscaledZ-r.overscaledZ||o.y-n.y||o.x-n.x})).map((e=>e.tileID.key)):t.map((e=>e.tileID)).sort(Jf).map((e=>e.key))}hasRenderableParent(e){const t=this.findLoadedParent(e,0);return!!t&&this._isIdRenderable(t.tileID.key)}_isIdRenderable(e,t){return this._tiles[e]&&this._tiles[e].hasData()&&!this._coveredTiles[e]&&(t||!this._tiles[e].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(const e in this._tiles)"errored"!==this._tiles[e].state&&this._reloadTile(+e,"reloading")}}_reloadTile(e,t){const i=this._tiles[e];i&&("loading"!==i.state&&(i.state=t),this._loadTile(i,this._tileLoaded.bind(this,i,e,t)))}_tileLoaded(e,t,i,r){if(r)if(e.state="errored",404!==r.status)this._source.fire(new Je(r,{tile:e}));else if("raster-dem"===this._source.type&&this.usedForTerrain&&this.map.painter.terrain){const e=this.map.painter.terrain;this.update(this.transform,e.getScaledDemTileSize(),!0),e.resetTileLookupCache(this.id)}else this.update(this.transform);else e.timeAdded=Xe.now(),"expired"===i&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(t,e),"raster-dem"===this._source.type&&e.dem&&this._backfillDEM(e),this._state.initializeTileState(e,this.map?this.map.painter:null),this._source.fire(new Ye("data",{dataType:"source",tile:e,coord:e.tileID,sourceCacheId:this.id}))}_backfillDEM(e){const t=this.getRenderableIds();for(let r=0;r1||(Math.abs(i)>1&&(1===Math.abs(i+n)?i+=n:1===Math.abs(i-n)&&(i-=n)),t.dem&&e.dem&&(e.dem.backfillBorder(t.dem,i,r),e.neighboringTiles&&e.neighboringTiles[o]&&(e.neighboringTiles[o].backfilled=!0)))}}getTile(e){return this.getTileByID(e.key)}getTileByID(e){return this._tiles[e]}_retainLoadedChildren(e,t,i,r){for(const n in this._tiles){let o=this._tiles[n];if(r[n]||!o.hasData()||o.tileID.overscaledZ<=t||o.tileID.overscaledZ>i)continue;let s=o.tileID;for(;o&&o.tileID.overscaledZ>t+1;){const e=o.tileID.scaledTo(o.tileID.overscaledZ-1);o=this._tiles[e.key],o&&o.hasData()&&(s=e)}let a=s;for(;a.overscaledZ>t;)if(a=a.scaledTo(a.overscaledZ-1),e[a.key]){r[s.key]=s;break}}}findLoadedParent(e,t){if(e.key in this._loadedParentTiles){const i=this._loadedParentTiles[e.key];return i&&i.tileID.overscaledZ>=t?i:null}for(let i=e.overscaledZ-1;i>=t;i--){const t=e.scaledTo(i),r=this._getLoadedTile(t);if(r)return r}}_getLoadedTile(e){const t=this._tiles[e.key];return t&&t.hasData()?t:this._cache.getByKey(this._source.reparseOverscaled?e.wrapped().key:e.canonical.key)}updateCacheSize(e,t){t=t||this._source.tileSize;const i=Math.ceil(e.width/t)+1,r=Math.ceil(e.height/t)+1,n=Math.floor(i*r*5),o="number"==typeof this._minTileCacheSize?Math.max(this._minTileCacheSize,n):n,s="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,o):o;this._cache.setMaxSize(s)}handleWrapJump(e){const t=Math.round((e-(void 0===this._prevLng?e:this._prevLng))/360);if(this._prevLng=e,t){const e={};for(const i in this._tiles){const r=this._tiles[i];r.tileID=r.tileID.unwrapTo(r.tileID.wrap+t),e[r.tileID.key]=r}this._tiles=e;for(const e in this._timers)clearTimeout(this._timers[e]),delete this._timers[e];for(const e in this._tiles)this._setTileReloadTimer(+e,this._tiles[e])}}update(e,t,i){if(this.transform=e,!this._sourceLoaded||this._paused||this.transform.freezeTileCoverage)return;if(this.usedForTerrain&&!i)return;let r;this.updateCacheSize(e,t),"globe"!==this.transform.projection.name&&this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?r=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((e=>new hu(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y))):(r=e.coveringTiles({tileSize:t||this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!i,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain}),this._source.hasTile&&(r=r.filter((e=>this._source.hasTile(e))))):r=[];const n=this._updateRetainedTiles(r);if(Qf(this._source.type)&&0!==r.length){const e={},t={},i=Object.keys(n);for(const r of i){const i=n[r],o=this._tiles[r];if(!o||o.fadeEndTime&&o.fadeEndTime<=Xe.now())continue;const s=this.findLoadedParent(i,Math.max(i.overscaledZ-Yf.maxOverzooming,this._source.minzoom));s&&(this._addTile(s.tileID),e[s.tileID.key]=s.tileID),t[r]=i}const o=r[r.length-1].overscaledZ;for(const e in this._tiles){const i=this._tiles[e];if(n[e]||!i.hasData())continue;let r=i.tileID;for(;r.overscaledZ>o;){r=r.scaledTo(r.overscaledZ-1);const o=this._tiles[r.key];if(o&&o.hasData()&&t[r.key]){n[e]=i.tileID;break}}}for(const t in e)n[t]||(this._coveredTiles[t]=!0,n[t]=e[t])}for(const e in n)this._tiles[e].clearFadeHold();const o=function(e,t){const i=[];for(const r in e)r in t||i.push(r);return i}(this._tiles,n);for(const e of o){const t=this._tiles[e];t.hasSymbolBuckets&&!t.holdingForFade()?t.setHoldDuration(this.map._fadeDuration):t.hasSymbolBuckets&&!t.symbolFadeFinished()||this._removeTile(+e)}this._updateLoadedParentTileCache(),this._onlySymbols&&this._source.afterUpdate&&this._source.afterUpdate()}releaseSymbolFadeTiles(){for(const e in this._tiles)this._tiles[e].holdingForFade()&&this._removeTile(+e)}_updateRetainedTiles(e){const t={};if(0===e.length)return t;const i={},r=e.reduce(((e,t)=>Math.min(e,t.overscaledZ)),1/0),n=e[0].overscaledZ,o=Math.max(n-Yf.maxOverzooming,this._source.minzoom),s=Math.max(n+Yf.maxUnderzooming,this._source.minzoom),a={};for(const i of e){const e=this._addTile(i);t[i.key]=i,e.hasData()||r=this._source.maxzoom){const e=r.children(this._source.maxzoom)[0],i=this.getTile(e);if(i&&i.hasData()){t[e.key]=e;continue}}else{const e=r.children(this._source.maxzoom);if(t[e[0].key]&&t[e[1].key]&&t[e[2].key]&&t[e[3].key])continue}let n=e.wasRequested();for(let s=r.overscaledZ-1;s>=o;--s){const o=r.scaledTo(s);if(i[o.key])break;if(i[o.key]=!0,e=this.getTile(o),!e&&n&&(e=this._addTile(o)),e&&(t[o.key]=o,n=e.wasRequested(),e.hasData()))break}}return t}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const e in this._tiles){const t=[];let i,r=this._tiles[e].tileID;for(;r.overscaledZ>0;){if(r.key in this._loadedParentTiles){i=this._loadedParentTiles[r.key];break}t.push(r.key);const e=r.scaledTo(r.overscaledZ-1);if(i=this._getLoadedTile(e),i)break;r=e}for(const e of t)this._loadedParentTiles[e]=i}}_addTile(e){let t=this._tiles[e.key];if(t)return t;t=this._cache.getAndRemove(e),t&&(this._setTileReloadTimer(e.key,t),t.tileID=e,this._state.initializeTileState(t,this.map?this.map.painter:null),this._cacheTimers[e.key]&&(clearTimeout(this._cacheTimers[e.key]),delete this._cacheTimers[e.key],this._setTileReloadTimer(e.key,t)));const i=Boolean(t);if(!i){const i=this.map?this.map.painter:null;t=new Cf(e,this._source.tileSize*e.overscaleFactor(),this.transform.tileZoom,i,this._isRaster),this._loadTile(t,this._tileLoaded.bind(this,t,e.key,t.state))}return t?(t.uses++,this._tiles[e.key]=t,i||this._source.fire(new Ye("dataloading",{tile:t,coord:t.tileID,dataType:"source"})),t):null}_setTileReloadTimer(e,t){e in this._timers&&(clearTimeout(this._timers[e]),delete this._timers[e]);const i=t.getExpiryTimeout();i&&(this._timers[e]=setTimeout((()=>{this._reloadTile(e,"expired"),delete this._timers[e]}),i))}_removeTile(e){const t=this._tiles[e];t&&(t.uses--,delete this._tiles[e],this._timers[e]&&(clearTimeout(this._timers[e]),delete this._timers[e]),t.uses>0||(t.hasData()&&"reloading"!==t.state?this._cache.add(t.tileID,t,t.getExpiryTimeout()):(t.aborted=!0,this._abortTile(t),this._unloadTile(t))))}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const e in this._tiles)this._removeTile(+e);this._source._clear&&this._source._clear(),this._cache.reset(),this.map&&this.usedForTerrain&&this.map.painter.terrain&&this.map.painter.terrain.resetTileLookupCache(this.id)}tilesIn(e,t,i){const r=[],n=this.transform;if(!n)return r;const o="globe"===n.projection.name,s=Vl(n.center.lng);for(const a in this._tiles){const l=this._tiles[a];if(i&&l.clearQueryDebugViz(),l.holdingForFade())continue;let c;if(o){const e=l.tileID.canonical;if(0===e.z){const t=[Math.abs(A(s,...em(e,-1))-s),Math.abs(A(s,...em(e,1))-s)];c=[0,2*t.indexOf(Math.min(...t))-1]}else{const t=[Math.abs(A(s,...em(e,-1))-s),Math.abs(A(s,...em(e,0))-s),Math.abs(A(s,...em(e,1))-s)];c=[t.indexOf(Math.min(...t))-1]}}else c=[0];for(const i of c){const o=e.containsTile(l,n,t,i);o&&r.push(o)}}return r}getVisibleCoordinates(e){const t=this.getRenderableIds(e).map((e=>this._tiles[e].tileID));for(const e of t)e.projMatrix=this.transform.calculateProjMatrix(e.toUnwrapped());return t}hasTransition(){if(this._source.hasTransition())return!0;if(Qf(this._source.type))for(const e in this._tiles){const t=this._tiles[e];if(void 0!==t.fadeEndTime&&t.fadeEndTime>=Xe.now())return!0}return!1}setFeatureState(e,t,i){this._state.updateState(e=e||"_geojsonTileLayer",t,i)}removeFeatureState(e,t,i){this._state.removeFeatureState(e=e||"_geojsonTileLayer",t,i)}getFeatureState(e,t){return this._state.getState(e=e||"_geojsonTileLayer",t)}setDependencies(e,t,i){const r=this._tiles[e];r&&r.setDependencies(t,i)}reloadTilesForDependencies(e,t){for(const i in this._tiles)this._tiles[i].hasDependency(e,t)&&this._reloadTile(+i,"reloading");this._cache.filter((i=>!i.hasDependency(e,t)))}_preloadTiles(e,t){if(!this._sourceLoaded){const i=()=>{this._sourceLoaded&&(this._source.off("data",i),this._preloadTiles(e,t))};return void this._source.on("data",i)}const i=new Map,r=Array.isArray(e)?e:[e],n=this.map.painter.terrain,o=this.usedForTerrain&&n?n.getScaledDemTileSize():this._source.tileSize;for(const e of r){const t=e.coveringTiles({tileSize:o,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!this.usedForTerrain,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain});for(const e of t)i.set(e.key,e);this.usedForTerrain&&e.updateElevation(!1)}z(Array.from(i.values()),((e,t)=>{const i=new Cf(e,this._source.tileSize*e.overscaleFactor(),this.transform.tileZoom,this.map.painter,this._isRaster);this._loadTile(i,(e=>{"raster-dem"===this._source.type&&i.dem&&this._backfillDEM(i),t(e,i)}))}),t)}}function Jf(e,t){const i=Math.abs(2*e.wrap)-+(e.wrap<0),r=Math.abs(2*t.wrap)-+(t.wrap<0);return e.overscaledZ-t.overscaledZ||r-i||t.canonical.y-e.canonical.y||t.canonical.x-e.canonical.x}function Qf(e){return"raster"===e||"image"===e||"video"===e||"custom"===e}function em(e,t){const i=1<=0&&r[3]>=0&&a.insert(s,r[0],r[1],r[2],r[3])}}loadVTLayers(){if(!this.vtLayers){this.vtLayers=new jh(new dd(this.rawTileData)).layers,this.sourceLayerCoder=new gf(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"]),this.vtFeatures={};for(const e in this.vtLayers)this.vtFeatures[e]=[]}return this.vtLayers}query(e,t,i,r){this.loadVTLayers();const n=e.params||{},o=un(n.filter),s=e.tileResult,a=e.transform,l=s.bufferedTilespaceBounds,c=this.grid.query(l.min.x,l.min.y,l.max.x,l.max.y,((e,t,i,r)=>gc(s.bufferedTilespaceGeometry,e,t,i,r)));c.sort(nm);let h=null;a.elevation&&c.length>0&&(h=tm.create(a.elevation,this.tileID));const u={};let d;for(let a=0;a(f||(f=ic(t,this.tileID.canonical,e.tileTransform)),i.queryIntersectsFeature(s,t,r,f,this.z,e.transform,e.pixelPosMatrix,h,n))))}return u}loadMatchingFeature(e,t,i,r,n,o,s,a,l){const{featureIndex:c,bucketIndex:h,sourceLayerIndex:u,layoutVertexArrayOffset:d}=t,p=this.bucketLayerIDs[h];if(r&&!function(e,t){for(let i=0;i=0)return!0;return!1}(r,p))return;const f=this.sourceLayerCoder.decode(u),m=this.vtLayers[f].feature(c);if(i.needGeometry){const e=rc(m,!0);if(!i.filter(new wo(this.tileID.overscaledZ),e,this.tileID.canonical))return}else if(!i.filter(new wo(this.tileID.overscaledZ),m))return;const _=this.getId(m,f);for(let t=0;t{const s=t instanceof zo?t.get(o):null;return s&&s.evaluate?s.evaluate(i,r,n):s}))}function nm(e,t){return t-e}Hn(im,"FeatureIndex",{omit:["rawTileData","sourceLayerCoder"]});class om{constructor(e,t){this.width=e,this.height=t,this.nextRow=0,this.image=new Lc({width:e,height:t}),this.positions={},this.uploaded=!1}getDash(e,t){const i=this.getKey(e,t);return this.positions[i]}trim(){const e=this.width,t=this.height=B(this.nextRow);this.image.resize({width:e,height:t})}getKey(e,t){return e.join(",")+t}getDashRanges(e,t,i){const r=[];let n=e.length%2==1?-e[e.length-1]*i:0,o=e[0]*i,s=!0;r.push({left:n,right:o,isDash:s,zeroLength:0===e[0]});let a=e[0];for(let t=1;t1&&(s=e[++o]);const l=Math.abs(a-s.left),c=Math.abs(a-s.right),h=Math.min(l,c);let u;const d=t/i*(r+1);if(s.isDash){const e=r-Math.abs(d);u=Math.sqrt(h*h+e*e)}else u=r-Math.sqrt(h*h+d*d);this.image.data[n+a]=Math.max(0,Math.min(255,u+128))}}}addRegularDash(e,t){for(let t=e.length-1;t>=0;--t){const i=e[t],r=e[t+1];i.zeroLength?e.splice(t,1):r&&r.isDash===i.isDash&&(r.left=i.left,e.splice(t,1))}const i=e[0],r=e[e.length-1];i.isDash===r.isDash&&(i.left=r.left-this.width,r.right=i.right+this.width);const n=this.width*this.nextRow;let o=0,s=e[o];for(let i=0;i1&&(s=e[++o]);const r=Math.abs(i-s.left),a=Math.abs(i-s.right),l=Math.min(r,a);this.image.data[n+i]=Math.max(0,Math.min(255,(s.isDash?l:-l)+t+128))}}addDash(e,t){const i=this.getKey(e,t);if(this.positions[i])return this.positions[i];const r="round"===t,n=r?7:0,o=2*n+1;if(this.nextRow+o>this.height)return $("LineAtlas out of space"),null;0===e.length&&e.push(1);let s=0;for(let t=0;t=t.maxzoom||"none"!==t.visibility&&(cm(e,this.zoom,i),(a[t.id]=t.createBucket({index:s.bucketLayerIDs.length,layers:e,zoom:this.zoom,canonical:this.canonical,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:u,sourceID:this.source,enableTerrain:this.enableTerrain,projection:this.projection.spec,availableImages:i})).populate(d,c,this.tileID.canonical,this.tileTransform),s.bucketLayerIDs.push(e.map((e=>e.id))))}}let u,d,p,f;l.trim();const m={type:"maybePrepare",isSymbolTile:this.isSymbolTile,zoom:this.zoom},_=()=>{if(u)return n(u);if(d&&p&&f){const e=new am(d),t=new bd(p,f);for(const r in a){const n=a[r];n instanceof rf?(cm(n.layers,this.zoom,i),mp(n,d,e.positions,p,t.iconPositions,this.showCollisionBoxes,i,this.tileID.canonical,this.tileZoom,this.projection)):n.hasPattern&&(n instanceof wu||n instanceof Th||n instanceof Kh)&&(cm(n.layers,this.zoom,i),n.addFeatures(c,this.tileID.canonical,t.patternPositions,i,this.tileTransform))}this.status="done",n(null,{buckets:P(a).filter((e=>!e.isEmpty())),featureIndex:s,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,lineAtlas:l,imageAtlas:t,glyphMap:this.returnDependencies?d:null,iconMap:this.returnDependencies?p:null,glyphPositions:this.returnDependencies?e.positions:null})}},g=V(c.glyphDependencies,(e=>Object.keys(e).map(Number)));Object.keys(g).length?r.send("getGlyphs",{uid:this.uid,stacks:g},((e,t)=>{u||(u=e,d=t,_())}),void 0,!1,m):d={};const y=Object.keys(c.iconDependencies);y.length?r.send("getImages",{icons:y,source:this.source,tileID:this.tileID,type:"icons"},((e,t)=>{u||(u=e,p=t,_())}),void 0,!1,m):p={};const x=Object.keys(c.patternDependencies);x.length?r.send("getImages",{icons:x,source:this.source,tileID:this.tileID,type:"patterns"},((e,t)=>{u||(u=e,f=t,_())}),void 0,!1,m):f={},_()}}function cm(e,t,i){const r=new wo(t);for(const t of e)t.recalculate(r,i)}class hm{constructor(e){this.entries={},this.scheduler=e}request(e,t,i,r){const n=this.entries[e]=this.entries[e]||{callbacks:[]};if(n.result){const[e,i]=n.result;return this.scheduler?this.scheduler.add((()=>{r(e,i)}),t):r(e,i),()=>{}}return n.callbacks.push(r),n.cancel||(n.cancel=i(((i,r)=>{n.result=[i,r];for(const e of n.callbacks)this.scheduler?this.scheduler.add((()=>{e(i,r)}),t):e(i,r);setTimeout((()=>delete this.entries[e]),3e3)}))),()=>{n.result||(n.callbacks=n.callbacks.filter((e=>e!==r)),n.callbacks.length||(n.cancel(),delete this.entries[e]))}}}function um(e,t,i){const r=JSON.stringify(e.request);return e.data&&(this.deduped.entries[r]={result:[null,e.data]}),this.deduped.request(r,{type:"parseTile",isSymbolTile:e.isSymbolTile,zoom:e.tileZoom},(t=>{const r=de(e.request,((e,r,n,o)=>{e?t(e):r&&t(null,{vectorTile:i?void 0:new jh(new dd(r)),rawData:r,cacheControl:n,expires:o})}));return()=>{r.cancel(),t()}}),t)}const dm=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class pm{static from(e){if(!(e instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");const[t,i]=new Uint8Array(e,0,2);if(219!==t)throw new Error("Data does not appear to be in a KDBush format.");const r=i>>4;if(1!==r)throw new Error(`Got v${r} data when expected v1.`);const n=dm[15&i];if(!n)throw new Error("Unrecognized array type.");const[o]=new Uint16Array(e,2,1),[s]=new Uint32Array(e,4,1);return new pm(s,o,n,e)}constructor(e,t=64,i=Float64Array,r){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+t,2),65535),this.ArrayType=i,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;const n=dm.indexOf(this.ArrayType),o=2*e*this.ArrayType.BYTES_PER_ELEMENT,s=e*this.IndexArrayType.BYTES_PER_ELEMENT,a=(8-s%8)%8;if(n<0)throw new Error(`Unexpected typed array class: ${i}.`);r&&r instanceof ArrayBuffer?(this.data=r,this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+s+a,2*e),this._pos=2*e,this._finished=!0):(this.data=new ArrayBuffer(8+o+s+a),this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+s+a,2*e),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+n]),new Uint16Array(this.data,2,1)[0]=t,new Uint32Array(this.data,4,1)[0]=e)}add(e,t){const i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=e,this.coords[this._pos++]=t,i}finish(){const e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return fm(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,t,i,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:n,coords:o,nodeSize:s}=this,a=[0,n.length-1,0],l=[];for(;a.length;){const c=a.pop()||0,h=a.pop()||0,u=a.pop()||0;if(h-u<=s){for(let s=u;s<=h;s++){const a=o[2*s],c=o[2*s+1];a>=e&&a<=i&&c>=t&&c<=r&&l.push(n[s])}continue}const d=u+h>>1,p=o[2*d],f=o[2*d+1];p>=e&&p<=i&&f>=t&&f<=r&&l.push(n[d]),(0===c?e<=p:t<=f)&&(a.push(u),a.push(d-1),a.push(1-c)),(0===c?i>=p:r>=f)&&(a.push(d+1),a.push(h),a.push(1-c))}return l}within(e,t,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:r,coords:n,nodeSize:o}=this,s=[0,r.length-1,0],a=[],l=i*i;for(;s.length;){const c=s.pop()||0,h=s.pop()||0,u=s.pop()||0;if(h-u<=o){for(let i=u;i<=h;i++)ym(n[2*i],n[2*i+1],e,t)<=l&&a.push(r[i]);continue}const d=u+h>>1,p=n[2*d],f=n[2*d+1];ym(p,f,e,t)<=l&&a.push(r[d]),(0===c?e-i<=p:t-i<=f)&&(s.push(u),s.push(d-1),s.push(1-c)),(0===c?e+i>=p:t+i>=f)&&(s.push(d+1),s.push(h),s.push(1-c))}return a}}function fm(e,t,i,r,n,o){if(n-r<=i)return;const s=r+n>>1;mm(e,t,s,r,n,o),fm(e,t,i,r,s-1,1-o),fm(e,t,i,s+1,n,1-o)}function mm(e,t,i,r,n,o){for(;n>r;){if(n-r>600){const s=n-r+1,a=i-r+1,l=Math.log(s),c=.5*Math.exp(2*l/3),h=.5*Math.sqrt(l*c*(s-c)/s)*(a-s/2<0?-1:1);mm(e,t,i,Math.max(r,Math.floor(i-a*c/s+h)),Math.min(n,Math.floor(i+(s-a)*c/s+h)),o)}const s=t[2*i+o];let a=r,l=n;for(_m(e,t,r,i),t[2*n+o]>s&&_m(e,t,r,n);as;)l--}t[2*r+o]===s?_m(e,t,r,l):(l++,_m(e,t,l,n)),l<=i&&(r=l+1),i<=l&&(n=l-1)}}function _m(e,t,i,r){gm(e,i,r),gm(t,2*i,2*r),gm(t,2*i+1,2*r+1)}function gm(e,t,i){const r=e[t];e[t]=e[i],e[i]=r}function ym(e,t,i,r){const n=e-i,o=t-r;return n*n+o*o}e.ARRAY_TYPE=aa,e.AUTH_ERR_MSG=ye,e.Aabb=tl,e.Actor=class{constructor(e,i,r){this.target=e,this.parent=i,this.mapId=r,this.callbacks={},this.cancelCallbacks={},F(["receive"],this),this.target.addEventListener("message",this.receive,!1),this.globalScope=W()?e:t,this.scheduler=new _f}send(e,t,i,r,n=!1,o){const s=Math.round(1e18*Math.random()).toString(36).substring(0,10);i&&(i.metadata=o,this.callbacks[s]=i);const a=K(this.globalScope)?void 0:[];return this.target.postMessage({id:s,type:e,hasCallback:!!i,targetMapId:r,mustQueue:n,sourceMapId:this.mapId,data:Jn(t,a)},a),{cancel:()=>{i&&delete this.callbacks[s],this.target.postMessage({id:s,type:"",targetMapId:r,sourceMapId:this.mapId})}}}receive(e){const t=e.data,i=t.id;if(i&&(!t.targetMapId||this.mapId===t.targetMapId))if(""===t.type){const e=this.cancelCallbacks[i];delete this.cancelCallbacks[i],e&&e.cancel()}else if(t.mustQueue||W()){const e=this.callbacks[i];this.cancelCallbacks[i]=this.scheduler.add((()=>this.processTask(i,t)),e&&e.metadata||{type:"message"})}else this.processTask(i,t)}processTask(e,t){if(""===t.type){const i=this.callbacks[e];delete this.callbacks[e],i&&(t.error?i(Qn(t.error)):i(null,Qn(t.data)))}else{const i=K(this.globalScope)?void 0:[],r=t.hasCallback?(t,r)=>{delete this.cancelCallbacks[e],this.target.postMessage({id:e,type:"",sourceMapId:this.mapId,error:t?Jn(t):null,data:Jn(r,i)},i)}:e=>{},n=Qn(t.data);if(this.parent[t.type])this.parent[t.type](t.sourceMapId,n,r);else if(this.parent.getWorkerSource){const e=t.type.split(".");this.parent.getWorkerSource(t.sourceMapId,e[0],n.source)[e[1]](n,r)}else r(new Error(`Could not find function ${t.type}`))}}remove(){this.scheduler.remove(),this.target.removeEventListener("message",this.receive,!1)}},e.CanonicalTileID=lu,e.Color=Pt,e.ColorMode=Wf,e.CullFaceMode=Kf,e.DEMData=jf,e.DataConstantProperty=Po,e.DedupedRequest=hm,e.DepthMode=$f,e.EXTENT=na,e.Elevation=class{isDataAvailableAtPoint(e){const t=this._source();if(this.isUsingMockSource()||!t||e.y<0||e.y>1)return!1;const i=t.getSource().maxzoom,r=1<1)return t;const n=r.getSource().maxzoom,o=1<{const o=this.getAtTileOffset(e,n.x,n.y),s=r.upVector(e.canonical,n.x,n.y);return Ca(s,s,o*r.upVectorScale(e.canonical,t,i).metersToTile),s}}getForTilePoints(e,t,i,r){if(this.isUsingMockSource())return!1;const n=tm.create(this,e,r);return!!n&&(t.forEach((e=>{e[2]=this.exaggeration()*n.getElevationAt(e[0],e[1],i)})),!0)}getMinMaxForTile(e){if(this.isUsingMockSource())return null;const t=this.findDEMTileFor(e);if(!t||!t.dem)return null;const i=t.dem.tree,r=t.tileID,n=1<{let r=e===o-1?e-2:0===e?e:e-1;return r+=i?24575:0,[r,t]};for(let e=0;ethis._skuTokenExpiresAt}transformRequest(e,t){return this._transformRequestFn&&this._transformRequestFn(e,t)||{url:e}}normalizeStyleURL(e,t){if(!xe(e))return e;const i=Se(e);return i.path=`/styles/v1${i.path}`,this._makeAPIURL(i,this._customAccessToken||t)}normalizeGlyphsURL(e,t){if(!xe(e))return e;const i=Se(e);return i.path=`/fonts/v1${i.path}`,this._makeAPIURL(i,this._customAccessToken||t)}normalizeSourceURL(e,t,i,r){if(!xe(e))return e;const n=Se(e);return n.path=`/v4/${n.authority}.json`,n.params.push("secure"),i&&n.params.push(`language=${i}`),r&&n.params.push(`worldview=${r}`),this._makeAPIURL(n,this._customAccessToken||t)}normalizeSpriteURL(e,t,i,r){const n=Se(e);return xe(e)?(n.path=`/styles/v1${n.path}/sprite${t}${i}`,this._makeAPIURL(n,this._customAccessToken||r)):(n.path+=`${t}${i}`,Me(n))}normalizeTileURL(e,t,i){if(this._isSkuTokenExpired()&&this._createSkuToken(),e&&!xe(e))return e;const r=Se(e);r.path=r.path.replace(/(\.(png|jpg)\d*)(?=$)/,`${t||i&&"raster"!==r.authority&&512===i?"@2x":""}${o.supported?".webp":"$1"}`),"raster"===r.authority?r.path=`/${n.RASTER_URL_PREFIX}${r.path}`:(r.path=r.path.replace(/^.+\/v4\//,"/"),r.path=`/${n.TILE_URL_VERSION}${r.path}`);const s=this._customAccessToken||function(e){for(const t of e){const e=t.match(/^access_token=(.*)$/);if(e)return e[1]}return null}(r.params)||n.ACCESS_TOKEN;return n.REQUIRE_ACCESS_TOKEN&&s&&this._skuToken&&r.params.push(`sku=${this._skuToken}`),this._makeAPIURL(r,s)}canonicalizeTileURL(e,t){const i=Se(e);if(!i.path.match(/^(\/v4\/|\/raster\/v1\/)/)||!i.path.match(/\.[\w]+$/))return e;let r="mapbox://";i.path.match(/^\/raster\/v1\//)?r+=`raster/${i.path.replace(`/${n.RASTER_URL_PREFIX}/`,"")}`:r+=`tiles/${i.path.replace(`/${n.TILE_URL_VERSION}/`,"")}`;let o=i.params;return t&&(o=o.filter((e=>!e.match(/^access_token=/)))),o.length&&(r+=`?${o.join("&")}`),r}canonicalizeTileset(e,t){const i=!!t&&xe(t),r=[];for(const t of e.tiles||[])ve(t)?r.push(this.canonicalizeTileURL(t,i)):r.push(t);return r}_makeAPIURL(e,t){const i="See https://docs.mapbox.com/api/overview/#access-tokens-and-token-scopes",r=Se(n.API_URL);if(e.protocol=r.protocol,e.authority=r.authority,"http"===e.protocol){const t=e.params.indexOf("secure");t>=0&&e.params.splice(t,1)}if("/"!==r.path&&(e.path=`${r.path}${e.path}`),!n.REQUIRE_ACCESS_TOKEN)return Me(e);if(t=t||n.ACCESS_TOKEN,!this._silenceAuthErrors){if(!t)throw new Error(`An API access token is required to use Mapbox GL. ${i}`);if("s"===t[0])throw new Error(`Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). ${i}`)}return e.params=e.params.filter((e=>-1===e.indexOf("access_token"))),e.params.push(`access_token=${t||""}`),Me(e)}},e.ResourceType=le,e.SegmentVector=ra,e.SourceCache=Yf,e.StencilMode=qf,e.StructArrayLayout1ui2=hs,e.StructArrayLayout2f1f2i16=es,e.StructArrayLayout2i4=No,e.StructArrayLayout2ui4=cs,e.StructArrayLayout3f12=is,e.StructArrayLayout3ui6=rs,e.StructArrayLayout4i8=Go,e.StructArrayLayout5f20=as,e.Texture=ff,e.Tile=Cf,e.Transitionable=So,e.Uniform1f=Ls,e.Uniform1i=class extends Ds{constructor(e){super(e),this.current=0}set(e,t,i){this.fetchUniformLocation(e,t)&&this.current!==i&&(this.current=i,this.gl.uniform1i(this.location,i))}},e.Uniform2f=class extends Ds{constructor(e){super(e),this.current=[0,0]}set(e,t,i){this.fetchUniformLocation(e,t)&&(i[0]===this.current[0]&&i[1]===this.current[1]||(this.current=i,this.gl.uniform2f(this.location,i[0],i[1])))}},e.Uniform3f=class extends Ds{constructor(e){super(e),this.current=[0,0,0]}set(e,t,i){this.fetchUniformLocation(e,t)&&(i[0]===this.current[0]&&i[1]===this.current[1]&&i[2]===this.current[2]||(this.current=i,this.gl.uniform3f(this.location,i[0],i[1],i[2])))}},e.Uniform4f=Rs,e.UniformColor=Bs,e.UniformMatrix2f=class extends Ds{constructor(e){super(e),this.current=Us}set(e,t,i){if(this.fetchUniformLocation(e,t))for(let e=0;e<4;e++)if(i[e]!==this.current[e]){this.current=i,this.gl.uniformMatrix2fv(this.location,!1,i);break}}},e.UniformMatrix3f=class extends Ds{constructor(e){super(e),this.current=Fs}set(e,t,i){if(this.fetchUniformLocation(e,t))for(let e=0;e<9;e++)if(i[e]!==this.current[e]){this.current=i,this.gl.uniformMatrix3fv(this.location,!1,i);break}}},e.UniformMatrix4f=class extends Ds{constructor(e){super(e),this.current=Os}set(e,t,i){if(this.fetchUniformLocation(e,t)){if(i[12]!==this.current[12]||i[0]!==this.current[0])return this.current=i,void this.gl.uniformMatrix4fv(this.location,!1,i);for(let e=1;e<16;e++)if(i[e]!==this.current[e]){this.current=i,this.gl.uniformMatrix4fv(this.location,!1,i);break}}}},e.UnwrappedTileID=cu,e.ValidationError=tn,e.VectorTileFeature=Gh,e.VectorTileWorkerSource=class extends Qe{constructor(e,t,i,r,n){super(),this.actor=e,this.layerIndex=t,this.availableImages=i,this.loadVectorData=n||um,this.loading={},this.loaded={},this.deduped=new hm(e.scheduler),this.isSpriteLoaded=r,this.scheduler=e.scheduler}loadTile(e,t){const i=e.uid,r=e&&e.request,n=r&&r.collectResourceTiming,o=this.loading[i]=new lm(e);o.abort=this.loadVectorData(e,((s,a)=>{const l=!this.loading[i];if(delete this.loading[i],l||s||!a)return o.status="done",l||(this.loaded[i]=o),t(s);const c=a.rawData,h={};a.expires&&(h.expires=a.expires),a.cacheControl&&(h.cacheControl=a.cacheControl),o.vectorTile=a.vectorTile||new jh(new dd(c));const u=()=>{o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,((e,i)=>{if(e||!i)return t(e);const o={};if(n){const e=Ge(r);e.length>0&&(o.resourceTiming=JSON.parse(JSON.stringify(e)))}t(null,k({rawTileData:c.slice(0)},i,h,o))}))};this.isSpriteLoaded?u():this.once("isSpriteLoaded",(()=>{this.scheduler?this.scheduler.add(u,{type:"parseTile",isSymbolTile:e.isSymbolTile,zoom:e.tileZoom}):u()})),this.loaded=this.loaded||{},this.loaded[i]=o}))}reloadTile(e,t){const i=this.loaded,r=e.uid,n=this;if(i&&i[r]){const o=i[r];o.showCollisionBoxes=e.showCollisionBoxes,o.enableTerrain=!!e.enableTerrain,o.projection=e.projection,o.tileTransform=Mp(e.tileID.canonical,e.projection);const s=(e,i)=>{const r=o.reloadCallback;r&&(delete o.reloadCallback,o.parse(o.vectorTile,n.layerIndex,this.availableImages,n.actor,r)),t(e,i)};"parsing"===o.status?o.reloadCallback=s:"done"===o.status&&(o.vectorTile?o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s())}}abortTile(e,t){const i=e.uid,r=this.loading[i];r&&(r.abort&&r.abort(),delete this.loading[i]),t()}removeTile(e,t){const i=this.loaded,r=e.uid;i&&i[r]&&delete i[r],t()}},e.WritingMode=wd,e.ZoomDependentExpression=Yr,e.add=Ea,e.addDynamicAttributes=Jp,e.adjoint=function(e,t){var i=t[0],r=t[1],n=t[2],o=t[3],s=t[4],a=t[5],l=t[6],c=t[7],h=t[8];return e[0]=s*h-a*c,e[1]=n*c-r*h,e[2]=r*a-n*s,e[3]=a*l-o*h,e[4]=i*h-n*l,e[5]=n*o-i*a,e[6]=o*c-s*l,e[7]=r*l-i*c,e[8]=i*s-r*o,e},e.asyncAll=z,e.bezier=S,e.bindAll=F,e.boundsAttributes=Af,e.bufferConvexPolygon=function(e,t){const i=[];for(let r=0;rre&&(e.getActor().send("enforceCacheSizeLimit",ie),ae=0)},e.calculateGlobeLabelMatrix=function(e,t){const{x:i,y:r}=e.point,n=Il(i,r,e.worldSize/e._pixelsPerMercatorPixel,0,0);return da(n,n,Al(ml(t)))},e.calculateGlobeMatrix=function(e){const{x:t,y:i}=e.point,{lng:r,lat:n}=e._center;return Il(t,i,e.worldSize,r,n)},e.calculateGlobeMercatorMatrix=function(e){const t=e.pixelsPerMeter,i=t/jl(1,e.center.lat),r=ha(new Float64Array(16));return pa(r,r,[e.point.x,e.point.y,0]),fa(r,r,[i,i,t]),Float32Array.from(r)},e.circumferenceAtLatitude=Ul,e.clamp=A,e.clearTileCache=function(e){if(!ne())return;const i=t.caches.delete(Q);e&&i.catch(e).then((()=>e()))},e.clipLine=qd,e.clone=function(e){var t=new aa(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},e.clone$1=j,e.collisionCircleLayout=Du,e.config=n,e.conjugate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e},e.create=function(){var e=new aa(16);return aa!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e},e.create$1=la,e.createExpression=Hr,e.createLayout=Uo,e.createStyleLayer=function(e){return"custom"===e.type?new hf(e):new pf[e.type](e)},e.cross=Da,e.degToRad=b,e.distance=function(e,t){return Math.hypot(t[0]-e[0],t[1]-e[1],t[2]-e[2])},e.div=function(e,t,i){return e[0]=t[0]/i[0],e[1]=t[1]/i[1],e[2]=t[2]/i[2],e},e.dot=ka,e.earthRadius=Rl,e.ease=M,e.easeCubicInOut=E,e.ecefToLatLng=function([e,t,i]){const r=Math.hypot(e,t,i),n=Math.atan2(e,i),o=.5*Math.PI-Math.acos(-t/r);return new Fl(w(n),w(o))},e.emitValidationErrors=Gn,e.endsWith=U,e.enforceCacheSizeLimit=function(e){oe(),ee&&ee.then((t=>{t.keys().then((i=>{for(let r=0;ro&&(r+=(e[n]-o)*(e[n]-o)),t[n]0){const e=180/r;ca(p,p,[e/c+1,0,0,0,e/h+1,0,-.5*e/u,.5*e/d,1])}return p[2]=l,p[5]=e.x,p[8]=e.y,p},e.getImage=ge,e.getJSON=function(e,t){return ue(k(e,{type:"json"}),t)},e.getLatitudinalLod=function(e){const t=ql-5;e=A(e,-t,t)/t*90;const i=Math.pow(Math.abs(Math.sin(b(e))),3);return Math.round(i*(al.length-1))},e.getMapSessionAPI=Oe,e.getPerformanceMeasurement=Ge,e.getProjection=Wp,e.getRTLTextPluginStatus=xo,e.getReferrer=he,e.getTilePoint=function(e,{x:t,y:i},r=0){return new y(((t-r)*e.scale-e.x)*na,(i*e.scale-e.y)*na)},e.getTileVec3=function(e,t,i=0){return Ta(((t.x-i)*e.scale-e.x)*na,(t.y*e.scale-e.y)*na,Zl(t.z,t.y))},e.getVideo=function(e,i){const r=t.document.createElement("video");r.muted=!0,r.onloadstart=function(){i(null,r)};for(let i=0;i{}}},e.globeCenterToScreenPoint=function(e){const t=[0,0,0],i=ha(new Float64Array(16));return da(i,e.pixelMatrix,e.globeMatrix),La(t,t,i),new y(t[0],t[1])},e.globeDenormalizeECEF=Al,e.globeECEFOrigin=function(e,t){const i=[0,0,0];return La(i,i,Ml(ml(t.canonical))),La(i,i,e),i},e.globeMetersToEcef=ul,e.globeNormalizeECEF=Ml,e.globePixelsToTileUnits=function(e,t){return na/(512*Math.pow(2,e))*El(ml(t))},e.globePoleMatrixForTile=function(e,t,i){const r=ha(new Float64Array(16)),n=(t/(1<0;return 0===r&&!n&&!s&&o},e.identity=ha,e.identity$1=$a,e.invert=ua,e.isFullscreen=function(){return!!t.document.fullscreenElement||!!t.document.webkitFullscreenElement},e.isLngLatBehindGlobe=Pl,e.isMapAuthenticated=function(e){return Fe.has(e)},e.isMapboxURL=xe,e.isSafariWithAntialiasingBug=function(e){const t=e.navigator?e.navigator.userAgent:null;return!!K(e)&&t&&(t.match("Version/15.4")||t.match("Version/15.5")||t.match(/CPU (OS|iPhone OS) (15_4|15_5) like Mac OS X/))},e.latFromMercatorY=$l,e.latLngToECEF=wl,e.len=Ua,e.length=wa,e.length$1=function(e){return Math.hypot(e[0],e[1],e[2],e[3])},e.lngFromMercatorX=Gl,e.loadVectorTile=um,e.makeRequest=ue,e.mapValue=function(e,t,i,r,n){return A((e-t)/(i-t)*(n-r)+r,r,n)},e.mercatorScale=Wl,e.mercatorXfromLng=Vl,e.mercatorYfromLat=Nl,e.mercatorZfromAltitude=jl,e.mul=xa,e.mul$1=Fa,e.multiply=da,e.multiply$1=ca,e.multiply$2=Ma,e.nextPowerOfTwo=B,e.normalize=Pa,e.normalize$1=Wa,e.normalize$2=Na,e.number=Pi,e.ortho=function(e,t,i,r,n,o,s){var a=1/(t-i),l=1/(r-n),c=1/(o-s);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+i)*a,e[13]=(n+r)*l,e[14]=(s+o)*c,e[15]=1,e},e.pbf=$u,e.perspective=function(e,t,i,r,n){var o,s=1/Math.tan(t/2);return e[0]=s/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=s,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,null!=n&&n!==1/0?(e[10]=(n+r)*(o=1/(r-n)),e[14]=2*n*r*o):(e[10]=-1,e[14]=-2*r),e},e.pick=function(e,t){const i={};for(let r=0;r0&&i[0]<=e.width&&i[1]>0&&i[1]<=e.height&&!Pl(e,new Fl(e.center.lat,90)),r[0]>0&&r[0]<=e.width&&r[1]>0&&r[1]<=e.height&&!Pl(e,new Fl(e.center.lat,-90))]},e.polygonContainsPoint=_c,e.polygonIntersectsBox=gc,e.polygonIntersectsPolygon=ac,e.polygonizeBounds=function(e,t,i=0,r=!0){const n=new y(i,i),o=e.sub(n),s=t.add(n),a=[o,new y(s.x,o.y),s,new y(o.x,s.y)];return r&&a.push(o.clone()),a},e.posAttributes=Ya,e.postMapLoadEvent=De,e.postPerformanceEvent=Re,e.postTurnstileEvent=Pe,e.potpack=yd,e.prevPowerOfTwo=function(e){return e<=1?1:Math.pow(2,Math.floor(Math.log(e)/Math.LN2))},e.radToDeg=w,e.refProperties=["type","source","source-layer","minzoom","maxzoom","filter","layout"],e.registerForPluginStateChange=function(e){return e({pluginStatus:fo,pluginURL:mo}),yo.on("pluginStateChange",e),e},e.removeAuthState=function(e){Fe.delete(e)},e.renderColorRamp=Oc,e.resample=Kl,e.rotateX=ma,e.rotateX$1=Za,e.rotateY=_a,e.rotateY$1=qa,e.rotateZ=function(e,t,i){var r=Math.sin(i),n=Math.cos(i),o=t[0],s=t[1],a=t[2],l=t[3],c=t[4],h=t[5],u=t[6],d=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=o*n+c*r,e[1]=s*n+h*r,e[2]=a*n+u*r,e[3]=l*n+d*r,e[4]=c*n-o*r,e[5]=h*n-s*r,e[6]=u*n-a*r,e[7]=d*n-l*r,e},e.rotateZ$1=function(e,t,i){i*=.5;var r=t[0],n=t[1],o=t[2],s=t[3],a=Math.sin(i),l=Math.cos(i);return e[0]=r*l+n*a,e[1]=n*l-r*a,e[2]=o*l+s*a,e[3]=s*l-o*a,e},e.scale=fa,e.scale$1=Va,e.scale$2=Ca,e.scaleAndAdd=za,e.set=function(e,t,i,r){return e[0]=t,e[1]=i,e[2]=r,e},e.setCacheLimits=function(e,t){ie=e,re=t},e.setColumn=function(e,t,i){e[4*t+0]=i[0],e[4*t+1]=i[1],e[4*t+2]=i[2],e[4*t+3]=i[3]},e.setRTLTextPlugin=function(e,t,i=!1){if(fo===co||fo===ho||fo===uo)throw new Error("setRTLTextPlugin cannot be called multiple times.");mo=Xe.resolveURL(e),fo=co,po=t,go(),i||vo()},e.smoothstep=I,e.spec=et,e.squaredLength=function(e){var t=e[0],i=e[1],r=e[2];return t*t+i*i+r*r},e.storeAuthState=function(e,t){t?Fe.add(e):Fe.delete(e)},e.sub=Oa,e.subtract=Sa,e.symbolSize=Uu,e.tileAABB=function(e,t,i,r,n,o,s,a,l){if("globe"===l.name)return function(e,t,i){const r=t/e.worldSize,n=e.globeMatrix;if(i.z<=1){const e=ml(i).getCorners();return yl(e,n,r),tl.fromPoints(e)}const o=xl(i),s=vl(o);yl(s,n,r);const a=Number.MAX_VALUE,l=[-a,-a,-a],c=[a,a,a];if(o.contains(e.center)){for(const e of s)Aa(c,c,e),Ia(l,l,e);l[2]=0;const t=e.point,i=[t.x*r,t.y*r,0];return Aa(c,c,i),Ia(l,l,i),new tl(c,l)}const h=[n[12]*r,n[13]*r,n[14]*r],u=o.getCenter(),d=A(e.center.lat,-ql,ql),p=A(u.lat,-ql,ql),f=Vl(e.center.lng),m=Nl(d);let _=f-Vl(u.lng);const g=m-Nl(p);_>.5?_-=1:_<-.5&&(_+=1);let y=0;Math.abs(_)>Math.abs(g)?y=_>=0?1:3:(y=g>=0?0:2,za(h,h,[n[4]*r,n[5]*r,n[6]*r],-Math.sin(b(g>=0?o.getSouth():o.getNorth()))*nl));const x=s[y],v=s[(y+1)%4],w=new pl(x,v,h),T=[fl(w,0)||x[0],fl(w,1)||x[1],fl(w,2)||x[2]],E=Cl(e.zoom);if(E>0){const r=function({x:e,y:t,z:i},r,n,o,s){const a=1/(1<.5?d=-1:p<-.5&&(d=1),l=((l+d)*r-(o*=r))*n+o,c=((c+d)*r-o)*n+o,h=(h*r-(s*=r))*n+s,u=(u*r-s)*n+s,[[l,u,0],[c,u,0],[c,h,0],[l,h,0]]}(i,t,e._pixelsPerMercatorPixel,f,m);for(let e=0;ejn(Tn(e)),e.validateFog=e=>jn(Rn(e)),e.validateLayer=e=>jn(In(e)),e.validateLight=e=>jn(Dn(e)),e.validateSource=e=>jn(Pn(e)),e.validateStyle=Un,e.validateTerrain=e=>jn(Ln(e)),e.values=P,e.vectorTile=zh,e.version=i,e.warnOnce=$,e.window=t,e.wrap=C})),r(0,(function(e){function t(e){if("number"==typeof e||"boolean"==typeof e||"string"==typeof e||null==e)return JSON.stringify(e);if(Array.isArray(e)){let i="[";for(const r of e)i+=`${t(r)},`;return`${i}]`}let i="{";for(const r of Object.keys(e).sort())i+=`${r}:${t(e[r])},`;return`${i}}`}function i(i){let r="";for(const n of e.refProperties)r+=`/${t(i[n])}`;return r}class r{constructor(e){this.keyCache={},e&&this.replace(e)}replace(e){this._layerConfigs={},this._layers={},this.update(e,[])}update(t,r){for(const i of t)this._layerConfigs[i.id]=i,(this._layers[i.id]=e.createStyleLayer(i)).compileFilter(),this.keyCache[i.id]&&delete this.keyCache[i.id];for(const e of r)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const n=function(e,t){const r={};for(let n=0;nthis._layers[e.id])),i=t[0];if("none"===i.visibility)continue;const r=i.source||"";let n=this.familiesBySource[r];n||(n=this.familiesBySource[r]={});const o=i.sourceLayer||"_geojsonTileLayer";let s=n[o];s||(s=n[o]=[]),s.push(t)}}}class n{loadTile(t,i){const{uid:r,encoding:n,rawImageData:o,padding:s,buildQuadTree:a}=t,l=e.window.ImageBitmap&&o instanceof e.window.ImageBitmap?this.getImageData(o,s):o;i(null,new e.DEMData(r,l,n,s<1,a))}getImageData(e,t){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d",{willReadFrequently:!0})),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);const i=this.offscreenCanvasContext.getImageData(-t,-t,e.width+2*t,e.height+2*t);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),i}}function o(e,t){if(0!==e.length){s(e[0],t);for(var i=1;i=Math.abs(a)?i-l+a:a-l+i,i=l}i+r>=0!=!!t&&e.reverse()}var a=e.getDefaultExportFromCjs((function e(t,i){var r,n=t&&t.type;if("FeatureCollection"===n)for(r=0;r>31}function T(e,t){for(var i=e.loadGeometry(),r=e.type,n=0,o=0,s=i.length,a=0;ae},A=Math.fround||(I=new Float32Array(1),e=>(I[0]=+e,I[0]));var I;const C=3,z=5,P=6;class k{constructor(e){this.options=Object.assign(Object.create(M),e),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(e){const{log:t,minZoom:i,maxZoom:r}=this.options;t&&console.time("total time");const n=`prepare ${e.length} points`;t&&console.time(n),this.points=e;const o=[];for(let t=0;t=i;e--){const i=+Date.now();s=this.trees[e]=this._createTree(this._cluster(s,e)),t&&console.log("z%d: %d clusters in %dms",e,s.numItems,+Date.now()-i)}return t&&console.timeEnd("total time"),this}getClusters(e,t){let i=((e[0]+180)%360+360)%360-180;const r=Math.max(-90,Math.min(90,e[1]));let n=180===e[2]?180:((e[2]+180)%360+360)%360-180;const o=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)i=-180,n=180;else if(i>n){const e=this.getClusters([i,r,180,o],t),s=this.getClusters([-180,r,n,o],t);return e.concat(s)}const s=this.trees[this._limitZoom(t)],a=s.range(R(i),B(o),R(n),B(r)),l=s.data,c=[];for(const e of a){const t=this.stride*e;c.push(l[t+z]>1?D(l,t,this.clusterProps):this.points[l[t+C]])}return c}getChildren(e){const t=this._getOriginId(e),i=this._getOriginZoom(e),r="No cluster with the specified id.",n=this.trees[i];if(!n)throw new Error(r);const o=n.data;if(t*this.stride>=o.length)throw new Error(r);const s=this.options.radius/(this.options.extent*Math.pow(2,i-1)),a=n.within(o[t*this.stride],o[t*this.stride+1],s),l=[];for(const t of a){const i=t*this.stride;o[i+4]===e&&l.push(o[i+z]>1?D(o,i,this.clusterProps):this.points[o[i+C]])}if(0===l.length)throw new Error(r);return l}getLeaves(e,t,i){const r=[];return this._appendLeaves(r,e,t=t||10,i=i||0,0),r}getTile(e,t,i){const r=this.trees[this._limitZoom(e)],n=Math.pow(2,e),{extent:o,radius:s}=this.options,a=s/o,l=(i-a)/n,c=(i+1+a)/n,h={features:[]};return this._addTileFeatures(r.range((t-a)/n,l,(t+1+a)/n,c),r.data,t,i,n,h),0===t&&this._addTileFeatures(r.range(1-a/n,l,1,c),r.data,n,i,n,h),t===n-1&&this._addTileFeatures(r.range(0,l,a/n,c),r.data,-1,i,n,h),h.features.length?h:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const i=this.getChildren(e);if(t++,1!==i.length)break;e=i[0].properties.cluster_id}return t}_appendLeaves(e,t,i,r,n){const o=this.getChildren(t);for(const t of o){const o=t.properties;if(o&&o.cluster?n+o.point_count<=r?n+=o.point_count:n=this._appendLeaves(e,o.cluster_id,i,r,n):n1;let l,c,h;if(a)l=L(t,e,this.clusterProps),c=t[e],h=t[e+1];else{const i=this.points[t[e+C]];l=i.properties;const[r,n]=i.geometry.coordinates;c=R(r),h=B(n)}const u={type:1,geometry:[[Math.round(this.options.extent*(c*n-i)),Math.round(this.options.extent*(h*n-r))]],tags:l};let d;d=a||this.options.generateId?t[e+C]:this.points[t[e+C]].id,void 0!==d&&(u.id=d),o.features.push(u)}}_limitZoom(e){return Math.max(this.options.minZoom,Math.min(Math.floor(+e),this.options.maxZoom+1))}_cluster(e,t){const{radius:i,extent:r,reduce:n,minPoints:o}=this.options,s=i/(r*Math.pow(2,t)),a=e.data,l=[],c=this.stride;for(let i=0;it&&(p+=a[i+z])}if(p>d&&p>=o){let e,o=r*d,s=h*d,f=-1;const m=((i/c|0)<<5)+(t+1)+this.points.length;for(const r of u){const l=r*c;if(a[l+2]<=t)continue;a[l+2]=t;const h=a[l+z];o+=a[l]*h,s+=a[l+1]*h,a[l+4]=m,n&&(e||(e=this._map(a,i,!0),f=this.clusterProps.length,this.clusterProps.push(e)),n(e,this._map(a,l)))}a[i+4]=m,l.push(o/p,s/p,1/0,m,-1,p),n&&l.push(f)}else{for(let e=0;e1)for(const e of u){const i=e*c;if(!(a[i+2]<=t)){a[i+2]=t;for(let e=0;e>5}_getOriginZoom(e){return(e-this.points.length)%32}_map(e,t,i){if(e[t+z]>1){const r=this.clusterProps[e[t+P]];return i?Object.assign({},r):r}const r=this.points[e[t+C]].properties,n=this.options.map(r);return i&&n===r?Object.assign({},n):n}}function D(e,t,i){return{type:"Feature",id:e[t+C],properties:L(e,t,i),geometry:{type:"Point",coordinates:[(r=e[t],360*(r-.5)),O(e[t+1])]}};var r}function L(e,t,i){const r=e[t+z],n=r>=1e4?`${Math.round(r/1e3)}k`:r>=1e3?Math.round(r/100)/10+"k":r,o=e[t+P],s=-1===o?{}:Object.assign({},i[o]);return Object.assign(s,{cluster:!0,cluster_id:e[t+C],point_count:r,point_count_abbreviated:n})}function R(e){return e/360+.5}function B(e){const t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function O(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function F(e,t,i,r){for(var n,o=r,s=i-t>>1,a=i-t,l=e[t],c=e[t+1],h=e[i],u=e[i+1],d=t+3;do)n=d,o=p;else if(p===o){var f=Math.abs(d-s);fr&&(n-t>3&&F(e,t,n,r),e[n+2]=o,i-n>3&&F(e,n,i,r))}function U(e,t,i,r,n,o){var s=n-i,a=o-r;if(0!==s||0!==a){var l=((e-i)*s+(t-r)*a)/(s*s+a*a);l>1?(i=n,r=o):l>0&&(i+=s*l,r+=a*l)}return(s=e-i)*s+(a=t-r)*a}function V(e,t,i,r){var n={id:void 0===e?null:e,type:t,geometry:i,tags:r,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,i=e.type;if("Point"===i||"MultiPoint"===i||"LineString"===i)N(e,t);else if("Polygon"===i||"MultiLineString"===i)for(var r=0;r0&&(s+=r?(n*c-l*o)/2:Math.sqrt(Math.pow(l-n,2)+Math.pow(c-o,2))),n=l,o=c}var h=t.length-3;t[2]=1,F(t,0,h,i),t[h+2]=1,t.size=Math.abs(s),t.start=0,t.end=t.size}function Z(e,t,i,r){for(var n=0;n1?1:i}function X(e,t,i,r,n,o,s,a){if(r/=t,o>=(i/=t)&&s=r)return null;for(var l=[],c=0;c=i&&f=r)){var m=[];if("Point"===d||"MultiPoint"===d)H(u,m,i,r,n);else if("LineString"===d)K(u,m,i,r,n,!1,a.lineMetrics);else if("MultiLineString"===d)J(u,m,i,r,n,!1);else if("Polygon"===d)J(u,m,i,r,n,!0);else if("MultiPolygon"===d)for(var _=0;_=i&&s<=r&&(t.push(e[o]),t.push(e[o+1]),t.push(e[o+2]))}}function K(e,t,i,r,n,o,s){for(var a,l,c=Y(e),h=0===n?ee:te,u=e.start,d=0;di&&(l=h(c,p,f,_,g,i),s&&(c.start=u+a*l)):y>r?x=i&&(l=h(c,p,f,_,g,i),v=!0),x>r&&y<=r&&(l=h(c,p,f,_,g,r),v=!0),!o&&v&&(s&&(c.end=u+a*l),t.push(c),c=Y(e)),s&&(u+=a)}var b=e.length-3;p=e[b],f=e[b+1],m=e[b+2],(y=0===n?p:f)>=i&&y<=r&&Q(c,p,f,m),b=c.length-3,o&&b>=3&&(c[b]!==c[0]||c[b+1]!==c[1])&&Q(c,c[0],c[1],c[2]),c.length&&t.push(c)}function Y(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function J(e,t,i,r,n,o){for(var s=0;ss.maxX&&(s.maxX=h),u>s.maxY&&(s.maxY=u)}return s}function ae(e,t,i,r){var n=t.geometry,o=t.type,s=[];if("Point"===o||"MultiPoint"===o)for(var a=0;a0&&t.size<(n?s:r))i.numPoints+=t.length/3;else{for(var a=[],l=0;ls)&&(i.numSimplified++,a.push(t[l]),a.push(t[l+1])),i.numPoints++;n&&function(e,t){for(var i=0,r=0,n=e.length,o=n-2;r0===t)for(r=0,n=e.length;r24)throw new Error("maxZoom should be in the 0-24 range");if(t.promoteId&&t.generateId)throw new Error("promoteId and generateId cannot be used together.");var r=function(e,t){var i=[];if("FeatureCollection"===e.type)for(var r=0;r1&&console.time("creation"),d=this.tiles[u]=se(e,t,i,r,l),this.tileCoords.push({z:t,x:i,y:r}),c)){c>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",t,i,r,d.numFeatures,d.numPoints,d.numSimplified),console.timeEnd("creation"));var p="z"+t;this.stats[p]=(this.stats[p]||0)+1,this.total++}if(d.source=e,n){if(t===l.maxZoom||t===n)continue;var f=1<1&&console.time("clipping");var m,_,g,y,x,v,b=.5*l.buffer/l.extent,w=.5-b,T=.5+b,E=1+b;m=_=g=y=null,x=X(e,h,i-b,i+T,0,d.minX,d.maxX,l),v=X(e,h,i+w,i+E,0,d.minX,d.maxX,l),e=null,x&&(m=X(x,h,r-b,r+T,1,d.minY,d.maxY,l),_=X(x,h,r+w,r+E,1,d.minY,d.maxY,l),x=null),v&&(g=X(v,h,r-b,r+T,1,d.minY,d.maxY,l),y=X(v,h,r+w,r+E,1,d.minY,d.maxY,l),v=null),c>1&&console.timeEnd("clipping"),a.push(m||[],t+1,2*i,2*r),a.push(_||[],t+1,2*i,2*r+1),a.push(g||[],t+1,2*i+1,2*r),a.push(y||[],t+1,2*i+1,2*r+1)}}},ce.prototype.getTile=function(e,t,i){var r=this.options,n=r.extent,o=r.debug;if(e<0||e>24)return null;var s=1<1&&console.log("drilling down to z%d-%d-%d",e,t,i);for(var l,c=e,h=t,u=i;!l&&c>0;)c--,h=Math.floor(h/2),u=Math.floor(u/2),l=this.tiles[he(c,h,u)];return l&&l.source?(o>1&&console.log("found parent tile z%d-%d-%d",c,h,u),o>1&&console.time("drilling down"),this.splitTile(l.source,c,h,u,e,t,i),o>1&&console.timeEnd("drilling down"),this.tiles[a]?ne(this.tiles[a],n):null):null};class de extends e.VectorTileWorkerSource{constructor(e,t,i,r,n){super(e,t,i,r,ue),n&&(this.loadGeoJSON=n)}loadData(t,i){const r=t&&t.request,n=r&&r.collectResourceTiming;this.loadGeoJSON(t,((o,s)=>{if(o||!s)return i(o);if("object"!=typeof s)return i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));{a(s,!0);try{if(t.filter){const i=e.createExpression(t.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if("error"===i.result)throw new Error(i.value.map((e=>`${e.key}: ${e.message}`)).join(", "));const r=s.features.filter((e=>i.value.evaluate({zoom:0},e)));s={type:"FeatureCollection",features:r}}this._geoJSONIndex=t.cluster?new k(function({superclusterOptions:t,clusterProperties:i}){if(!i||!t)return t;const r={},n={},o={accumulated:null,zoom:0},s={properties:null},a=Object.keys(i);for(const t of a){const[o,s]=i[t],a=e.createExpression(s),l=e.createExpression("string"==typeof o?[o,["accumulated"],["get",t]]:o);r[t]=a.value,n[t]=l.value}return t.map=e=>{s.properties=e;const t={};for(const e of a)t[e]=r[e].evaluate(o,s);return t},t.reduce=(e,t)=>{s.properties=t;for(const t of a)o.accumulated=e[t],e[t]=n[t].evaluate(o,s)},t}(t)).load(s.features):function(e,t){return new ce(e,t)}(s,t.geojsonVtOptions)}catch(o){return i(o)}this.loaded={};const l={};if(n){const i=e.getPerformanceMeasurement(r);i&&(l.resourceTiming={},l.resourceTiming[t.source]=JSON.parse(JSON.stringify(i)))}i(null,l)}}))}reloadTile(e,t){const i=this.loaded;return i&&i[e.uid]?super.reloadTile(e,t):this.loadTile(e,t)}loadGeoJSON(t,i){if(t.request)e.getJSON(t.request,i);else{if("string"!=typeof t.data)return i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));try{return i(null,JSON.parse(t.data))}catch(e){return i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`))}}}getClusterExpansionZoom(e,t){try{t(null,this._geoJSONIndex.getClusterExpansionZoom(e.clusterId))}catch(e){t(e)}}getClusterChildren(e,t){try{t(null,this._geoJSONIndex.getChildren(e.clusterId))}catch(e){t(e)}}getClusterLeaves(e,t){try{t(null,this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset))}catch(e){t(e)}}}class pe{constructor(t){this.self=t,this.actor=new e.Actor(t,this),this.layerIndexes={},this.availableImages={},this.isSpriteLoaded={},this.projections={},this.defaultProjection=e.getProjection({name:"mercator"}),this.workerSourceTypes={vector:e.VectorTileWorkerSource,geojson:de},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(e,t)=>{if(this.workerSourceTypes[e])throw new Error(`Worker source with name "${e}" already registered.`);this.workerSourceTypes[e]=t},this.self.registerRTLTextPlugin=t=>{if(e.plugin.isParsed())throw new Error("RTL text plugin already registered.");e.plugin.applyArabicShaping=t.applyArabicShaping,e.plugin.processBidirectionalText=t.processBidirectionalText,e.plugin.processStyledBidirectionalText=t.processStyledBidirectionalText}}clearCaches(e,t,i){delete this.layerIndexes[e],delete this.availableImages[e],delete this.workerSources[e],delete this.demWorkerSources[e],i()}checkIfReady(e,t,i){i()}setReferrer(e,t){this.referrer=t}spriteLoaded(t,i){this.isSpriteLoaded[t]=i;for(const r in this.workerSources[t]){const n=this.workerSources[t][r];for(const t in n)n[t]instanceof e.VectorTileWorkerSource&&(n[t].isSpriteLoaded=i,n[t].fire(new e.Event("isSpriteLoaded")))}}setImages(e,t,i){this.availableImages[e]=t;for(const i in this.workerSources[e]){const r=this.workerSources[e][i];for(const e in r)r[e].availableImages=t}i()}enableTerrain(e,t,i){this.terrain=t,i()}setProjection(t,i){this.projections[t]=e.getProjection(i)}setLayers(e,t,i){this.getLayerIndex(e).replace(t),i()}updateLayers(e,t,i){this.getLayerIndex(e).update(t.layers,t.removedIds),i()}loadTile(t,i,r){const n=this.enableTerrain?e.extend({enableTerrain:this.terrain},i):i;n.projection=this.projections[t]||this.defaultProjection,this.getWorkerSource(t,i.type,i.source).loadTile(n,r)}loadDEMTile(t,i,r){const n=this.enableTerrain?e.extend({buildQuadTree:this.terrain},i):i;this.getDEMWorkerSource(t,i.source).loadTile(n,r)}reloadTile(t,i,r){const n=this.enableTerrain?e.extend({enableTerrain:this.terrain},i):i;n.projection=this.projections[t]||this.defaultProjection,this.getWorkerSource(t,i.type,i.source).reloadTile(n,r)}abortTile(e,t,i){this.getWorkerSource(e,t.type,t.source).abortTile(t,i)}removeTile(e,t,i){this.getWorkerSource(e,t.type,t.source).removeTile(t,i)}removeSource(e,t,i){if(!this.workerSources[e]||!this.workerSources[e][t.type]||!this.workerSources[e][t.type][t.source])return;const r=this.workerSources[e][t.type][t.source];delete this.workerSources[e][t.type][t.source],void 0!==r.removeSource?r.removeSource(t,i):i()}loadWorkerSource(e,t,i){try{this.self.importScripts(t.url),i()}catch(e){i(e.toString())}}syncRTLPluginState(t,i,r){try{e.plugin.setState(i);const t=e.plugin.getPluginURL();if(e.plugin.isLoaded()&&!e.plugin.isParsed()&&null!=t){this.self.importScripts(t);const i=e.plugin.isParsed();r(i?void 0:new Error(`RTL Text Plugin failed to import scripts from ${t}`),i)}}catch(e){r(e.toString())}}getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}getLayerIndex(e){let t=this.layerIndexes[e];return t||(t=this.layerIndexes[e]=new r),t}getWorkerSource(e,t,i){if(this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),!this.workerSources[e][t][i]){const r={send:(t,i,r,n,o,s)=>{this.actor.send(t,i,r,e,o,s)},scheduler:this.actor.scheduler};this.workerSources[e][t][i]=new this.workerSourceTypes[t](r,this.getLayerIndex(e),this.getAvailableImages(e),this.isSpriteLoaded[e])}return this.workerSources[e][t][i]}getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new n),this.demWorkerSources[e][t]}enforceCacheSizeLimit(t,i){e.enforceCacheSizeLimit(i)}getWorkerPerformanceMetrics(e,t,i){i(void 0,void 0)}}return"undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof self&&self instanceof WorkerGlobalScope&&(self.worker=new pe(self)),pe})),r(0,(function(e){function t(e,i){if(Array.isArray(e)){if(!Array.isArray(i)||e.length!==i.length)return!1;for(let r=0;r{e.window.removeEventListener("click",d,!0)}),0)}function f(e,t){const i=e.getBoundingClientRect();return g(e,i,t)}function m(e,t){const i=e.getBoundingClientRect(),r=[];for(let n=0;n=0?0:t.button}function g(t,i,r){const n=t.offsetWidth===i.width?1:t.offsetWidth/i.width;return new e.Point((r.clientX-i.left)*n,(r.clientY-i.top)*n)}function y(e,t){var i=t[0],r=t[1],n=t[2],o=t[3],s=i*o-n*r;return s?(e[0]=o*(s=1/s),e[1]=-r*s,e[2]=-n*s,e[3]=i*s,e):null}function x(e){const{userImage:t}=e;return!!(t&&t.render&&t.render())&&(e.data.replace(new Uint8Array(t.data.buffer)),!0)}class v extends e.Evented{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new e.RGBAImage({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(e){if(this.loaded!==e&&(this.loaded=e,e)){for(const{ids:e,callback:t}of this.requestors)this._notify(e,t);this.requestors=[]}}hasImage(e){return!!this.getImage(e)}getImage(e){return this.images[e]}addImage(e,t){this._validate(e,t)&&(this.images[e]=t)}_validate(t,i){let r=!0;return this._validateStretch(i.stretchX,i.data&&i.data.width)||(this.fire(new e.ErrorEvent(new Error(`Image "${t}" has invalid "stretchX" value`))),r=!1),this._validateStretch(i.stretchY,i.data&&i.data.height)||(this.fire(new e.ErrorEvent(new Error(`Image "${t}" has invalid "stretchY" value`))),r=!1),this._validateContent(i.content,i)||(this.fire(new e.ErrorEvent(new Error(`Image "${t}" has invalid "content" value`))),r=!1),r}_validateStretch(e,t){if(!e)return!0;let i=0;for(const r of e){if(r[0]{this.ready=!0}))}broadcast(t,i,r){e.asyncAll(this.actors,((e,r)=>{e.send(t,i,r)}),r=r||function(){})}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(){this.actors.forEach((e=>{e.remove()})),this.actors=[],this.workerPool.release(this.id)}}function z(t,i,r){return i*(e.EXTENT/(t.tileSize*Math.pow(2,r-t.tileID.overscaledZ)))}C.Actor=e.Actor;class P{constructor(e,t,i,r){this.screenBounds=e,this.cameraPoint=t,this._screenRaycastCache={},this._cameraRaycastCache={},this.isAboveHorizon=i,this.screenGeometry=this.bufferedScreenGeometry(0),this.screenGeometryMercator=this._bufferedScreenMercator(0,r)}static createFromScreenPoints(t,i){let r,n;if(t instanceof e.Point||"number"==typeof t[0]){const o=e.Point.convert(t);r=[o],n=i.isPointAboveHorizon(o)}else{const o=e.Point.convert(t[0]),s=e.Point.convert(t[1]);r=[o,s],n=e.polygonizeBounds(o,s).every((e=>i.isPointAboveHorizon(e)))}return new P(r,i.getCameraPoint(),n,i)}isPointQuery(){return 1===this.screenBounds.length}bufferedScreenGeometry(t){return e.polygonizeBounds(this.screenBounds[0],1===this.screenBounds.length?this.screenBounds[0]:this.screenBounds[1],t)}bufferedCameraGeometry(t){const i=this.screenBounds[0],r=1===this.screenBounds.length?this.screenBounds[0].add(new e.Point(1,1)):this.screenBounds[1],n=e.polygonizeBounds(i,r,0,!1);return this.cameraPoint.y>r.y&&(this.cameraPoint.x>i.x&&this.cameraPoint.x=r.x?n[2]=this.cameraPoint:this.cameraPoint.x<=i.x&&(n[3]=this.cameraPoint)),e.bufferConvexPolygon(n,t)}bufferedCameraGeometryGlobe(t){const i=this.screenBounds[0],r=1===this.screenBounds.length?this.screenBounds[0].add(new e.Point(1,1)):this.screenBounds[1],n=e.polygonizeBounds(i,r,t),o=this.cameraPoint.clone();switch(3*((o.y>i.y)+(o.y>r.y))+((o.x>i.x)+(o.x>r.x))){case 0:n[0]=o,n[4]=o.clone();break;case 1:n.splice(1,0,o);break;case 2:n[1]=o;break;case 3:n.splice(4,0,o);break;case 5:n.splice(2,0,o);break;case 6:n[3]=o;break;case 7:n.splice(3,0,o);break;case 8:n[2]=o}return n}containsTile(t,i,r,n=0){const o=t.queryPadding/i._pixelsPerMercatorPixel+1,s=r?this._bufferedCameraMercator(o,i):this._bufferedScreenMercator(o,i);let a=t.tileID.wrap+(s.unwrapped?n:0);const l=s.polygon.map((i=>e.getTilePoint(t.tileTransform,i,a)));if(!e.polygonIntersectsBox(l,0,0,e.EXTENT,e.EXTENT))return;a=t.tileID.wrap+(this.screenGeometryMercator.unwrapped?n:0);const c=this.screenGeometryMercator.polygon.map((i=>e.getTileVec3(t.tileTransform,i,a))),h=c.map((t=>new e.Point(t[0],t[1]))),u=i.getFreeCameraOptions().position||new e.MercatorCoordinate(0,0,0),d=e.getTileVec3(t.tileTransform,u,a),p=c.map((t=>{const i=e.sub(t,t,d);return e.normalize(i,i),new e.Ray(d,i)})),f=z(t,1,i.zoom)*i._pixelsPerMercatorPixel;return{queryGeometry:this,tilespaceGeometry:h,tilespaceRays:p,bufferedTilespaceGeometry:l,bufferedTilespaceBounds:(m=e.getBounds(l),m.min.x=e.clamp(m.min.x,0,e.EXTENT),m.min.y=e.clamp(m.min.y,0,e.EXTENT),m.max.x=e.clamp(m.max.x,0,e.EXTENT),m.max.y=e.clamp(m.max.y,0,e.EXTENT),m),tile:t,tileID:t.tileID,pixelToTileUnitsFactor:f};var m}_bufferedScreenMercator(e,t){const i=L(e);if(this._screenRaycastCache[i])return this._screenRaycastCache[i];{let r;return r="globe"===t.projection.name?this._projectAndResample(this.bufferedScreenGeometry(e),t):{polygon:this.bufferedScreenGeometry(e).map((e=>t.pointCoordinate3D(e))),unwrapped:!0},this._screenRaycastCache[i]=r,r}}_bufferedCameraMercator(e,t){const i=L(e);if(this._cameraRaycastCache[i])return this._cameraRaycastCache[i];{let r;return r="globe"===t.projection.name?this._projectAndResample(this.bufferedCameraGeometryGlobe(e),t):{polygon:this.bufferedCameraGeometry(e).map((e=>t.pointCoordinate3D(e))),unwrapped:!0},this._cameraRaycastCache[i]=r,r}}_projectAndResample(t,i){const r=function(t,i){const r=e.multiply([],i.pixelMatrix,i.globeMatrix),n=[0,-e.GLOBE_RADIUS,0,1],o=[0,e.GLOBE_RADIUS,0,1],s=[0,0,0,1];e.transformMat4$1(n,n,r),e.transformMat4$1(o,o,r),e.transformMat4$1(s,s,r);const a=new e.Point(n[0]/n[3],n[1]/n[3]),l=new e.Point(o[0]/o[3],o[1]/o[3]),c=e.polygonContainsPoint(t,a)&&n[3]1?k(t.slice(0,d),i):[],m=dnew e.Point(D(t.x),t.y))),m=m.map((t=>new e.Point(D(t.x),t.y)));const _=[...f];0===_.length&&_.push(m[m.length-1]);const g=e.number(_[_.length-1].y,(0===m.length?f[0]:m[0]).y,p);let y;return y=c?[new e.Point(0,g),new e.Point(0,0),new e.Point(1,0),new e.Point(1,g)]:[new e.Point(1,g),new e.Point(1,1),new e.Point(0,1),new e.Point(0,g)],_.push(...y),0===m.length?_.push(f[0]):_.push(...m),{polygon:_.map((t=>new e.MercatorCoordinate(t.x,t.y))),unwrapped:!1}}(t,i);if(r)return r;const n=function(t,i){let r=!1,n=-1/0,o=0;for(let e=0;en&&(n=t[e].x,o=e);for(let e=0;e.5&&(n.x{e.x-=1})),{polygon:t,unwrapped:r}}(k(t,i).map((t=>new e.Point(D(t.x),t.y))),i);return{polygon:n.polygon.map((t=>new e.MercatorCoordinate(t.x,t.y))),unwrapped:n.unwrapped}}}function k(t,i){return e.resample(t,(e=>{const t=i.pointCoordinate3D(e);e.x=t.x,e.y=t.y}),1/256)}function D(e){return e<0?1+e%1:e%1}function L(e){return 100*e|0}function R(t,i,r,n,o){const s=function(r,n){if(r)return o(r);if(n){t.url&&n.tiles&&t.tiles&&delete t.tiles;const r=e.pick(e.extend(n,t),["tiles","minzoom","maxzoom","attribution","mapbox_logo","bounds","scheme","tileSize","encoding"]);n.vector_layers&&(r.vectorLayers=n.vector_layers,r.vectorLayerIds=r.vectorLayers.map((e=>e.id))),r.tiles=i.canonicalizeTileset(r,t.url),o(null,r)}};return t.url?e.getJSON(i.transformRequest(i.normalizeSourceURL(t.url,null,r,n),e.ResourceType.Source),s):e.exported.frame((()=>s(null,t)))}class B{constructor(t,i,r){this.bounds=e.LngLatBounds.convert(this.validateBounds(t)),this.minzoom=i||0,this.maxzoom=r||24}validateBounds(e){return Array.isArray(e)&&4===e.length?[Math.max(-180,e[0]),Math.max(-90,e[1]),Math.min(180,e[2]),Math.min(90,e[3])]:[-180,-90,180,90]}contains(t){const i=Math.pow(2,t.z),r=Math.floor(e.mercatorXfromLng(this.bounds.getWest())*i),n=Math.floor(e.mercatorYfromLat(this.bounds.getNorth())*i),o=Math.ceil(e.mercatorXfromLng(this.bounds.getEast())*i),s=Math.ceil(e.mercatorYfromLat(this.bounds.getSouth())*i);return t.x>=r&&t.x=n&&t.y{this._tileJSONRequest=null,this._loaded=!0,n?(i&&console.warn(`Ensure that your requested language string is a valid BCP-47 code or list of codes. Found: ${i}`),r&&2!==r.length&&console.warn(`Requested worldview strings must be a valid ISO alpha-2 code. Found: ${r}`),this.fire(new e.ErrorEvent(n))):o&&(e.extend(this,o),o.bounds&&(this.tileBounds=new B(o.bounds,this.minzoom,this.maxzoom)),e.postTurnstileEvent(o.tiles,this.map._requestManager._customAccessToken),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"content"}))),t&&t(n)}))}loaded(){return this._loaded}hasTile(e){return!this.tileBounds||this.tileBounds.contains(e.canonical)}onAdd(e){this.map=e,this.load()}reload(){this.cancelTileJSONRequest(),this.load((()=>this.map.style._clearSource(this.id)))}setTiles(e){return this._options.tiles=e,this.reload(),this}setUrl(e){return this.url=e,this._options.url=e,this.reload(),this}onRemove(){this.cancelTileJSONRequest()}serialize(){return e.extend({},this._options)}loadTile(t,i){const r=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme)),n={request:this.map._requestManager.transformRequest(r,e.ResourceType.Tile),data:void 0,uid:t.uid,tileID:t.tileID,tileZoom:t.tileZoom,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:e.exported.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,isSymbolTile:t.isSymbolTile};if(n.request.collectResourceTiming=this._collectResourceTiming,t.actor&&"expired"!==t.state)"loading"===t.state?t.reloadCallback=i:t.request=t.actor.send("reloadTile",n,o.bind(this));else if(t.actor=this._tileWorkers[r]=this._tileWorkers[r]||this.dispatcher.getActor(),this.dispatcher.ready)t.request=t.actor.send("loadTile",n,o.bind(this),void 0,!0);else{const i=e.loadVectorTile.call({deduped:this._deduped},n,((e,i)=>{e||!i?o.call(this,e):(n.data={cacheControl:i.cacheControl,expires:i.expires,rawData:i.rawData.slice(0)},t.actor&&t.actor.send("loadTile",n,o.bind(this),void 0,!0))}),!0);t.request={cancel:i}}function o(r,n){return delete t.request,t.aborted?i(null):r&&404!==r.status?i(r):(n&&n.resourceTiming&&(t.resourceTiming=n.resourceTiming),this.map._refreshExpiredTiles&&n&&t.setExpiryData(n),t.loadVectorData(n,this.map.painter),e.cacheEntryPossiblyAdded(this.dispatcher),i(null),void(t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)))}}abortTile(e){e.request&&(e.request.cancel(),delete e.request),e.actor&&e.actor.send("abortTile",{uid:e.uid,type:this.type,source:this.id})}unloadTile(e){e.unloadVectorData(),e.actor&&e.actor.send("removeTile",{uid:e.uid,type:this.type,source:this.id})}hasTransition(){return!1}afterUpdate(){this._tileWorkers={}}cancelTileJSONRequest(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}}class Me extends e.Evented{constructor(t,i,r,n){super(),this.id=t,this.dispatcher=r,this.setEventedParent(n),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=e.extend({type:"raster"},i),e.extend(this,e.pick(i,["url","scheme","tileSize"]))}load(t){this._loaded=!1,this.fire(new e.Event("dataloading",{dataType:"source"})),this._tileJSONRequest=R(this._options,this.map._requestManager,null,null,((i,r)=>{this._tileJSONRequest=null,this._loaded=!0,i?this.fire(new e.ErrorEvent(i)):r&&(e.extend(this,r),r.bounds&&(this.tileBounds=new B(r.bounds,this.minzoom,this.maxzoom)),e.postTurnstileEvent(r.tiles),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"content"}))),t&&t(i)}))}loaded(){return this._loaded}onAdd(e){this.map=e,this.load()}reload(){this.cancelTileJSONRequest(),this.load((()=>this.map.style._clearSource(this.id)))}setTiles(e){return this._options.tiles=e,this.reload(),this}setUrl(e){return this.url=e,this._options.url=e,this.reload(),this}onRemove(){this.cancelTileJSONRequest()}serialize(){return e.extend({},this._options)}hasTile(e){return!this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(t,i){const r=e.exported.devicePixelRatio>=2,n=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme),r,this.tileSize);t.request=e.getImage(this.map._requestManager.transformRequest(n,e.ResourceType.Tile),((r,n,o,s)=>(delete t.request,t.aborted?(t.state="unloaded",i(null)):r?(t.state="errored",i(r)):n?(this.map._refreshExpiredTiles&&t.setExpiryData({cacheControl:o,expires:s}),t.setTexture(n,this.map.painter),t.state="loaded",e.cacheEntryPossiblyAdded(this.dispatcher),void i(null)):i(null))))}static loadTileData(e,t,i){e.setTexture(t,i)}static unloadTileData(e,t){e.texture&&t.saveTileTexture(e.texture)}abortTile(e,t){e.request&&(e.request.cancel(),delete e.request),t()}unloadTile(e,t){e.texture&&this.map.painter.saveTileTexture(e.texture),t()}hasTransition(){return!1}cancelTileJSONRequest(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}}function Ae(t,i,r,n,o,s,a,l){const c=[t,r,o,i,n,s,1,1,1],h=[a,l,1],u=e.adjoint([],c),[d,p,f]=e.transformMat3(h,h,e.transpose(u,u));return e.multiply$1(c,[d,0,0,0,p,0,0,0,f],c)}class Ie extends e.Evented{constructor(e,t,i,r){super(),this.id=e,this.dispatcher=i,this.coordinates=t.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(r),this.options=t,this._dirty=!1}load(t,i){this._loaded=i||!1,this.fire(new e.Event("dataloading",{dataType:"source"})),this.url=this.options.url,this._imageRequest=e.getImage(this.map._requestManager.transformRequest(this.url,e.ResourceType.Image),((i,r)=>{if(this._imageRequest=null,this._loaded=!0,i)this.fire(new e.ErrorEvent(i));else if(r){const{HTMLImageElement:i}=e.window;this.image=r instanceof i?e.exported.getImageData(r):r,this._dirty=!0,this.width=this.image.width,this.height=this.image.height,t&&(this.coordinates=t),this._finishLoading()}}))}loaded(){return this._loaded}updateImage(e){return this.image&&e.url?(this._imageRequest&&e.url!==this.options.url&&(this._imageRequest.cancel(),this._imageRequest=null),this.options.url=e.url,this.load(e.coordinates,this._loaded),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(e){this.map=e,this.load()}onRemove(){this._imageRequest&&(this._imageRequest.cancel(),this._imageRequest=null),this.texture&&this.texture.destroy()}setCoordinates(t){this.coordinates=t,this._boundsArray=void 0;const i=t.map(e.MercatorCoordinate.fromLngLat);return this.tileID=function(t){let i=1/0,r=1/0,n=-1/0,o=-1/0;for(const e of t)i=Math.min(i,e.x),r=Math.min(r,e.y),n=Math.max(n,e.x),o=Math.max(o,e.y);const s=Math.max(n-i,o-r),a=Math.max(0,Math.floor(-Math.log(s)/Math.LN2)),l=Math.pow(2,a);return new e.CanonicalTileID(a,Math.floor((i+n)/2*l),Math.floor((r+o)/2*l))}(i),this.minzoom=this.maxzoom=this.tileID.z,this.fire(new e.Event("data",{dataType:"source",sourceDataType:"content"})),this}_clear(){this._boundsArray=void 0}_prepareData(t){for(const e in this.tiles){const t=this.tiles[e];"loaded"!==t.state&&(t.state="loaded",t.texture=this.texture)}if(this._boundsArray)return;const i=e.tileTransform(this.tileID,this.map.transform.projection),[r,n,o,s]=this.coordinates.map((t=>{const r=i.projection.project(t[0],t[1]);return e.getTilePoint(i,r)._round()}));this.perspectiveTransform=function(t,i,r,n,o,s,a,l,c,h){const u=Ae(0,0,t,0,0,i,t,i),d=Ae(r,n,o,s,a,l,c,h);return e.multiply$1(d,e.adjoint(u,u),d),[d[6]/d[8]*t/e.EXTENT,d[7]/d[8]*i/e.EXTENT]}(this.width,this.height,r.x,r.y,n.x,n.y,s.x,s.y,o.x,o.y);const a=this._boundsArray=new e.StructArrayLayout4i8;a.emplaceBack(r.x,r.y,0,0),a.emplaceBack(n.x,n.y,e.EXTENT,0),a.emplaceBack(s.x,s.y,0,e.EXTENT),a.emplaceBack(o.x,o.y,e.EXTENT,e.EXTENT),this.boundsBuffer&&this.boundsBuffer.destroy(),this.boundsBuffer=t.createVertexBuffer(a,e.boundsAttributes.members),this.boundsSegments=e.SegmentVector.simpleSegment(0,0,4,2)}prepare(){if(0===Object.keys(this.tiles).length||!this.image)return;const t=this.map.painter.context,i=t.gl;this._dirty&&(this.texture?this.texture.update(this.image):(this.texture=new e.Texture(t,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE)),this._dirty=!1),this._prepareData(t)}loadTile(e,t){this.tileID&&this.tileID.equals(e.tileID.canonical)?(this.tiles[String(e.tileID.wrap)]=e,e.buckets={},t(null)):(e.state="errored",t(null))}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}const Ce={vector:Se,raster:Me,"raster-dem":class extends Me{constructor(t,i,r,n){super(t,i,r,n),this.type="raster-dem",this.maxzoom=22,this._options=e.extend({type:"raster-dem"},i),this.encoding=i.encoding||"mapbox"}loadTile(t,i){const r=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme),!1,this.tileSize);function n(e,r){e&&(t.state="errored",i(e)),r&&(t.dem=r,t.dem.onDeserialize(),t.needsHillshadePrepare=!0,t.needsDEMTextureUpload=!0,t.state="loaded",i(null))}t.request=e.getImage(this.map._requestManager.transformRequest(r,e.ResourceType.Tile),function(r,o,s,a){if(delete t.request,t.aborted)t.state="unloaded",i(null);else if(r)t.state="errored",i(r);else if(o){this.map._refreshExpiredTiles&&t.setExpiryData({cacheControl:s,expires:a});const i=e.window.ImageBitmap&&o instanceof e.window.ImageBitmap&&(null==se&&(se=e.window.OffscreenCanvas&&new e.window.OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof e.window.createImageBitmap),se),r=1-(o.width-e.prevPowerOfTwo(o.width))/2;r<1||t.neighboringTiles||(t.neighboringTiles=this._getNeighboringTiles(t.tileID));const l=i?o:e.exported.getImageData(o,r),c={uid:t.uid,coord:t.tileID,source:this.id,rawImageData:l,encoding:this.encoding,padding:r};t.actor&&"expired"!==t.state||(t.actor=this.dispatcher.getActor(),t.actor.send("loadDEMTile",c,n.bind(this),void 0,!0))}}.bind(this))}_getNeighboringTiles(t){const i=t.canonical,r=Math.pow(2,i.z),n=(i.x-1+r)%r,o=0===i.x?t.wrap-1:t.wrap,s=(i.x+1+r)%r,a=i.x+1===r?t.wrap+1:t.wrap,l={};return l[new e.OverscaledTileID(t.overscaledZ,o,i.z,n,i.y).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,a,i.z,s,i.y).key]={backfilled:!1},i.y>0&&(l[new e.OverscaledTileID(t.overscaledZ,o,i.z,n,i.y-1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,t.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,a,i.z,s,i.y-1).key]={backfilled:!1}),i.y+1{if(this._loaded=!0,this._pendingLoad=null,t)this.fire(new e.ErrorEvent(t));else{const t={dataType:"source",sourceDataType:this._metadataFired?"content":"metadata"};this._collectResourceTiming&&i&&i.resourceTiming&&i.resourceTiming[this.id]&&(t.resourceTiming=i.resourceTiming[this.id]),this.fire(new e.Event("data",t)),this._metadataFired=!0}this._coalesce&&(this._updateWorkerData(),this._coalesce=!1)}))}loaded(){return this._loaded}loadTile(t,i){const r=t.actor?"reloadTile":"loadTile";t.actor=this.actor,t.request=this.actor.send(r,{type:this.type,uid:t.uid,tileID:t.tileID,tileZoom:t.tileZoom,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:e.exported.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId},((e,n)=>(delete t.request,t.unloadVectorData(),t.aborted?i(null):e?i(e):(t.loadVectorData(n,this.map.painter,"reloadTile"===r),i(null)))),void 0,"loadTile"===r)}abortTile(e){e.request&&(e.request.cancel(),delete e.request),e.aborted=!0}unloadTile(e){e.unloadVectorData(),this.actor.send("removeTile",{uid:e.uid,type:this.type,source:this.id})}onRemove(){this._pendingLoad&&this._pendingLoad.cancel()}serialize(){return e.extend({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}},video:class extends Ie{constructor(e,t,i,r){super(e,t,i,r),this.roundZoom=!0,this.type="video",this.options=t}load(){this._loaded=!1;const t=this.options;this.urls=[];for(const i of t.urls)this.urls.push(this.map._requestManager.transformRequest(i,e.ResourceType.Source).url);e.getVideo(this.urls,((t,i)=>{this._loaded=!0,t?this.fire(new e.ErrorEvent(t)):i&&(this.video=i,this.video.loop=!0,this.video.setAttribute("playsinline",""),this.video.addEventListener("playing",(()=>{this.map.triggerRepaint()})),this.map&&this.video.play(),this._finishLoading())}))}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(t){if(this.video){const i=this.video.seekable;ti.end(0)?this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=t}}getVideo(){return this.video}onAdd(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const t=this.map.painter.context,i=t.gl;this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new e.Texture(t,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),this.width=this.video.videoWidth,this.height=this.video.videoHeight),this._prepareData(t)}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}},image:Ie,canvas:class extends Ie{constructor(t,i,r,n){super(t,i,r,n),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some((e=>!Array.isArray(e)||2!==e.length||e.some((e=>"number"!=typeof e))))||this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'missing required property "coordinates"'))),i.animate&&"boolean"!=typeof i.animate&&this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'optional "animate" property must be a boolean value'))),i.canvas?"string"==typeof i.canvas||i.canvas instanceof e.window.HTMLCanvasElement||this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'missing required property "canvas"'))),this.options=i,this.animate=void 0===i.animate||i.animate}load(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof e.window.HTMLCanvasElement?this.options.canvas:e.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new e.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())}getCanvas(){return this.canvas}onAdd(e){this.map=e,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context;this.texture?(t||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new e.Texture(i,this.canvas,i.gl.RGBA,{premultiply:!0}),this._prepareData(i)}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const e of[this.canvas.width,this.canvas.height])if(isNaN(e)||e<=0)return!0;return!1}},custom:class extends e.Evented{constructor(t,i,r,n){super(),this.id=t,this.type="custom",this._dataType="raster",this._dispatcher=r,this._implementation=i,this.setEventedParent(n),this.scheme="xyz",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this._loaded=!1,this.roundZoom=!0,this._implementation||this.fire(new e.ErrorEvent(new Error(`Missing implementation for ${this.id} custom source`))),this._implementation.loadTile||this.fire(new e.ErrorEvent(new Error(`Missing loadTile implementation for ${this.id} custom source`))),this._implementation.bounds&&(this.tileBounds=new B(this._implementation.bounds,this.minzoom,this.maxzoom)),i.update=this._update.bind(this),i.clearTiles=this._clearTiles.bind(this),i.coveringTiles=this._coveringTiles.bind(this),e.extend(this,e.pick(i,["dataType","scheme","minzoom","maxzoom","tileSize","attribution","minTileCacheSize","maxTileCacheSize"]))}serialize(){return e.pick(this,["type","scheme","minzoom","maxzoom","tileSize","attribution"])}load(){this._loaded=!0,this.fire(new e.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"content"}))}loaded(){return this._loaded}onAdd(t){this._map=t,this._loaded=!1,this.fire(new e.Event("dataloading",{dataType:"source"})),this._implementation.onAdd&&this._implementation.onAdd(t),this.load()}onRemove(e){this._implementation.onRemove&&this._implementation.onRemove(e)}hasTile(e){if(this._implementation.hasTile){const{x:t,y:i,z:r}=e.canonical;return this._implementation.hasTile({x:t,y:i,z:r})}return!this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(t,i){const{x:r,y:n,z:o}=t.tileID.canonical,s=new e.window.AbortController;t.request=Promise.resolve(this._implementation.loadTile({x:r,y:n,z:o},{signal:s.signal})).then(function(r){return delete t.request,t.aborted?(t.state="unloaded",i(null)):void 0===r?(t.state="errored",i(null)):null===r?(this.loadTileData(t,{width:this.tileSize,height:this.tileSize,data:null}),t.state="loaded",i(null)):function(t){return t instanceof e.window.ImageData||t instanceof e.window.HTMLCanvasElement||t instanceof e.window.ImageBitmap||t instanceof e.window.HTMLImageElement}(r)?(this.loadTileData(t,r),t.state="loaded",void i(null)):(t.state="errored",i(new Error(`Can't infer data type for ${this.id}, only raster data supported at the moment`)))}.bind(this)).catch((e=>{20!==e.code&&(t.state="errored",i(e))})),t.request.cancel=()=>s.abort()}loadTileData(e,t){Me.loadTileData(e,t,this._map.painter)}unloadTileData(e){Me.unloadTileData(e,this._map.painter)}unloadTile(e,t){if(this.unloadTileData(e),this._implementation.unloadTile){const{x:t,y:i,z:r}=e.tileID.canonical;this._implementation.unloadTile({x:t,y:i,z:r})}t()}abortTile(e,t){e.request&&e.request.cancel&&(e.request.cancel(),delete e.request),t()}hasTransition(){return!1}_coveringTiles(){return this._map.transform.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,roundZoom:this.roundZoom}).map((e=>({x:e.canonical.x,y:e.canonical.y,z:e.canonical.z})))}_clearTiles(){this._map.style._clearSource(this.id)}_update(){this.fire(new e.Event("data",{dataType:"source",sourceDataType:"content"}))}}},ze=function(t,i,r,n){const o=new Ce[i.type](t,i,r,n);if(o.id!==t)throw new Error(`Expected Source id to be ${t} instead of ${o.id}`);return e.bindAll(["load","abort","unload","serialize","prepare"],o),o};function Pe(t,i){const r=e.identity([]);return e.scale(r,r,[.5*t.width,.5*-t.height,1]),e.translate(r,r,[1,-1,0]),e.multiply(r,r,t.calculateProjMatrix(i.toUnwrapped())),Float32Array.from(r)}function ke(e,t,i,r,n,o,s,a=!1){const l=e.tilesIn(r,s,a);l.sort(Le);const c=[];for(const r of l)c.push({wrappedTileID:r.tile.tileID.wrapped().key,queryResults:r.tile.queryRenderedFeatures(t,i,e._state,r,n,o,Pe(e.transform,r.tile.tileID),a)});const h=function(e){const t={},i={};for(const r of e){const e=r.queryResults,n=r.wrappedTileID,o=i[n]=i[n]||{};for(const i in e){const r=e[i],n=o[i]=o[i]||{},s=t[i]=t[i]||[];for(const e of r)n[e.featureIndex]||(n[e.featureIndex]=!0,s.push(e))}}return t}(c);for(const t in h)h[t].forEach((t=>{const i=t.feature,r=i.layer;r&&"background"!==r.type&&"sky"!==r.type&&(i.source=r.source,r["source-layer"]&&(i.sourceLayer=r["source-layer"]),i.state=void 0!==i.id?e.getFeatureState(r["source-layer"],i.id):{})}));return h}function De(e,t){const i=e.getRenderableIds().map((t=>e.getTileByID(t))),r=[],n={};for(let e=0;e{e.terminate()})),this.workers=null)}isPreloaded(){return!!this.active[Be]}numActive(){return Object.keys(this.active).length}}let Fe;function Ue(){return Fe||(Fe=new Oe),Fe}function Ve(t,i){const r={};for(const e in t)"ref"!==e&&(r[e]=t[e]);return e.refProperties.forEach((e=>{e in i&&(r[e]=i[e])})),r}function Ne(e){e=e.slice();const t=Object.create(null);for(let i=0;i0?(n-s)/a:0;return this.points[o].mult(1-l).add(this.points[i].mult(l))}}class Ye{constructor(e,t,i){const r=this.boxCells=[],n=this.circleCells=[];this.xCellCount=Math.ceil(e/i),this.yCellCount=Math.ceil(t/i);for(let e=0;ethis.width||r<0||t>this.height)return!n&&[];const s=[];if(e<=0&&t<=0&&this.width<=i&&this.height<=r){if(n)return!0;for(let e=0;e0:s}_queryCircle(e,t,i,r,n){const o=e-i,s=e+i,a=t-i,l=t+i;if(s<0||o>this.width||l<0||a>this.height)return!r&&[];const c=[];return this._forEachCell(o,a,s,l,this._queryCellCircle,c,{hitTest:r,circle:{x:e,y:t,radius:i},seenUids:{box:{},circle:{}}},n),r?c.length>0:c}query(e,t,i,r,n){return this._query(e,t,i,r,!1,n)}hitTest(e,t,i,r,n){return this._query(e,t,i,r,!0,n)}hitTestCircle(e,t,i,r){return this._queryCircle(e,t,i,!0,r)}_queryCell(e,t,i,r,n,o,s,a){const l=s.seenUids,c=this.boxCells[n];if(null!==c){const n=this.bboxes;for(const h of c)if(!l.box[h]){l.box[h]=!0;const c=4*h;if(e<=n[c+2]&&t<=n[c+3]&&i>=n[c+0]&&r>=n[c+1]&&(!a||a(this.boxKeys[h]))){if(s.hitTest)return o.push(!0),!0;o.push({key:this.boxKeys[h],x1:n[c],y1:n[c+1],x2:n[c+2],y2:n[c+3]})}}}const h=this.circleCells[n];if(null!==h){const n=this.circles;for(const c of h)if(!l.circle[c]){l.circle[c]=!0;const h=3*c;if(this._circleAndRectCollide(n[h],n[h+1],n[h+2],e,t,i,r)&&(!a||a(this.circleKeys[c]))){if(s.hitTest)return o.push(!0),!0;{const e=n[h],t=n[h+1],i=n[h+2];o.push({key:this.circleKeys[c],x1:e-i,y1:t-i,x2:e+i,y2:t+i})}}}}}_queryCellCircle(e,t,i,r,n,o,s,a){const l=s.circle,c=s.seenUids,h=this.boxCells[n];if(null!==h){const e=this.bboxes;for(const t of h)if(!c.box[t]){c.box[t]=!0;const i=4*t;if(this._circleAndRectCollide(l.x,l.y,l.radius,e[i+0],e[i+1],e[i+2],e[i+3])&&(!a||a(this.boxKeys[t])))return o.push(!0),!0}}const u=this.circleCells[n];if(null!==u){const e=this.circles;for(const t of u)if(!c.circle[t]){c.circle[t]=!0;const i=3*t;if(this._circlesCollide(e[i],e[i+1],e[i+2],l.x,l.y,l.radius)&&(!a||a(this.circleKeys[t])))return o.push(!0),!0}}}_forEachCell(e,t,i,r,n,o,s,a){const l=this._convertToXCellCoord(e),c=this._convertToYCellCoord(t),h=this._convertToXCellCoord(i),u=this._convertToYCellCoord(r);for(let d=l;d<=h;d++)for(let l=c;l<=u;l++)if(n.call(this,e,t,i,r,this.xCellCount*l+d,o,s,a))return}_convertToXCellCoord(e){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(e*this.xScale)))}_convertToYCellCoord(e){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(e*this.yScale)))}_circlesCollide(e,t,i,r,n,o){const s=r-e,a=n-t,l=i+o;return l*l>s*s+a*a}_circleAndRectCollide(e,t,i,r,n,o,s){const a=(o-r)/2,l=Math.abs(e-(r+a));if(l>a+i)return!1;const c=(s-n)/2,h=Math.abs(t-(n+c));if(h>c+i)return!1;if(l<=a||h<=c)return!0;const u=l-a,d=h-c;return u*u+d*d<=i*i}}const Je={unknown:0,flipRequired:1,flipNotRequired:2},Qe=Math.tan(85*Math.PI/180);function et(t,i,r,n,o,s,a){const l=e.create();if(r)if("globe"===s.name){const t=e.calculateGlobeLabelMatrix(o,i);e.multiply(l,l,t)}else{const t=y([],a);l[0]=t[0],l[1]=t[1],l[4]=t[2],l[5]=t[3],n||e.rotateZ(l,l,o.angle)}else e.multiply(l,o.labelPlaneMatrix,t);return l}function tt(e,t,i,r,n,o,s){const a=et(e,t,i,r,n,o,s);return"globe"===o.name&&i||(a[2]=a[6]=a[10]=a[14]=0),a}function it(t,i,r,n,o,s,a){if(r){if("globe"===s.name){const l=et(t,i,r,n,o,s,a);return e.invert(l,l),e.multiply(l,t,l),l}{const i=e.clone(t),r=e.identity([]);return r[0]=a[0],r[1]=a[1],r[4]=a[2],r[5]=a[3],e.multiply(i,i,r),n||e.rotateZ(i,i,-o.angle),i}}return o.glCoordMatrix}function rt(t,i,r,n){const o=[t,i,r,1];r?e.transformMat4$1(o,o,n):ft(o,o,n);const s=o[3];return o[0]/=s,o[1]/=s,o[2]/=s,o}function nt(e,t){return Math.min(.5+e/t*.5,1.5)}function ot(e,t){const i=e[0]/e[3],r=e[1]/e[3];return i>=-t[0]&&i<=t[0]&&r>=-t[1]&&r<=t[1]}function st(t,i,r,n,o,s,a,l,c,h){const u=r.transform,d=n?t.textSizeData:t.iconSizeData,p=e.evaluateSizeForZoom(d,r.transform.zoom),f="globe"===u.projection.name,m=[256/r.width*2+1,256/r.height*2+1],_=n?t.text.dynamicLayoutVertexArray:t.icon.dynamicLayoutVertexArray;_.clear();let g=null;f&&(g=n?t.text.globeExtVertexArray:t.icon.globeExtVertexArray);const y=t.lineVertexArray,x=n?t.text.placedSymbolArray:t.icon.placedSymbolArray,v=r.transform.width/r.transform.height;let b,w=!1;for(let n=0;nMath.abs(r)?{useVertical:!0}:t===e.WritingMode.vertical?n>0?{needsFlipping:!0}:null:i!==Je.unknown&&function(e,t){return 0===e||Math.abs(t/e)>Qe}(r,n)?i===Je.flipRequired?{needsFlipping:!0}:null:r<0?{needsFlipping:!0}:null}function ct(t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x){const v=i/24,b=t.lineOffsetX*v,w=t.lineOffsetY*v,{lineStartIndex:T,glyphStartIndex:E,numGlyphs:S,segment:M,writingMode:A,flipState:I}=t,C=T+t.lineLength,z=t=>{if(u){const[i,r,n]=t.up,o=h.length;e.updateGlobeVertexNormal(u,o+0,i,r,n),e.updateGlobeVertexNormal(u,o+1,i,r,n),e.updateGlobeVertexNormal(u,o+2,i,r,n),e.updateGlobeVertexNormal(u,o+3,i,r,n)}const[i,r,n]=t.point;e.addDynamicAttributes(h,i,r,n,t.angle)};if(S>1){const e=at(v,l,b,w,r,d,p,t,c,s,f,_,!1,g,y,x);if(!e)return{notEnoughRoom:!0};if(n&&!r){let[i,r,n]=e.first.point,[o,s,l]=e.last.point;[i,r]=rt(i,r,n,a),[o,s]=rt(o,s,l,a);const c=lt(A,I,(o-i)*m,s-r);if(t.flipState=c&&c.needsFlipping?Je.flipRequired:Je.flipNotRequired,c)return c}z(e.first);for(let e=E+1;e0?s:ut(p,n,i,1,o,void 0,g,y.canonical),l=lt(A,I,(a[0]-i[0])*m,a[1]-i[1]);if(t.flipState=l&&l.needsFlipping?Je.flipRequired:Je.flipNotRequired,l)return l}const i=dt(v*l.getoffsetX(E),b,w,r,d,p,M,T,C,c,s,f,_,!1,!1,g,y,x);if(!i)return{notEnoughRoom:!0};z(i)}return{}}function ht(e,t,i,r,n){const{x:o,y:s,z:a}=r.projectTilePoint(e.x,e.y,t);if(!n)return rt(o,s,a,i);const[l,c,h]=n(e);return rt(o+l,s+c,a+h,i)}function ut(t,i,r,n,o,s,a,l){const c=ht(t.sub(i)._unit()._add(t),l,o,a,s);return e.sub(c,r,c),e.normalize(c,c),e.scaleAndAdd(c,r,c,n)}function dt(t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y){const x=n?t-i:t+i;let v=x>0?1:-1,b=0;n&&(v*=-1,b=Math.PI),v<0&&(b+=Math.PI);let w=l+a+(v>0?0:1)|0,T=o,E=o,S=0,M=0;const A=Math.abs(x),I=[],C=[];let z=s,P=z;const k=()=>ut(P,z,E,A-S+1,u,p,_,g.canonical);for(;S+M<=A;){if(w+=v,w=c)return null;if(E=T,P=z,I.push(E),f&&C.push(P),z=new e.Point(h.getx(w),h.gety(w)),T=d[w],!T){const e=ht(z,g.canonical,u,_,p);T=e[3]>0?d[w]=e:k()}S+=M,M=e.distance(E,T)}m&&p&&(d[w]&&(T=k(),M=e.distance(E,T)),d[w]=T);const D=(A-S)/M,L=z.sub(P)._mult(D)._add(P),R=e.sub([],T,E),B=e.scaleAndAdd([],E,R,D);let O=[0,0,1],F=R[0],U=R[1];if(y&&(O=_.upVector(g.canonical,L.x,L.y),0!==O[0]||0!==O[1]||1!==O[2])){const t=[O[2],0,-O[0]],i=e.cross([],O,t);e.normalize(t,t),e.normalize(i,i),F=e.dot(R,t),U=e.dot(R,i)}if(r){const t=e.cross([],O,R);e.normalize(t,t),e.scaleAndAdd(B,B,t,r*v)}const V=b+Math.atan2(U,F);return I.push(B),f&&C.push(L),{point:B,angle:V,path:I,tilePath:C,up:O}}function pt(e,t){const i=t.length,r=i+4*e;t.resize(r),t.float32.fill(-1/0,4*i,4*r)}function ft(e,t,i){const r=t[0],n=t[1];return e[0]=i[0]*r+i[4]*n+i[12],e[1]=i[1]*r+i[5]*n+i[13],e[3]=i[3]*r+i[7]*n+i[15],e}const mt=100;class _t{constructor(e,t,i=new Ye(e.width+200,e.height+200,25),r=new Ye(e.width+200,e.height+200,25)){this.transform=e,this.grid=i,this.ignoredGrid=r,this.pitchfactor=Math.cos(e._pitch)*e.cameraToCenterDistance,this.screenRightBoundary=e.width+mt,this.screenBottomBoundary=e.height+mt,this.gridRightBoundary=e.width+200,this.gridBottomBoundary=e.height+200,this.fogState=t}placeCollisionBox(e,t,i,r,n,o,s,a){let l=i.projectedAnchorX,c=i.projectedAnchorY,h=i.projectedAnchorZ;const u=i.elevation,d=i.tileID,p=e.getProjection();if(u&&d){const[e,t,r]=p.upVector(d.canonical,i.tileAnchorX,i.tileAnchorY),n=p.upVectorScale(d.canonical,this.transform.center.lat,this.transform.worldSize).metersToTile;l+=e*u*n,c+=t*u*n,h+=r*u*n}const f=this.projectAndGetPerspectiveRatio(s,l,c,h,i.tileID,"globe"===p.name||!!u||this.transform.pitch>0,p),m=o*f.perspectiveRatio,_=(i.x1*t+r.x-i.padding)*m+f.point.x,g=(i.y1*t+r.y-i.padding)*m+f.point.y,y=(i.x2*t+r.x+i.padding)*m+f.point.x,x=(i.y2*t+r.y+i.padding)*m+f.point.y,v=f.perspectiveRatio<=.55||f.occluded;return!this.isInsideGrid(_,g,y,x)||!n&&this.grid.hitTest(_,g,y,x,a)||v?{box:[],offscreen:!1,occluded:f.occluded}:{box:[_,g,y,x],offscreen:this.isOffscreen(_,g,y,x),occluded:!1}}placeCollisionCircles(t,i,r,n,o,s,a,l,c,h,u,d,p,f,m){const _=[],g=this.transform.elevation,y=t.getProjection(),x=g?g.getAtTileOffsetFunc(m,this.transform.center.lat,this.transform.worldSize,y):null,v=new e.Point(r.tileAnchorX,r.tileAnchorY);let{x:b,y:w,z:T}=y.projectTilePoint(v.x,v.y,m.canonical);if(x){const[e,t,i]=x(v);b+=e,w+=t,T+=i}const E="globe"===y.name,S=this.projectAndGetPerspectiveRatio(a,b,w,T,m,E||!!g||this.transform.pitch>0,y),{perspectiveRatio:M}=S,A=(u?s/M:s*M)/e.ONE_EM,I=rt(b,w,T,l),C=S.signedDistanceFromCamera>0?at(A,o,r.lineOffsetX*A,r.lineOffsetY*A,!1,I,v,r,n,l,{},g&&!u?x:null,u&&!!g,y,m,u):null;let z=!1,P=!1,k=!0;if(C&&!S.occluded){const t=.5*p*M+f,r=new e.Point(-100,-100),n=new e.Point(this.screenRightBoundary,this.screenBottomBoundary),o=new Ke,{first:s,last:a}=C,l=s.path.length;let u=[];for(let e=l-1;e>=1;e--)u.push(s.path[e]);for(let e=1;e(x&&!E&&(i=x(re[3]<=0))&&(u=[]));let g=[];if(u.length>0){let t=1/0,i=-1/0,o=1/0,s=-1/0;for(const e of u)t=Math.min(t,e[0]),o=Math.min(o,e[1]),i=Math.max(i,e[0]),s=Math.max(s,e[1]);i>=r.x&&t<=n.x&&s>=r.y&&o<=n.y&&(g=[u.map((t=>new e.Point(t[0],t[1])))],(tn.x||on.y)&&(g=e.clipLine(g,r.x,r.y,n.x,n.y)))}for(const e of g){o.reset(e,.25*t);let r=0;r=o.length<=.5*t?1:Math.ceil(o.paddedLength/m)+1;for(let e=0;e0){if(e.transformMat4$1(l,l,t),this.fogState&&o&&"globe"!==a.name){const t=function(t,i,r,n,o,s){const a=s.calculateFogTileMatrix(o),l=[i,r,n];return e.transformMat4(l,l,a),S(t,l,s.pitch,s._fov)}(this.fogState,i,r,n,o.toUnwrapped(),this.transform);c=t>.9}}else ft(l,l,t);const h=l[3];return{point:new e.Point((l[0]/h+1)/2*this.transform.width+mt,(-l[1]/h+1)/2*this.transform.height+mt),perspectiveRatio:Math.min(.5+this.transform.getCameraToCenterDistance(a)/h*.5,1.5),signedDistanceFromCamera:h,occluded:s&&l[2]>h||c}}isOffscreen(e,t,i,r){return i=this.screenRightBoundary||rthis.screenBottomBoundary}isInsideGrid(e,t,i,r){return i>=0&&e=0&&te.collisionGroupID===t}}return this.collisionGroups[e]}}function Mt(t,i,r,n,o){const{horizontalAlign:s,verticalAlign:a}=e.getAnchorAlignment(t),l=-(s-.5)*i,c=-(a-.5)*r,h=e.evaluateVariableOffset(t,n);return new e.Point(l+h[0]*o,c+h[1]*o)}function At(t,i,r,n,o){const s=new e.Point(t,i);return r&&s._rotate(n?o:-o),s}class It{constructor(e,t,i,r,n){this.transform=e.clone(),this.projection=e.projection.name,this.collisionIndex=new _t(this.transform,n),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=t,this.retainedQueryData={},this.collisionGroups=new St(i),this.collisionCircleArrays={},this.prevPlacement=r,r&&(r.prevPlacement=void 0),this.placedOrientations={}}getBucketParts(t,i,r,n){const o=r.getBucket(i),s=r.latestFeatureIndex;if(!o||!s||i.id!==o.layerIds[0])return;const a=o.layers[0].layout,l=r.collisionBoxArray,c=Math.pow(2,this.transform.zoom-r.tileID.overscaledZ),h=r.tileSize/e.EXTENT,u=r.tileID.toUnwrapped();this.transform.setProjection(o.projection);const d=(p=r.tileID,f=o.getProjection(),m=this.transform,f.name===this.projection?m.calculateProjMatrix(p.toUnwrapped()):gt(m,f,p));var p,f,m;const _="map"===a.get("text-pitch-alignment"),g="map"===a.get("text-rotation-alignment");i.compileFilter();const y=i.dynamicFilter(),x=i.dynamicFilterNeedsFeature(),v=this.transform.calculatePixelsToTileUnitsMatrix(r),b=tt(d,r.tileID.canonical,_,g,this.transform,o.getProjection(),v);let w=null;if(_){const t=it(d,r.tileID.canonical,_,g,this.transform,o.getProjection(),v);w=e.multiply([],this.transform.labelPlaneMatrix,t)}let T=null;y&&r.latestFeatureIndex&&(T={unwrappedTileID:u,dynamicFilter:y,dynamicFilterNeedsFeature:x,featureIndex:r.latestFeatureIndex}),this.retainedQueryData[o.bucketInstanceId]=new Et(o.bucketInstanceId,s,o.sourceLayerIndex,o.index,r.tileID);const E={bucket:o,layout:a,posMatrix:d,textLabelPlaneMatrix:b,labelToScreenMatrix:w,clippingData:T,scale:c,textPixelRatio:h,holdingForFade:r.holdingForFade(),collisionBoxArray:l,partiallyEvaluatedTextSize:e.evaluateSizeForZoom(o.textSizeData,this.transform.zoom),partiallyEvaluatedIconSize:e.evaluateSizeForZoom(o.iconSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(o.sourceID)};if(n)for(const e of o.sortKeyRanges){const{sortKey:i,symbolInstanceStart:r,symbolInstanceEnd:n}=e;t.push({sortKey:i,symbolInstanceStart:r,symbolInstanceEnd:n,parameters:E})}else t.push({symbolInstanceStart:0,symbolInstanceEnd:o.symbolInstances.length,parameters:E})}attemptAnchorPlacement(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g){const{textOffset0:y,textOffset1:x,crossTileID:v}=u,b=[y,x],w=Mt(e,i,r,b,n),T=this.collisionIndex.placeCollisionBox(p,n,t,At(w.x,w.y,o,s,this.transform.angle),h,a,l,c.predicate);if(m){const e=p.getSymbolInstanceIconSize(g,this.transform.zoom,u.placedIconSymbolIndex);if(0===this.collisionIndex.placeCollisionBox(p,e,m,At(w.x,w.y,o,s,this.transform.angle),h,a,l,c.predicate).box.length)return}if(T.box.length>0){let t;return this.prevPlacement&&this.prevPlacement.variableOffsets[v]&&this.prevPlacement.placements[v]&&this.prevPlacement.placements[v].text&&(t=this.prevPlacement.variableOffsets[v].anchor),this.variableOffsets[v]={textOffset:b,width:i,height:r,anchor:e,textScale:n,prevAnchor:t},this.markUsedJustification(p,e,u,f),p.allowVerticalPlacement&&(this.markUsedOrientation(p,f,u),this.placedOrientations[v]=f),{shift:w,placedGlyphBoxes:T}}}placeLayerBucketPart(t,i,r,n){const{bucket:o,layout:s,posMatrix:a,textLabelPlaneMatrix:l,labelToScreenMatrix:c,clippingData:h,textPixelRatio:u,holdingForFade:d,collisionBoxArray:p,partiallyEvaluatedTextSize:f,partiallyEvaluatedIconSize:m,collisionGroup:_}=t.parameters,g=s.get("text-optional"),y=s.get("icon-optional"),x=s.get("text-allow-overlap"),v=s.get("icon-allow-overlap"),b="map"===s.get("text-rotation-alignment"),w="map"===s.get("text-pitch-alignment"),T="none"!==s.get("icon-text-fit"),E="viewport-y"===s.get("symbol-z-order");this.transform.setProjection(o.projection);let S=x&&(v||!o.hasIconData()||y),M=v&&(x||!o.hasTextData()||g);!o.collisionArrays&&p&&o.deserializeCollisionBoxes(p),r&&n&&o.updateCollisionDebugBuffers(this.transform.zoom,p);const A=(t,n,p)=>{const{crossTileID:E,numVerticalGlyphVertices:A}=t;if(h){const r={zoom:this.transform.zoom,pitch:this.transform.pitch};let n=null;if(h.dynamicFilterNeedsFeature){const e=this.retainedQueryData[o.bucketInstanceId];n=h.featureIndex.loadFeature({featureIndex:t.featureIndex,bucketIndex:e.bucketIndex,sourceLayerIndex:e.sourceLayerIndex,layoutVertexArrayOffset:0})}if(!(0,h.dynamicFilter)(r,n,this.retainedQueryData[o.bucketInstanceId].tileID.canonical,new e.Point(t.tileAnchorX,t.tileAnchorY),this.transform.calculateDistanceTileData(h.unwrappedTileID)))return this.placements[E]=new wt(!1,!1,!1,!0),void i.add(E)}if(i.has(E))return;if(d)return void(this.placements[E]=new wt(!1,!1,!1));let I=!1,C=!1,z=!0,P=!1,k=!1,D=null,L={box:null,offscreen:null,occluded:null},R={box:null,offscreen:null,occluded:null},B=null,O=null,F=null,U=0,V=0,N=0;p.textFeatureIndex?U=p.textFeatureIndex:t.useRuntimeCollisionCircles&&(U=t.featureIndex),p.verticalTextFeatureIndex&&(V=p.verticalTextFeatureIndex);const j=e=>{e.tileID=this.retainedQueryData[o.bucketInstanceId].tileID;const t=this.transform.elevation;(t||e.elevation)&&(e.elevation=t?t.getAtTileOffset(e.tileID,e.tileAnchorX,e.tileAnchorY):0)},G=p.textBox;if(G){j(G);const i=i=>{let r=e.WritingMode.horizontal;if(o.allowVerticalPlacement&&!i&&this.prevPlacement){const e=this.prevPlacement.placedOrientations[E];e&&(this.placedOrientations[E]=e,r=e,this.markUsedOrientation(o,r,t))}return r},r=(t,i)=>{if(o.allowVerticalPlacement&&A>0&&p.verticalTextBox){for(const r of o.writingModes)if(r===e.WritingMode.vertical?(L=i(),R=L):L=t(),L&&L.box&&L.box.length)break}else L=t()};if(s.get("text-variable-anchor")){let l=s.get("text-variable-anchor");if(this.prevPlacement&&this.prevPlacement.variableOffsets[E]){const e=this.prevPlacement.variableOffsets[E];l.indexOf(e.anchor)>0&&(l=l.filter((t=>t!==e.anchor)),l.unshift(e.anchor))}const c=(e,i,r)=>{const s=o.getSymbolInstanceTextSize(f,t,this.transform.zoom,n),c=(e.x2-e.x1)*s+2*e.padding,h=(e.y2-e.y1)*s+2*e.padding,d=T&&!v?i:null;d&&j(d);let p={box:[],offscreen:!1,occluded:!1};const g=x?2*l.length:l.length;for(let i=0;i=l.length,t,n,o,r,d,f,m);if(g&&(p=g.placedGlyphBoxes,p&&p.box&&p.box.length)){I=!0,D=g.shift;break}}return p};r((()=>c(G,p.iconBox,e.WritingMode.horizontal)),(()=>{const t=p.verticalTextBox;return t&&j(t),o.allowVerticalPlacement&&!(L&&L.box&&L.box.length)&&A>0&&t?c(t,p.verticalIconBox,e.WritingMode.vertical):{box:null,offscreen:null,occluded:null}})),L&&(I=L.box,z=L.offscreen,P=L.occluded);const h=i(!(!L||!L.box));if(!I&&this.prevPlacement){const e=this.prevPlacement.variableOffsets[E];e&&(this.variableOffsets[E]=e,this.markUsedJustification(o,e.anchor,t,h))}}else{const s=(i,r)=>{const s=o.getSymbolInstanceTextSize(f,t,this.transform.zoom,n),l=this.collisionIndex.placeCollisionBox(o,s,i,new e.Point(0,0),x,u,a,_.predicate);return l&&l.box&&l.box.length&&(this.markUsedOrientation(o,r,t),this.placedOrientations[E]=r),l};r((()=>s(G,e.WritingMode.horizontal)),(()=>{const t=p.verticalTextBox;return o.allowVerticalPlacement&&A>0&&t?(j(t),s(t,e.WritingMode.vertical)):{box:null,offscreen:null,occluded:null}})),i(!!(L&&L.box&&L.box.length))}}if(B=L,I=B&&B.box&&B.box.length>0,z=B&&B.offscreen,P=B&&B.occluded,t.useRuntimeCollisionCircles){const i=o.text.placedSymbolArray.get(t.centerJustifiedTextSymbolIndex>=0?t.centerJustifiedTextSymbolIndex:t.verticalPlacedTextSymbolIndex),n=e.evaluateSizeForFeature(o.textSizeData,f,i),h=s.get("text-padding");O=this.collisionIndex.placeCollisionCircles(o,x,i,o.lineVertexArray,o.glyphOffsetArray,n,a,l,c,r,w,_.predicate,t.collisionCircleDiameter*n/e.ONE_EM,h,this.retainedQueryData[o.bucketInstanceId].tileID),I=x||O.circles.length>0&&!O.collisionDetected,z=z&&O.offscreen,P=O.occluded}if(p.iconFeatureIndex&&(N=p.iconFeatureIndex),p.iconBox){const i=i=>{j(i);const r=T&&D?At(D.x,D.y,b,w,this.transform.angle):new e.Point(0,0),n=o.getSymbolInstanceIconSize(m,this.transform.zoom,t.placedIconSymbolIndex);return this.collisionIndex.placeCollisionBox(o,n,i,r,v,u,a,_.predicate)};R&&R.box&&R.box.length&&p.verticalIconBox?(F=i(p.verticalIconBox),C=F.box.length>0):(F=i(p.iconBox),C=F.box.length>0),z=z&&F.offscreen,k=F.occluded}const $=g||0===t.numHorizontalGlyphVertices&&0===A,Z=y||0===t.numIconVertices;if($||Z?Z?$||(C=C&&I):I=C&&I:C=I=C&&I,I&&B&&B.box&&this.collisionIndex.insertCollisionBox(B.box,s.get("text-ignore-placement"),o.bucketInstanceId,R&&R.box&&V?V:U,_.ID),C&&F&&this.collisionIndex.insertCollisionBox(F.box,s.get("icon-ignore-placement"),o.bucketInstanceId,N,_.ID),O&&(I&&this.collisionIndex.insertCollisionCircles(O.circles,s.get("text-ignore-placement"),o.bucketInstanceId,U,_.ID),r)){const e=o.bucketInstanceId;let t=this.collisionCircleArrays[e];void 0===t&&(t=this.collisionCircleArrays[e]=new Tt);for(let e=0;e=0;--t){const i=e[t];A(o.symbolInstances.get(i),i,o.collisionArrays[i])}}else for(let e=t.symbolInstanceStart;e=0&&(t.text.placedSymbolArray.get(o).crossTileID=u>=0&&o!==u?0:c),s>=0&&(t.text.placedSymbolArray.get(s).crossTileID=u>=0&&s!==u?0:c),a>=0&&(t.text.placedSymbolArray.get(a).crossTileID=u>=0&&a!==u?0:c),l>=0&&(t.text.placedSymbolArray.get(l).crossTileID=u>=0&&l!==u?0:c)}markUsedOrientation(t,i,r){const n=i===e.WritingMode.horizontal||i===e.WritingMode.horizontalOnly?i:0,o=i===e.WritingMode.vertical?i:0,{leftJustifiedTextSymbolIndex:s,centerJustifiedTextSymbolIndex:a,rightJustifiedTextSymbolIndex:l,verticalPlacedTextSymbolIndex:c}=r,h=t.text.placedSymbolArray;s>=0&&(h.get(s).placedOrientation=n),a>=0&&(h.get(a).placedOrientation=n),l>=0&&(h.get(l).placedOrientation=n),c>=0&&(h.get(c).placedOrientation=o)}commit(e){this.commitTime=e,this.zoomAtLastRecencyCheck=this.transform.zoom;const t=this.prevPlacement;let i=!1;this.prevZoomAdjustment=t?t.zoomAdjustment(this.transform.zoom):0;const r=t?t.symbolFadeChange(e):1,n=t?t.opacities:{},o=t?t.variableOffsets:{},s=t?t.placedOrientations:{};for(const e in this.placements){const t=this.placements[e],o=n[e];o?(this.opacities[e]=new bt(o,r,t.text,t.icon,null,t.clipped),i=i||t.text!==o.text.placed||t.icon!==o.icon.placed):(this.opacities[e]=new bt(null,r,t.text,t.icon,t.skipFade,t.clipped),i=i||t.text||t.icon)}for(const e in n){const t=n[e];if(!this.opacities[e]){const n=new bt(t,r,!1,!1);n.isHidden()||(this.opacities[e]=n,i=i||t.text.placed||t.icon.placed)}}for(const e in o)this.variableOffsets[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.variableOffsets[e]=o[e]);for(const e in s)this.placedOrientations[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.placedOrientations[e]=s[e]);i?this.lastPlacementChangeTime=e:"number"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e)}updateLayerOpacities(e,t){const i=new Set;for(const r of t){const t=r.getBucket(e);t&&r.latestFeatureIndex&&e.id===t.layerIds[0]&&this.updateBucketOpacities(t,i,r.collisionBoxArray)}}updateBucketOpacities(t,i,r){t.hasTextData()&&t.text.opacityVertexArray.clear(),t.hasIconData()&&t.icon.opacityVertexArray.clear(),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexArray.clear(),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexArray.clear();const n=t.layers[0].layout,o=!!t.layers[0].dynamicFilter(),s=new bt(null,0,!1,!1,!0),a=n.get("text-allow-overlap"),l=n.get("icon-allow-overlap"),c=n.get("text-variable-anchor"),h="map"===n.get("text-rotation-alignment"),u="map"===n.get("text-pitch-alignment"),d="none"!==n.get("icon-text-fit"),p=new bt(null,0,a&&(l||!t.hasIconData()||n.get("icon-optional")),l&&(a||!t.hasTextData()||n.get("text-optional")),!0);!t.collisionArrays&&r&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(r);const f=(e,t,i)=>{for(let r=0;r0||l>0,b=g>0,w=this.placedOrientations[_],T=w===e.WritingMode.vertical,E=w===e.WritingMode.horizontal||w===e.WritingMode.horizontalOnly;if(!v&&!b||x.isHidden()||m++,v){const e=Ot(x.text);f(t.text,a,T?Ft:e),f(t.text,l,E?Ft:e);const i=x.text.isHidden(),{leftJustifiedTextSymbolIndex:r,centerJustifiedTextSymbolIndex:o,rightJustifiedTextSymbolIndex:s,verticalPlacedTextSymbolIndex:c}=n,h=t.text.placedSymbolArray,u=i||T?1:0;r>=0&&(h.get(r).hidden=u),o>=0&&(h.get(o).hidden=u),s>=0&&(h.get(s).hidden=u),c>=0&&(h.get(c).hidden=i||E?1:0);const d=this.variableOffsets[_];d&&this.markUsedJustification(t,d.anchor,n,w);const p=this.placedOrientations[_];p&&(this.markUsedJustification(t,"left",n,p),this.markUsedOrientation(t,p,n))}if(b){const e=Ot(x.icon),{placedIconSymbolIndex:i,verticalPlacedIconSymbolIndex:r}=n,o=t.icon.placedSymbolArray,s=x.icon.isHidden()?1:0;i>=0&&(f(t.icon,g,T?Ft:e),o.get(i).hidden=s),r>=0&&(f(t.icon,n.numVerticalIconVertices,E?Ft:e),o.get(r).hidden=s)}if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){const i=t.collisionArrays[r];if(i){let r=new e.Point(0,0),n=!0;if(i.textBox||i.verticalTextBox){if(c){const e=this.variableOffsets[_];e?(r=Mt(e.anchor,e.width,e.height,e.textOffset,e.textScale),h&&r._rotate(u?this.transform.angle:-this.transform.angle)):n=!1}o&&(n=!x.clipped),i.textBox&&Ct(t.textCollisionBox.collisionVertexArray,x.text.placed,!n||T,r.x,r.y),i.verticalTextBox&&Ct(t.textCollisionBox.collisionVertexArray,x.text.placed,!n||E,r.x,r.y)}const s=n&&Boolean(!E&&i.verticalIconBox);i.iconBox&&Ct(t.iconCollisionBox.collisionVertexArray,x.icon.placed,s,d?r.x:0,d?r.y:0),i.verticalIconBox&&Ct(t.iconCollisionBox.collisionVertexArray,x.icon.placed,!s,d?r.x:0,d?r.y:0)}}}if(t.fullyClipped=0===m,t.sortFeatures(this.transform.angle),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexBuffer&&t.iconCollisionBox.collisionVertexBuffer.updateData(t.iconCollisionBox.collisionVertexArray),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexBuffer&&t.textCollisionBox.collisionVertexBuffer.updateData(t.textCollisionBox.collisionVertexArray),t.bucketInstanceId in this.collisionCircleArrays){const e=this.collisionCircleArrays[t.bucketInstanceId];t.placementInvProjMatrix=e.invProjMatrix,t.placementViewportMatrix=e.viewportMatrix,t.collisionCircleArray=e.circles,delete this.collisionCircleArrays[t.bucketInstanceId]}}symbolFadeChange(e){return 0===this.fadeDuration?1:(e-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(e){return Math.max(0,(this.transform.zoom-e)/1.5)}hasTransitions(e){return this.stale||e-this.lastPlacementChangeTimee}setStale(){this.stale=!0}}function Ct(e,t,i,r,n){e.emplaceBack(t?1:0,i?1:0,r||0,n||0),e.emplaceBack(t?1:0,i?1:0,r||0,n||0),e.emplaceBack(t?1:0,i?1:0,r||0,n||0),e.emplaceBack(t?1:0,i?1:0,r||0,n||0)}const zt=Math.pow(2,25),Pt=Math.pow(2,24),kt=Math.pow(2,17),Dt=Math.pow(2,16),Lt=Math.pow(2,9),Rt=Math.pow(2,8),Bt=Math.pow(2,1);function Ot(e){if(0===e.opacity&&!e.placed)return 0;if(1===e.opacity&&e.placed)return 4294967295;const t=e.placed?1:0,i=Math.floor(127*e.opacity);return i*zt+t*Pt+i*kt+t*Dt+i*Lt+t*Rt+i*Bt+t}const Ft=0;class Ut{constructor(e){this._sortAcrossTiles="viewport-y"!==e.layout.get("symbol-z-order")&&void 0!==e.layout.get("symbol-sort-key").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs=new Set,this._bucketParts=[]}continuePlacement(e,t,i,r,n){const o=this._bucketParts;for(;this._currentTileIndexe.sortKey-t.sortKey)));this._currentPartIndex{const t=e.exported.now()-n;return!this._forceFullPlacement&&t>2};for(;this._currentPlacementIndex>=0;){const e=i[t[this._currentPlacementIndex]],n=this.placement.collisionIndex.transform.zoom;if("symbol"===e.type&&(!e.minzoom||e.minzoom<=n)&&(!e.maxzoom||e.maxzoom>n)){if(this._inProgressLayer||(this._inProgressLayer=new Ut(e)),this._inProgressLayer.continuePlacement(r[e.source],this.placement,this._showCollisionBoxes,e,o))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(e){return this.placement.commit(e),this.placement}}const Nt=512/e.EXTENT/2;class jt{constructor(t,i,r){this.tileID=t,this.bucketInstanceId=r,this.index=new e.KDBush(i.length,16,Int32Array),this.keys=[],this.crossTileIDs=[];const n=t.canonical.x*e.EXTENT,o=t.canonical.y*e.EXTENT;for(let e=0;ee.overscaledZ)for(const i in n){const o=n[i];o.tileID.isChildOf(e)&&o.findMatches(t.symbolInstances,e,r)}else{const o=n[e.scaledTo(Number(i)).key];o&&o.findMatches(t.symbolInstances,e,r)}}for(let e=0;e{t[e]=!0}));for(const e in this.layerIndexes)t[e]||delete this.layerIndexes[e]}}const qt=(t,i)=>e.emitValidationErrors(t,i&&i.filter((e=>"source.canvas"!==e.identifier))),Wt=e.pick(je,["addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setLayerZoomRange","setLight","setTransition","setGeoJSONSourceData","setTerrain","setFog","setProjection"]),Xt=e.pick(je,["setCenter","setZoom","setBearing","setPitch"]),Ht={version:8,layers:[],sources:{}},Kt={fill:!0,line:!0,background:!0,hillshade:!0,raster:!0};class Yt extends e.Evented{constructor(t,i={}){super(),this.map=t,this.dispatcher=new C(Ue(),this),this.imageManager=new v,this.imageManager.setEventedParent(this),this.glyphManager=new e.GlyphManager(t._requestManager,i.localFontFamily?e.LocalGlyphMode.all:i.localIdeographFontFamily?e.LocalGlyphMode.ideographs:e.LocalGlyphMode.none,i.localFontFamily||i.localIdeographFontFamily),this.crossTileSymbolIndex=new Zt,this._layers={},this._num3DLayers=0,this._numSymbolLayers=0,this._numCircleLayers=0,this._serializedLayers={},this._sourceCaches={},this._otherSourceCaches={},this._symbolSourceCaches={},this._loaded=!1,this._availableImages=[],this._order=[],this._drapedFirstOrder=[],this._markersNeedUpdate=!1,this._resetUpdates(),this.dispatcher.broadcast("setReferrer",e.getReferrer());const r=this;this._rtlTextPluginCallback=Yt.registerForPluginStateChange((t=>{r.dispatcher.broadcast("syncRTLPluginState",{pluginStatus:t.pluginStatus,pluginURL:t.pluginURL},((t,i)=>{if(e.triggerPluginCompletionEvent(t),i&&i.every((e=>e)))for(const e in r._sourceCaches){const t=r._sourceCaches[e],i=t.getSource().type;"vector"!==i&&"geojson"!==i||t.reload()}}))})),this.on("data",(e=>{if("source"!==e.dataType||"metadata"!==e.sourceDataType)return;const t=this.getSource(e.sourceId);if(t&&t.vectorLayerIds)for(const e in this._layers){const i=this._layers[e];i.source===t.id&&this._validateLayer(i)}}))}loadURL(t,i={}){this.fire(new e.Event("dataloading",{dataType:"style"}));const r="boolean"==typeof i.validate?i.validate:!e.isMapboxURL(t);t=this.map._requestManager.normalizeStyleURL(t,i.accessToken);const n=this.map._requestManager.transformRequest(t,e.ResourceType.Style);this._request=e.getJSON(n,((t,i)=>{this._request=null,t?this.fire(new e.ErrorEvent(t)):i&&this._load(i,r)}))}loadJSON(t,i={}){this.fire(new e.Event("dataloading",{dataType:"style"})),this._request=e.exported.frame((()=>{this._request=null,this._load(t,!1!==i.validate)}))}loadEmpty(){this.fire(new e.Event("dataloading",{dataType:"style"})),this._load(Ht,!1)}_updateLayerCount(e,t){const i=t?1:-1;e.is3D()&&(this._num3DLayers+=i),"circle"===e.type&&(this._numCircleLayers+=i),"symbol"===e.type&&(this._numSymbolLayers+=i)}_load(t,i){if(i&&qt(this,e.validateStyle(t)))return;this._loaded=!0,this.stylesheet=e.clone$1(t),this._updateMapProjection();for(const e in t.sources)this.addSource(e,t.sources[e],{validate:!1});this._changed=!1,t.sprite?this._loadSprite(t.sprite):(this.imageManager.setLoaded(!0),this.dispatcher.broadcast("spriteLoaded",!0)),this.glyphManager.setURL(t.glyphs);const r=Ne(this.stylesheet.layers);this._order=r.map((e=>e.id)),this._layers={},this._serializedLayers={};for(const t of r){const i=e.createStyleLayer(t);i.setEventedParent(this,{layer:{id:i.id}}),this._layers[i.id]=i,this._serializedLayers[i.id]=i.serialize(),this._updateLayerCount(i,!0)}this.dispatcher.broadcast("setLayers",this._serializeLayers(this._order)),this.light=new w(this.stylesheet.light),this.stylesheet.terrain&&!this.terrainSetForDrapingOnly()&&this._createTerrain(this.stylesheet.terrain,1),this.stylesheet.fog&&this._createFog(this.stylesheet.fog),this._updateDrapeFirstLayers(),this.fire(new e.Event("data",{dataType:"style"})),this.fire(new e.Event("style.load"))}terrainSetForDrapingOnly(){return!!this.terrain&&0===this.terrain.drapeRenderMode}setProjection(e){e?this.stylesheet.projection=e:delete this.stylesheet.projection,this._updateMapProjection()}applyProjectionUpdate(){this._loaded&&(this.dispatcher.broadcast("setProjection",this.map.transform.projectionOptions),this.map.transform.projection.requiresDraping?this.getTerrain()||this.stylesheet.terrain||this.setTerrainForDraping():this.terrainSetForDrapingOnly()&&this.setTerrain(null))}_updateMapProjection(){this.map._useExplicitProjection?this.applyProjectionUpdate():this.map._prioritizeAndUpdateProjection(null,this.stylesheet.projection)}_loadSprite(t){this._spriteRequest=function(t,i,r){let n,o,s;const a=e.exported.devicePixelRatio>1?"@2x":"";let l=e.getJSON(i.transformRequest(i.normalizeSpriteURL(t,a,".json"),e.ResourceType.SpriteJSON),((e,t)=>{l=null,s||(s=e,n=t,h())})),c=e.getImage(i.transformRequest(i.normalizeSpriteURL(t,a,".png"),e.ResourceType.SpriteImage),((e,t)=>{c=null,s||(s=e,o=t,h())}));function h(){if(s)r(s);else if(n&&o){const t=e.exported.getImageData(o),i={};for(const r in n){const{width:o,height:s,x:a,y:l,sdf:c,pixelRatio:h,stretchX:u,stretchY:d,content:p}=n[r],f=new e.RGBAImage({width:o,height:s});e.RGBAImage.copy(t,f,{x:a,y:l},{x:0,y:0},{width:o,height:s}),i[r]={data:f,pixelRatio:h,sdf:c,stretchX:u,stretchY:d,content:p}}r(null,i)}}return{cancel(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null)}}}(t,this.map._requestManager,((t,i)=>{if(this._spriteRequest=null,t)this.fire(new e.ErrorEvent(t));else if(i)for(const e in i)this.imageManager.addImage(e,i[e]);this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),this.dispatcher.broadcast("setImages",this._availableImages),this.dispatcher.broadcast("spriteLoaded",!0),this.fire(new e.Event("data",{dataType:"style"}))}))}_validateLayer(t){const i=this.getSource(t.source);if(!i)return;const r=t.sourceLayer;r&&("geojson"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(r))&&this.fire(new e.ErrorEvent(new Error(`Source layer "${r}" does not exist on source "${i.id}" as specified by style layer "${t.id}"`)))}loaded(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(const e in this._sourceCaches)if(!this._sourceCaches[e].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeLayers(e){const t=[];for(const i of e){const e=this._layers[i];"custom"!==e.type&&t.push(e.serialize())}return t}hasTransitions(){if(this.light&&this.light.hasTransition())return!0;if(this.fog&&this.fog.hasTransition())return!0;for(const e in this._sourceCaches)if(this._sourceCaches[e].hasTransition())return!0;for(const e in this._layers)if(this._layers[e].hasTransition())return!0;return!1}get order(){return this.map._optimizeForTerrain&&this.terrain?this._drapedFirstOrder:this._order}isLayerDraped(e){return!!this.terrain&&("function"==typeof e.isLayerDraped?e.isLayerDraped():Kt[e.type])}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading")}update(t){if(!this._loaded)return;const i=this._changed;if(this._changed){const e=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(e.length||i.length)&&this._updateWorkerLayers(e,i);for(const e in this._updatedSources){const t=this._updatedSources[e];"reload"===t?this._reloadSource(e):"clear"===t&&this._clearSource(e)}this._updateTilesForChangedImages();for(const e in this._updatedPaintProps)this._layers[e].updateTransitions(t);this.light.updateTransitions(t),this.fog&&this.fog.updateTransitions(t),this._resetUpdates()}const r={};for(const e in this._sourceCaches){const t=this._sourceCaches[e];r[e]=t.used,t.used=!1}for(const e of this._order){const i=this._layers[e];if(i.recalculate(t,this._availableImages),!i.isHidden(t.zoom)){const e=this._getLayerSourceCache(i);e&&(e.used=!0)}const r=this.map.painter;if(r){const e=i.getProgramIds();if(!e)continue;const n=i.getProgramConfiguration(t.zoom);for(const t of e)r.useProgram(t,n)}}for(const t in r){const i=this._sourceCaches[t];r[t]!==i.used&&i.getSource().fire(new e.Event("data",{sourceDataType:"visibility",dataType:"source",sourceId:i.getSource().id}))}this.light.recalculate(t),this.terrain&&this.terrain.recalculate(t),this.fog&&this.fog.recalculate(t),this.z=t.zoom,this._markersNeedUpdate&&(this._updateMarkersOpacity(),this._markersNeedUpdate=!1),i&&this.fire(new e.Event("data",{dataType:"style"}))}_updateTilesForChangedImages(){const e=Object.keys(this._changedImages);if(e.length){for(const t in this._sourceCaches)this._sourceCaches[t].reloadTilesForDependencies(["icons","patterns"],e);this._changedImages={}}}_updateWorkerLayers(e,t){this.dispatcher.broadcast("updateLayers",{layers:this._serializeLayers(e),removedIds:t})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={}}setState(i){if(this._checkLoaded(),qt(this,e.validateStyle(i)))return!1;(i=e.clone$1(i)).layers=Ne(i.layers);const r=function(e,i){if(!e)return[{command:je.setStyle,args:[i]}];let r=[];try{if(!t(e.version,i.version))return[{command:je.setStyle,args:[i]}];t(e.center,i.center)||r.push({command:je.setCenter,args:[i.center]}),t(e.zoom,i.zoom)||r.push({command:je.setZoom,args:[i.zoom]}),t(e.bearing,i.bearing)||r.push({command:je.setBearing,args:[i.bearing]}),t(e.pitch,i.pitch)||r.push({command:je.setPitch,args:[i.pitch]}),t(e.sprite,i.sprite)||r.push({command:je.setSprite,args:[i.sprite]}),t(e.glyphs,i.glyphs)||r.push({command:je.setGlyphs,args:[i.glyphs]}),t(e.transition,i.transition)||r.push({command:je.setTransition,args:[i.transition]}),t(e.light,i.light)||r.push({command:je.setLight,args:[i.light]}),t(e.fog,i.fog)||r.push({command:je.setFog,args:[i.fog]}),t(e.projection,i.projection)||r.push({command:je.setProjection,args:[i.projection]});const n={},o=[];!function(e,i,r,n){let o;for(o in i=i||{},e=e||{})e.hasOwnProperty(o)&&(i.hasOwnProperty(o)||$e(o,r,n));for(o in i){if(!i.hasOwnProperty(o))continue;const s=i[o];e.hasOwnProperty(o)?t(e[o],s)||("geojson"===e[o].type&&"geojson"===s.type&&qe(e,i,o)?r.push({command:je.setGeoJSONSourceData,args:[o,s.data]}):Ze(o,i,r,n)):Ge(o,i,r)}}(e.sources,i.sources,o,n);const s=[];e.layers&&e.layers.forEach((e=>{e.source&&n[e.source]?r.push({command:je.removeLayer,args:[e.id]}):s.push(e)}));let a=e.terrain;a&&n[a.source]&&(r.push({command:je.setTerrain,args:[void 0]}),a=void 0),r=r.concat(o),t(a,i.terrain)||r.push({command:je.setTerrain,args:[i.terrain]}),function(e,i,r){i=i||[];const n=(e=e||[]).map(Xe),o=i.map(Xe),s=e.reduce(He,{}),a=i.reduce(He,{}),l=n.slice(),c=Object.create(null);let h,u,d,p,f,m,_;for(h=0,u=0;h!(e.command in Xt)));if(0===r.length)return!1;const n=r.filter((e=>!(e.command in Wt)));if(n.length>0)throw new Error(`Unimplemented: ${n.map((e=>e.command)).join(", ")}.`);return r.forEach((e=>{"setTransition"!==e.command&&"setProjection"!==e.command&&this[e.command].apply(this,e.args)})),this.stylesheet=i,this._updateMapProjection(),!0}addImage(t,i){return this.getImage(t)?this.fire(new e.ErrorEvent(new Error("An image with this name already exists."))):(this.imageManager.addImage(t,i),this._afterImageUpdated(t),this)}updateImage(e,t){this.imageManager.updateImage(e,t)}getImage(e){return this.imageManager.getImage(e)}removeImage(t){return this.getImage(t)?(this.imageManager.removeImage(t),this._afterImageUpdated(t),this):this.fire(new e.ErrorEvent(new Error("No image with this name exists.")))}_afterImageUpdated(t){this._availableImages=this.imageManager.listImages(),this._changedImages[t]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new e.Event("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this._availableImages.slice()}addSource(t,i,r={}){if(this._checkLoaded(),void 0!==this.getSource(t))throw new Error("There is already a source with this ID");if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(i.type)>=0&&this._validate(e.validateSource,`sources.${t}`,i,null,r))return;this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);const n=ze(t,i,this.dispatcher,this);n.setEventedParent(this,(()=>({isSourceLoaded:this._isSourceCacheLoaded(t),source:n.serialize(),sourceId:t})));const o=i=>{const r=(i?"symbol:":"other:")+t,o=this._sourceCaches[r]=new e.SourceCache(r,n,i);(i?this._symbolSourceCaches:this._otherSourceCaches)[t]=o,o.style=this,o.onAdd(this.map)};o(!1),"vector"!==i.type&&"geojson"!==i.type||o(!0),n.onAdd&&n.onAdd(this.map),this._changed=!0}removeSource(t){this._checkLoaded();const i=this.getSource(t);if(!i)throw new Error("There is no source with this ID");for(const i in this._layers)if(this._layers[i].source===t)return this.fire(new e.ErrorEvent(new Error(`Source "${t}" cannot be removed while layer "${i}" is using it.`)));if(this.terrain&&this.terrain.get().source===t)return this.fire(new e.ErrorEvent(new Error(`Source "${t}" cannot be removed while terrain is using it.`)));const r=this._getSourceCaches(t);for(const t of r)delete this._sourceCaches[t.id],delete this._updatedSources[t.id],t.fire(new e.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:t.getSource().id})),t.setEventedParent(null),t.clearTiles();return delete this._otherSourceCaches[t],delete this._symbolSourceCaches[t],i.setEventedParent(null),i.onRemove&&i.onRemove(this.map),this._changed=!0,this}setGeoJSONSourceData(e,t){this._checkLoaded(),this.getSource(e).setData(t),this._changed=!0}getSource(e){const t=this._getSourceCache(e);return t&&t.getSource()}_getSources(){const e=[];for(const t in this._otherSourceCaches){const i=this._getSourceCache(t);i&&e.push(i.getSource())}return e}addLayer(t,i,r={}){this._checkLoaded();const n=t.id;if(this.getLayer(n))return void this.fire(new e.ErrorEvent(new Error(`Layer with id "${n}" already exists on this map`)));let o;if("custom"===t.type){if(qt(this,e.validateCustomStyleLayer(t)))return;o=e.createStyleLayer(t)}else{if("object"==typeof t.source&&(this.addSource(n,t.source),t=e.clone$1(t),t=e.extend(t,{source:n})),this._validate(e.validateLayer,`layers.${n}`,t,{arrayIndex:-1},r))return;o=e.createStyleLayer(t),this._validateLayer(o),o.setEventedParent(this,{layer:{id:n}}),this._serializedLayers[o.id]=o.serialize(),this._updateLayerCount(o,!0)}const s=i?this._order.indexOf(i):this._order.length;if(i&&-1===s)return void this.fire(new e.ErrorEvent(new Error(`Layer with id "${i}" does not exist on this map.`)));this._order.splice(s,0,n),this._layerOrderChanged=!0,this._layers[n]=o;const a=this._getLayerSourceCache(o);if(this._removedLayers[n]&&o.source&&a&&"custom"!==o.type){const e=this._removedLayers[n];delete this._removedLayers[n],e.type!==o.type?this._updatedSources[o.source]="clear":(this._updatedSources[o.source]="reload",a.pause())}this._updateLayer(o),o.onAdd&&o.onAdd(this.map),this._updateDrapeFirstLayers()}moveLayer(t,i){if(this._checkLoaded(),this._changed=!0,!this._layers[t])return void this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be moved.`)));if(t===i)return;const r=this._order.indexOf(t);this._order.splice(r,1);const n=i?this._order.indexOf(i):this._order.length;i&&-1===n?this.fire(new e.ErrorEvent(new Error(`Layer with id "${i}" does not exist on this map.`))):(this._order.splice(n,0,t),this._layerOrderChanged=!0,this._updateDrapeFirstLayers())}removeLayer(t){this._checkLoaded();const i=this._layers[t];if(!i)return void this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be removed.`)));i.setEventedParent(null),this._updateLayerCount(i,!1);const r=this._order.indexOf(t);this._order.splice(r,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[t]=i,delete this._layers[t],delete this._serializedLayers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t],i.onRemove&&i.onRemove(this.map),this._updateDrapeFirstLayers()}getLayer(e){return this._layers[e]}hasLayer(e){return e in this._layers}hasLayerType(e){for(const t in this._layers)if(this._layers[t].type===e)return!0;return!1}setLayerZoomRange(t,i,r){this._checkLoaded();const n=this.getLayer(t);n?n.minzoom===i&&n.maxzoom===r||(null!=i&&(n.minzoom=i),null!=r&&(n.maxzoom=r),this._updateLayer(n)):this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot have zoom extent.`)))}setFilter(i,r,n={}){this._checkLoaded();const o=this.getLayer(i);if(o){if(!t(o.filter,r))return null==r?(o.filter=void 0,void this._updateLayer(o)):void(this._validate(e.validateFilter,`layers.${o.id}.filter`,r,{layerType:o.type},n)||(o.filter=e.clone$1(r),this._updateLayer(o)))}else this.fire(new e.ErrorEvent(new Error(`The layer '${i}' does not exist in the map's style and cannot be filtered.`)))}getFilter(t){const i=this.getLayer(t);return i&&e.clone$1(i.filter)}setLayoutProperty(i,r,n,o={}){this._checkLoaded();const s=this.getLayer(i);s?t(s.getLayoutProperty(r),n)||(s.setLayoutProperty(r,n,o),this._updateLayer(s)):this.fire(new e.ErrorEvent(new Error(`The layer '${i}' does not exist in the map's style and cannot be styled.`)))}getLayoutProperty(t,i){const r=this.getLayer(t);if(r)return r.getLayoutProperty(i);this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style.`)))}setPaintProperty(i,r,n,o={}){this._checkLoaded();const s=this.getLayer(i);s?t(s.getPaintProperty(r),n)||(s.setPaintProperty(r,n,o)&&this._updateLayer(s),this._changed=!0,this._updatedPaintProps[i]=!0):this.fire(new e.ErrorEvent(new Error(`The layer '${i}' does not exist in the map's style and cannot be styled.`)))}getPaintProperty(e,t){const i=this.getLayer(e);return i&&i.getPaintProperty(t)}setFeatureState(t,i){this._checkLoaded();const r=t.source,n=t.sourceLayer,o=this.getSource(r);if(!o)return void this.fire(new e.ErrorEvent(new Error(`The source '${r}' does not exist in the map's style.`)));const s=o.type;if("geojson"===s&&n)return void this.fire(new e.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter.")));if("vector"===s&&!n)return void this.fire(new e.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));void 0===t.id&&this.fire(new e.ErrorEvent(new Error("The feature id parameter must be provided.")));const a=this._getSourceCaches(r);for(const e of a)e.setFeatureState(n,t.id,i)}removeFeatureState(t,i){this._checkLoaded();const r=t.source,n=this.getSource(r);if(!n)return void this.fire(new e.ErrorEvent(new Error(`The source '${r}' does not exist in the map's style.`)));const o=n.type,s="vector"===o?t.sourceLayer:void 0;if("vector"===o&&!s)return void this.fire(new e.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));if(i&&"string"!=typeof t.id&&"number"!=typeof t.id)return void this.fire(new e.ErrorEvent(new Error("A feature id is required to remove its specific state property.")));const a=this._getSourceCaches(r);for(const e of a)e.removeFeatureState(s,t.id,i)}getFeatureState(t){this._checkLoaded();const i=t.source,r=t.sourceLayer,n=this.getSource(i);if(n){if("vector"!==n.type||r)return void 0===t.id&&this.fire(new e.ErrorEvent(new Error("The feature id parameter must be provided."))),this._getSourceCaches(i)[0].getFeatureState(r,t.id);this.fire(new e.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new e.ErrorEvent(new Error(`The source '${i}' does not exist in the map's style.`)))}getTransition(){return e.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){const t={};for(const e in this._sourceCaches){const i=this._sourceCaches[e].getSource();t[i.id]||(t[i.id]=i.serialize())}return e.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,terrain:this.getTerrain()||void 0,fog:this.stylesheet.fog,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,projection:this.stylesheet.projection,sources:t,layers:this._serializeLayers(this._order)},(e=>void 0!==e))}_updateLayer(e){this._updatedLayers[e.id]=!0;const t=this._getLayerSourceCache(e);e.source&&!this._updatedSources[e.source]&&t&&"raster"!==t.getSource().type&&(this._updatedSources[e.source]="reload",t.pause()),this._changed=!0,e.invalidateCompiledFilter()}_flattenAndSortRenderedFeatures(e){const t=e=>"fill-extrusion"===this._layers[e].type,i={},r=[];for(let n=this._order.length-1;n>=0;n--){const o=this._order[n];if(t(o)){i[o]=n;for(const t of e){const e=t[o];if(e)for(const t of e)r.push(t)}}}r.sort(((e,t)=>t.intersectionZ-e.intersectionZ));const n=[];for(let o=this._order.length-1;o>=0;o--){const s=this._order[o];if(t(s))for(let e=r.length-1;e>=0;e--){const t=r[e].feature;if(i[t.layer.id]{const t=this.getLayer(e);return t&&t.is3D()})):this.has3DLayers(),a=P.createFromScreenPoints(t,r);for(const e in this._sourceCaches){const t=this._sourceCaches[e].getSource().id;i.layers&&!n[t]||o.push(ke(this._sourceCaches[e],this._layers,this._serializedLayers,a,i,r,s,!!this.map._showQueryGeometry))}return this.placement&&o.push(function(e,t,i,r,n,o,s){const a={},l=o.queryRenderedSymbols(r),c=[];for(const e of Object.keys(l).map(Number))c.push(s[e]);c.sort(Le);for(const i of c){const r=i.featureIndex.lookupSymbolFeatures(l[i.bucketInstanceId],t,i.bucketIndex,i.sourceLayerIndex,n.filter,n.layers,n.availableImages,e);for(const e in r){const t=a[e]=a[e]||[],n=r[e];n.sort(((e,t)=>{const r=i.featureSortOrder;if(r){const i=r.indexOf(e.featureIndex);return r.indexOf(t.featureIndex)-i}return t.featureIndex-e.featureIndex}));for(const e of n)t.push(e)}}for(const t in a)a[t].forEach((r=>{const n=r.feature,o=i(e[t]);if(!o)return;const s=o.getFeatureState(n.layer["source-layer"],n.id);n.source=n.layer.source,n.layer["source-layer"]&&(n.sourceLayer=n.layer["source-layer"]),n.state=s}));return a}(this._layers,this._serializedLayers,this._getLayerSourceCache.bind(this),a.screenGeometry,i,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(o)}querySourceFeatures(t,i){i&&i.filter&&this._validate(e.validateFilter,"querySourceFeatures.filter",i.filter,null,i);const r=this._getSourceCaches(t);let n=[];for(const e of r)n=n.concat(De(e,i));return n}addSourceType(e,t,i){return Yt.getSourceType(e)?i(new Error(`A source type called "${e}" already exists.`)):(Yt.setSourceType(e,t),t.workerSourceURL?void this.dispatcher.broadcast("loadWorkerSource",{name:e,url:t.workerSourceURL},i):i(null,null))}getLight(){return this.light.getLight()}setLight(e,i={}){this._checkLoaded();const r=this.light.getLight();let n=!1;for(const i in e)if(!t(e[i],r[i])){n=!0;break}if(!n)return;const o=this._setTransitionParameters({duration:300,delay:0});this.light.setLight(e,i),this.light.updateTransitions(o)}getTerrain(){return this.terrain&&1===this.terrain.drapeRenderMode?this.terrain.get():null}setTerrainForDraping(){this.setTerrain({source:"",exaggeration:0},0)}setTerrain(i,r=1){if(this._checkLoaded(),!i)return delete this.terrain,delete this.stylesheet.terrain,this.dispatcher.broadcast("enableTerrain",!1),this._force3DLayerUpdate(),void(this._markersNeedUpdate=!0);let n=i;if(1===r){if("object"==typeof n.source){const t="terrain-dem-src";this.addSource(t,n.source),n=e.clone$1(n),n=e.extend(n,{source:t})}if(this._validate(e.validateTerrain,"terrain",n))return}if(!this.terrain||this.terrain&&r!==this.terrain.drapeRenderMode){if(!n)return;this._createTerrain(n,r)}else{const i=this.terrain,r=i.get();for(const t of Object.keys(e.spec.terrain))!n.hasOwnProperty(t)&&e.spec.terrain[t].default&&(n[t]=e.spec.terrain[t].default);for(const e in n)if(!t(n[e],r[e])){i.set(n),this.stylesheet.terrain=n;const e=this._setTransitionParameters({duration:0});i.updateTransitions(e);break}}this._updateDrapeFirstLayers(),this._markersNeedUpdate=!0}_createFog(e){const t=this.fog=new I(e,this.map.transform);this.stylesheet.fog=e;const i=this._setTransitionParameters({duration:0});t.updateTransitions(i)}_updateMarkersOpacity(){0!==this.map._markers.length&&this.map._requestDomTask((()=>{for(const e of this.map._markers)e._evaluateOpacity()}))}getFog(){return this.fog?this.fog.get():null}setFog(e){if(this._checkLoaded(),!e)return delete this.fog,delete this.stylesheet.fog,void(this._markersNeedUpdate=!0);if(this.fog){const i=this.fog,r=i.get();0===Object.keys(e).length&&i.set(e);for(const n in e)if(!t(e[n],r[n])){i.set(e),this.stylesheet.fog=e;const t=this._setTransitionParameters({duration:0});i.updateTransitions(t);break}}else this._createFog(e);this._markersNeedUpdate=!0}_setTransitionParameters(t){return{now:e.exported.now(),transition:e.extend(t,this.stylesheet.transition)}}_updateDrapeFirstLayers(){if(!this.map._optimizeForTerrain||!this.terrain)return;const e=this._order.filter((e=>this.isLayerDraped(this._layers[e]))),t=this._order.filter((e=>!this.isLayerDraped(this._layers[e])));this._drapedFirstOrder=[],this._drapedFirstOrder.push(...e),this._drapedFirstOrder.push(...t)}_createTerrain(e,t){const i=this.terrain=new E(e,t);this.stylesheet.terrain=e,this.dispatcher.broadcast("enableTerrain",!this.terrainSetForDrapingOnly()),this._force3DLayerUpdate();const r=this._setTransitionParameters({duration:0});i.updateTransitions(r)}_force3DLayerUpdate(){for(const e in this._layers){const t=this._layers[e];"fill-extrusion"===t.type&&this._updateLayer(t)}}_forceSymbolLayerUpdate(){for(const e in this._layers){const t=this._layers[e];"symbol"===t.type&&this._updateLayer(t)}}_validate(t,i,r,n,o={}){return(!o||!1!==o.validate)&&qt(this,t.call(e.validateStyle,e.extend({key:i,style:this.serialize(),value:r,styleSpec:e.spec},n)))}_remove(){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),e.evented.off("pluginStateChange",this._rtlTextPluginCallback);for(const e in this._layers)this._layers[e].setEventedParent(null);for(const e in this._sourceCaches)this._sourceCaches[e].clearTiles(),this._sourceCaches[e].setEventedParent(null);this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove()}_clearSource(e){const t=this._getSourceCaches(e);for(const e of t)e.clearTiles()}_reloadSource(e){const t=this._getSourceCaches(e);for(const e of t)e.resume(),e.reload()}_reloadSources(){for(const e of this._getSources())e.reload&&e.reload()}_updateSources(e){for(const t in this._sourceCaches)this._sourceCaches[t].update(e)}_generateCollisionBoxes(){for(const e in this._sourceCaches){const t=this._sourceCaches[e];t.resume(),t.reload()}}_updatePlacement(t,i,r,n,o=!1){let s=!1,a=!1;const l={};for(const e of this._order){const i=this._layers[e];if("symbol"!==i.type)continue;if(!l[i.source]){const e=this._getLayerSourceCache(i);if(!e)continue;l[i.source]=e.getRenderableIds(!0).map((t=>e.getTileByID(t))).sort(((e,t)=>t.tileID.overscaledZ-e.tileID.overscaledZ||(e.tileID.isLessThan(t.tileID)?-1:1)))}const r=this.crossTileSymbolIndex.addLayer(i,l[i.source],t.center.lng,t.projection);s=s||r}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),o=o||this._layerOrderChanged||0===r,this._layerOrderChanged&&this.fire(new e.Event("neworder")),(o||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(e.exported.now(),t.zoom))&&(this.pauseablePlacement=new Vt(t,this._order,o,i,r,n,this.placement,this.fog&&t.projection.supportsFog?this.fog.state:null),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,l),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(e.exported.now()),a=!0),s&&this.pauseablePlacement.placement.setStale()),a||s)for(const e of this._order){const t=this._layers[e];"symbol"===t.type&&this.placement.updateLayerOpacities(t,l[t.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(e.exported.now())}_releaseSymbolFadeTiles(){for(const e in this._sourceCaches)this._sourceCaches[e].releaseSymbolFadeTiles()}getImages(e,t,i){this.imageManager.getImages(t.icons,i),this._updateTilesForChangedImages();const r=e=>{e&&e.setDependencies(t.tileID.key,t.type,t.icons)};r(this._otherSourceCaches[t.source]),r(this._symbolSourceCaches[t.source])}getGlyphs(e,t,i){this.glyphManager.getGlyphs(t.stacks,i)}getResource(t,i,r){return e.makeRequest(i,r)}_getSourceCache(e){return this._otherSourceCaches[e]}_getLayerSourceCache(e){return"symbol"===e.type?this._symbolSourceCaches[e.source]:this._otherSourceCaches[e.source]}_getSourceCaches(e){const t=[];return this._otherSourceCaches[e]&&t.push(this._otherSourceCaches[e]),this._symbolSourceCaches[e]&&t.push(this._symbolSourceCaches[e]),t}_isSourceCacheLoaded(t){const i=this._getSourceCaches(t);return 0===i.length?(this.fire(new e.ErrorEvent(new Error(`There is no source with ID '${t}'`))),!1):i.every((e=>e.loaded()))}has3DLayers(){return this._num3DLayers>0}hasSymbolLayers(){return this._numSymbolLayers>0}hasCircleLayers(){return this._numCircleLayers>0}_clearWorkerCaches(){this.dispatcher.broadcast("clearCaches")}destroy(){this._clearWorkerCaches(),this.terrainSetForDrapingOnly()&&(delete this.terrain,delete this.stylesheet.terrain)}}Yt.getSourceType=function(e){return Ce[e]},Yt.setSourceType=function(e,t){Ce[e]=t},Yt.registerForPluginStateChange=e.registerForPluginStateChange;var Jt="\n#define EPSILON 0.0000001\n#define PI 3.141592653589793\n#define EXTENT 8192.0\n#define HALF_PI PI/2.0\n#define QUARTER_PI PI/4.0\n#define RAD_TO_DEG 180.0/PI\n#define DEG_TO_RAD PI/180.0\n#define GLOBE_RADIUS EXTENT/PI/2.0",Qt="attribute highp vec3 a_pos_3f;uniform lowp mat4 u_matrix;varying highp vec3 v_uv;void main() {const mat3 half_neg_pi_around_x=mat3(1.0,0.0, 0.0,0.0,0.0,-1.0,0.0,1.0, 0.0);v_uv=half_neg_pi_around_x*a_pos_3f;vec4 pos=u_matrix*vec4(a_pos_3f,1.0);gl_Position=pos.xyww;}",ei="\n#define ELEVATION_SCALE 7.0\n#define ELEVATION_OFFSET 450.0\n#ifdef PROJECTION_GLOBE_VIEW\nuniform vec3 u_tile_tl_up;uniform vec3 u_tile_tr_up;uniform vec3 u_tile_br_up;uniform vec3 u_tile_bl_up;uniform float u_tile_up_scale;vec3 elevationVector(vec2 pos) {vec2 uv=pos/EXTENT;vec3 up=normalize(mix(\nmix(u_tile_tl_up,u_tile_tr_up,uv.xxx),mix(u_tile_bl_up,u_tile_br_up,uv.xxx),uv.yyy));return up*u_tile_up_scale;}\n#else\nvec3 elevationVector(vec2 pos) { return vec3(0,0,1); }\n#endif\nconst float skirtOffset=24575.0;vec3 decomposeToPosAndSkirt(vec2 posWithComposedSkirt)\n{float skirt=float(posWithComposedSkirt.x >=skirtOffset);vec2 pos=posWithComposedSkirt-vec2(skirt*skirtOffset,0.0);return vec3(pos,skirt);}\n#ifdef TERRAIN\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\nuniform highp sampler2D u_dem;uniform highp sampler2D u_dem_prev;\n#else\nuniform sampler2D u_dem;uniform sampler2D u_dem_prev;\n#endif\nuniform vec4 u_dem_unpack;uniform vec2 u_dem_tl;uniform vec2 u_dem_tl_prev;uniform float u_dem_scale;uniform float u_dem_scale_prev;uniform float u_dem_size;uniform float u_dem_lerp;uniform float u_exaggeration;uniform float u_meter_to_dem;uniform mat4 u_label_plane_matrix_inv;uniform sampler2D u_depth;uniform vec2 u_depth_size_inv;vec4 tileUvToDemSample(vec2 uv,float dem_size,float dem_scale,vec2 dem_tl) {vec2 pos=dem_size*(uv*dem_scale+dem_tl)+1.0;vec2 f=fract(pos);return vec4((pos-f+0.5)/(dem_size+2.0),f);}float decodeElevation(vec4 v) {return dot(vec4(v.xyz*255.0,-1.0),u_dem_unpack);}float currentElevation(vec2 apos) {\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\nvec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale+u_dem_tl)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture2D(u_dem,pos).a;\n#else\nfloat dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale,u_dem_tl);vec2 pos=r.xy;vec2 f=r.zw;float tl=decodeElevation(texture2D(u_dem,pos));\n#ifdef TERRAIN_DEM_NEAREST_FILTER\nreturn u_exaggeration*tl;\n#endif\nfloat tr=decodeElevation(texture2D(u_dem,pos+vec2(dd,0.0)));float bl=decodeElevation(texture2D(u_dem,pos+vec2(0.0,dd)));float br=decodeElevation(texture2D(u_dem,pos+vec2(dd,dd)));return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);\n#endif\n}float prevElevation(vec2 apos) {\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\nvec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale_prev+u_dem_tl_prev)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture2D(u_dem_prev,pos).a;\n#else\nfloat dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale_prev,u_dem_tl_prev);vec2 pos=r.xy;vec2 f=r.zw;float tl=decodeElevation(texture2D(u_dem_prev,pos));float tr=decodeElevation(texture2D(u_dem_prev,pos+vec2(dd,0.0)));float bl=decodeElevation(texture2D(u_dem_prev,pos+vec2(0.0,dd)));float br=decodeElevation(texture2D(u_dem_prev,pos+vec2(dd,dd)));return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);\n#endif\n}\n#ifdef TERRAIN_VERTEX_MORPHING\nfloat elevation(vec2 apos) {\n#ifdef ZERO_EXAGGERATION\nreturn 0.0;\n#endif\nfloat nextElevation=currentElevation(apos);float prevElevation=prevElevation(apos);return mix(prevElevation,nextElevation,u_dem_lerp);}\n#else\nfloat elevation(vec2 apos) {\n#ifdef ZERO_EXAGGERATION\nreturn 0.0;\n#endif\nreturn currentElevation(apos);}\n#endif\nhighp float unpack_depth(highp vec4 rgba_depth)\n{const highp vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(rgba_depth,bit_shift)*2.0-1.0;}bool isOccluded(vec4 frag) {vec3 coord=frag.xyz/frag.w;float depth=unpack_depth(texture2D(u_depth,(coord.xy+1.0)*0.5));return coord.z > depth+0.0005;}float occlusionFade(vec4 frag) {vec3 coord=frag.xyz/frag.w;vec3 df=vec3(5.0*u_depth_size_inv,0.0);vec2 uv=0.5*coord.xy+0.5;vec4 depth=vec4(\nunpack_depth(texture2D(u_depth,uv-df.xz)),unpack_depth(texture2D(u_depth,uv+df.xz)),unpack_depth(texture2D(u_depth,uv-df.zy)),unpack_depth(texture2D(u_depth,uv+df.zy))\n);return dot(vec4(0.25),vec4(1.0)-clamp(300.0*(vec4(coord.z-0.001)-depth),0.0,1.0));}vec4 fourSample(vec2 pos,vec2 off) {\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\nfloat tl=texture2D(u_dem,pos).a;float tr=texture2D(u_dem,pos+vec2(off.x,0.0)).a;float bl=texture2D(u_dem,pos+vec2(0.0,off.y)).a;float br=texture2D(u_dem,pos+off).a;\n#else\nvec4 demtl=vec4(texture2D(u_dem,pos).xyz*255.0,-1.0);float tl=dot(demtl,u_dem_unpack);vec4 demtr=vec4(texture2D(u_dem,pos+vec2(off.x,0.0)).xyz*255.0,-1.0);float tr=dot(demtr,u_dem_unpack);vec4 dembl=vec4(texture2D(u_dem,pos+vec2(0.0,off.y)).xyz*255.0,-1.0);float bl=dot(dembl,u_dem_unpack);vec4 dembr=vec4(texture2D(u_dem,pos+off).xyz*255.0,-1.0);float br=dot(dembr,u_dem_unpack);\n#endif\nreturn vec4(tl,tr,bl,br);}float flatElevation(vec2 pack) {vec2 apos=floor(pack/8.0);vec2 span=10.0*(pack-apos*8.0);vec2 uvTex=(apos-vec2(1.0,1.0))/8190.0;float size=u_dem_size+2.0;float dd=1.0/size;vec2 pos=u_dem_size*(uvTex*u_dem_scale+u_dem_tl)+1.0;vec2 f=fract(pos);pos=(pos-f+0.5)*dd;vec4 h=fourSample(pos,vec2(dd));float z=mix(mix(h.x,h.y,f.x),mix(h.z,h.w,f.x),f.y);vec2 w=floor(0.5*(span*u_meter_to_dem-1.0));vec2 d=dd*w;h=fourSample(pos-d,2.0*d+vec2(dd));vec4 diff=abs(h.xzxy-h.ywzw);vec2 slope=min(vec2(0.25),u_meter_to_dem*0.5*(diff.xz+diff.yw)/(2.0*w+vec2(1.0)));vec2 fix=slope*span;float base=z+max(fix.x,fix.y);return u_exaggeration*base;}float elevationFromUint16(float word) {return u_exaggeration*(word/ELEVATION_SCALE-ELEVATION_OFFSET);}\n#else\nfloat elevation(vec2 pos) { return 0.0; }bool isOccluded(vec4 frag) { return false; }float occlusionFade(vec4 frag) { return 1.0; }\n#endif",ti="#ifdef FOG\nuniform mediump vec4 u_fog_color;uniform mediump vec2 u_fog_range;uniform mediump float u_fog_horizon_blend;uniform mediump mat4 u_fog_matrix;varying vec3 v_fog_pos;float fog_range(float depth) {return (depth-u_fog_range[0])/(u_fog_range[1]-u_fog_range[0]);}float fog_horizon_blending(vec3 camera_dir) {float t=max(0.0,camera_dir.z/u_fog_horizon_blend);return u_fog_color.a*exp(-3.0*t*t);}float fog_opacity(float t) {const float decay=6.0;float falloff=1.0-min(1.0,exp(-decay*t));falloff*=falloff*falloff;return u_fog_color.a*min(1.0,1.00747*falloff);}vec3 fog_position(vec3 pos) {return (u_fog_matrix*vec4(pos,1.0)).xyz;}vec3 fog_position(vec2 pos) {return fog_position(vec3(pos,0.0));}float fog(vec3 pos) {float depth=length(pos);float opacity=fog_opacity(fog_range(depth));return opacity*fog_horizon_blending(pos/depth);}\n#endif",ii="#ifdef FOG\nuniform mediump vec4 u_fog_color;uniform mediump vec2 u_fog_range;uniform mediump float u_fog_horizon_blend;uniform mediump float u_fog_temporal_offset;varying vec3 v_fog_pos;uniform highp vec3 u_frustum_tl;uniform highp vec3 u_frustum_tr;uniform highp vec3 u_frustum_br;uniform highp vec3 u_frustum_bl;uniform highp vec3 u_globe_pos;uniform highp float u_globe_radius;uniform highp vec2 u_viewport;uniform float u_globe_transition;uniform int u_is_globe;float fog_range(float depth) {return (depth-u_fog_range[0])/(u_fog_range[1]-u_fog_range[0]);}float fog_horizon_blending(vec3 camera_dir) {float t=max(0.0,camera_dir.z/u_fog_horizon_blend);return u_fog_color.a*exp(-3.0*t*t);}float fog_opacity(float t) {const float decay=6.0;float falloff=1.0-min(1.0,exp(-decay*t));falloff*=falloff*falloff;return u_fog_color.a*min(1.0,1.00747*falloff);}float globe_glow_progress() {highp vec2 uv=gl_FragCoord.xy/u_viewport;highp vec3 ray_dir=mix(\nmix(u_frustum_tl,u_frustum_tr,uv.x),mix(u_frustum_bl,u_frustum_br,uv.x),1.0-uv.y);highp vec3 dir=normalize(ray_dir);highp vec3 closest_point=dot(u_globe_pos,dir)*dir;highp float sdf=length(closest_point-u_globe_pos)/u_globe_radius;return sdf+PI*0.5;}float fog_opacity(vec3 pos) {float depth=length(pos);return fog_opacity(fog_range(depth));}vec3 fog_apply(vec3 color,vec3 pos) {float depth=length(pos);float opacity;if (u_is_globe==1) {float glow_progress=globe_glow_progress();float t=mix(glow_progress,depth,u_globe_transition);opacity=fog_opacity(fog_range(t));} else {opacity=fog_opacity(fog_range(depth));opacity*=fog_horizon_blending(pos/depth);}return mix(color,u_fog_color.rgb,opacity);}vec4 fog_apply_from_vert(vec4 color,float fog_opac) {float alpha=EPSILON+color.a;color.rgb=mix(color.rgb/alpha,u_fog_color.rgb,fog_opac)*alpha;return color;}vec3 fog_apply_sky_gradient(vec3 camera_ray,vec3 sky_color) {float horizon_blend=fog_horizon_blending(normalize(camera_ray));return mix(sky_color,u_fog_color.rgb,horizon_blend);}vec4 fog_apply_premultiplied(vec4 color,vec3 pos) {float alpha=EPSILON+color.a;color.rgb=fog_apply(color.rgb/alpha,pos)*alpha;return color;}vec3 fog_dither(vec3 color) {vec2 dither_seed=gl_FragCoord.xy+u_fog_temporal_offset;return dither(color,dither_seed);}vec4 fog_dither(vec4 color) {return vec4(fog_dither(color.rgb),color.a);}\n#endif";let ri={},ni={};const oi=[];hi(Jt,oi),hi(ei,oi),hi(ti,oi),hi(ii,oi),ri=ui("",ei),ni=ui(ii,ti);const si=ui("\n#if __VERSION__ >=300\n#define varying in\n#define gl_FragColor glFragColor\n#define texture2D texture\n#define textureCube texture\nout vec4 glFragColor;\n#endif\nhighp vec3 hash(highp vec2 p) {highp vec3 p3=fract(p.xyx*vec3(443.8975,397.2973,491.1871));p3+=dot(p3,p3.yxz+19.19);return fract((p3.xxy+p3.yzz)*p3.zyx);}vec3 dither(vec3 color,highp vec2 seed) {vec3 rnd=hash(seed)+hash(seed+0.59374)-0.5;return color+rnd/255.0;}highp float unpack_depth(highp vec4 rgba_depth)\n{const highp vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(rgba_depth,bit_shift)*2.0-1.0;}highp vec4 pack_depth(highp float ndc_z) {highp float depth=ndc_z*0.5+0.5;const highp vec4 bit_shift=vec4(255.0*255.0*255.0,255.0*255.0,255.0,1.0);const highp vec4 bit_mask =vec4(0.0,1.0/255.0,1.0/255.0,1.0/255.0);highp vec4 res=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;}","\n#if __VERSION__ >=300\n#define attribute in\n#define varying out\n#define texture2D texture\n#endif\nfloat wrap(float n,float min,float max) {float d=max-min;float w=mod(mod(n-min,d)+d,d)+min;return (w==min) ? max : w;}\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 mercator_tile_position(mat4 matrix,vec2 tile_anchor,vec3 tile_id,vec2 mercator_center) {\n#ifndef PROJECTED_POS_ON_VIEWPORT\nfloat tiles=tile_id.z;vec2 mercator=(tile_anchor/EXTENT+tile_id.xy)/tiles;mercator-=mercator_center;mercator.x=wrap(mercator.x,-0.5,0.5);vec4 mercator_tile=vec4(mercator.xy*EXTENT,EXTENT/(2.0*PI),1.0);mercator_tile=matrix*mercator_tile;return mercator_tile.xyz;\n#else\nreturn vec3(0.0);\n#endif\n}vec3 mix_globe_mercator(vec3 globe,vec3 mercator,float t) {return mix(globe,mercator,t);}mat3 globe_mercator_surface_vectors(vec3 pos_normal,vec3 up_dir,float zoom_transition) {vec3 normal=zoom_transition==0.0 ? pos_normal : normalize(mix(pos_normal,up_dir,zoom_transition));vec3 xAxis=normalize(vec3(normal.z,0.0,-normal.x));vec3 yAxis=normalize(cross(normal,xAxis));return mat3(xAxis,yAxis,normal);}\n#endif\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(\nunpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}const vec4 AWAY=vec4(-1000.0,-1000.0,-1000.0,1);//Normalized device coordinate that is not rendered."),ai=Jt,li="\n#ifdef GL_ES\nprecision mediump float;\n#else\n\n#if !defined(lowp)\n#define lowp\n#endif\n\n#if !defined(mediump)\n#define mediump\n#endif\n\n#if !defined(highp)\n#define highp\n#endif\n\n#endif";var ci={background:ui("uniform vec4 u_color;uniform float u_opacity;\n#ifdef LIGHTING_3D_MODE\nvarying vec4 v_color;\n#endif\nvoid main() {vec4 out_color;\n#ifdef LIGHTING_3D_MODE\nout_color=v_color;\n#else\nout_color=u_color;\n#endif\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;\n#ifdef LIGHTING_3D_MODE\nuniform vec4 u_color;varying vec4 v_color;\n#endif\nvoid main() {gl_Position=u_matrix*vec4(a_pos,0,1);\n#ifdef LIGHTING_3D_MODE\nv_color=apply_lighting(u_color);\n#endif\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),backgroundPattern:ui("uniform vec2 u_pattern_tl;uniform vec2 u_pattern_br;uniform vec2 u_texsize;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos;void main() {vec2 imagecoord=mod(v_pos,1.0);vec2 pos=mix(u_pattern_tl/u_texsize,u_pattern_br/u_texsize,imagecoord);vec4 out_color=texture2D(u_image,pos);\n#ifdef LIGHTING_3D_MODE\nout_color=apply_lighting(out_color);\n#endif\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pattern_size;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_pattern_size,u_tile_units_to_pixels,a_pos);\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),circle:ui("varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(\nantialiased_blur,0.0,extrude_length-radius/(radius+stroke_width)\n);vec4 out_color=mix(color*opacity,stroke_color*stroke_opacity,color_t);\n#ifdef LIGHTING_3D_MODE\nout_color=apply_lighting(out_color);\n#endif\n#ifdef FOG\nout_color=fog_apply_premultiplied(out_color,v_fog_pos);\n#endif\ngl_FragColor=out_color*(v_visibility*opacity_t);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","#define NUM_VISIBILITY_RINGS 2\n#define INV_SQRT2 0.70710678\n#define ELEVATION_BIAS 0.0001\n#define NUM_SAMPLES_PER_RING 16\nuniform mat4 u_matrix;uniform mat2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;\n#endif\nvarying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvec2 calc_offset(vec2 extrusion,float radius,float stroke_width, float view_scale) {return extrusion*(radius+stroke_width)*u_extrude_scale*view_scale;}float cantilevered_elevation(vec2 pos,float radius,float stroke_width,float view_scale) {vec2 c1=pos+calc_offset(vec2(-1,-1),radius,stroke_width,view_scale);vec2 c2=pos+calc_offset(vec2(1,-1),radius,stroke_width,view_scale);vec2 c3=pos+calc_offset(vec2(1,1),radius,stroke_width,view_scale);vec2 c4=pos+calc_offset(vec2(-1,1),radius,stroke_width,view_scale);float h1=elevation(c1)+ELEVATION_BIAS;float h2=elevation(c2)+ELEVATION_BIAS;float h3=elevation(c3)+ELEVATION_BIAS;float h4=elevation(c4)+ELEVATION_BIAS;return max(h4,max(h3,max(h1,h2)));}float circle_elevation(vec2 pos) {\n#if defined(TERRAIN)\nreturn elevation(pos)+ELEVATION_BIAS;\n#else\nreturn 0.0;\n#endif\n}vec4 project_vertex(vec2 extrusion,vec4 world_center,vec4 projected_center,float radius,float stroke_width, float view_scale,mat3 surface_vectors) {vec2 sample_offset=calc_offset(extrusion,radius,stroke_width,view_scale);\n#ifdef PITCH_WITH_MAP\n#ifdef PROJECTION_GLOBE_VIEW\nreturn u_matrix*( world_center+vec4(sample_offset.x*surface_vectors[0]+sample_offset.y*surface_vectors[1],0) );\n#else\nreturn u_matrix*( world_center+vec4(sample_offset,0,0) );\n#endif\n#else\nreturn projected_center+vec4(sample_offset,0,0);\n#endif\n}float get_sample_step() {\n#ifdef PITCH_WITH_MAP\nreturn 2.0*PI/float(NUM_SAMPLES_PER_RING);\n#else\nreturn PI/float(NUM_SAMPLES_PER_RING);\n#endif\n}void main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);vec4 world_center;mat3 surface_vectors;\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 pos_normal_3=a_pos_normal_3/16384.0;surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=extrude.x*surface_vectors[0]+extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(circle_center)*circle_elevation(circle_center);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*circle_elevation(circle_center);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,circle_center,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;vec3 pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);world_center=vec4(pos,1);\n#else \nsurface_vectors=mat3(1.0);float height=circle_elevation(circle_center);world_center=vec4(circle_center,height,1);\n#endif\nvec4 projected_center=u_matrix*world_center;float view_scale=0.0;\n#ifdef PITCH_WITH_MAP\n#ifdef SCALE_WITH_MAP\nview_scale=1.0;\n#else\nview_scale=projected_center.w/u_camera_to_center_distance;\n#endif\n#else\n#ifdef SCALE_WITH_MAP\nview_scale=u_camera_to_center_distance;\n#else\nview_scale=projected_center.w;\n#endif\n#endif\ngl_Position=project_vertex(extrude,world_center,projected_center,radius,stroke_width,view_scale,surface_vectors);float visibility=0.0;\n#ifdef TERRAIN\nfloat step=get_sample_step();vec4 occlusion_world_center;vec4 occlusion_projected_center;\n#ifdef PITCH_WITH_MAP\nfloat cantilevered_height=cantilevered_elevation(circle_center,radius,stroke_width,view_scale);occlusion_world_center=vec4(circle_center,cantilevered_height,1);occlusion_projected_center=u_matrix*occlusion_world_center;\n#else\nocclusion_world_center=world_center;occlusion_projected_center=projected_center;\n#endif\nfor(int ring=0; ring < NUM_VISIBILITY_RINGS; ring++) {float scale=(float(ring)+1.0)/float(NUM_VISIBILITY_RINGS);for(int i=0; i < NUM_SAMPLES_PER_RING; i++) {vec2 extrusion=vec2(cos(step*float(i)),-sin(step*float(i)))*scale;vec4 frag_pos=project_vertex(extrusion,occlusion_world_center,occlusion_projected_center,radius,stroke_width,view_scale,surface_vectors);visibility+=float(!isOccluded(frag_pos));}}visibility/=float(NUM_VISIBILITY_RINGS)*float(NUM_SAMPLES_PER_RING);\n#else\nvisibility=1.0;\n#endif\n#ifdef PROJECTION_GLOBE_VIEW\nvisibility=1.0;\n#endif\nv_visibility=visibility;lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);\n#ifdef FOG\nv_fog_pos=fog_position(world_center.xyz);\n#endif\n}"),clippingMask:ui("void main() {gl_FragColor=vec4(1.0);}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),heatmap:ui("uniform highp float u_intensity;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\n#ifdef FOG\nif (u_is_globe==0) {gl_FragColor.r*=pow(1.0-fog_opacity(v_fog_pos),2.0);}\n#endif\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;\n#endif\nvarying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 tilePos=floor(a_pos*0.5);vec3 pos;\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 pos_normal_3=a_pos_normal_3/16384.0;mat3 surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=extrude.x*surface_vectors[0]+extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(tilePos)*elevation(tilePos);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*elevation(tilePos);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,tilePos,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\n#else\npos=vec3(tilePos+extrude,elevation(tilePos));\n#endif\ngl_Position=u_matrix*vec4(pos,1);\n#ifdef FOG\nv_fog_pos=fog_position(pos);\n#endif\n}"),heatmapTexture:ui("uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(0.0);\n#endif\n}","attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=vec4(a_pos,0,1);v_pos=a_pos*0.5+0.5;}"),collisionBox:ui("varying float v_placed;varying float v_notUsed;void main() {vec4 red =vec4(1.0,0.0,0.0,1.0);vec4 blue=vec4(0.0,0.0,1.0,0.5);gl_FragColor =mix(red,blue,step(0.5,v_placed))*0.5;gl_FragColor*=mix(1.0,0.1,step(0.5,v_notUsed));}","attribute vec3 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;attribute float a_size_scale;attribute vec2 a_padding;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_pos+elevationVector(a_anchor_pos)*elevation(a_anchor_pos),1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(\n0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,1.5);gl_Position=projectedPoint;gl_Position.xy+=(a_extrude*a_size_scale+a_shift+a_padding)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:ui("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos_2f;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos_2f;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(\nmix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(\n0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),debug:ui("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_pos_3;\n#endif\nvarying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {float h=elevation(a_pos);v_uv=a_pos/8192.0;\n#ifdef PROJECTION_GLOBE_VIEW\ngl_Position=u_matrix*vec4(a_pos_3+elevationVector(a_pos)*h,1);\n#else\ngl_Position=u_matrix*vec4(a_pos*u_overlay_scale,h,1);\n#endif\n}"),fill:ui("#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\nvec4 out_color=color;\n#ifdef LIGHTING_3D_MODE\nout_color=apply_lighting(out_color);\n#endif\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),fillOutline:ui("varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=outline_color;\n#ifdef LIGHTING_3D_MODE\nout_color=apply_lighting(out_color);\n#endif\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),fillOutlinePattern:ui("uniform vec2 u_texsize;uniform sampler2D u_image;varying vec2 v_pos;varying vec2 v_pos_world;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern\nvec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec2 imagecoord=mod(v_pos,1.0);vec2 pos=mix(pattern_tl/u_texsize,pattern_br/u_texsize,imagecoord);float dist=length(v_pos_world-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=texture2D(u_image,pos);\n#ifdef LIGHTING_3D_MODE\nout_color=apply_lighting(out_color);\n#endif\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos;varying vec2 v_pos_world;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern\n#pragma mapbox: define lowp float pixel_ratio\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern\n#pragma mapbox: initialize lowp float pixel_ratio\nvec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size=(pattern_br-pattern_tl)/pixel_ratio;v_pos=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,display_size,u_tile_units_to_pixels,a_pos);v_pos_world=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),fillPattern:ui("uniform vec2 u_texsize;uniform sampler2D u_image;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern\nvec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec2 imagecoord=mod(v_pos,1.0);vec2 pos=mix(pattern_tl/u_texsize,pattern_br/u_texsize,imagecoord);vec4 out_color=texture2D(u_image,pos);\n#ifdef LIGHTING_3D_MODE\nout_color=apply_lighting(out_color);\n#endif\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern\n#pragma mapbox: define lowp float pixel_ratio\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern\n#pragma mapbox: initialize lowp float pixel_ratio\nvec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec2 display_size=(pattern_br-pattern_tl)/pixel_ratio;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,display_size,u_tile_units_to_pixels,a_pos);\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),fillExtrusion:ui("varying vec4 v_color;\n#ifdef RENDER_SHADOWS\nvarying highp vec4 v_pos_light_view_0;varying highp vec4 v_pos_light_view_1;varying float v_depth;\n#endif\n#ifdef FAUX_AO\nuniform lowp vec2 u_ao;varying vec3 v_ao;\n#endif\n#ifdef ZERO_ROOF_RADIUS\nvarying vec4 v_roof_color;\n#endif\n#if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS)\nvarying highp vec3 v_normal;\n#endif\nvoid main() {\n#if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS)\nvec3 normal=v_normal;\n#endif\nfloat z;vec4 color;\n#ifdef ZERO_ROOF_RADIUS\nz=float(normal.z > 0.00001);color=mix(v_color,v_roof_color,z);\n#else\ncolor=v_color;\n#endif\n#ifdef FAUX_AO\nfloat intensity=u_ao[0];float h=max(0.0,v_ao.z);float h_floors=h/u_ao[1];float y_shade=1.0-0.9*intensity*min(v_ao.y,1.0);float shade=(1.0-0.08*intensity)*(y_shade+(1.0-y_shade)*(1.0-pow(1.0-min(h_floors/16.0,1.0),16.0)))+0.08*intensity*min(h_floors/160.0,1.0);float concave=v_ao.x*v_ao.x;\n#ifdef ZERO_ROOF_RADIUS\nconcave*=(1.0-z);\n#endif\nfloat x_shade=mix(1.0,mix(0.6,0.75,min(h_floors/30.0,1.0)),intensity)+0.1*intensity*min(h,1.0);shade*=mix(1.0,x_shade*x_shade*x_shade,concave);color.rgb=color.rgb*shade;\n#endif\n#ifdef RENDER_SHADOWS\n#ifdef ZERO_ROOF_RADIUS\nnormal=mix(normal,vec3(0.0,0.0,1.0),z);\n#endif\ncolor.xyz=shadowed_color_normal(color.xyz,normalize(normal),v_pos_light_view_0,v_pos_light_view_1,v_depth);\n#endif\n#ifdef FOG\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\n#endif\ngl_FragColor=color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform float u_edge_radius;attribute vec4 a_pos_normal_ed;attribute vec2 a_centroid_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;\n#endif\nvarying vec4 v_color;\n#ifdef RENDER_SHADOWS\nuniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;varying highp vec4 v_pos_light_view_0;varying highp vec4 v_pos_light_view_1;varying float v_depth;\n#endif\n#ifdef ZERO_ROOF_RADIUS\nvarying vec4 v_roof_color;\n#endif\n#if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS)\nvarying highp vec3 v_normal;\n#endif\n#ifdef FAUX_AO\nuniform lowp vec2 u_ao;varying vec3 v_ao;\n#endif\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec4 pos_nx=floor(a_pos_normal_ed*0.5);vec4 top_up_ny_start=a_pos_normal_ed-2.0*pos_nx;vec3 top_up_ny=top_up_ny_start.xyz;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));\n#if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS)\nv_normal=normal;\n#endif\nbase=max(0.0,base);height=max(0.0,top_up_ny.y==0.0 && top_up_ny.x==1.0 ? height-u_edge_radius : height);float t=top_up_ny.x;vec2 centroid_pos=vec2(0.0);\n#if defined(HAS_CENTROID) || defined(TERRAIN)\ncentroid_pos=a_centroid_pos;\n#endif\nfloat ele=0.0;float h=0.0;float c_ele;vec3 pos;\n#ifdef TERRAIN\nbool flat_roof=centroid_pos.x !=0.0 && t > 0.0;ele=elevation(pos_nx.xy);c_ele=flat_roof ? centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos) : ele;h=flat_roof ? max(c_ele+height,ele+base+2.0) : ele+(t > 0.0 ? height : base==0.0 ?-5.0 : base);pos=vec3(pos_nx.xy,h);\n#else\nh=t > 0.0 ? height : base;pos=vec3(pos_nx.xy,h);\n#endif\n#ifdef PROJECTION_GLOBE_VIEW\nfloat lift=float((t+base) > 0.0)*u_height_lift;h+=lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*h);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,pos.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*pos.z;pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\n#endif\nfloat hidden=float(centroid_pos.x==0.0 && centroid_pos.y==1.0);gl_Position=mix(u_matrix*vec4(pos,1),AWAY,hidden);\n#ifdef RENDER_SHADOWS\nv_pos_light_view_0=u_light_matrix_0*vec4(pos,1);v_pos_light_view_1=u_light_matrix_1*vec4(pos,1);v_depth=gl_Position.w;\n#endif\nfloat NdotL=0.0;float colorvalue=0.0;\n#ifdef LIGHTING_3D_MODE\nNdotL=calculate_NdotL(normal);\n#else\ncolorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;NdotL=clamp(dot(normal,u_lightpos),0.0,1.0);NdotL=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),NdotL);\n#endif\nif (normal.y !=0.0) {float r=0.84;\n#ifndef LIGHTING_3D_MODE\nr=mix(0.7,0.98,1.0-u_lightintensity);\n#endif\nNdotL*=(\n(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),r,1.0)));}v_color=vec4(0.0,0.0,0.0,1.0);\n#ifdef FAUX_AO\nfloat concave=pos_nx.w-floor(pos_nx.w*0.5)*2.0;float start=top_up_ny_start.w;float y_ground=1.0-clamp(t+base,0.0,1.0);float top_height=height;\n#ifdef TERRAIN\ntop_height=mix(max(c_ele+height,ele+base+2.0),ele+height,float(centroid_pos.x==0.0))-ele;y_ground+=y_ground*5.0/max(3.0,top_height);\n#endif\nv_ao=vec3(mix(concave,-concave,start),y_ground,h-ele);NdotL*=(1.0+0.05*(1.0-top_up_ny.y)*u_ao[0]);\n#ifdef PROJECTION_GLOBE_VIEW\ntop_height+=u_height_lift;\n#endif\ngl_Position.z-=(0.0000006*(min(top_height,500.)+2.0*min(base,500.0)+60.0*concave+3.0*start))*gl_Position.w;\n#endif\n#ifdef LIGHTING_3D_MODE\nv_color=apply_lighting(color,NdotL);\n#else\nv_color.rgb+=clamp(color.rgb*NdotL*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));\n#endif\nv_color*=u_opacity;\n#ifdef ZERO_ROOF_RADIUS\nv_roof_color=vec4(0.0,0.0,0.0,1.0);\n#ifdef LIGHTING_3D_MODE\nv_roof_color=apply_lighting(color,calculate_NdotL(vec3(0.0,0.0,1.0)));\n#else\nfloat roofNdotL=clamp(u_lightpos.z,0.0,1.0);roofNdotL=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),roofNdotL);v_roof_color.rgb+=clamp(color.rgb*roofNdotL*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));\n#endif\nv_roof_color*=u_opacity;\n#endif\n#ifdef FOG\nv_fog_pos=fog_position(pos);\n#endif\n}"),fillExtrusionPattern:ui("uniform vec2 u_texsize;uniform sampler2D u_image;\n#ifdef FAUX_AO\nuniform lowp vec2 u_ao;varying vec3 v_ao;\n#endif\n#ifdef LIGHTING_3D_MODE\nvarying float v_NdotL;\n#endif\nvarying vec2 v_pos;varying vec4 v_lighting;uniform lowp float u_opacity;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern\n#pragma mapbox: define lowp float pixel_ratio\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern\n#pragma mapbox: initialize lowp float pixel_ratio\nvec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec2 imagecoord=mod(v_pos,1.0);vec2 pos=mix(pattern_tl/u_texsize,pattern_br/u_texsize,imagecoord);vec4 out_color=texture2D(u_image,pos);\n#ifdef LIGHTING_3D_MODE\nout_color=apply_lighting(out_color,v_NdotL)*u_opacity;\n#else\nout_color=out_color*v_lighting;\n#endif\n#ifdef FAUX_AO\nfloat intensity=u_ao[0];float h=max(0.0,v_ao.z);float h_floors=h/u_ao[1];float y_shade=1.0-0.9*intensity*min(v_ao.y,1.0);float shade=(1.0-0.08*intensity)*(y_shade+(1.0-y_shade)*(1.0-pow(1.0-min(h_floors/16.0,1.0),16.0)))+0.08*intensity*min(h_floors/160.0,1.0);float concave=v_ao.x*v_ao.x;float x_shade=mix(1.0,mix(0.6,0.75,min(h_floors/30.0,1.0)),intensity)+0.1*intensity*min(h,1.0);shade*=mix(1.0,x_shade*x_shade*x_shade,concave);out_color.rgb=out_color.rgb*shade;\n#endif\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform float u_tile_units_to_pixels;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec4 a_pos_normal_ed;attribute vec2 a_centroid_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;\n#endif\nvarying vec2 v_pos;varying vec4 v_lighting;\n#ifdef FAUX_AO\nuniform lowp vec2 u_ao;varying vec3 v_ao;\n#endif\n#ifdef LIGHTING_3D_MODE\nvarying float v_NdotL;\n#endif\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern\n#pragma mapbox: define lowp float pixel_ratio\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern\n#pragma mapbox: initialize lowp float pixel_ratio\nvec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec4 pos_nx=floor(a_pos_normal_ed*0.5);mediump vec4 top_up_ny_start=a_pos_normal_ed-2.0*pos_nx;mediump vec3 top_up_ny=top_up_ny_start.xyz;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));float edgedistance=a_pos_normal_ed.w;vec2 display_size=(pattern_br-pattern_tl)/pixel_ratio;base=max(0.0,base);height=max(0.0,height);float t=top_up_ny.x;float z=t > 0.0 ? height : base;vec2 centroid_pos=vec2(0.0);\n#if defined(HAS_CENTROID) || defined(TERRAIN)\ncentroid_pos=a_centroid_pos;\n#endif\nfloat ele=0.0;float h=z;vec3 p;float c_ele;\n#ifdef TERRAIN\nbool flat_roof=centroid_pos.x !=0.0 && t > 0.0;ele=elevation(pos_nx.xy);c_ele=flat_roof ? centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos) : ele;h=flat_roof ? max(c_ele+height,ele+base+2.0) : ele+(t > 0.0 ? height : base==0.0 ?-5.0 : base);p=vec3(pos_nx.xy,h);\n#else\np=vec3(pos_nx.xy,z);\n#endif\n#ifdef PROJECTION_GLOBE_VIEW\nfloat lift=float((t+base) > 0.0)*u_height_lift;h+=lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*(p.z+lift));vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,p.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*p.z;p=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\n#endif\nfloat hidden=float(centroid_pos.x==0.0 && centroid_pos.y==1.0);gl_Position=mix(u_matrix*vec4(p,1),AWAY,hidden);vec2 pos=normal.z==1.0\n? pos_nx.xy\n: vec2(edgedistance,z*u_height_factor);v_pos=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,display_size,u_tile_units_to_pixels,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float NdotL=0.0;\n#ifdef LIGHTING_3D_MODE\nNdotL=calculate_NdotL(normal);\n#else\nNdotL=clamp(dot(normal,u_lightpos),0.0,1.0);NdotL=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),NdotL);\n#endif\nif (normal.y !=0.0) {float r=0.84;\n#ifndef LIGHTING_3D_MODE\nr=mix(0.7,0.98,1.0-u_lightintensity);\n#endif\nNdotL*=(\n(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),r,1.0)));}\n#ifdef FAUX_AO\nfloat concave=pos_nx.w-floor(pos_nx.w*0.5)*2.0;float start=top_up_ny_start.w;float y_ground=1.0-clamp(t+base,0.0,1.0);float top_height=height;\n#ifdef TERRAIN\ntop_height=mix(max(c_ele+height,ele+base+2.0),ele+height,float(centroid_pos.x==0.0))-ele;y_ground+=y_ground*5.0/max(3.0,top_height);\n#endif\nv_ao=vec3(mix(concave,-concave,start),y_ground,h-ele);NdotL*=(1.0+0.05*(1.0-top_up_ny.y)*u_ao[0]);\n#ifdef PROJECTION_GLOBE_VIEW\ntop_height+=u_height_lift;\n#endif\ngl_Position.z-=(0.0000006*(min(top_height,500.)+2.0*min(base,500.0)+60.0*concave+3.0*start))*gl_Position.w;\n#endif\n#ifdef LIGHTING_3D_MODE\nv_NdotL=NdotL;\n#else\nv_lighting.rgb+=clamp(NdotL*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;\n#endif \n#ifdef FOG\nv_fog_pos=fog_position(p);\n#endif\n}"),hillshadePrepare:ui("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord) {\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\nreturn texture2D(u_image,coord).a/4.0;\n#else\nvec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;\n#endif\n}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y));float b=getElevation(v_pos+vec2(0,-epsilon.y));float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y));float d=getElevation(v_pos+vec2(-epsilon.x,0));float e=getElevation(v_pos+vec2(epsilon.x,0));float f=getElevation(v_pos+vec2(-epsilon.x,epsilon.y));float g=getElevation(v_pos+vec2(0,epsilon.y));float h=getElevation(v_pos+vec2(epsilon.x,epsilon.y));float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2(\n(c+e+e+h)-(a+d+d+f),(f+g+g+h)-(a+b+b+c)\n)/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(\nderiv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:ui("uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\n#ifdef LIGHTING_3D_MODE\ngl_FragColor=apply_lighting(gl_FragColor);\n#endif\n#ifdef FOG\ngl_FragColor=fog_dither(fog_apply_premultiplied(gl_FragColor,v_fog_pos));\n#endif\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),line:ui("uniform lowp float u_device_pixel_ratio;uniform float u_alpha_discard_threshold;uniform highp vec2 u_trim_offset;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec4 v_uv;\n#ifdef RENDER_LINE_DASH\nuniform sampler2D u_dash_image;varying vec2 v_tex;\n#endif\n#ifdef RENDER_LINE_GRADIENT\nuniform sampler2D u_gradient_image;\n#endif\nuniform float u_border_width;uniform vec4 u_border_color;float luminance(vec3 c) {return (c.r+c.r+c.b+c.g+c.g+c.g)*0.1667;}\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 dash\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nfloat linearstep(float edge0,float edge1,float x) {return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}void main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize lowp vec4 dash\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);\n#ifdef RENDER_LINE_DASH\nfloat sdfdist=texture2D(u_dash_image,v_tex).a;float sdfgamma=1.0/(2.0*u_device_pixel_ratio)/dash.z;alpha*=linearstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);\n#endif\nhighp vec4 out_color;\n#ifdef RENDER_LINE_GRADIENT\nout_color=texture2D(u_gradient_image,v_uv.xy);\n#else\nout_color=color;\n#endif\nfloat trimmed=1.0;\n#ifdef RENDER_LINE_TRIM_OFFSET\nhighp float start=v_uv[2];highp float end=v_uv[3];highp float trim_start=u_trim_offset[0];highp float trim_end=u_trim_offset[1];highp float line_progress=(start+(v_uv.x)*(end-start));if (trim_end > trim_start) {if (line_progress <=trim_end && line_progress >=trim_start) {out_color=vec4(0,0,0,0);trimmed=0.0;}}\n#endif\n#ifdef LIGHTING_3D_MODE\nout_color=apply_lighting(out_color);\n#endif\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\n#ifdef RENDER_LINE_ALPHA_DISCARD\nif (alpha < u_alpha_discard_threshold) {discard;}\n#endif\n#ifdef RENDER_LINE_BORDER\nfloat edgeBlur=(u_border_width+1.0/u_device_pixel_ratio);float alpha2=clamp(min(dist-(v_width2.t-edgeBlur),v_width2.s-dist)/edgeBlur,0.0,1.0);if (alpha2 < 1.) {float smoothAlpha=smoothstep(0.6,1.0,alpha2);\n#ifdef RENDER_LINE_BORDER_AUTO\nfloat Y=(out_color.a > 0.01) ? luminance(out_color.rgb/out_color.a) : 1.;float adjustment=(Y > 0.) ? 0.5/Y : 0.45;if (out_color.a > 0.25 && Y < 0.25) {vec3 borderColor=(Y > 0.) ? out_color.rgb : vec3(1,1,1)*out_color.a;out_color.rgb=out_color.rgb+borderColor*(adjustment*(1.0-smoothAlpha));} else {out_color.rgb*=(0.6 +0.4*smoothAlpha);}\n#else\nout_color.rgb=mix(u_border_color.rgb*u_border_color.a*trimmed,out_color.rgb,smoothAlpha);\n#endif\n}\n#endif\ngl_FragColor=out_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define EXTRUDE_SCALE 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;\n#if defined(RENDER_LINE_GRADIENT) || defined(RENDER_LINE_TRIM_OFFSET)\nattribute highp vec4 a_packed;\n#endif\n#ifdef RENDER_LINE_DASH\nattribute float a_linesofar;\n#endif\nuniform mat4 u_matrix;uniform mat2 u_pixels_to_tile_units;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec4 v_uv;\n#ifdef RENDER_LINE_DASH\nuniform vec2 u_texsize;uniform float u_tile_units_to_pixels;varying vec2 v_tex;\n#endif\n#ifdef RENDER_LINE_GRADIENT\nuniform float u_image_height;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 dash\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize lowp vec4 dash\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*EXTRUDE_SCALE;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*EXTRUDE_SCALE*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist*u_pixels_to_tile_units,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude;\n#ifndef RENDER_TO_TEXTURE\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#else\nv_gamma_scale=1.0;\n#endif\n#if defined(RENDER_LINE_GRADIENT) || defined(RENDER_LINE_TRIM_OFFSET)\nfloat a_uv_x=a_packed[0];float a_split_index=a_packed[1];highp float a_clip_start=a_packed[2];highp float a_clip_end=a_packed[3];\n#ifdef RENDER_LINE_GRADIENT\nhighp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec4(a_uv_x,a_split_index*texel_height-half_texel_height,a_clip_start,a_clip_end);\n#else\nv_uv=vec4(a_uv_x,0.0,a_clip_start,a_clip_end);\n#endif\n#endif\n#ifdef RENDER_LINE_DASH\nfloat scale=dash.z==0.0 ? 0.0 : u_tile_units_to_pixels/dash.z;float height=dash.y;v_tex=vec2(a_linesofar*scale/floorwidth,(-normal.y*height+dash.x+0.5)/u_texsize.y);\n#endif\nv_width2=vec2(outset,inset);\n#ifdef FOG\nv_fog_pos=fog_position(pos);\n#endif\n}"),linePattern:ui("uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_tile_units_to_pixels;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern\n#pragma mapbox: define lowp float pixel_ratio\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern\n#pragma mapbox: initialize lowp float pixel_ratio\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec2 display_size=(pattern_br-pattern_tl)/pixel_ratio;vec2 pattern_size=vec2(display_size.x/u_tile_units_to_pixels,display_size.y);float aspect=display_size.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x=mod(v_linesofar/pattern_size.x*aspect,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos=mix(pattern_tl*texel_size-texel_size,pattern_br*texel_size+texel_size,vec2(x,y));vec4 color=texture2D(u_image,pos);\n#ifdef LIGHTING_3D_MODE\ncolor=apply_lighting(color);\n#endif\n#ifdef FOG\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\n#endif\ngl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_linesofar;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mat2 u_pixels_to_tile_units;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern\n#pragma mapbox: define lowp float pixel_ratio\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern\n#pragma mapbox: initialize lowp float pixel_ratio\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist*u_pixels_to_tile_units,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude;\n#ifndef RENDER_TO_TEXTURE\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#else\nv_gamma_scale=1.0;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;\n#ifdef FOG\nv_fog_pos=fog_position(pos);\n#endif\n}"),raster:ui("uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(\ndot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);vec3 out_color=mix(u_high_vec,u_low_vec,rgb);\n#ifdef LIGHTING_3D_MODE\nout_color=apply_lighting(out_color);\n#endif\n#ifdef FOG\nout_color=fog_dither(fog_apply(out_color,v_fog_pos));\n#endif\ngl_FragColor=vec4(out_color*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform vec2 u_perspective_transform;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {float w=1.0+dot(a_texture_pos,u_perspective_transform);gl_Position=u_matrix*vec4(a_pos*w,0,w);v_pos0=a_texture_pos/8192.0;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),symbolIcon:ui("uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_pixeloffset;attribute vec4 a_projected_pos;attribute float a_fade_opacity;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_globe_anchor;attribute vec3 a_globe_normal;\n#endif\nuniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform vec3 u_up_vector;\n#ifdef PROJECTION_GLOBE_VIEW\nuniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;\n#endif\nvarying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_min_font_scale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[3];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 tile_anchor=a_pos;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);float globe_occlusion_fade;vec3 world_pos;vec3 mercator_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nmercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);world_pos=mix_globe_mercator(a_globe_anchor+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;\n#else\nworld_pos=vec3(tile_anchor,0)+h;globe_occlusion_fade=1.0;\n#endif\nvec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float font_scale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjected_point;\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 displacement=vec3(a_globe_normal.z,0,-a_globe_normal.x);offsetProjected_point=u_matrix*vec4(a_globe_anchor+displacement,1);\n#else\noffsetProjected_point=u_matrix*vec4(tile_anchor+vec2(1,0),0,1);\n#endif\nvec2 a=projected_point.xy/projected_point.w;vec2 b=offsetProjected_point.xy/offsetProjected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}vec4 projected_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 proj_pos=mix_globe_mercator(a_projected_pos.xyz+h,mercator_pos,u_zoom_transition);projected_pos=u_label_plane_matrix*vec4(proj_pos,1.0);\n#else\nprojected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,h.z,1.0);\n#endif\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*max(a_min_font_scale,font_scale)+a_pxoffset/16.0);\n#ifdef TERRAIN\n#ifdef PITCH_WITH_MAP_TERRAIN\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\n#endif\n#endif\nfloat occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 xAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,u_up_vector)) : vec3(1,0,0);vec3 yAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,xAxis)) : vec3(0,1,0);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xyz/projected_pos.w+xAxis*offset.x+yAxis*offset.y,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));\n#else\ngl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));\n#endif\nfloat projection_transition_fade=1.0;\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\n#endif\nv_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change))*projection_transition_fade;}"),symbolSDF:ui("#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_pixeloffset;attribute vec4 a_projected_pos;attribute float a_fade_opacity;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_globe_anchor;attribute vec3 a_globe_normal;\n#endif\nuniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec3 u_up_vector;\n#ifdef PROJECTION_GLOBE_VIEW\nuniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;\n#endif\nvarying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[3];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 tile_anchor=a_pos;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);float globe_occlusion_fade;vec3 world_pos;vec3 mercator_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nmercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);world_pos=mix_globe_mercator(a_globe_anchor+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;\n#else\nworld_pos=vec3(tile_anchor,0)+h;globe_occlusion_fade=1.0;\n#endif\nvec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetprojected_point;\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 displacement=vec3(a_globe_normal.z,0,-a_globe_normal.x);offsetprojected_point=u_matrix*vec4(a_globe_anchor+displacement,1);\n#else\noffsetprojected_point=u_matrix*vec4(tile_anchor+vec2(1,0),0,1);\n#endif\nvec2 a=projected_point.xy/projected_point.w;vec2 b=offsetprojected_point.xy/offsetprojected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}vec4 projected_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 proj_pos=mix_globe_mercator(a_projected_pos.xyz+h,mercator_pos,u_zoom_transition);projected_pos=u_label_plane_matrix*vec4(proj_pos,1.0);\n#else\nprojected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,h.z,1.0);\n#endif\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset);\n#ifdef TERRAIN\n#ifdef PITCH_WITH_MAP_TERRAIN\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\n#endif\n#endif\nfloat occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 xAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,u_up_vector)) : vec3(1,0,0);vec3 yAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,xAxis)) : vec3(0,1,0);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xyz/projected_pos.w+xAxis*offset.x+yAxis*offset.y,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));\n#else\ngl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));\n#endif\nfloat gamma_scale=gl_Position.w;float projection_transition_fade=1.0;\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\n#endif\nvec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity*projection_transition_fade);}"),symbolTextAndIcon:ui("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_projected_pos;attribute float a_fade_opacity;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_globe_anchor;attribute vec3 a_globe_normal;\n#endif\nuniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec3 u_up_vector;uniform vec2 u_texsize_icon;\n#ifdef PROJECTION_GLOBE_VIEW\nuniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;\n#endif\nvarying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[3];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 tile_anchor=a_pos;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);float globe_occlusion_fade;vec3 world_pos;vec3 mercator_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nmercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);world_pos=mix_globe_mercator(a_globe_anchor+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;\n#else\nworld_pos=vec3(tile_anchor,0)+h;globe_occlusion_fade=1.0;\n#endif\nvec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float font_scale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offset_projected_point=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projected_point.xy/projected_point.w;vec2 b=offset_projected_point.xy/offset_projected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}vec4 projected_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 proj_pos=mix_globe_mercator(a_projected_pos.xyz+h,mercator_pos,u_zoom_transition);projected_pos=u_label_plane_matrix*vec4(proj_pos,1.0);\n#else\nprojected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,h.z,1.0);\n#endif\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*font_scale);\n#ifdef TERRAIN\n#ifdef PITCH_WITH_MAP_TERRAIN\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\n#endif\n#endif\nfloat occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 xAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,u_up_vector)) : vec3(1,0,0);vec3 yAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,xAxis)) : vec3(0,1,0);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xyz/projected_pos.w+xAxis*offset.x+yAxis*offset.y,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));\n#else\ngl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));\n#endif\nfloat gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));float projection_transition_fade=1.0;\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\n#endif\nv_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity*projection_transition_fade,is_sdf);}"),terrainRaster:ui("uniform sampler2D u_image0;varying vec2 v_pos0;\n#ifdef FOG\nvarying float v_fog_opacity;\n#endif\n#ifdef RENDER_SHADOWS\nvarying vec4 v_pos_light_view_0;varying vec4 v_pos_light_view_1;varying float v_depth;\n#endif\nvoid main() {vec4 color=texture2D(u_image0,v_pos0);\n#ifdef RENDER_SHADOWS\ncolor.xyz=shadowed_color(color.xyz,v_pos_light_view_0,v_pos_light_view_1,v_depth);\n#endif\n#ifdef FOG\n#ifdef ZERO_EXAGGERATION\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\n#else\ncolor=fog_dither(fog_apply_from_vert(color,v_fog_opacity));\n#endif\n#endif\ngl_FragColor=color;\n#ifdef TERRAIN_WIREFRAME\ngl_FragColor=vec4(1.0,0.0,0.0,0.8);\n#endif\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform float u_skirt_height;attribute vec2 a_pos;varying vec2 v_pos0;\n#ifdef FOG\nvarying float v_fog_opacity;\n#endif\n#ifdef RENDER_SHADOWS\nuniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;varying vec4 v_pos_light_view_0;varying vec4 v_pos_light_view_1;varying float v_depth;\n#endif\nconst float wireframeOffset=0.00015;void main() {vec3 decomposedPosAndSkirt=decomposeToPosAndSkirt(a_pos);float skirt=decomposedPosAndSkirt.z;vec2 decodedPos=decomposedPosAndSkirt.xy;float elevation=elevation(decodedPos)-skirt*u_skirt_height;\n#ifdef TERRAIN_WIREFRAME\nelevation+=wireframeOffset;\n#endif\nv_pos0=decodedPos/8192.0;gl_Position=u_matrix*vec4(decodedPos,elevation,1.0);\n#ifdef FOG\n#ifdef ZERO_EXAGGERATION\nv_fog_pos=fog_position(decodedPos);\n#else\nv_fog_opacity=fog(fog_position(vec3(decodedPos,elevation)));\n#endif\n#endif\n#ifdef RENDER_SHADOWS\nvec3 pos=vec3(decodedPos,elevation);v_pos_light_view_0=u_light_matrix_0*vec4(pos,1.);v_pos_light_view_1=u_light_matrix_1*vec4(pos,1.);v_depth=gl_Position.w;\n#endif\n}"),terrainDepth:ui("#ifdef GL_ES\nprecision highp float;\n#endif\nvarying float v_depth;void main() {gl_FragColor=pack_depth(v_depth);}","uniform mat4 u_matrix;attribute vec2 a_pos;varying float v_depth;void main() {float elevation=elevation(a_pos);gl_Position=u_matrix*vec4(a_pos,elevation,1.0);v_depth=gl_Position.z/gl_Position.w;}"),skybox:ui("\nvarying lowp vec3 v_uv;uniform lowp samplerCube u_cubemap;uniform lowp float u_opacity;uniform highp float u_temporal_offset;uniform highp vec3 u_sun_direction;float sun_disk(highp vec3 ray_direction,highp vec3 sun_direction) {highp float cos_angle=dot(normalize(ray_direction),sun_direction);const highp float cos_sun_angular_diameter=0.99996192306;const highp float smoothstep_delta=1e-5;return smoothstep(\ncos_sun_angular_diameter-smoothstep_delta,cos_sun_angular_diameter+smoothstep_delta,cos_angle);}float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec3 uv=v_uv;const float y_bias=0.015;uv.y+=y_bias;uv.y=pow(abs(uv.y),1.0/5.0);uv.y=map(uv.y,0.0,1.0,-1.0,1.0);vec3 sky_color=textureCube(u_cubemap,uv).rgb;\n#ifdef FOG\nsky_color=fog_apply_sky_gradient(v_uv.xzy,sky_color);\n#endif\nsky_color.rgb=dither(sky_color.rgb,gl_FragCoord.xy+u_temporal_offset);sky_color+=0.1*sun_disk(v_uv,u_sun_direction);gl_FragColor=vec4(sky_color*u_opacity,u_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}",Qt),skyboxGradient:ui("varying highp vec3 v_uv;uniform lowp sampler2D u_color_ramp;uniform highp vec3 u_center_direction;uniform lowp float u_radius;uniform lowp float u_opacity;uniform highp float u_temporal_offset;void main() {float progress=acos(dot(normalize(v_uv),u_center_direction))/u_radius;vec4 color=texture2D(u_color_ramp,vec2(progress,0.5));\n#ifdef FOG\ncolor.rgb=fog_apply_sky_gradient(v_uv.xzy,color.rgb/color.a)*color.a;\n#endif\ncolor*=u_opacity;color.rgb=dither(color.rgb,gl_FragCoord.xy+u_temporal_offset);gl_FragColor=color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}",Qt),skyboxCapture:ui("\nvarying highp vec3 v_position;uniform highp float u_sun_intensity;uniform highp float u_luminance;uniform lowp vec3 u_sun_direction;uniform highp vec4 u_color_tint_r;uniform highp vec4 u_color_tint_m;\n#ifdef GL_ES\nprecision highp float;\n#endif\n#define BETA_R vec3(5.5e-6,13.0e-6,22.4e-6)\n#define BETA_M vec3(21e-6,21e-6,21e-6)\n#define MIE_G 0.76\n#define DENSITY_HEIGHT_SCALE_R 8000.0\n#define DENSITY_HEIGHT_SCALE_M 1200.0\n#define PLANET_RADIUS 6360e3\n#define ATMOSPHERE_RADIUS 6420e3\n#define SAMPLE_STEPS 10\n#define DENSITY_STEPS 4\nfloat ray_sphere_exit(vec3 orig,vec3 dir,float radius) {float a=dot(dir,dir);float b=2.0*dot(dir,orig);float c=dot(orig,orig)-radius*radius;float d=sqrt(b*b-4.0*a*c);return (-b+d)/(2.0*a);}vec3 extinction(vec2 density) {return exp(-vec3(BETA_R*u_color_tint_r.a*density.x+BETA_M*u_color_tint_m.a*density.y));}vec2 local_density(vec3 point) {float height=max(length(point)-PLANET_RADIUS,0.0);float exp_r=exp(-height/DENSITY_HEIGHT_SCALE_R);float exp_m=exp(-height/DENSITY_HEIGHT_SCALE_M);return vec2(exp_r,exp_m);}float phase_ray(float cos_angle) {return (3.0/(16.0*PI))*(1.0+cos_angle*cos_angle);}float phase_mie(float cos_angle) {return (3.0/(8.0*PI))*((1.0-MIE_G*MIE_G)*(1.0+cos_angle*cos_angle))/((2.0+MIE_G*MIE_G)*pow(1.0+MIE_G*MIE_G-2.0*MIE_G*cos_angle,1.5));}vec2 density_to_atmosphere(vec3 point,vec3 light_dir) {float ray_len=ray_sphere_exit(point,light_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(DENSITY_STEPS);vec2 density_point_to_atmosphere=vec2(0.0);for (int i=0; i < DENSITY_STEPS;++i) {vec3 point_on_ray=point+light_dir*((float(i)+0.5)*step_len);density_point_to_atmosphere+=local_density(point_on_ray)*step_len;;}return density_point_to_atmosphere;}vec3 atmosphere(vec3 ray_dir,vec3 sun_direction,float sun_intensity) {vec2 density_orig_to_point=vec2(0.0);vec3 scatter_r=vec3(0.0);vec3 scatter_m=vec3(0.0);vec3 origin=vec3(0.0,PLANET_RADIUS,0.0);float ray_len=ray_sphere_exit(origin,ray_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(SAMPLE_STEPS);for (int i=0; i < SAMPLE_STEPS;++i) {vec3 point_on_ray=origin+ray_dir*((float(i)+0.5)*step_len);vec2 density=local_density(point_on_ray)*step_len;density_orig_to_point+=density;vec2 density_point_to_atmosphere=density_to_atmosphere(point_on_ray,sun_direction);vec2 density_orig_to_atmosphere=density_orig_to_point+density_point_to_atmosphere;vec3 extinction=extinction(density_orig_to_atmosphere);scatter_r+=density.x*extinction;scatter_m+=density.y*extinction;}float cos_angle=dot(ray_dir,sun_direction);float phase_r=phase_ray(cos_angle);float phase_m=phase_mie(cos_angle);vec3 beta_r=BETA_R*u_color_tint_r.rgb*u_color_tint_r.a;vec3 beta_m=BETA_M*u_color_tint_m.rgb*u_color_tint_m.a;return (scatter_r*phase_r*beta_r+scatter_m*phase_m*beta_m)*sun_intensity;}const float A=0.15;const float B=0.50;const float C=0.10;const float D=0.20;const float E=0.02;const float F=0.30;vec3 uncharted2_tonemap(vec3 x) {return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;}void main() {vec3 ray_direction=v_position;ray_direction.y=pow(ray_direction.y,5.0);const float y_bias=0.015;ray_direction.y+=y_bias;vec3 color=atmosphere(normalize(ray_direction),u_sun_direction,u_sun_intensity);float white_scale=1.0748724675633854;color=uncharted2_tonemap((log2(2.0/pow(u_luminance,4.0)))*color)*white_scale;gl_FragColor=vec4(color,1.0);}","attribute highp vec3 a_pos_3f;uniform mat3 u_matrix_3f;varying highp vec3 v_position;float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec4 pos=vec4(u_matrix_3f*a_pos_3f,1.0);v_position=pos.xyz;v_position.y*=-1.0;v_position.y=map(v_position.y,-1.0,1.0,0.0,1.0);gl_Position=vec4(a_pos_3f.xy,0.0,1.0);}"),globeRaster:ui("uniform sampler2D u_image0;varying vec2 v_pos0;\n#ifndef FOG\nuniform highp vec3 u_frustum_tl;uniform highp vec3 u_frustum_tr;uniform highp vec3 u_frustum_br;uniform highp vec3 u_frustum_bl;uniform highp vec3 u_globe_pos;uniform highp float u_globe_radius;uniform vec2 u_viewport;\n#endif\nvoid main() {vec4 color;\n#ifdef CUSTOM_ANTIALIASING\nvec2 uv=gl_FragCoord.xy/u_viewport;highp vec3 ray_dir=mix(\nmix(u_frustum_tl,u_frustum_tr,uv.x),mix(u_frustum_bl,u_frustum_br,uv.x),1.0-uv.y);vec3 dir=normalize(ray_dir);vec3 closest_point=dot(u_globe_pos,dir)*dir;float norm_dist_from_center=1.0-length(closest_point-u_globe_pos)/u_globe_radius;const float antialias_pixel=2.0;float antialias_factor=antialias_pixel*fwidth(norm_dist_from_center);float antialias=smoothstep(0.0,antialias_factor,norm_dist_from_center);vec4 raster=texture2D(u_image0,v_pos0);color=vec4(raster.rgb*antialias,raster.a*antialias);\n#else\ncolor=texture2D(u_image0,v_pos0);\n#endif\n#ifdef FOG\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\n#endif\ngl_FragColor=color;\n#ifdef TERRAIN_WIREFRAME\ngl_FragColor=vec4(1.0,0.0,0.0,0.8);\n#endif\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_proj_matrix;uniform mat4 u_normalize_matrix;uniform mat4 u_globe_matrix;uniform mat4 u_merc_matrix;uniform float u_zoom_transition;uniform vec2 u_merc_center;uniform mat3 u_grid_matrix;uniform float u_skirt_height;\n#ifdef GLOBE_POLES\nattribute vec3 a_globe_pos;attribute vec2 a_uv;\n#else\nattribute vec2 a_pos;\n#endif\nvarying vec2 v_pos0;const float wireframeOffset=1e3;float mercatorXfromLng(float lng) {return (180.0+lng)/360.0;}float mercatorYfromLat(float lat) {return (180.0-(RAD_TO_DEG*log(tan(QUARTER_PI+lat/2.0*DEG_TO_RAD))))/360.0;}vec3 latLngToECEF(vec2 latLng) {latLng=DEG_TO_RAD*latLng;float cosLat=cos(latLng[0]);float sinLat=sin(latLng[0]);float cosLng=cos(latLng[1]);float sinLng=sin(latLng[1]);float sx=cosLat*sinLng*GLOBE_RADIUS;float sy=-sinLat*GLOBE_RADIUS;float sz=cosLat*cosLng*GLOBE_RADIUS;return vec3(sx,sy,sz);}void main() {\n#ifdef GLOBE_POLES\nvec3 globe_pos=a_globe_pos;vec2 uv=a_uv;\n#else\nfloat tiles=u_grid_matrix[0][2];float idx=u_grid_matrix[1][2];float idy=u_grid_matrix[2][2];vec3 decomposed_pos_and_skirt=decomposeToPosAndSkirt(a_pos);vec3 latLng=u_grid_matrix*vec3(decomposed_pos_and_skirt.xy,1.0);float mercatorY=mercatorYfromLat(latLng[0]);float uvY=mercatorY*tiles-idy;float mercatorX=mercatorXfromLng(latLng[1]);float uvX=mercatorX*tiles-idx;vec3 globe_pos=latLngToECEF(latLng.xy);vec2 merc_pos=vec2(mercatorX,mercatorY);vec2 uv=vec2(uvX,uvY);\n#endif\nv_pos0=uv;vec2 tile_pos=uv*EXTENT;vec3 globe_derived_up_vector=normalize(globe_pos)*u_tile_up_scale;\n#ifdef GLOBE_POLES\nvec3 up_vector=globe_derived_up_vector;\n#else\nvec3 up_vector=elevationVector(tile_pos);\n#endif\nfloat height=elevation(tile_pos);\n#ifdef TERRAIN_WIREFRAME\nheight+=wireframeOffset;\n#endif\nglobe_pos+=up_vector*height;\n#ifndef GLOBE_POLES\nglobe_pos-=globe_derived_up_vector*u_skirt_height*decomposed_pos_and_skirt.z;\n#endif\n#ifdef GLOBE_POLES\nvec4 interpolated_pos=u_globe_matrix*vec4(globe_pos,1.0);\n#else\nvec4 globe_world_pos=u_globe_matrix*vec4(globe_pos,1.0);vec4 merc_world_pos=vec4(0.0);if (u_zoom_transition > 0.0) {merc_world_pos=vec4(merc_pos,height-u_skirt_height*decomposed_pos_and_skirt.z,1.0);merc_world_pos.xy-=u_merc_center;merc_world_pos.x=wrap(merc_world_pos.x,-0.5,0.5);merc_world_pos=u_merc_matrix*merc_world_pos;}vec4 interpolated_pos=vec4(mix(globe_world_pos.xyz,merc_world_pos.xyz,u_zoom_transition),1.0);\n#endif\ngl_Position=u_proj_matrix*interpolated_pos;\n#ifdef FOG\nv_fog_pos=fog_position((u_normalize_matrix*vec4(globe_pos,1.0)).xyz);\n#endif\n}"),globeAtmosphere:ui("uniform float u_transition;uniform highp float u_fadeout_range;uniform highp float u_temporal_offset;uniform vec3 u_start_color;uniform vec4 u_color;uniform vec4 u_space_color;uniform vec4 u_high_color;uniform float u_star_intensity;uniform float u_star_size;uniform float u_star_density;uniform float u_horizon_angle;uniform mat4 u_rotation_matrix;varying highp vec3 v_ray_dir;varying highp vec3 v_horizon_dir;highp float random(highp vec3 p) {p=fract(p*vec3(23.2342,97.1231,91.2342));p+=dot(p.zxy,p.yxz+123.1234);return fract(p.x*p.y);}float stars(vec3 p,float scale,vec2 offset) {vec2 uv_scale=(u_viewport/u_star_size)*scale;vec3 position=vec3(p.xy*uv_scale+offset*u_viewport,p.z);vec3 q=fract(position)-0.5;vec3 id=floor(position);float random_visibility=step(random(id),u_star_density);float circle=smoothstep(0.5+u_star_intensity,0.5,length(q));return circle*random_visibility;}void main() {highp vec3 dir=normalize(v_ray_dir);float globe_pos_dot_dir;\n#ifdef PROJECTION_GLOBE_VIEW\nglobe_pos_dot_dir=dot(u_globe_pos,dir);highp vec3 closest_point_forward=abs(globe_pos_dot_dir)*dir;float norm_dist_from_center=length(closest_point_forward-u_globe_pos)/u_globe_radius;if (norm_dist_from_center < 0.98) {discard;return;}\n#endif\nhighp vec3 horizon_dir=normalize(v_horizon_dir);float horizon_angle_mercator=dir.y < horizon_dir.y ?\n0.0 : max(acos(dot(dir,horizon_dir)),0.0);float horizon_angle;\n#ifdef PROJECTION_GLOBE_VIEW\nhighp vec3 closest_point=globe_pos_dot_dir*dir;float closest_point_to_center=length(closest_point-u_globe_pos);float theta=asin(clamp(closest_point_to_center/length(u_globe_pos),-1.0,1.0));horizon_angle=globe_pos_dot_dir < 0.0 ?\nPI-theta-u_horizon_angle : theta-u_horizon_angle;float angle_t=pow(u_transition,10.0);horizon_angle=mix(horizon_angle,horizon_angle_mercator,angle_t);\n#else\nhorizon_angle=horizon_angle_mercator;\n#endif\nhorizon_angle/=PI;float t=exp(-horizon_angle/u_fadeout_range);float alpha_0=u_color.a;float alpha_1=u_high_color.a;float alpha_2=u_space_color.a;vec3 color_stop_0=u_color.rgb;vec3 color_stop_1=u_high_color.rgb;vec3 color_stop_2=u_space_color.rgb;vec3 c0=mix(color_stop_2,color_stop_1,alpha_1);vec3 c1=mix(c0,color_stop_0,alpha_0);vec3 c2=mix(c0,c1,t);vec3 c =mix(color_stop_2,c2,t);float a0=mix(alpha_2,1.0,alpha_1);float a1=mix(a0,1.0,alpha_0);float a2=mix(a0,a1,t);float a =mix(alpha_2,a2,t);vec2 uv=gl_FragCoord.xy/u_viewport-0.5;float aspect_ratio=u_viewport.x/u_viewport.y;vec4 uv_dir=vec4(normalize(vec3(uv.x*aspect_ratio,uv.y,1.0)),1.0);uv_dir=u_rotation_matrix*uv_dir;vec3 n=abs(uv_dir.xyz);vec2 uv_remap=(n.x > n.y && n.x > n.z) ? uv_dir.yz/uv_dir.x:\n(n.y > n.x && n.y > n.z) ? uv_dir.zx/uv_dir.y:\nuv_dir.xy/uv_dir.z;uv_remap.x/=aspect_ratio;vec3 D=vec3(uv_remap,1.0);highp float star_field=0.0;if (u_star_intensity > 0.0) {star_field+=stars(D,1.2,vec2(0.0,0.0));star_field+=stars(D,1.0,vec2(1.0,0.0));star_field+=stars(D,0.8,vec2(0.0,1.0));star_field+=stars(D,0.6,vec2(1.0,1.0));star_field*=(1.0-pow(t,0.25+(1.0-u_high_color.a)*0.75));c+=star_field*alpha_2;}c=dither(c,gl_FragCoord.xy+u_temporal_offset);gl_FragColor=vec4(c,a);}","attribute vec3 a_pos;attribute vec2 a_uv;uniform vec3 u_frustum_tl;uniform vec3 u_frustum_tr;uniform vec3 u_frustum_br;uniform vec3 u_frustum_bl;uniform float u_horizon;varying highp vec3 v_ray_dir;varying highp vec3 v_horizon_dir;void main() {v_ray_dir=mix(\nmix(u_frustum_tl,u_frustum_tr,a_uv.x),mix(u_frustum_bl,u_frustum_br,a_uv.x),a_uv.y);v_horizon_dir=mix(\nmix(u_frustum_tl,u_frustum_bl,u_horizon),mix(u_frustum_tr,u_frustum_br,u_horizon),a_uv.x);gl_Position=vec4(a_pos,1.0);}")};function hi(e,t){const i=e.replace(/\s*\/\/[^\n]*\n/g,"\n").split("\n");for(let e of i)if(e=e.trim(),"#"===e[0]&&e.includes("if")&&!e.includes("endif")){e=e.replace("#","").replace(/ifdef|ifndef|elif|if/g,"").replace(/!|defined|\(|\)|\|\||&&/g,"").replace(/\s+/g," ").trim();const i=e.split(" ");for(const e of i)t.includes(e)||t.push(e)}}function ui(e,t){const i=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,r=t.match(/attribute (highp |mediump |lowp )?([\w]+) ([\w]+)/g),n={},o=[...oi];return hi(e,o),hi(t,o),{fragmentSource:e=e.replace(i,((e,t,i,r,o)=>(n[o]=!0,"define"===t?`\n#ifndef HAS_UNIFORM_u_${o}\nvarying ${i} ${r} ${o};\n#else\nuniform ${i} ${r} u_${o};\n#endif\n`:`\n#ifdef HAS_UNIFORM_u_${o}\n ${i} ${r} ${o} = u_${o};\n#endif\n`))),vertexSource:t=t.replace(i,((e,t,i,r,o)=>{const s="float"===r?"vec2":"vec4",a=o.match(/color/)?"color":s;return n[o]?"define"===t?`\n#ifndef HAS_UNIFORM_u_${o}\nuniform lowp float u_${o}_t;\nattribute ${i} ${s} a_${o};\nvarying ${i} ${r} ${o};\n#else\nuniform ${i} ${r} u_${o};\n#endif\n`:"vec4"===a?`\n#ifndef HAS_UNIFORM_u_${o}\n ${o} = a_${o};\n#else\n ${i} ${r} ${o} = u_${o};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${o}\n ${o} = unpack_mix_${a}(a_${o}, u_${o}_t);\n#else\n ${i} ${r} ${o} = u_${o};\n#endif\n`:"define"===t?`\n#ifndef HAS_UNIFORM_u_${o}\nuniform lowp float u_${o}_t;\nattribute ${i} ${s} a_${o};\n#else\nuniform ${i} ${r} u_${o};\n#endif\n`:"vec4"===a?`\n#ifndef HAS_UNIFORM_u_${o}\n ${i} ${r} ${o} = a_${o};\n#else\n ${i} ${r} ${o} = u_${o};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${o}\n ${i} ${r} ${o} = unpack_mix_${a}(a_${o}, u_${o}_t);\n#else\n ${i} ${r} ${o} = u_${o};\n#endif\n`})),staticAttributes:r,usedDefines:o}}class di{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffers=[],this.vao=null}bind(e,t,i,r,n,o,s){this.context=e;let a=this.boundPaintVertexBuffers.length!==r.length;for(let e=0;!a&&e{const n=i.paint.get("hillshade-shadow-color"),o=i.paint.get("hillshade-highlight-color"),s=i.paint.get("hillshade-accent-color");let a=i.paint.get("hillshade-illumination-direction")*(Math.PI/180);"viewport"===i.paint.get("hillshade-illumination-anchor")&&(a-=e.transform.angle);const l=!e.options.moving;return{u_matrix:r||e.transform.calculateProjMatrix(t.tileID.toUnwrapped(),l),u_image:0,u_latrange:pi(0,t.tileID),u_light:[i.paint.get("hillshade-exaggeration"),a],u_shadow:n,u_highlight:o,u_accent:s}})(t,r,n,t.terrain?i.projMatrix:null);t.prepareDrawProgram(l,u,i.toUnwrapped());const{tileBoundsBuffer:p,tileBoundsIndexBuffer:f,tileBoundsSegments:m}=t.getTileBoundsBuffers(r);u.draw(l,c.TRIANGLES,o,s,a,e.CullFaceMode.disabled,d,n.id,p,f,m)}function mi(t,i,r){if(!i.needsDEMTextureUpload)return;const n=t.context,o=n.gl;n.pixelStoreUnpackPremultiplyAlpha.set(!1),i.demTexture=i.demTexture||t.getTileTexture(r.stride);const s=r.getPixels();i.demTexture?i.demTexture.update(s,{premultiply:!1}):i.demTexture=new e.Texture(n,s,o.RGBA,{premultiply:!1}),i.needsDEMTextureUpload=!1}function _i(t,i,r,n,o,s){const a=t.context,l=a.gl;if(!i.dem)return;const c=i.dem;if(a.activeTexture.set(l.TEXTURE1),mi(t,i,c),!i.demTexture)return;i.demTexture.bind(l.NEAREST,l.CLAMP_TO_EDGE);const h=c.dim;a.activeTexture.set(l.TEXTURE0);let u=i.fbo;if(!u){const t=new e.Texture(a,{width:h,height:h,data:null},l.RGBA);t.bind(l.LINEAR,l.CLAMP_TO_EDGE),u=i.fbo=a.createFramebuffer(h,h,!0),u.colorAttachment.set(t.texture)}a.bindFramebuffer.set(u.framebuffer),a.viewport.set([0,0,h,h]);const{tileBoundsBuffer:d,tileBoundsIndexBuffer:p,tileBoundsSegments:f}=t.getMercatorTileBoundsBuffers();t.useProgram("hillshadePrepare").draw(a,l.TRIANGLES,n,o,s,e.CullFaceMode.disabled,((t,i)=>{const r=i.stride,n=e.create();return e.ortho(n,0,e.EXTENT,-e.EXTENT,0,0,1),e.translate(n,n,[0,-e.EXTENT,0]),{u_matrix:n,u_image:1,u_dimension:[r,r],u_zoom:t.overscaledZ,u_unpack:i.unpackVector}})(i.tileID,c),r.id,d,p,f),i.needsHillshadePrepare=!1}const gi=t=>({u_matrix:new e.UniformMatrix4f(t),u_image0:new e.Uniform1i(t),u_skirt_height:new e.Uniform1f(t)}),yi=(e,t)=>({u_matrix:e,u_image0:0,u_skirt_height:t}),xi=(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f)=>({u_proj_matrix:Float32Array.from(e),u_globe_matrix:t,u_normalize_matrix:Float32Array.from(r),u_merc_matrix:i,u_zoom_transition:n,u_merc_center:o,u_image0:0,u_frustum_tl:s,u_frustum_tr:a,u_frustum_br:l,u_frustum_bl:c,u_globe_pos:h,u_globe_radius:u,u_viewport:d,u_grid_matrix:f?Float32Array.from(f):new Float32Array(9),u_skirt_height:p});function vi(e,t){return null!=e&&null!=t&&!(!e.hasData()||!t.hasData())&&null!=e.demTexture&&null!=t.demTexture&&e.tileID.key!==t.tileID.key}const bi=new class{constructor(){this.operations={}}newMorphing(e,t,i,r,n){if(e in this.operations){const t=this.operations[e];t.to.tileID.key!==i.tileID.key&&(t.queued=i)}else this.operations[e]={startTime:r,phase:0,duration:n,from:t,to:i,queued:null}}getMorphValuesForProxy(e){if(!(e in this.operations))return null;const t=this.operations[e];return{from:t.from,to:t.to,phase:t.phase}}update(e){for(const t in this.operations){const i=this.operations[t];for(i.phase=(e-i.startTime)/i.duration;i.phase>=1||!this._validOp(i);)if(!this._nextOp(i,e)){delete this.operations[t];break}}}_nextOp(e,t){return!!e.queued&&(e.from=e.to,e.to=e.queued,e.queued=null,e.phase=0,e.startTime=t,!0)}_validOp(e){return e.from.hasData()&&e.to.hasData()}},wi={0:null,1:"TERRAIN_VERTEX_MORPHING",2:"TERRAIN_WIREFRAME"};function Ti(e){return 6*Math.pow(1.5,22-e)}function Ei(e,t){const i=1<({u_matrix:e});function Mi(t,i,r,n,o){if(o>0){const s=e.exported.now(),a=(s-t.timeAdded)/o,l=i?(s-i.timeAdded)/o:-1,c=r.getSource(),h=n.coveringZoomLevel({tileSize:c.tileSize,roundZoom:c.roundZoom}),u=!i||Math.abs(i.tileID.overscaledZ-h)>Math.abs(t.tileID.overscaledZ-h),d=u&&t.refreshedUponExpiration?1:e.clamp(u?a:1-l,0,1);return t.refreshedUponExpiration&&a>=1&&(t.refreshedUponExpiration=!1),i?{opacity:1,mix:1-d}:{opacity:d,mix:0}}return{opacity:1,mix:0}}class Ai extends e.SourceCache{constructor(e){const t={type:"raster-dem",maxzoom:e.transform.maxZoom},i=new C(Ue(),null),r=ze("mock-dem",t,i,e.style);super("mock-dem",r,!1),r.setEventedParent(this),this._sourceLoaded=!0}_loadTile(e,t){e.state="loaded",t(null)}}class Ii extends e.SourceCache{constructor(e){const t=ze("proxy",{type:"geojson",maxzoom:e.transform.maxZoom},new C(Ue(),null),e.style);super("proxy",t,!1),t.setEventedParent(this),this.map=this.getSource().map=e,this.used=this._sourceLoaded=!0,this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={}}update(t,i,r){if(t.freezeTileCoverage)return;this.transform=t;const n=t.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}).reduce(((i,r)=>{if(i[r.key]="",!this._tiles[r.key]){const i=new e.Tile(r,this._source.tileSize*r.overscaleFactor(),t.tileZoom);i.state="loaded",this._tiles[r.key]=i}return i}),{});for(const e in this._tiles)e in n||(this.freeFBO(e),this._tiles[e].unloadVectorData(),delete this._tiles[e])}freeFBO(e){const t=this.proxyCachedFBO[e];if(void 0!==t){const i=Object.values(t);this.renderCachePool.push(...i),delete this.proxyCachedFBO[e]}}deallocRenderCache(){this.renderCache.forEach((e=>e.fb.destroy())),this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={}}}class Ci extends e.OverscaledTileID{constructor(e,t,i){super(e.overscaledZ,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y),this.proxyTileKey=t,this.projMatrix=i}}class zi extends e.Elevation{constructor(t,i){super(),this.painter=t,this.terrainTileForTile={},this.prevTerrainTileForTile={};const[r,n,o]=function(t){const i=new e.StructArrayLayout2i4,r=new e.StructArrayLayout3ui6,n=131;i.reserve(17161),r.reserve(33800);const o=e.EXTENT/128,s=e.EXTENT+o/2,a=s+o;for(let t=-o;ts||t<0||t>s?24575:0,o=e.clamp(Math.round(r),0,e.EXTENT),a=e.clamp(Math.round(t),0,e.EXTENT);i.emplaceBack(o+n,a)}const l=(e,t)=>{const i=t*n+e;r.emplaceBack(i+1,i,i+n),r.emplaceBack(i+n,i+n+1,i+1)};for(let e=1;e<129;e++)for(let t=1;t<129;t++)l(t,e);return[0,129].forEach((e=>{for(let t=0;t<130;t++)l(t,e),l(e,t)})),[i,r,32768]}(),s=t.context;this.gridBuffer=s.createVertexBuffer(r,e.posAttributes.members),this.gridIndexBuffer=s.createIndexBuffer(n),this.gridSegments=e.SegmentVector.simpleSegment(0,0,r.length,n.length),this.gridNoSkirtSegments=e.SegmentVector.simpleSegment(0,0,r.length,o),this.proxyCoords=[],this.proxiedCoords={},this._visibleDemTiles=[],this._drapedRenderBatches=[],this._sourceTilesOverlap={},this.proxySourceCache=new Ii(i.map),this.orthoMatrix=e.create(),e.ortho(this.orthoMatrix,"globe"===this.painter.transform.projection.name?.015:0,e.EXTENT,0,e.EXTENT,0,1);const a=s.gl;this._overlapStencilMode=new e.StencilMode({func:a.GEQUAL,mask:255},0,255,a.KEEP,a.KEEP,a.REPLACE),this._previousZoom=t.transform.zoom,this.pool=[],this._findCoveringTileCache={},this._tilesDirty={},this.style=i,this._useVertexMorphing=!0,this._exaggeration=1,this._mockSourceCache=new Ai(i.map)}set style(e){e.on("data",this._onStyleDataEvent.bind(this)),e.on("neworder",this._checkRenderCacheEfficiency.bind(this)),this._style=e,this._checkRenderCacheEfficiency(),this._style.map.on("moveend",(()=>{this._clearLineLayersFromRenderCache()}))}update(t,i,r){if(t&&t.terrain){this._style!==t&&(this.style=t),this.enabled=!0;const n=t.terrain.properties;this.sourceCache=0===t.terrain.drapeRenderMode?this._mockSourceCache:t._getSourceCache(n.get("source")),this._exaggeration=n.get("exaggeration");const o=()=>{this.sourceCache.used&&e.warnOnce(`Raster DEM source '${this.sourceCache.id}' is used both for terrain and as layer source.\nThis leads to lower resolution of hillshade. For full hillshade resolution but higher memory consumption, define another raster DEM source.`);const t=this.getScaledDemTileSize();this.sourceCache.update(i,t,!0),this.resetTileLookupCache(this.sourceCache.id)};this.sourceCache.usedForTerrain||(this.resetTileLookupCache(this.sourceCache.id),this.sourceCache.usedForTerrain=!0,o(),this._initializing=!0),o(),i.updateElevation(!0,r),this.resetTileLookupCache(this.proxySourceCache.id),this.proxySourceCache.update(i),this._emptyDEMTextureDirty=!0}else this._disable()}resetTileLookupCache(e){this._findCoveringTileCache[e]={}}getScaledDemTileSize(){return this.sourceCache.getSource().tileSize/128*this.proxySourceCache.getSource().tileSize}_checkRenderCacheEfficiency(){const t=this.renderCacheEfficiency(this._style);this._style.map._optimizeForTerrain||100!==t.efficiency&&e.warnOnce(`Terrain render cache efficiency is not optimal (${t.efficiency}%) and performance\n may be affected negatively, consider placing all background, fill and line layers before layer\n with id '${t.firstUndrapedLayer}' or create a map using optimizeForTerrain: true option.`)}_onStyleDataEvent(e){e.coord&&"source"===e.dataType?this._clearRenderCacheForTile(e.sourceCacheId,e.coord):"style"===e.dataType&&(this._invalidateRenderCache=!0)}_disable(){if(this.enabled&&(this.enabled=!1,this._sharedDepthStencil=void 0,this.proxySourceCache.deallocRenderCache(),this._style))for(const e in this._style._sourceCaches)this._style._sourceCaches[e].usedForTerrain=!1}destroy(){this._disable(),this._emptyDEMTexture&&this._emptyDEMTexture.destroy(),this._emptyDepthBufferTexture&&this._emptyDepthBufferTexture.destroy(),this.pool.forEach((e=>e.fb.destroy())),this.pool=[],this._depthFBO&&(this._depthFBO.destroy(),this._depthFBO=void 0,this._depthTexture=void 0)}_source(){return this.enabled?this.sourceCache:null}isUsingMockSource(){return this.sourceCache===this._mockSourceCache}exaggeration(){return this._exaggeration}get visibleDemTiles(){return this._visibleDemTiles}get drapeBufferSize(){const e=2*this.proxySourceCache.getSource().tileSize;return[e,e]}set useVertexMorphing(e){this._useVertexMorphing=e}updateTileBinding(t){if(!this.enabled)return;this.prevTerrainTileForTile=this.terrainTileForTile;const i=this.proxySourceCache,r=this.painter.transform;this._initializing&&(this._initializing=0===r._centerAltitude&&-1===this.getAtPointOrZero(e.MercatorCoordinate.fromLngLat(r.center),-1),this._emptyDEMTextureDirty=!this._initializing);const n=this.proxyCoords=i.getIds().map((e=>{const t=i.getTileByID(e).tileID;return t.projMatrix=r.calculateProjMatrix(t.toUnwrapped()),t}));!function(t,i){const r=i.transform.pointCoordinate(i.transform.getCameraPoint()),n=new e.Point(r.x,r.y);t.sort(((t,i)=>{if(i.overscaledZ-t.overscaledZ)return i.overscaledZ-t.overscaledZ;const r=new e.Point(t.canonical.x+(1<{this.proxyToSource[e.key]={}})),this.terrainTileForTile={};const s=this._style._sourceCaches;for(const e in s){const i=s[e];if(!i.used)continue;if(i!==this.sourceCache&&this.resetTileLookupCache(i.id),this._setupProxiedCoordsForOrtho(i,t[e],o),i.usedForTerrain)continue;const r=t[e];i.getSource().reparseOverscaled&&this._assignTerrainTiles(r)}this.proxiedCoords[i.id]=n.map((e=>new Ci(e,e.key,this.orthoMatrix))),this._assignTerrainTiles(n),this._prepareDEMTextures(),this._setupDrapedRenderBatches(),this._initFBOPool(),this._setupRenderCache(o),this.renderingToTexture=!1,this._updateTimestamp=e.exported.now();const a={};this._visibleDemTiles=[];for(const e of this.proxyCoords){const t=this.terrainTileForTile[e.key];if(!t)continue;const i=t.tileID.key;i in a||(this._visibleDemTiles.push(t),a[i]=i)}}_assignTerrainTiles(e){this._initializing||e.forEach((e=>{if(this.terrainTileForTile[e.key])return;const t=this._findTileCoveringTileID(e,this.sourceCache);t&&(this.terrainTileForTile[e.key]=t)}))}_prepareDEMTextures(){const e=this.painter.context,t=e.gl;for(const i in this.terrainTileForTile){const r=this.terrainTileForTile[i],n=r.dem;!n||r.demTexture&&!r.needsDEMTextureUpload||(e.activeTexture.set(t.TEXTURE1),mi(this.painter,r,n))}}_prepareDemTileUniforms(e,t,i,r){if(!t||null==t.demTexture)return!1;const n=e.tileID.canonical,o=Math.pow(2,t.tileID.canonical.z-n.z),s=r||"";return i[`u_dem_tl${s}`]=[n.x*o%1,n.y*o%1],i[`u_dem_scale${s}`]=o,!0}get emptyDEMTexture(){return!this._emptyDEMTextureDirty&&this._emptyDEMTexture?this._emptyDEMTexture:this._updateEmptyDEMTexture()}get emptyDepthBufferTexture(){const t=this.painter.context,i=t.gl;if(!this._emptyDepthBufferTexture){const r=new e.RGBAImage({width:1,height:1},Uint8Array.of(255,255,255,255));this._emptyDepthBufferTexture=new e.Texture(t,r,i.RGBA,{premultiply:!1})}return this._emptyDepthBufferTexture}_getLoadedAreaMinimum(){let e=0;const t=this._visibleDemTiles.reduce(((t,i)=>{if(!i.dem)return t;const r=i.dem.tree.minimums[0];return r>0&&e++,t+r}),0);return e?t/e:0}_updateEmptyDEMTexture(){const t=this.painter.context,i=t.gl;t.activeTexture.set(i.TEXTURE2);const r=this._getLoadedAreaMinimum(),n=new e.RGBAImage({width:1,height:1},new Uint8Array(e.DEMData.pack(r,this.sourceCache.getSource().encoding)));this._emptyDEMTextureDirty=!1;let o=this._emptyDEMTexture;return o?o.update(n,{premultiply:!1}):o=this._emptyDEMTexture=new e.Texture(t,n,i.RGBA,{premultiply:!1}),o}setupElevationDraw(t,i,r){const n=this.painter.context,o=n.gl,s=(a=this.sourceCache.getSource().encoding,{u_dem:2,u_dem_prev:4,u_dem_unpack:e.DEMData.getUnpackVector(a),u_dem_tl:[0,0],u_dem_tl_prev:[0,0],u_dem_scale:0,u_dem_scale_prev:0,u_dem_size:0,u_dem_lerp:1,u_depth:3,u_depth_size_inv:[0,0],u_exaggeration:0});var a;s.u_dem_size=this.sourceCache.getSource().tileSize,s.u_exaggeration=this.exaggeration();let l=null,c=null,h=1;if(r&&r.morphing&&this._useVertexMorphing){const e=r.morphing.srcDemTile,i=r.morphing.dstDemTile;h=r.morphing.phase,e&&i&&(this._prepareDemTileUniforms(t,e,s,"_prev")&&(c=e),this._prepareDemTileUniforms(t,i,s)&&(l=i))}if(c&&l?(n.activeTexture.set(o.TEXTURE2),l.demTexture.bind(o.NEAREST,o.CLAMP_TO_EDGE,o.NEAREST),n.activeTexture.set(o.TEXTURE4),c.demTexture.bind(o.NEAREST,o.CLAMP_TO_EDGE,o.NEAREST),s.u_dem_lerp=h):(l=this.terrainTileForTile[t.tileID.key],n.activeTexture.set(o.TEXTURE2),(this._prepareDemTileUniforms(t,l,s)?l.demTexture:this.emptyDEMTexture).bind(o.NEAREST,o.CLAMP_TO_EDGE)),n.activeTexture.set(o.TEXTURE3),r&&r.useDepthForOcclusion?(this._depthTexture&&this._depthTexture.bind(o.NEAREST,o.CLAMP_TO_EDGE),this._depthFBO&&(s.u_depth_size_inv=[1/this._depthFBO.width,1/this._depthFBO.height])):(this.emptyDepthBufferTexture.bind(o.NEAREST,o.CLAMP_TO_EDGE),s.u_depth_size_inv=[1,1]),r&&r.useMeterToDem&&l){const t=(1<{if(c===e)return;const r=[wi[e],"PROJECTION_GLOBE_VIEW"];d&&r.push("CUSTOM_ANTIALIASING"),i&&r.push(wi[h]),l=t.useProgram("globeRaster",null,r),c=e},f=t.colorModeForRenderPass(),m=new e.DepthMode(a.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);bi.update(o);const _=e.calculateGlobeMercatorMatrix(u),g=[e.mercatorXfromLng(u.center.lng),e.mercatorYfromLat(u.center.lat)],y=h?[!1,!0]:[!1],x=t.globeSharedBuffers,v=[u.width*e.exported.devicePixelRatio,u.height*e.exported.devicePixelRatio],b=Float32Array.from(u.globeMatrix),w={useDenormalizedUpVectorScale:!0};if(y.forEach((h=>{const u=t.transform,d=Ti(u.zoom)*i.exaggeration();c=-1;const y=h?a.LINES:a.TRIANGLES;for(const c of n){const n=r.getTile(c),T=e.StencilMode.disabled,E=i.prevTerrainTileForTile[c.key],S=i.terrainTileForTile[c.key];vi(E,S)&&bi.newMorphing(c.key,E,S,o,250),s.activeTexture.set(a.TEXTURE0),n.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE);const M=bi.getMorphValuesForProxy(c.key),A=M?1:0;M&&e.extend$1(w,{morphing:{srcDemTile:M.from,dstDemTile:M.to,phase:e.easeCubicInOut(M.phase)}});const I=e.tileCornersToBounds(c.canonical),C=e.getLatitudinalLod(I.getCenter().lat),z=e.getGridMatrix(c.canonical,I,C,u.worldSize/u._pixelsPerMercatorPixel),P=e.globeNormalizeECEF(e.globeTileBounds(c.canonical)),k=xi(u.projMatrix,b,_,P,e.globeToMercatorTransition(u.zoom),g,u.frustumCorners.TL,u.frustumCorners.TR,u.frustumCorners.BR,u.frustumCorners.BL,u.globeCenterInViewSpace,u.globeRadius,v,d,z);if(p(A,h),i.setupElevationDraw(n,l,w),t.prepareDrawProgram(s,l,c.toUnwrapped()),x){const[i,r,n]=h?x.getWirefameBuffers(t.context,C):x.getGridBuffers(C,0!==d);l.draw(s,y,m,T,f,e.CullFaceMode.backCCW,k,"globe_raster",i,r,n)}}})),x){const o=["GLOBE_POLES","PROJECTION_GLOBE_VIEW"];d&&o.push("CUSTOM_ANTIALIASING"),l=t.useProgram("globeRaster",null,o);for(const o of n){const{x:n,y:c,z:h}=o.canonical,d=0===c,p=c===(1<t.draw(s,a.TRIANGLES,m,e.StencilMode.disabled,f,e.CullFaceMode.disabled,xi(u.projMatrix,x,x,E,0,g,u.frustumCorners.TL,u.frustumCorners.TR,u.frustumCorners.BR,u.frustumCorners.BL,u.globeCenterInViewSpace,u.globeRadius,v,0),"globe_pole_raster",i,b,T);i.setupElevationDraw(c,l,w),t.prepareDrawProgram(s,l,o.toUnwrapped()),d&&S(l,_),p&&(x=e.scale(e.create(),x,[1,-1,1]),S(l,y))}}}}(t,i,r,n,o);else{const s=t.context,a=s.gl;let l,c;const h=t.options.showTerrainWireframe?2:0,u=(e,i)=>{if(c===e)return;const r=[wi[e]];i&&r.push(wi[h]),l=t.useProgram("terrainRaster",null,r),c=e},d=t.colorModeForRenderPass(),p=new e.DepthMode(a.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);bi.update(o);const f=t.transform,m=Ti(f.zoom)*i.exaggeration();(h?[!1,!0]:[!1]).forEach((h=>{c=-1;const _=h?a.LINES:a.TRIANGLES,[g,y]=h?i.getWirefameBuffer():[i.gridIndexBuffer,i.gridSegments];for(const c of n){const n=r.getTile(c),x=e.StencilMode.disabled,v=i.prevTerrainTileForTile[c.key],b=i.terrainTileForTile[c.key];vi(v,b)&&bi.newMorphing(c.key,v,b,o,250),s.activeTexture.set(a.TEXTURE0),n.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE,a.LINEAR_MIPMAP_NEAREST);const w=bi.getMorphValuesForProxy(c.key),T=w?1:0;let E;w&&(E={morphing:{srcDemTile:w.from,dstDemTile:w.to,phase:e.easeCubicInOut(w.phase)}});const S=yi(c.projMatrix,Ei(c.canonical,f.renderWorldCopies)?m/10:m);u(T,h),i.setupElevationDraw(n,l,E),t.prepareDrawProgram(s,l,c.toUnwrapped()),l.draw(s,_,p,x,d,e.CullFaceMode.backCCW,S,"terrain_raster",i.gridBuffer,g,y)}}))}}(i,this,this.proxySourceCache,t,this._updateTimestamp),this.renderingToTexture=!0,i.gpuTimingDeferredRenderEnd(),t.splice(0,t.length))}renderBatch(t){if(0===this._drapedRenderBatches.length)return t+1;this.renderingToTexture=!0;const i=this.painter,r=this.painter.context,n=this.proxySourceCache,o=this.proxiedCoords[n.id],s=this._drapedRenderBatches.shift(),a=[],l=i.style.order;let c=0;for(const h of o){const o=n.getTileByID(h.proxyTileKey),u=n.proxyCachedFBO[h.key]?n.proxyCachedFBO[h.key][t]:void 0,d=void 0!==u?n.renderCache[u]:this.pool[c++],p=void 0!==u;if(o.texture=d.tex,p&&!d.dirty){a.push(o.tileID);continue}let f;r.bindFramebuffer.set(d.fb.framebuffer),this.renderedToTile=!1,d.dirty&&(r.clear({color:e.Color.transparent,stencil:0}),d.dirty=!1);for(let e=s.start;e<=s.end;++e){const t=i.style._layers[l[e]];if(t.isHidden(i.transform.zoom))continue;const n=i.style._getLayerSourceCache(t),o=n?this.proxyToSource[h.key][n.id]:[h];if(!o)continue;const s=o;r.viewport.set([0,0,d.fb.width,d.fb.height]),f!==(n?n.id:null)&&(this._setupStencil(d,o,t,n),f=n?n.id:null),i.renderLayer(i,n,t,s)}this.renderedToTile?(d.dirty=!0,a.push(o.tileID)):p||--c,5===c&&(c=0,this.renderToBackBuffer(a))}return this.renderToBackBuffer(a),this.renderingToTexture=!1,r.bindFramebuffer.set(null),r.viewport.set([0,0,i.width,i.height]),s.end+1}postRender(){}renderCacheEfficiency(e){const t=e.order.length;if(0===t)return{efficiency:100};let i,r=0,n=0,o=!1;for(let s=0;se.dem)).forEach((t=>{e=Math.min(e,t.dem.tree.minimums[0])})),0===e?e:(e-30)*this._exaggeration}raycast(e,t,i){if(!this._visibleDemTiles)return null;const r=this._visibleDemTiles.filter((e=>e.dem)).map((r=>{const n=r.tileID,o=1<(null!==e.t?e.t:Number.MAX_VALUE)-(null!==t.t?t.t:Number.MAX_VALUE)));for(const n of r){if(null==n.t)return null;const r=n.tile.dem.tree.raycast(n.minx,n.miny,n.maxx,n.maxy,e,t,i);if(null!=r)return r}return null}_createFBO(){const t=this.painter.context,i=t.gl,r=this.drapeBufferSize;t.activeTexture.set(i.TEXTURE0);const n=new e.Texture(t,{width:r[0],height:r[1],data:null},i.RGBA);n.bind(i.LINEAR,i.CLAMP_TO_EDGE);const o=t.createFramebuffer(r[0],r[1],!1);return o.colorAttachment.set(n.texture),o.depthAttachment=new we(t,o.framebuffer),void 0===this._sharedDepthStencil?(this._sharedDepthStencil=t.createRenderbuffer(t.gl.DEPTH_STENCIL,r[0],r[1]),this._stencilRef=0,o.depthAttachment.set(this._sharedDepthStencil),t.clear({stencil:0})):o.depthAttachment.set(this._sharedDepthStencil),t.extTextureFilterAnisotropic&&!t.extTextureFilterAnisotropicForceOff&&i.texParameterf(i.TEXTURE_2D,t.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.extTextureFilterAnisotropicMax),{fb:o,tex:n,dirty:!1}}_initFBOPool(){for(;this.pool.length{const t=this._style._layers[e],i=t.isHidden(this.painter.transform.zoom);return"custom"===t.type?!i&&t.shouldRedrape():!i&&t.hasTransition()}))}_clearLineLayersFromRenderCache(){let t=!1;for(const e of this._style._getSources())if(e instanceof Se){t=!0;break}if(!t)return;const i={};for(let t=0;tt.renderCachePool.length){const e=Object.values(t.proxyCachedFBO);t.proxyCachedFBO={};for(let i=0;i=0;n--){const o=i[n];if(t.getTileByID(o.key),void 0!==t.proxyCachedFBO[o.key]){const i=e[o.key],n=this.proxyToSource[o.key];let s=0;for(const e in n){const t=n[e],o=i[e];if(!o||o.length!==t.length||t.some(((t,i)=>t!==o[i]||r[e]&&r[e].hasOwnProperty(t.key)))){s=-1;break}++s}for(const e in t.proxyCachedFBO[o.key])t.renderCache[t.proxyCachedFBO[o.key][e]].dirty=s<0||s!==Object.values(i).length}}const n=[...this._drapedRenderBatches];n.sort(((e,t)=>t.end-t.start-(e.end-e.start)));for(const e of n)for(const r of i){if(t.proxyCachedFBO[r.key])continue;let i=t.renderCachePool.pop();void 0===i&&t.renderCache.length<50&&(i=t.renderCache.length,t.renderCache.push(this._createFBO())),void 0!==i&&(t.proxyCachedFBO[r.key]={},t.proxyCachedFBO[r.key][e.start]=i,t.renderCache[i].dirty=!0)}this._tilesDirty={}}_setupStencil(e,t,i,r){if(!r||!this._sourceTilesOverlap[r.id])return void(this._overlapStencilType&&(this._overlapStencilType=!1));const n=this.painter.context,o=n.gl;if(t.length<=1)return void(this._overlapStencilType=!1);let s;if(i.isTileClipped())s=t.length,this._overlapStencilMode.test={func:o.EQUAL,mask:255},this._overlapStencilType="Clip";else{if(!(t[0].overscaledZ>t[t.length-1].overscaledZ))return void(this._overlapStencilType=!1);s=1,this._overlapStencilMode.test={func:o.GREATER,mask:255},this._overlapStencilType="Mask"}this._stencilRef+s>255&&(n.clear({stencil:0}),this._stencilRef=0),this._stencilRef+=s,this._overlapStencilMode.ref=this._stencilRef,i.isTileClipped()&&this._renderTileClippingMasks(t,this._overlapStencilMode.ref)}clipOrMaskOverlapStencilType(){return"Clip"===this._overlapStencilType||"Mask"===this._overlapStencilType}stencilModeForRTTOverlap(t){return this.renderingToTexture&&this._overlapStencilType?("Clip"===this._overlapStencilType&&(this._overlapStencilMode.ref=this.painter._tileClippingMaskIDs[t.key]),this._overlapStencilMode):e.StencilMode.disabled}_renderTileClippingMasks(t,i){const r=this.painter,n=this.painter.context,o=n.gl;r._tileClippingMaskIDs={},n.setColorMode(e.ColorMode.disabled),n.setDepthMode(e.DepthMode.disabled);const s=r.useProgram("clippingMask");for(const a of t){const t=r._tileClippingMaskIDs[a.key]=--i;s.draw(n,o.TRIANGLES,e.DepthMode.disabled,new e.StencilMode({func:o.ALWAYS,mask:0},t,255,o.KEEP,o.KEEP,o.REPLACE),e.ColorMode.disabled,e.CullFaceMode.disabled,Si(a.projMatrix),"$clipping",r.tileExtentBuffer,r.quadTriangleIndexBuffer,r.tileExtentSegments)}}pointCoordinate(t){const i=this.painter.transform;if(t.x<0||t.x>i.width||t.y<0||t.y>i.height)return null;const r=[t.x,t.y,1,1];e.transformMat4$1(r,r,i.pixelMatrixInverse),e.scale$1(r,r,1/r[3]),r[0]/=i.worldSize,r[1]/=i.worldSize;const n=i._camera.position,o=e.mercatorZfromAltitude(1,i.center.lat),s=[n[0],n[1],n[2]/o,0],a=e.subtract([],r.slice(0,3),s);e.normalize(a,a);const l=this.raycast(s,a,this._exaggeration);return null!==l&&l?(e.scaleAndAdd(s,s,a,l),s[3]=s[2],s[2]*=o,s):null}drawDepth(){const t=this.painter,i=t.context,r=this.proxySourceCache,n=Math.ceil(t.width),o=Math.ceil(t.height);if(!this._depthFBO||this._depthFBO.width===n&&this._depthFBO.height===o||(this._depthFBO.destroy(),this._depthFBO=void 0,this._depthTexture=void 0),!this._depthFBO){const t=i.gl,r=i.createFramebuffer(n,o,!0);i.activeTexture.set(t.TEXTURE0);const s=new e.Texture(i,{width:n,height:o,data:null},t.RGBA);s.bind(t.NEAREST,t.CLAMP_TO_EDGE),r.colorAttachment.set(s.texture);const a=i.createRenderbuffer(i.gl.DEPTH_COMPONENT16,n,o);r.depthAttachment.set(a),this._depthFBO=r,this._depthTexture=s}i.bindFramebuffer.set(this._depthFBO.framebuffer),i.viewport.set([0,0,n,o]),function(t,i,r,n){if("globe"===t.transform.projection.name)return;const o=t.context,s=o.gl;o.clear({depth:1});const a=t.useProgram("terrainDepth"),l=new e.DepthMode(s.LESS,e.DepthMode.ReadWrite,t.depthRangeFor3D);for(const t of n){const n=r.getTile(t),c=yi(t.projMatrix,0);i.setupElevationDraw(n,a),a.draw(o,s.TRIANGLES,l,e.StencilMode.disabled,e.ColorMode.unblended,e.CullFaceMode.backCCW,c,"terrain_depth",i.gridBuffer,i.gridIndexBuffer,i.gridNoSkirtSegments)}}(t,this,r,this.proxyCoords)}_setupProxiedCoordsForOrtho(e,t,i){if(e.getSource()instanceof Ie)return this._setupProxiedCoordsForImageSource(e,t,i);this._findCoveringTileCache[e.id]=this._findCoveringTileCache[e.id]||{};const r=this.proxiedCoords[e.id]=[],n=this.proxyCoords;for(let t=0;t(e.min.x=Math.min(e.min.x,t.x-a.x),e.min.y=Math.min(e.min.y,t.y-a.y),e.max.x=Math.max(e.max.x,t.x-a.x),e.max.y=Math.max(e.max.y,t.y-a.y),e)),{min:new e.Point(Number.MAX_VALUE,Number.MAX_VALUE),max:new e.Point(-Number.MAX_VALUE,-Number.MAX_VALUE)}),c=(t,i)=>{const r=t.wrap+t.canonical.x/(1<s+l.max.x||n+oa+l.max.y};for(let e=0;ee.key===i.tileID.key));if(e)return e}if(i.tileID.key!==t.key){const r=t.canonical.z-i.tileID.canonical.z;let o,s,a;n=e.create();const l=i.tileID.wrap-t.wrap<0?(o=e.EXTENT>>r,s=o*((i.tileID.canonical.x<=n){const r=t.canonical.z-n;i.getSource().reparseOverscaled?(a=Math.max(t.canonical.z+2,i.transform.tileZoom),s=new e.OverscaledTileID(a,t.wrap,n,t.canonical.x>>r,t.canonical.y>>r)):0!==r&&(a=n,s=new e.OverscaledTileID(a,t.wrap,n,t.canonical.x>>r,t.canonical.y>>r))}s.key!==t.key&&(c.push(s.key),r=i.getTile(s))}const h=e=>{c.forEach((t=>{n[t]=e})),c.length=0};for(a-=1;a>=l&&(!r||!r.hasData());a--){r&&h(r.tileID.key);const e=s.calculateScaledKey(a);if(r=i.getTileByID(e),r&&r.hasData())break;const t=n[e];if(null===t)break;void 0===t?c.push(e):r=i.getTileByID(t)}return h(r?r.tileID.key:null),r&&r.hasData()?r:null}findDEMTileFor(e){return this.enabled?this._findTileCoveringTileID(e,this.sourceCache):null}prepareDrawTile(){this.renderedToTile=!0}_clearRenderCacheForTile(e,t){let i=this._tilesDirty[e];i||(i=this._tilesDirty[e]={}),i[t.key]=!0}getWirefameBuffer(){if(!this.wireframeSegments){const t=function(t){let i=0;const r=new e.StructArrayLayout2ui4,n=131;for(let e=1;e<129;e++){for(let t=1;t<129;t++)i=e*n+t,r.emplaceBack(i,i+1),r.emplaceBack(i,i+n),r.emplaceBack(i+1,i+n),128===e&&r.emplaceBack(i+n,i+n+1);r.emplaceBack(i+1,i+1+n)}return r}();this.wireframeIndexBuffer=this.painter.context.createIndexBuffer(t),this.wireframeSegments=e.SegmentVector.simpleSegment(0,0,this.gridBuffer.length,t.length)}return[this.wireframeIndexBuffer,this.wireframeSegments]}}class Pi{static cacheKey(e,t,i,r){let n=`${t}${r?r.cacheKey:""}`;for(const t of i)e.usedDefines.includes(t)&&(n+=`/${t}`);return n}constructor(t,i,r,n,o,s){const a=t.gl;this.program=a.createProgram();const l=function(e){const t=[];for(let i=0;i`#define ${e}`)));const d=t.isWebGL2?"#version 300 es\n":"",p=d+u.concat(t.extStandardDerivatives&&0===d.length?"#extension GL_OES_standard_derivatives : enable\n".concat(li):li,li,ai,si.fragmentSource,ni.fragmentSource,r.fragmentSource).join("\n"),f=d+u.concat("\n#ifdef GL_ES\nprecision highp float;\n#else\n\n#if !defined(lowp)\n#define lowp\n#endif\n\n#if !defined(mediump)\n#define mediump\n#endif\n\n#if !defined(highp)\n#define highp\n#endif\n\n#endif",ai,si.vertexSource,ni.vertexSource,ri.vertexSource,r.vertexSource).join("\n"),m=a.createShader(a.FRAGMENT_SHADER);if(a.isContextLost())return void(this.failedToCreate=!0);a.shaderSource(m,p),a.compileShader(m),a.attachShader(this.program,m);const _=a.createShader(a.VERTEX_SHADER);if(a.isContextLost())this.failedToCreate=!0;else{a.shaderSource(_,f),a.compileShader(_),a.attachShader(this.program,_),this.attributes={},this.numAttributes=h.length;for(let e=0;e({u_dem:new e.Uniform1i(t),u_dem_prev:new e.Uniform1i(t),u_dem_unpack:new e.Uniform4f(t),u_dem_tl:new e.Uniform2f(t),u_dem_scale:new e.Uniform1f(t),u_dem_tl_prev:new e.Uniform2f(t),u_dem_scale_prev:new e.Uniform1f(t),u_dem_size:new e.Uniform1f(t),u_dem_lerp:new e.Uniform1f(t),u_exaggeration:new e.Uniform1f(t),u_depth:new e.Uniform1i(t),u_depth_size_inv:new e.Uniform2f(t),u_meter_to_dem:new e.Uniform1f(t),u_label_plane_matrix_inv:new e.UniformMatrix4f(t)}))(t)),s.includes("GLOBE")&&(this.globeUniforms=(t=>({u_tile_tl_up:new e.Uniform3f(t),u_tile_tr_up:new e.Uniform3f(t),u_tile_br_up:new e.Uniform3f(t),u_tile_bl_up:new e.Uniform3f(t),u_tile_up_scale:new e.Uniform1f(t)}))(t)),s.includes("FOG")&&(this.fogUniforms=(t=>({u_fog_matrix:new e.UniformMatrix4f(t),u_fog_range:new e.Uniform2f(t),u_fog_color:new e.Uniform4f(t),u_fog_horizon_blend:new e.Uniform1f(t),u_fog_temporal_offset:new e.Uniform1f(t),u_frustum_tl:new e.Uniform3f(t),u_frustum_tr:new e.Uniform3f(t),u_frustum_br:new e.Uniform3f(t),u_frustum_bl:new e.Uniform3f(t),u_globe_pos:new e.Uniform3f(t),u_globe_radius:new e.Uniform1f(t),u_globe_transition:new e.Uniform1f(t),u_is_globe:new e.Uniform1i(t),u_viewport:new e.Uniform2f(t)}))(t))}}setTerrainUniformValues(e,t){if(!this.terrainUniforms)return;const i=this.terrainUniforms;if(!this.failedToCreate){e.program.set(this.program);for(const e in t)i[e]&&i[e].set(this.program,e,t[e])}}setGlobeUniformValues(e,t){if(!this.globeUniforms)return;const i=this.globeUniforms;if(!this.failedToCreate){e.program.set(this.program);for(const e in t)i[e]&&i[e].set(this.program,e,t[e])}}setFogUniformValues(e,t){if(!this.fogUniforms)return;const i=this.fogUniforms;if(!this.failedToCreate){e.program.set(this.program);for(const e in t)i[e].set(this.program,e,t[e])}}draw(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f){const m=e.gl;if(this.failedToCreate)return;e.program.set(this.program),e.setDepthMode(i),e.setStencilMode(r),e.setColorMode(n),e.setCullFace(o);for(const e of Object.keys(this.fixedUniforms))this.fixedUniforms[e].set(this.program,e,s[e]);p&&p.setUniforms(this.program,e,this.binderUniforms,u,{zoom:d});const _={[m.LINES]:2,[m.TRIANGLES]:3,[m.LINE_STRIP]:1}[t];for(const i of h.get()){const r=i.vaos||(i.vaos={});(r[a]||(r[a]=new di)).bind(e,this,l,p?p.getPaintVertexBuffers():[],c,i.vertexOffset,f||[]),m.drawElements(t,i.primitiveLength*_,m.UNSIGNED_SHORT,i.primitiveOffset*_*2)}}}function ki(e,t){const i=Math.pow(2,t.tileID.overscaledZ),r=t.tileSize*Math.pow(2,e.transform.tileZoom)/i,n=r*(t.tileID.canonical.x+t.tileID.wrap*i),o=r*t.tileID.canonical.y;return{u_image:0,u_texsize:t.imageAtlasTexture.size,u_tile_units_to_pixels:1/z(t,1,e.transform.tileZoom),u_pixel_coord_upper:[n>>16,o>>16],u_pixel_coord_lower:[65535&n,65535&o]}}const Di=e.create(),Li=(t,i,r,n,o,s,a,l,c,h,u)=>{const d=i.style.light,p=d.properties.get("position"),f=[p.x,p.y,p.z],m=e.create$1();"viewport"===d.properties.get("anchor")&&(e.fromRotation(m,-i.transform.angle),e.transformMat3(f,f,m));const _=d.properties.get("color"),g=i.transform,y={u_matrix:t,u_lightpos:f,u_lightintensity:d.properties.get("intensity"),u_lightcolor:[_.r,_.g,_.b],u_vertical_gradient:+r,u_opacity:n,u_tile_id:[0,0,0],u_zoom_transition:0,u_inv_rot_matrix:Di,u_merc_center:[0,0],u_up_dir:[0,0,0],u_height_lift:0,u_ao:o,u_edge_radius:s};return"globe"===g.projection.name&&(y.u_tile_id=[a.canonical.x,a.canonical.y,1<{const p=Li(t,i,r,n,o,s,a,c,h,u,d),f={u_height_factor:-Math.pow(2,a.overscaledZ)/l.tileSize/8};return e.extend(p,ki(i,l),f)},Bi=e=>({u_matrix:e}),Oi=(t,i,r)=>e.extend(Bi(t),ki(i,r)),Fi=(e,t)=>({u_matrix:e,u_world:t}),Ui=(t,i,r,n)=>e.extend(Oi(t,i,r),{u_world:n}),Vi=e.create(),Ni=(t,i,r,n,o,s)=>{const a=t.transform,l="globe"===a.projection.name;let c;if("map"===s.paint.get("circle-pitch-alignment"))if(l){const t=e.globePixelsToTileUnits(a.zoom,i.canonical)*a._pixelsPerMercatorPixel;c=Float32Array.from([t,0,0,t])}else c=a.calculatePixelsToTileUnitsMatrix(r);else c=new Float32Array([a.pixelsToGLUnits[0],0,0,a.pixelsToGLUnits[1]]);const h={u_camera_to_center_distance:a.cameraToCenterDistance,u_matrix:t.translatePosMatrix(i.projMatrix,r,s.paint.get("circle-translate"),s.paint.get("circle-translate-anchor")),u_device_pixel_ratio:e.exported.devicePixelRatio,u_extrude_scale:c,u_inv_rot_matrix:Vi,u_merc_center:[0,0],u_tile_id:[0,0,0],u_zoom_transition:0,u_up_dir:[0,0,0]};if(l){h.u_inv_rot_matrix=n,h.u_merc_center=o,h.u_tile_id=[i.canonical.x,i.canonical.y,1<{const t=[];return"map"===e.paint.get("circle-pitch-alignment")&&t.push("PITCH_WITH_MAP"),"map"===e.paint.get("circle-pitch-scale")&&t.push("SCALE_WITH_MAP"),t},Gi=(t,i,r,n)=>{const o=e.EXTENT/r.tileSize;return{u_matrix:t,u_camera_to_center_distance:i.getCameraToCenterDistance(n),u_extrude_scale:[i.pixelsToGLUnits[0]/o,i.pixelsToGLUnits[1]/o]}},$i=(e,t,i=1)=>({u_matrix:e,u_color:t,u_overlay:0,u_overlay_scale:i}),Zi=e.create(),qi=(t,i,r,n,o,s,a)=>{const l=t.transform,c="globe"===l.projection.name,h=c?e.globePixelsToTileUnits(l.zoom,i.canonical)*l._pixelsPerMercatorPixel:z(r,1,s),u={u_matrix:i.projMatrix,u_extrude_scale:h,u_intensity:a,u_inv_rot_matrix:Zi,u_merc_center:[0,0],u_tile_id:[0,0,0],u_zoom_transition:0,u_up_dir:[0,0,0]};if(c){u.u_inv_rot_matrix=n,u.u_merc_center=o,u.u_tile_id=[i.canonical.x,i.canonical.y,1<{const a=e.transform,l=a.calculatePixelsToTileUnitsMatrix(t);return{u_matrix:Ki(e,t,i,r),u_pixels_to_tile_units:l,u_device_pixel_ratio:o,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]],u_dash_image:0,u_gradient_image:1,u_image_height:n,u_texsize:Yi(i)?t.lineAtlasTexture.size:[0,0],u_tile_units_to_pixels:Hi(t,e.transform),u_alpha_discard_threshold:0,u_trim_offset:s}},Xi=(e,t,i,r,n)=>{const o=e.transform;return{u_matrix:Ki(e,t,i,r),u_texsize:t.imageAtlasTexture.size,u_pixels_to_tile_units:o.calculatePixelsToTileUnitsMatrix(t),u_device_pixel_ratio:n,u_image:0,u_tile_units_to_pixels:Hi(t,o),u_units_to_pixels:[1/o.pixelsToGLUnits[0],1/o.pixelsToGLUnits[1]],u_alpha_discard_threshold:0}};function Hi(e,t){return 1/z(e,1,t.tileZoom)}function Ki(e,t,i,r){return e.translatePosMatrix(r||t.tileID.projMatrix,t,i.paint.get("line-translate"),i.paint.get("line-translate-anchor"))}function Yi(e){const t=e.paint.get("line-dasharray").value;return t.value||"constant"!==t.kind}const Ji=(e,t,i,r,n,o)=>{return{u_matrix:e,u_tl_parent:t,u_scale_parent:i,u_fade_t:r.mix,u_opacity:r.opacity*n.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:n.paint.get("raster-brightness-min"),u_brightness_high:n.paint.get("raster-brightness-max"),u_saturation_factor:(a=n.paint.get("raster-saturation"),a>0?1-1/(1.001-a):-a),u_contrast_factor:(s=n.paint.get("raster-contrast"),s>0?1/(1-s):1+s),u_spin_weights:Qi(n.paint.get("raster-hue-rotate")),u_perspective_transform:o};var s,a};function Qi(e){e*=Math.PI/180;const t=Math.sin(e),i=Math.cos(e);return[(2*i+1)/3,(-Math.sqrt(3)*t-i+1)/3,(Math.sqrt(3)*t-i+1)/3]}const er=e.create(),tr=(t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_)=>{const g=o.transform,y={u_is_size_zoom_constant:+("constant"===t||"source"===t),u_is_size_feature_constant:+("constant"===t||"camera"===t),u_size_t:i?i.uSizeT:0,u_size:i?i.uSize:0,u_camera_to_center_distance:g.cameraToCenterDistance,u_rotate_symbol:+r,u_aspect_ratio:g.width/g.height,u_fade_change:o.options.fadeDuration?o.symbolFadeChange:1,u_matrix:s,u_label_plane_matrix:a,u_coord_matrix:l,u_is_text:+c,u_pitch_with_map:+n,u_texsize:h,u_texture:0,u_tile_id:[0,0,0],u_zoom_transition:0,u_inv_rot_matrix:er,u_merc_center:[0,0],u_camera_forward:[0,0,0],u_ecef_origin:[0,0,0],u_tile_matrix:er,u_up_vector:[0,-1,0]};return"globe"===_.name&&(y.u_tile_id=[u.canonical.x,u.canonical.y,1<e.extend(tr(t,i,r,n,o,s,a,l,c,h,d,p,f,m,_,g),{u_gamma_scale:n?o.transform.cameraToCenterDistance*Math.cos(o.terrain?0:o.transform._pitch):1,u_device_pixel_ratio:e.exported.devicePixelRatio,u_is_halo:+u}),rr=(t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_)=>e.extend(ir(t,i,r,n,o,s,a,l,!0,c,!0,u,d,p,f,m,_),{u_texsize_icon:h,u_texture_icon:1}),nr=(e,t,i)=>({u_matrix:e,u_opacity:t,u_color:i}),or=(t,i,r,n,o)=>e.extend(function(e,t,i){const r=t.imageManager.getPattern(e.toString()),{width:n,height:o}=t.imageManager.getPixelSize(),s=Math.pow(2,i.tileID.overscaledZ),a=i.tileSize*Math.pow(2,t.transform.tileZoom)/s,l=a*(i.tileID.canonical.x+i.tileID.wrap*s),c=a*i.tileID.canonical.y;return{u_image:0,u_pattern_tl:r.tl,u_pattern_br:r.br,u_texsize:[n,o],u_pattern_size:r.displaySize,u_tile_units_to_pixels:1/z(i,1,t.transform.tileZoom),u_pixel_coord_upper:[l>>16,c>>16],u_pixel_coord_lower:[65535&l,65535&c]}}(n,r,o),{u_matrix:t,u_opacity:i}),sr={fillExtrusion:t=>({u_matrix:new e.UniformMatrix4f(t),u_lightpos:new e.Uniform3f(t),u_lightintensity:new e.Uniform1f(t),u_lightcolor:new e.Uniform3f(t),u_vertical_gradient:new e.Uniform1f(t),u_opacity:new e.Uniform1f(t),u_edge_radius:new e.Uniform1f(t),u_ao:new e.Uniform2f(t),u_tile_id:new e.Uniform3f(t),u_zoom_transition:new e.Uniform1f(t),u_inv_rot_matrix:new e.UniformMatrix4f(t),u_merc_center:new e.Uniform2f(t),u_up_dir:new e.Uniform3f(t),u_height_lift:new e.Uniform1f(t)}),fillExtrusionPattern:t=>({u_matrix:new e.UniformMatrix4f(t),u_lightpos:new e.Uniform3f(t),u_lightintensity:new e.Uniform1f(t),u_lightcolor:new e.Uniform3f(t),u_vertical_gradient:new e.Uniform1f(t),u_height_factor:new e.Uniform1f(t),u_edge_radius:new e.Uniform1f(t),u_ao:new e.Uniform2f(t),u_tile_id:new e.Uniform3f(t),u_zoom_transition:new e.Uniform1f(t),u_inv_rot_matrix:new e.UniformMatrix4f(t),u_merc_center:new e.Uniform2f(t),u_up_dir:new e.Uniform3f(t),u_height_lift:new e.Uniform1f(t),u_image:new e.Uniform1i(t),u_texsize:new e.Uniform2f(t),u_pixel_coord_upper:new e.Uniform2f(t),u_pixel_coord_lower:new e.Uniform2f(t),u_tile_units_to_pixels:new e.Uniform1f(t),u_opacity:new e.Uniform1f(t)}),fill:t=>({u_matrix:new e.UniformMatrix4f(t)}),fillPattern:t=>({u_matrix:new e.UniformMatrix4f(t),u_image:new e.Uniform1i(t),u_texsize:new e.Uniform2f(t),u_pixel_coord_upper:new e.Uniform2f(t),u_pixel_coord_lower:new e.Uniform2f(t),u_tile_units_to_pixels:new e.Uniform1f(t)}),fillOutline:t=>({u_matrix:new e.UniformMatrix4f(t),u_world:new e.Uniform2f(t)}),fillOutlinePattern:t=>({u_matrix:new e.UniformMatrix4f(t),u_world:new e.Uniform2f(t),u_image:new e.Uniform1i(t),u_texsize:new e.Uniform2f(t),u_pixel_coord_upper:new e.Uniform2f(t),u_pixel_coord_lower:new e.Uniform2f(t),u_tile_units_to_pixels:new e.Uniform1f(t)}),circle:t=>({u_camera_to_center_distance:new e.Uniform1f(t),u_extrude_scale:new e.UniformMatrix2f(t),u_device_pixel_ratio:new e.Uniform1f(t),u_matrix:new e.UniformMatrix4f(t),u_inv_rot_matrix:new e.UniformMatrix4f(t),u_merc_center:new e.Uniform2f(t),u_tile_id:new e.Uniform3f(t),u_zoom_transition:new e.Uniform1f(t),u_up_dir:new e.Uniform3f(t)}),collisionBox:t=>({u_matrix:new e.UniformMatrix4f(t),u_camera_to_center_distance:new e.Uniform1f(t),u_extrude_scale:new e.Uniform2f(t)}),collisionCircle:t=>({u_matrix:new e.UniformMatrix4f(t),u_inv_matrix:new e.UniformMatrix4f(t),u_camera_to_center_distance:new e.Uniform1f(t),u_viewport_size:new e.Uniform2f(t)}),debug:t=>({u_color:new e.UniformColor(t),u_matrix:new e.UniformMatrix4f(t),u_overlay:new e.Uniform1i(t),u_overlay_scale:new e.Uniform1f(t)}),clippingMask:t=>({u_matrix:new e.UniformMatrix4f(t)}),heatmap:t=>({u_extrude_scale:new e.Uniform1f(t),u_intensity:new e.Uniform1f(t),u_matrix:new e.UniformMatrix4f(t),u_inv_rot_matrix:new e.UniformMatrix4f(t),u_merc_center:new e.Uniform2f(t),u_tile_id:new e.Uniform3f(t),u_zoom_transition:new e.Uniform1f(t),u_up_dir:new e.Uniform3f(t)}),heatmapTexture:t=>({u_image:new e.Uniform1i(t),u_color_ramp:new e.Uniform1i(t),u_opacity:new e.Uniform1f(t)}),hillshade:t=>({u_matrix:new e.UniformMatrix4f(t),u_image:new e.Uniform1i(t),u_latrange:new e.Uniform2f(t),u_light:new e.Uniform2f(t),u_shadow:new e.UniformColor(t),u_highlight:new e.UniformColor(t),u_accent:new e.UniformColor(t)}),hillshadePrepare:t=>({u_matrix:new e.UniformMatrix4f(t),u_image:new e.Uniform1i(t),u_dimension:new e.Uniform2f(t),u_zoom:new e.Uniform1f(t),u_unpack:new e.Uniform4f(t)}),line:t=>({u_matrix:new e.UniformMatrix4f(t),u_pixels_to_tile_units:new e.UniformMatrix2f(t),u_device_pixel_ratio:new e.Uniform1f(t),u_units_to_pixels:new e.Uniform2f(t),u_dash_image:new e.Uniform1i(t),u_gradient_image:new e.Uniform1i(t),u_image_height:new e.Uniform1f(t),u_texsize:new e.Uniform2f(t),u_tile_units_to_pixels:new e.Uniform1f(t),u_alpha_discard_threshold:new e.Uniform1f(t),u_trim_offset:new e.Uniform2f(t)}),linePattern:t=>({u_matrix:new e.UniformMatrix4f(t),u_texsize:new e.Uniform2f(t),u_pixels_to_tile_units:new e.UniformMatrix2f(t),u_device_pixel_ratio:new e.Uniform1f(t),u_image:new e.Uniform1i(t),u_units_to_pixels:new e.Uniform2f(t),u_tile_units_to_pixels:new e.Uniform1f(t),u_alpha_discard_threshold:new e.Uniform1f(t)}),raster:t=>({u_matrix:new e.UniformMatrix4f(t),u_tl_parent:new e.Uniform2f(t),u_scale_parent:new e.Uniform1f(t),u_fade_t:new e.Uniform1f(t),u_opacity:new e.Uniform1f(t),u_image0:new e.Uniform1i(t),u_image1:new e.Uniform1i(t),u_brightness_low:new e.Uniform1f(t),u_brightness_high:new e.Uniform1f(t),u_saturation_factor:new e.Uniform1f(t),u_contrast_factor:new e.Uniform1f(t),u_spin_weights:new e.Uniform3f(t),u_perspective_transform:new e.Uniform2f(t)}),symbolIcon:t=>({u_is_size_zoom_constant:new e.Uniform1i(t),u_is_size_feature_constant:new e.Uniform1i(t),u_size_t:new e.Uniform1f(t),u_size:new e.Uniform1f(t),u_camera_to_center_distance:new e.Uniform1f(t),u_rotate_symbol:new e.Uniform1i(t),u_aspect_ratio:new e.Uniform1f(t),u_fade_change:new e.Uniform1f(t),u_matrix:new e.UniformMatrix4f(t),u_label_plane_matrix:new e.UniformMatrix4f(t),u_coord_matrix:new e.UniformMatrix4f(t),u_is_text:new e.Uniform1i(t),u_pitch_with_map:new e.Uniform1i(t),u_texsize:new e.Uniform2f(t),u_tile_id:new e.Uniform3f(t),u_zoom_transition:new e.Uniform1f(t),u_inv_rot_matrix:new e.UniformMatrix4f(t),u_merc_center:new e.Uniform2f(t),u_camera_forward:new e.Uniform3f(t),u_tile_matrix:new e.UniformMatrix4f(t),u_up_vector:new e.Uniform3f(t),u_ecef_origin:new e.Uniform3f(t),u_texture:new e.Uniform1i(t)}),symbolSDF:t=>({u_is_size_zoom_constant:new e.Uniform1i(t),u_is_size_feature_constant:new e.Uniform1i(t),u_size_t:new e.Uniform1f(t),u_size:new e.Uniform1f(t),u_camera_to_center_distance:new e.Uniform1f(t),u_rotate_symbol:new e.Uniform1i(t),u_aspect_ratio:new e.Uniform1f(t),u_fade_change:new e.Uniform1f(t),u_matrix:new e.UniformMatrix4f(t),u_label_plane_matrix:new e.UniformMatrix4f(t),u_coord_matrix:new e.UniformMatrix4f(t),u_is_text:new e.Uniform1i(t),u_pitch_with_map:new e.Uniform1i(t),u_texsize:new e.Uniform2f(t),u_texture:new e.Uniform1i(t),u_gamma_scale:new e.Uniform1f(t),u_device_pixel_ratio:new e.Uniform1f(t),u_tile_id:new e.Uniform3f(t),u_zoom_transition:new e.Uniform1f(t),u_inv_rot_matrix:new e.UniformMatrix4f(t),u_merc_center:new e.Uniform2f(t),u_camera_forward:new e.Uniform3f(t),u_tile_matrix:new e.UniformMatrix4f(t),u_up_vector:new e.Uniform3f(t),u_ecef_origin:new e.Uniform3f(t),u_is_halo:new e.Uniform1i(t)}),symbolTextAndIcon:t=>({u_is_size_zoom_constant:new e.Uniform1i(t),u_is_size_feature_constant:new e.Uniform1i(t),u_size_t:new e.Uniform1f(t),u_size:new e.Uniform1f(t),u_camera_to_center_distance:new e.Uniform1f(t),u_rotate_symbol:new e.Uniform1i(t),u_aspect_ratio:new e.Uniform1f(t),u_fade_change:new e.Uniform1f(t),u_matrix:new e.UniformMatrix4f(t),u_label_plane_matrix:new e.UniformMatrix4f(t),u_coord_matrix:new e.UniformMatrix4f(t),u_is_text:new e.Uniform1i(t),u_pitch_with_map:new e.Uniform1i(t),u_texsize:new e.Uniform2f(t),u_texsize_icon:new e.Uniform2f(t),u_texture:new e.Uniform1i(t),u_texture_icon:new e.Uniform1i(t),u_gamma_scale:new e.Uniform1f(t),u_device_pixel_ratio:new e.Uniform1f(t),u_is_halo:new e.Uniform1i(t)}),background:t=>({u_matrix:new e.UniformMatrix4f(t),u_opacity:new e.Uniform1f(t),u_color:new e.UniformColor(t)}),backgroundPattern:t=>({u_matrix:new e.UniformMatrix4f(t),u_opacity:new e.Uniform1f(t),u_image:new e.Uniform1i(t),u_pattern_tl:new e.Uniform2f(t),u_pattern_br:new e.Uniform2f(t),u_texsize:new e.Uniform2f(t),u_pattern_size:new e.Uniform2f(t),u_pixel_coord_upper:new e.Uniform2f(t),u_pixel_coord_lower:new e.Uniform2f(t),u_tile_units_to_pixels:new e.Uniform1f(t)}),terrainRaster:gi,terrainDepth:gi,skybox:t=>({u_matrix:new e.UniformMatrix4f(t),u_sun_direction:new e.Uniform3f(t),u_cubemap:new e.Uniform1i(t),u_opacity:new e.Uniform1f(t),u_temporal_offset:new e.Uniform1f(t)}),skyboxGradient:t=>({u_matrix:new e.UniformMatrix4f(t),u_color_ramp:new e.Uniform1i(t),u_center_direction:new e.Uniform3f(t),u_radius:new e.Uniform1f(t),u_opacity:new e.Uniform1f(t),u_temporal_offset:new e.Uniform1f(t)}),skyboxCapture:t=>({u_matrix_3f:new e.UniformMatrix3f(t),u_sun_direction:new e.Uniform3f(t),u_sun_intensity:new e.Uniform1f(t),u_color_tint_r:new e.Uniform4f(t),u_color_tint_m:new e.Uniform4f(t),u_luminance:new e.Uniform1f(t)}),globeRaster:t=>({u_proj_matrix:new e.UniformMatrix4f(t),u_globe_matrix:new e.UniformMatrix4f(t),u_normalize_matrix:new e.UniformMatrix4f(t),u_merc_matrix:new e.UniformMatrix4f(t),u_zoom_transition:new e.Uniform1f(t),u_merc_center:new e.Uniform2f(t),u_image0:new e.Uniform1i(t),u_grid_matrix:new e.UniformMatrix3f(t),u_skirt_height:new e.Uniform1f(t),u_frustum_tl:new e.Uniform3f(t),u_frustum_tr:new e.Uniform3f(t),u_frustum_br:new e.Uniform3f(t),u_frustum_bl:new e.Uniform3f(t),u_globe_pos:new e.Uniform3f(t),u_globe_radius:new e.Uniform1f(t),u_viewport:new e.Uniform2f(t)}),globeAtmosphere:t=>({u_frustum_tl:new e.Uniform3f(t),u_frustum_tr:new e.Uniform3f(t),u_frustum_br:new e.Uniform3f(t),u_frustum_bl:new e.Uniform3f(t),u_horizon:new e.Uniform1f(t),u_transition:new e.Uniform1f(t),u_fadeout_range:new e.Uniform1f(t),u_color:new e.Uniform4f(t),u_high_color:new e.Uniform4f(t),u_space_color:new e.Uniform4f(t),u_star_intensity:new e.Uniform1f(t),u_star_density:new e.Uniform1f(t),u_star_size:new e.Uniform1f(t),u_temporal_offset:new e.Uniform1f(t),u_horizon_angle:new e.Uniform1f(t),u_rotation_matrix:new e.UniformMatrix4f(t)})};let ar;function lr(t,i,r,n,o,s,a){const l=t.context,c=l.gl,h=t.transform,u=t.useProgram("collisionBox"),d=[];let p=0,f=0;for(let m=0;m0){const t=e.create(),i=v;e.mul(t,y.placementInvProjMatrix,h.glCoordMatrix),e.mul(t,t,y.placementViewportMatrix),d.push({circleArray:w,circleOffset:f,transform:i,invTransform:t,projection:y.getProjection()}),p+=w.length/4,f=p}b&&(t.terrain&&t.terrain.setupElevationDraw(g,u),u.draw(l,c.LINES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,Gi(v,h,g,y.getProjection()),r.id,b.layoutVertexBuffer,b.indexBuffer,b.segments,null,h.zoom,null,[b.collisionVertexBuffer,b.collisionVertexBufferExt]))}if(!a||!d.length)return;const m=t.useProgram("collisionCircle"),_=new e.StructArrayLayout2f1f2i16;_.resize(4*p),_._trim();let g=0;for(const e of d)for(let t=0;t=0&&(m[v.associatedIconIndex]={x:S,y:M,z:A,angle:k})}else pt(T,p)}if(u){f.clear();const i=t.icon.placedSymbolArray;for(let t=0;te.sortKey-t.sortKey));for(const e of M){const i=e.state;if(t.terrain&&t.terrain.setupElevationDraw(i.tile,i.program,{useDepthForOcclusion:!S,labelPlaneMatrixInv:i.labelPlaneMatrixInv}),p.activeTexture.set(f.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,f.CLAMP_TO_EDGE),i.atlasTextureIcon&&(p.activeTexture.set(f.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,f.CLAMP_TO_EDGE)),i.isSDF){const n=i.uniformValues;i.hasHalo&&(n.u_is_halo=1,fr(i.buffers,e.segments,r,t,i.program,w,u,d,n)),n.u_is_halo=0}fr(i.buffers,e.segments,r,t,i.program,w,u,d,i.uniformValues)}}function fr(t,i,r,n,o,s,a,l,c){const h=n.context,u=[t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer,t.globeExtVertexBuffer];o.draw(h,h.gl.TRIANGLES,s,a,l,e.CullFaceMode.disabled,c,r.id,t.layoutVertexBuffer,t.indexBuffer,i,r.paint,n.transform.zoom,t.programConfigurations.get(r.id),u)}function mr(t,i,r,n,o,s,a){const l=t.context.gl,c=r.paint.get("fill-pattern"),h=c&&c.constantOr(1);let u,d,p,f,m;a?(d=h&&!r.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",u=l.LINES):(d=h?"fillPattern":"fill",u=l.TRIANGLES);for(const _ of n){const n=i.getTile(_);if(h&&!n.patternsLoaded())continue;const g=n.getBucket(r);if(!g)continue;t.prepareDrawTile();const y=g.programConfigurations.get(r.id),x=t.useProgram(d,y);h&&(t.context.activeTexture.set(l.TEXTURE0),n.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),y.updatePaintBuffers());const v=c.constantOr(null);if(v&&n.imageAtlas){const e=n.imageAtlas.patternPositions[v.toString()];e&&y.setConstantPatternPositions(e)}const b=t.translatePosMatrix(_.projMatrix,n,r.paint.get("fill-translate"),r.paint.get("fill-translate-anchor"));if(a){f=g.indexBuffer2,m=g.segments2;const e=t.terrain&&t.terrain.renderingToTexture?t.terrain.drapeBufferSize:[l.drawingBufferWidth,l.drawingBufferHeight];p="fillOutlinePattern"===d&&h?Ui(b,t,n,e):Fi(b,e)}else f=g.indexBuffer,m=g.segments,p=h?Oi(b,t,n):Bi(b);t.prepareDrawProgram(t.context,x,_.toUnwrapped()),x.draw(t.context,u,o,t.stencilModeForClipping(_),s,e.CullFaceMode.disabled,p,r.id,g.layoutVertexBuffer,f,m,r.paint,t.transform.zoom,y)}}function _r(t,i,r,n,o,s,a){const l=t.context,c=l.gl,h=t.transform,u=r.paint.get("fill-extrusion-pattern"),d=u.constantOr(1),p=r.paint.get("fill-extrusion-opacity"),f=[r.paint.get("fill-extrusion-ambient-occlusion-intensity"),r.paint.get("fill-extrusion-ambient-occlusion-radius")],m=r.layout.get("fill-extrusion-edge-radius"),_=m>0&&!r.paint.get("fill-extrusion-rounded-roof"),g=_?0:m,y="globe"===h.projection.name?e.fillExtrusionHeightLift():0,x="globe"===h.projection.name,v=x?e.globeToMercatorTransition(h.zoom):0,b=[e.mercatorXfromLng(h.center.lng),e.mercatorYfromLat(h.center.lat)],w=[];x&&w.push("PROJECTION_GLOBE_VIEW"),f[0]>0&&w.push("FAUX_AO"),_&&w.push("ZERO_ROOF_RADIUS");for(const m of n){const n=i.getTile(m),_=n.getBucket(r);if(!_||_.projection.name!==h.projection.name)continue;const T=_.programConfigurations.get(r.id),E=t.useProgram(d?"fillExtrusionPattern":"fillExtrusion",T,w);if(t.terrain){const e=t.terrain;if(t.style.terrainSetForDrapingOnly())e.setupElevationDraw(n,E,{useMeterToDem:!0});else{if(!_.enableTerrain)continue;if(e.setupElevationDraw(n,E,{useMeterToDem:!0}),gr(l,i,m,_,r,e),!_.centroidVertexBuffer){const e=E.attributes.a_centroid_pos;void 0!==e&&c.vertexAttrib2f(e,0,0)}}}d&&(t.context.activeTexture.set(c.TEXTURE0),n.imageAtlasTexture.bind(c.LINEAR,c.CLAMP_TO_EDGE),T.updatePaintBuffers());const S=u.constantOr(null);if(S&&n.imageAtlas){const e=n.imageAtlas.patternPositions[S.toString()];e&&T.setConstantPatternPositions(e)}const M=t.translatePosMatrix(m.projMatrix,n,r.paint.get("fill-extrusion-translate"),r.paint.get("fill-extrusion-translate-anchor")),A=h.projection.createInversionMatrix(h,m.canonical),I=r.paint.get("fill-extrusion-vertical-gradient"),C=d?Ri(M,t,I,p,f,g,m,n,y,v,b,A):Li(M,t,I,p,f,g,m,y,v,b,A);t.prepareDrawProgram(l,E,m.toUnwrapped());const z=[];t.terrain&&z.push(_.centroidVertexBuffer),x&&z.push(_.layoutVertexExtBuffer),E.draw(l,l.gl.TRIANGLES,o,s,a,e.CullFaceMode.backCCW,C,r.id,_.layoutVertexBuffer,_.indexBuffer,_.segments,r.paint,t.transform.zoom,T,z)}}function gr(t,i,r,n,o,s){const a=[t=>{let i=t.canonical.x-1,r=t.wrap;return i<0&&(i=(1<{let i=t.canonical.x+1,r=t.wrap;return i===1<new e.OverscaledTileID(t.overscaledZ,t.wrap,t.canonical.z,t.canonical.x,(0===t.canonical.y?1<new e.OverscaledTileID(t.overscaledZ,t.wrap,t.canonical.z,t.canonical.x,t.canonical.y===(1<{const t=i.getSource().minzoom,r=e=>{const t=i.getTileByID(e);if(t&&t.hasData())return t.getBucket(o)},n=[0,-1,1];for(const i of n){if(e.overscaledZ+i(c[0]=Math.min(t.min.y,i.min.y),c[1]=Math.max(t.max.y,i.max.y),c[2]=e.EXTENT-i.min.x>t.max.x?i.min.x-e.EXTENT:t.max.x,c),u=(t,i)=>(c[0]=Math.min(t.min.x,i.min.x),c[1]=Math.max(t.max.x,i.max.x),c[2]=e.EXTENT-i.min.y>t.max.y?i.min.y-e.EXTENT:t.max.y,c),d=[(e,t)=>h(e,t),(e,t)=>h(t,e),(e,t)=>u(e,t),(e,t)=>u(t,e)],p=new e.Point(0,0);let f,m,_;const g=(t,i,n,o,a)=>{const l=[[o?n:t,o?t:n,0],[o?n:i,o?i:n,0]],c=a<0?e.EXTENT+a:a,h=[o?c:(t+i)/2,o?(t+i)/2:c,0];return 0===n&&a<0||0!==n&&a>0?s.getForTilePoints(_,[h],!0,m):l.push(h),s.getForTilePoints(r,l,!0,f),Math.max(l[0][2],l[1][2],h[2])/s.exaggeration()};for(let t=0;t<4;t++){const i=(t<2?1:5)-t,o=n.borders[t];if(0===o.length)continue;const c=_=a[t](r),h=l(c);if(!(h&&h instanceof e.FillExtrusionBucket&&h.enableTerrain))continue;if(n.borderDoneWithNeighborZ[t]===h.canonical.z&&h.borderDoneWithNeighborZ[i]===n.canonical.z)continue;if(m=s.findDEMTileFor(c),!m||!m.dem)continue;if(!f){const e=s.findDEMTileFor(r);if(!e||!e.dem)return;f=e}const u=h.borders[i];let y=0;const x=h.borderDoneWithNeighborZ[i]!==n.canonical.z;if(n.canonical.z===h.canonical.z){for(let r=0;ra[0]+3));)x&&h.encodeCentroid(void 0,l,!1),y++;if(l&&ya[1]-3)&&(o++,++y!==u.length);)l=h.featuresOnBorder[u[y]];if(l=h.featuresOnBorder[u[r]],s.intersectsCount()>1||l.intersectsCount()>1||1!==o){1!==o&&(y=r),n.encodeCentroid(void 0,s,!1),x&&h.encodeCentroid(void 0,l,!1);continue}const c=d[t](s,l),f=t%2?e.EXTENT-1:0;p.x=g(c[0],Math.min(e.EXTENT-1,c[1]),f,t<2,c[2]),p.y=0,n.encodeCentroid(p,s,!1),x&&h.encodeCentroid(p,l,!1)}else n.encodeCentroid(void 0,s,!1)}n.borderDoneWithNeighborZ[t]=h.canonical.z,n.needsCentroidUpdate=!0,x&&(h.borderDoneWithNeighborZ[i]=n.canonical.z,h.needsCentroidUpdate=!0)}else{for(const e of o)n.encodeCentroid(void 0,n.featuresOnBorder[e],!1);if(x){for(const e of u)h.encodeCentroid(void 0,h.featuresOnBorder[e],!1);h.borderDoneWithNeighborZ[i]=n.canonical.z,h.needsCentroidUpdate=!0}n.borderDoneWithNeighborZ[t]=h.canonical.z,n.needsCentroidUpdate=!0}}(n.needsCentroidUpdate||!n.centroidVertexBuffer&&0!==n.centroidVertexArray.length)&&n.uploadCentroid(t)}const yr=new e.Color(1,0,0,1),xr=new e.Color(0,1,0,1),vr=new e.Color(0,0,1,1),br=new e.Color(1,0,1,1),wr=new e.Color(0,1,1,1);function Tr(t,i,r){const n=t.context,o=t.transform,s=n.gl,a="globe"===o.projection.name,l=a?["PROJECTION_GLOBE_VIEW"]:null;let c=r.projMatrix;if(a&&e.globeToMercatorTransition(o.zoom)>0){const t=e.transitionTileAABBinECEF(r.canonical,o),i=e.globeDenormalizeECEF(t);c=e.multiply(new Float32Array(16),o.globeMatrix,i),e.multiply(c,o.projMatrix,c)}const h=t.useProgram("debug",null,l),u=i.getTileByID(r.key);t.terrain&&t.terrain.setupElevationDraw(u,h);const d=e.DepthMode.disabled,p=e.StencilMode.disabled,f=t.colorModeForRenderPass(),m="$debug";n.activeTexture.set(s.TEXTURE0),t.emptyTexture.bind(s.LINEAR,s.CLAMP_TO_EDGE),a?u._makeGlobeTileDebugBuffers(t.context,o):u._makeDebugTileBoundsBuffers(t.context,o.projection);const _=u._tileDebugBuffer||t.debugBuffer,g=u._tileDebugIndexBuffer||t.debugIndexBuffer,y=u._tileDebugSegments||t.debugSegments;h.draw(n,s.LINE_STRIP,d,p,f,e.CullFaceMode.disabled,$i(c,e.Color.red),m,_,g,y,null,null,null,[u._globeTileDebugBorderBuffer]);const x=u.latestRawTileData,v=Math.floor((x&&x.byteLength||0)/1024),b=i.getTile(r).tileSize,w=512/Math.min(b,512)*(r.overscaledZ/o.zoom)*.5;let T=r.canonical.toString();r.overscaledZ!==r.canonical.z&&(T+=` => ${r.overscaledZ}`),T+=` ${v}kb`,function(e,t){e.initDebugOverlayCanvas();const i=e.debugOverlayCanvas,r=e.context.gl,n=e.debugOverlayCanvas.getContext("2d");n.clearRect(0,0,i.width,i.height),n.shadowColor="white",n.shadowBlur=2,n.lineWidth=1.5,n.strokeStyle="white",n.textBaseline="top",n.font="bold 36px Open Sans, sans-serif",n.fillText(t,5,5),n.strokeText(t,5,5),e.debugOverlayTexture.update(i),e.debugOverlayTexture.bind(r.LINEAR,r.CLAMP_TO_EDGE)}(t,T);const E=u._tileDebugTextBuffer||t.debugBuffer,S=u._tileDebugTextIndexBuffer||t.quadTriangleIndexBuffer,M=u._tileDebugTextSegments||t.debugSegments;h.draw(n,s.TRIANGLES,d,p,e.ColorMode.alphaBlended,e.CullFaceMode.disabled,$i(c,e.Color.transparent,w),m,E,S,M,null,null,null,[u._globeTileDebugTextBuffer])}function Er(e,t,i,r){Mr(e,0,t+i/2,e.transform.width,i,r)}function Sr(e,t,i,r){Mr(e,t-i/2,0,i,e.transform.height,r)}function Mr(t,i,r,n,o,s){const a=t.context,l=a.gl;l.enable(l.SCISSOR_TEST),l.scissor(i*e.exported.devicePixelRatio,r*e.exported.devicePixelRatio,n*e.exported.devicePixelRatio,o*e.exported.devicePixelRatio),a.clear({color:s}),l.disable(l.SCISSOR_TEST)}const Ar=e.createLayout([{name:"a_pos_3f",components:3,type:"Float32"}]),{members:Ir}=Ar;function Cr(e,t,i,r){e.emplaceBack(t,i,r)}class zr{constructor(t){this.vertexArray=new e.StructArrayLayout3f12,this.indices=new e.StructArrayLayout3ui6,Cr(this.vertexArray,-1,-1,1),Cr(this.vertexArray,1,-1,1),Cr(this.vertexArray,-1,1,1),Cr(this.vertexArray,1,1,1),Cr(this.vertexArray,-1,-1,-1),Cr(this.vertexArray,1,-1,-1),Cr(this.vertexArray,-1,1,-1),Cr(this.vertexArray,1,1,-1),this.indices.emplaceBack(5,1,3),this.indices.emplaceBack(3,7,5),this.indices.emplaceBack(6,2,0),this.indices.emplaceBack(0,4,6),this.indices.emplaceBack(2,6,7),this.indices.emplaceBack(7,3,2),this.indices.emplaceBack(5,4,0),this.indices.emplaceBack(0,1,5),this.indices.emplaceBack(0,2,3),this.indices.emplaceBack(3,1,0),this.indices.emplaceBack(7,6,4),this.indices.emplaceBack(4,5,7),this.vertexBuffer=t.createVertexBuffer(this.vertexArray,Ir),this.indexBuffer=t.createIndexBuffer(this.indices),this.segment=e.SegmentVector.simpleSegment(0,0,36,12)}}function Pr(t,i,r,n,o,s){const a=t.gl,l=i.paint.get("sky-atmosphere-color"),c=i.paint.get("sky-atmosphere-halo-color"),h=i.paint.get("sky-atmosphere-sun-intensity"),u=((e,t,i,r,n)=>({u_matrix_3f:e,u_sun_direction:t,u_sun_intensity:i,u_color_tint_r:[r.r,r.g,r.b,r.a],u_color_tint_m:[n.r,n.g,n.b,n.a],u_luminance:5e-5}))(e.fromMat4(e.create$1(),n),o,h,l,c);a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_CUBE_MAP_POSITIVE_X+s,i.skyboxTexture,0),r.draw(t,a.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,e.ColorMode.unblended,e.CullFaceMode.frontCW,u,"skyboxCapture",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment)}const kr=e.createLayout([{type:"Float32",name:"a_pos",components:3},{type:"Float32",name:"a_uv",components:2}]);class Dr{constructor(t){const i=new e.StructArrayLayout5f20;i.emplaceBack(-1,1,1,0,0),i.emplaceBack(1,1,1,1,0),i.emplaceBack(1,-1,1,1,1),i.emplaceBack(-1,-1,1,0,1);const r=new e.StructArrayLayout3ui6;r.emplaceBack(0,1,2),r.emplaceBack(2,3,0),this.vertexBuffer=t.createVertexBuffer(i,kr.members),this.indexBuffer=t.createIndexBuffer(r),this.segments=e.SegmentVector.simpleSegment(0,0,4,2)}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy()}}const Lr={symbol:function(t,i,r,n,o){if("translucent"!==t.renderPass)return;const s=e.StencilMode.disabled,a=t.colorModeForRenderPass();r.layout.get("text-variable-anchor")&&function(t,i,r,n,o,s,a){const l=i.transform,c="map"===o,h="map"===s;for(const i of t){const t=n.getTile(i),o=t.getBucket(r);if(!o||!o.text||!o.text.segments.get().length)continue;const s=e.evaluateSizeForZoom(o.textSizeData,l.zoom),u=xt(i,o.getProjection(),l),d=l.calculatePixelsToTileUnitsMatrix(t),p=et(u,t.tileID.canonical,h,c,l,o.getProjection(),d),f="none"!==r.layout.get("icon-text-fit")&&o.hasIconData();if(s){const r=Math.pow(2,l.zoom-t.tileID.overscaledZ);ur(o,c,h,a,e.symbolSize,l,p,i,r,s,f)}}}(n,t,r,i,r.layout.get("text-rotation-alignment"),r.layout.get("text-pitch-alignment"),o),0!==r.paint.get("icon-opacity").constantOr(1)&&pr(t,i,r,n,!1,r.paint.get("icon-translate"),r.paint.get("icon-translate-anchor"),r.layout.get("icon-rotation-alignment"),r.layout.get("icon-pitch-alignment"),r.layout.get("icon-keep-upright"),s,a),0!==r.paint.get("text-opacity").constantOr(1)&&pr(t,i,r,n,!0,r.paint.get("text-translate"),r.paint.get("text-translate-anchor"),r.layout.get("text-rotation-alignment"),r.layout.get("text-pitch-alignment"),r.layout.get("text-keep-upright"),s,a),i.map.showCollisionBoxes&&(lr(t,i,r,n,r.paint.get("text-translate"),r.paint.get("text-translate-anchor"),!0),lr(t,i,r,n,r.paint.get("icon-translate"),r.paint.get("icon-translate-anchor"),!1))},circle:function(t,i,r,n){if("translucent"!==t.renderPass)return;const o=r.paint.get("circle-opacity"),s=r.paint.get("circle-stroke-width"),a=r.paint.get("circle-stroke-opacity"),l=void 0!==r.layout.get("circle-sort-key").constantOr(1);if(0===o.constantOr(1)&&(0===s.constantOr(1)||0===a.constantOr(1)))return;const c=t.context,h=c.gl,u=t.transform,d=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),p=e.StencilMode.disabled,f=t.colorModeForRenderPass(),m="globe"===u.projection.name,_=[e.mercatorXfromLng(u.center.lng),e.mercatorYfromLat(u.center.lat)],g=[];for(let o=0;oe.sortKey-t.sortKey));const y={useDepthForOcclusion:!m};for(const i of g){const{programConfiguration:n,program:o,layoutVertexBuffer:s,globeExtVertexBuffer:a,indexBuffer:l,uniformValues:m,tile:_}=i.state,g=i.segments;t.terrain&&t.terrain.setupElevationDraw(_,o,y),t.prepareDrawProgram(c,o,_.tileID.toUnwrapped()),o.draw(c,h.TRIANGLES,d,p,f,e.CullFaceMode.disabled,m,r.id,s,l,g,r.paint,u.zoom,n,[a])}},heatmap:function(t,i,r,n){if(0!==r.paint.get("heatmap-opacity"))if("offscreen"===t.renderPass){const o=t.context,s=o.gl,a=e.StencilMode.disabled,l=new e.ColorMode([s.ONE,s.ONE],e.Color.transparent,[!0,!0,!0,!0]);!function(e,t,i,r){const n=e.gl,o=t.width*r,s=t.height*r;e.activeTexture.set(n.TEXTURE1),e.viewport.set([0,0,o,s]);let a=i.heatmapFbo;if(!a||a&&(a.width!==o||a.height!==s)){a&&a.destroy();const t=n.createTexture();n.bindTexture(n.TEXTURE_2D,t),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.LINEAR),a=i.heatmapFbo=e.createFramebuffer(o,s,!1),function(e,t,i,r,n,o){const s=e.gl;s.texImage2D(s.TEXTURE_2D,0,e.isWebGL2&&e.extRenderToTextureHalfFloat?s.RGBA16F:s.RGBA,n,o,0,s.RGBA,e.extRenderToTextureHalfFloat?e.isWebGL2?s.HALF_FLOAT:e.extTextureHalfFloat.HALF_FLOAT_OES:s.UNSIGNED_BYTE,null),r.colorAttachment.set(i)}(e,0,t,a,o,s)}else n.bindTexture(n.TEXTURE_2D,a.colorAttachment.get()),e.bindFramebuffer.set(a.framebuffer)}(o,t,r,"globe"===t.transform.projection.name?.5:.25),o.clear({color:e.Color.transparent});const c=t.transform,h="globe"===c.projection.name,u=h?["PROJECTION_GLOBE_VIEW"]:null,d=h?e.CullFaceMode.frontCCW:e.CullFaceMode.disabled,p=[e.mercatorXfromLng(c.center.lng),e.mercatorYfromLat(c.center.lat)];for(let f=0;f({u_image:0,u_color_ramp:1,u_opacity:t.paint.get("heatmap-opacity")}))(0,i),i.id,t.viewportBuffer,t.quadTriangleIndexBuffer,t.viewportSegments,i.paint,t.transform.zoom)}(t,r))},line:function(t,i,r,n){if("translucent"!==t.renderPass)return;const o=r.paint.get("line-opacity"),s=r.paint.get("line-width");if(0===o.constantOr(1)||0===s.constantOr(1))return;const a=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),l=t.colorModeForRenderPass(),c=t.terrain&&t.terrain.renderingToTexture?1:e.exported.devicePixelRatio,h=r.paint.get("line-dasharray"),u=h.constantOr(1),d=r.layout.get("line-cap"),p=r.paint.get("line-pattern"),f=p.constantOr(1),m=r.paint.get("line-gradient"),_=f?"linePattern":"line",g=t.context,y=g.gl,x=(e=>{const t=[];Yi(e)&&t.push("RENDER_LINE_DASH"),e.paint.get("line-gradient")&&t.push("RENDER_LINE_GRADIENT");const i=e.paint.get("line-trim-offset");0===i[0]&&0===i[1]||t.push("RENDER_LINE_TRIM_OFFSET");const r=e.paint.get("line-pattern").constantOr(1),n=1!==e.paint.get("line-opacity").constantOr(1);return!r&&n&&t.push("RENDER_LINE_ALPHA_DISCARD"),t})(r);let v=x.includes("RENDER_LINE_ALPHA_DISCARD");t.terrain&&t.terrain.clipOrMaskOverlapStencilType()&&(v=!1);for(const o of n){const n=i.getTile(o);if(f&&!n.patternsLoaded())continue;const s=n.getBucket(r);if(!s)continue;t.prepareDrawTile();const b=s.programConfigurations.get(r.id),w=t.useProgram(_,b,x),T=p.constantOr(null);if(T&&n.imageAtlas){const e=n.imageAtlas.patternPositions[T.toString()];e&&b.setConstantPatternPositions(e)}const E=h.constantOr(null),S=d.constantOr(null);if(!f&&E&&S&&n.lineAtlas){const e=n.lineAtlas.getDash(E,S);e&&b.setConstantPatternPositions(e)}let[M,A]=r.paint.get("line-trim-offset");if("round"===S||"square"===S){const e=1;M!==A&&(0===M&&(M-=e),1===A&&(A+=e))}const I=t.terrain?o.projMatrix:null,C=f?Xi(t,n,r,I,c):Wi(t,n,r,I,s.lineClipsArray.length,c,[M,A]);if(m){const n=s.gradients[r.id];let a=n.texture;if(r.gradientVersion!==n.version){let l=256;if(r.stepInterpolant){const r=i.getSource().maxzoom,n=o.canonical.z===r?Math.ceil(1<{w.draw(g,y.TRIANGLES,a,i,l,e.CullFaceMode.disabled,C,r.id,s.layoutVertexBuffer,s.indexBuffer,s.segments,r.paint,t.transform.zoom,b,[s.layoutVertexBuffer2])};if(v){const i=t.stencilModeForClipping(o).ref;0===i&&t.terrain&&g.clear({stencil:0});const r={func:y.EQUAL,mask:255};C.u_alpha_discard_threshold=.8,z(new e.StencilMode(r,i,255,y.KEEP,y.KEEP,y.INVERT)),C.u_alpha_discard_threshold=0,z(new e.StencilMode(r,i,255,y.KEEP,y.KEEP,y.KEEP))}else z(t.stencilModeForClipping(o))}v&&(t.resetStencilClippingMasks(),t.terrain&&g.clear({stencil:0}))},fill:function(t,i,r,n){const o=r.paint.get("fill-color"),s=r.paint.get("fill-opacity");if(0===s.constantOr(1))return;const a=t.colorModeForRenderPass(),l=r.paint.get("fill-pattern"),c=t.opaquePassEnabledForLayer()&&!l.constantOr(1)&&1===o.constantOr(e.Color.transparent).a&&1===s.constantOr(0)?"opaque":"translucent";if(t.renderPass===c){const o=t.depthModeForSublayer(1,"opaque"===t.renderPass?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly);mr(t,i,r,n,o,a,!1)}if("translucent"===t.renderPass&&r.paint.get("fill-antialias")){const o=t.depthModeForSublayer(r.getPaintProperty("fill-outline-color")?2:0,e.DepthMode.ReadOnly);mr(t,i,r,n,o,a,!0)}},"fill-extrusion":function(t,i,r,n){const o=r.paint.get("fill-extrusion-opacity");if(0!==o&&"translucent"===t.renderPass){const s=new e.DepthMode(t.context.gl.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);if(1!==o||r.paint.get("fill-extrusion-pattern").constantOr(1))_r(t,i,r,n,s,e.StencilMode.disabled,e.ColorMode.disabled),_r(t,i,r,n,s,t.stencilModeFor3D(),t.colorModeForRenderPass()),t.resetStencilClippingMasks();else{const o=t.colorModeForRenderPass();_r(t,i,r,n,s,e.StencilMode.disabled,o)}}},hillshade:function(t,i,r,n){if("offscreen"!==t.renderPass&&"translucent"!==t.renderPass)return;const o=t.context,s=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),a=t.colorModeForRenderPass(),l=t.terrain&&t.terrain.renderingToTexture,[c,h]="translucent"!==t.renderPass||l?[{},n]:t.stencilConfigForOverlap(n);for(const n of h){const o=i.getTile(n);if(o.needsHillshadePrepare&&"offscreen"===t.renderPass)_i(t,o,r,s,e.StencilMode.disabled,a);else if("translucent"===t.renderPass){const e=l&&t.terrain?t.terrain.stencilModeForRTTOverlap(n):c[n.overscaledZ];fi(t,n,o,r,s,e,a)}}o.viewport.set([0,0,t.width,t.height]),t.resetStencilClippingMasks()},raster:function(t,i,r,n,o,s){if("translucent"!==t.renderPass)return;if(0===r.paint.get("raster-opacity"))return;if(!n.length)return;const a=t.context,l=a.gl,c=i.getSource(),h=t.useProgram("raster"),u=t.colorModeForRenderPass(),d=t.terrain&&t.terrain.renderingToTexture,[p,f]=c instanceof Ie||d?[{},n]:t.stencilConfigForOverlap(n),m=f[f.length-1].overscaledZ,_=!t.options.moving;for(const n of f){const o=d?e.DepthMode.disabled:t.depthModeForSublayer(n.overscaledZ-m,1===r.paint.get("raster-opacity")?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly,l.LESS),f=n.toUnwrapped(),g=i.getTile(n);if(d&&(!g||!g.hasData()))continue;const y=d?n.projMatrix:t.transform.calculateProjMatrix(f,_),x=t.terrain&&d?t.terrain.stencilModeForRTTOverlap(n):p[n.overscaledZ],v=s?0:r.paint.get("raster-fade-duration");g.registerFadeDuration(v);const b=i.findLoadedParent(n,0),w=Mi(g,b,i,t.transform,v);let T,E;t.terrain&&t.terrain.prepareDrawTile();const S="nearest"===r.paint.get("raster-resampling")?l.NEAREST:l.LINEAR;a.activeTexture.set(l.TEXTURE0),g.texture.bind(S,l.CLAMP_TO_EDGE),a.activeTexture.set(l.TEXTURE1),b?(b.texture.bind(S,l.CLAMP_TO_EDGE),T=Math.pow(2,b.tileID.overscaledZ-g.tileID.overscaledZ),E=[g.tileID.canonical.x*T%1,g.tileID.canonical.y*T%1]):g.texture.bind(S,l.CLAMP_TO_EDGE),g.texture.useMipmap&&a.extTextureFilterAnisotropic&&t.transform.pitch>20&&l.texParameterf(l.TEXTURE_2D,a.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,a.extTextureFilterAnisotropicMax);const M=Ji(y,E||[0,0],T||1,w,r,c instanceof Ie?c.perspectiveTransform:[0,0]);if(t.prepareDrawProgram(a,h,f),c instanceof Ie)c.boundsBuffer&&c.boundsSegments&&h.draw(a,l.TRIANGLES,o,e.StencilMode.disabled,u,e.CullFaceMode.disabled,M,r.id,c.boundsBuffer,t.quadTriangleIndexBuffer,c.boundsSegments);else{const{tileBoundsBuffer:i,tileBoundsIndexBuffer:n,tileBoundsSegments:s}=t.getTileBoundsBuffers(g);h.draw(a,l.TRIANGLES,o,x,u,e.CullFaceMode.disabled,M,r.id,i,n,s)}}t.resetStencilClippingMasks()},background:function(t,i,r,n){const o=r.paint.get("background-color"),s=r.paint.get("background-opacity");if(0===s)return;const a=t.context,l=a.gl,c=t.transform,h=c.tileSize,u=r.paint.get("background-pattern");if(t.isPatternMissing(u))return;const d=!u&&1===o.a&&1===s&&t.opaquePassEnabledForLayer()?"opaque":"translucent";if(t.renderPass!==d)return;const p=e.StencilMode.disabled,f=t.depthModeForSublayer(0,"opaque"===d?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly),m=t.colorModeForRenderPass(),_=t.useProgram(u?"backgroundPattern":"background");let g,y=n;y||(g=t.getBackgroundTiles(),y=Object.values(g).map((e=>e.tileID))),u&&(a.activeTexture.set(l.TEXTURE0),t.imageManager.bind(t.context));for(const d of y){const y=d.toUnwrapped(),x=n?d.projMatrix:t.transform.calculateProjMatrix(y);t.prepareDrawTile();const v=i?i.getTile(d):g?g[d.key]:new e.Tile(d,h,c.zoom,t),b=u?or(x,s,t,u,{tileID:d,tileSize:h}):nr(x,s,o);t.prepareDrawProgram(a,_,y);const{tileBoundsBuffer:w,tileBoundsIndexBuffer:T,tileBoundsSegments:E}=t.getTileBoundsBuffers(v);_.draw(a,l.TRIANGLES,f,p,m,e.CullFaceMode.disabled,b,r.id,w,T,E)}},sky:function(t,i,r){const n=t.transform,o="mercator"===n.projection.name||"globe"===n.projection.name?1:e.smoothstep(7,8,n.zoom),s=r.paint.get("sky-opacity")*o;if(0===s)return;const a=t.context,l=r.paint.get("sky-type"),c=new e.DepthMode(a.gl.LEQUAL,e.DepthMode.ReadOnly,[0,1]),h=t.frameCounter/1e3%1;"atmosphere"===l?"offscreen"===t.renderPass?r.needsSkyboxCapture(t)&&(function(t,i,r,n){const o=t.context,s=o.gl;let a=i.skyboxFbo;if(!a){a=i.skyboxFbo=o.createFramebuffer(32,32,!1),i.skyboxGeometry=new zr(o),i.skyboxTexture=o.gl.createTexture(),s.bindTexture(s.TEXTURE_CUBE_MAP,i.skyboxTexture),s.texParameteri(s.TEXTURE_CUBE_MAP,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_CUBE_MAP,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_CUBE_MAP,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_CUBE_MAP,s.TEXTURE_MAG_FILTER,s.LINEAR);for(let e=0;e<6;++e)s.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,s.RGBA,32,32,0,s.RGBA,s.UNSIGNED_BYTE,null)}o.bindFramebuffer.set(a.framebuffer),o.viewport.set([0,0,32,32]);const l=i.getCenter(t,!0),c=t.useProgram("skyboxCapture"),h=new Float64Array(16);e.identity(h),e.rotateY(h,h,.5*-Math.PI),Pr(o,i,c,h,l,0),e.identity(h),e.rotateY(h,h,.5*Math.PI),Pr(o,i,c,h,l,1),e.identity(h),e.rotateX(h,h,.5*-Math.PI),Pr(o,i,c,h,l,2),e.identity(h),e.rotateX(h,h,.5*Math.PI),Pr(o,i,c,h,l,3),e.identity(h),Pr(o,i,c,h,l,4),e.identity(h),e.rotateY(h,h,Math.PI),Pr(o,i,c,h,l,5),o.viewport.set([0,0,t.width,t.height])}(t,r),r.markSkyboxValid(t)):"sky"===t.renderPass&&function(t,i,r,n,o){const s=t.context,a=s.gl,l=t.transform,c=t.useProgram("skybox");s.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_CUBE_MAP,i.skyboxTexture);const h=((e,t,i,r,n)=>({u_matrix:e,u_sun_direction:t,u_cubemap:0,u_opacity:r,u_temporal_offset:n}))(l.skyboxMatrix,i.getCenter(t,!1),0,n,o);t.prepareDrawProgram(s,c),c.draw(s,a.TRIANGLES,r,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.backCW,h,"skybox",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment)}(t,r,c,s,h):"gradient"===l&&"sky"===t.renderPass&&function(t,i,r,n,o){const s=t.context,a=s.gl,l=t.transform,c=t.useProgram("skyboxGradient");i.skyboxGeometry||(i.skyboxGeometry=new zr(s)),s.activeTexture.set(a.TEXTURE0);let h=i.colorRampTexture;h||(h=i.colorRampTexture=new e.Texture(s,i.colorRamp,a.RGBA)),h.bind(a.LINEAR,a.CLAMP_TO_EDGE);const u=((t,i,r,n,o)=>({u_matrix:t,u_color_ramp:0,u_center_direction:i,u_radius:e.degToRad(r),u_opacity:n,u_temporal_offset:o}))(l.skyboxMatrix,i.getCenter(t,!1),i.paint.get("sky-gradient-radius"),n,o);t.prepareDrawProgram(s,c),c.draw(s,a.TRIANGLES,r,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.backCW,u,"skyboxGradient",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment)}(t,r,c,s,h)},debug:function(e,t,i){for(let r=0;rr)return void(this.transform.fogCullDistSq=null);const n=i+.78*(r-i);this.transform.fogCullDistSq=n*n}get terrain(){return this.transform._terrainEnabled()&&this._terrain&&this._terrain.enabled?this._terrain:null}resize(t,i){if(this.width=t*e.exported.devicePixelRatio,this.height=i*e.exported.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const e of this.style.order)this.style._layers[e].resize()}setup(){const t=this.context,i=new e.StructArrayLayout2i4;i.emplaceBack(0,0),i.emplaceBack(e.EXTENT,0),i.emplaceBack(0,e.EXTENT),i.emplaceBack(e.EXTENT,e.EXTENT),this.tileExtentBuffer=t.createVertexBuffer(i,e.posAttributes.members),this.tileExtentSegments=e.SegmentVector.simpleSegment(0,0,4,2);const r=new e.StructArrayLayout2i4;r.emplaceBack(0,0),r.emplaceBack(e.EXTENT,0),r.emplaceBack(0,e.EXTENT),r.emplaceBack(e.EXTENT,e.EXTENT),this.debugBuffer=t.createVertexBuffer(r,e.posAttributes.members),this.debugSegments=e.SegmentVector.simpleSegment(0,0,4,5);const n=new e.StructArrayLayout2i4;n.emplaceBack(-1,-1),n.emplaceBack(1,-1),n.emplaceBack(-1,1),n.emplaceBack(1,1),this.viewportBuffer=t.createVertexBuffer(n,e.posAttributes.members),this.viewportSegments=e.SegmentVector.simpleSegment(0,0,4,2);const o=new e.StructArrayLayout4i8;o.emplaceBack(0,0,0,0),o.emplaceBack(e.EXTENT,0,e.EXTENT,0),o.emplaceBack(0,e.EXTENT,0,e.EXTENT),o.emplaceBack(e.EXTENT,e.EXTENT,e.EXTENT,e.EXTENT),this.mercatorBoundsBuffer=t.createVertexBuffer(o,e.boundsAttributes.members),this.mercatorBoundsSegments=e.SegmentVector.simpleSegment(0,0,4,2);const s=new e.StructArrayLayout3ui6;s.emplaceBack(0,1,2),s.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=t.createIndexBuffer(s);const a=new e.StructArrayLayout1ui2;for(const e of[0,1,3,2,0])a.emplaceBack(e);this.debugIndexBuffer=t.createIndexBuffer(a),this.emptyTexture=new e.Texture(t,new e.RGBAImage({width:1,height:1},Uint8Array.of(0,0,0,0)),t.gl.RGBA),this.identityMat=e.create();const l=this.context.gl;this.stencilClearMode=new e.StencilMode({func:l.ALWAYS,mask:0},0,255,l.ZERO,l.ZERO,l.ZERO),this.loadTimeStamps.push(e.window.performance.now()),this.atmosphereBuffer=new Dr(this.context)}getMercatorTileBoundsBuffers(){return{tileBoundsBuffer:this.mercatorBoundsBuffer,tileBoundsIndexBuffer:this.quadTriangleIndexBuffer,tileBoundsSegments:this.mercatorBoundsSegments}}getTileBoundsBuffers(e){return e._makeTileBoundsBuffers(this.context,this.transform.projection),e._tileBoundsBuffer?{tileBoundsBuffer:e._tileBoundsBuffer,tileBoundsIndexBuffer:e._tileBoundsIndexBuffer,tileBoundsSegments:e._tileBoundsSegments}:this.getMercatorTileBoundsBuffers()}clearStencil(){const t=this.context,i=t.gl;this.nextStencilID=1,this.currentStencilSource=void 0,this._tileClippingMaskIDs={},this.useProgram("clippingMask").draw(t,i.TRIANGLES,e.DepthMode.disabled,this.stencilClearMode,e.ColorMode.disabled,e.CullFaceMode.disabled,Si(this.identityMat),"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}resetStencilClippingMasks(){this.terrain||(this.currentStencilSource=void 0,this._tileClippingMaskIDs={})}_renderTileClippingMasks(t,i,r){if(!i||this.currentStencilSource===i.id||!t.isTileClipped()||!r||0===r.length)return;if(this._tileClippingMaskIDs&&!this.terrain){let e=!1;for(const t of r)if(void 0===this._tileClippingMaskIDs[t.key]){e=!0;break}if(!e)return}this.currentStencilSource=i.id;const n=this.context,o=n.gl;this.nextStencilID+r.length>256&&this.clearStencil(),n.setColorMode(e.ColorMode.disabled),n.setDepthMode(e.DepthMode.disabled);const s=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(const t of r){const r=i.getTile(t),a=this._tileClippingMaskIDs[t.key]=this.nextStencilID++,{tileBoundsBuffer:l,tileBoundsIndexBuffer:c,tileBoundsSegments:h}=this.getTileBoundsBuffers(r);s.draw(n,o.TRIANGLES,e.DepthMode.disabled,new e.StencilMode({func:o.ALWAYS,mask:0},a,255,o.KEEP,o.KEEP,o.REPLACE),e.ColorMode.disabled,e.CullFaceMode.disabled,Si(t.projMatrix),"$clipping",l,c,h)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,i=this.context.gl;return new e.StencilMode({func:i.NOTEQUAL,mask:255},t,255,i.KEEP,i.KEEP,i.REPLACE)}stencilModeForClipping(t){if(this.terrain)return this.terrain.stencilModeForRTTOverlap(t);const i=this.context.gl;return new e.StencilMode({func:i.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,i.KEEP,i.KEEP,i.REPLACE)}stencilConfigForOverlap(t){const i=this.context.gl,r=t.sort(((e,t)=>t.overscaledZ-e.overscaledZ)),n=r[r.length-1].overscaledZ,o=r[0].overscaledZ-n+1;if(o>1){this.currentStencilSource=void 0,this.nextStencilID+o>256&&this.clearStencil();const t={};for(let r=0;r=0;this.currentLayer--){const e=this.style._layers[r[this.currentLayer]],i=t._getLayerSourceCache(e);if(e.isSky())continue;const n=i?s[i.id]:void 0;this._renderTileClippingMasks(e,i,n),this.renderLayer(this,i,e,n)}if(this.style.fog&&this.transform.projection.supportsFog&&function(t,i){const r=t.context,n=r.gl,o=t.transform,s=new e.DepthMode(n.LEQUAL,e.DepthMode.ReadOnly,[0,1]),a=t.useProgram("globeAtmosphere",null,"globe"===o.projection.name?["PROJECTION_GLOBE_VIEW","FOG"]:["FOG"]),l=e.globeToMercatorTransition(o.zoom),c=i.properties.get("color").toArray01(),h=i.properties.get("high-color").toArray01(),u=i.properties.get("space-color").toArray01PremultipliedAlpha(),d=e.identity$1([]);e.rotateY$1(d,d,-e.degToRad(o._center.lng)),e.rotateX$1(d,d,e.degToRad(o._center.lat)),e.rotateZ$1(d,d,o.angle),e.rotateX$1(d,d,-o._pitch);const p=e.fromQuat(new Float32Array(16),d),f=e.mapValue(i.properties.get("star-intensity"),0,1,0,.25),m=5e-4,_=e.mapValue(i.properties.get("horizon-blend"),0,1,m,.25),g=e.globeUseCustomAntiAliasing(t,r,o)&&_===m?o.worldSize/(2*Math.PI*1.025)-1:o.globeRadius,y=t.frameCounter/1e3%1,x=e.length(o.globeCenterInViewSpace),v=Math.sqrt(Math.pow(x,2)-Math.pow(g,2)),b=Math.acos(v/x),w=((t,i,r,n,o,s,a,l,c,h,u,d,p,f)=>({u_frustum_tl:t,u_frustum_tr:i,u_frustum_br:r,u_frustum_bl:n,u_horizon:o,u_transition:s,u_fadeout_range:a,u_color:l,u_high_color:c,u_space_color:h,u_star_intensity:u,u_star_size:5*e.exported.devicePixelRatio,u_star_density:0,u_temporal_offset:d,u_horizon_angle:p,u_rotation_matrix:f}))(o.frustumCorners.TL,o.frustumCorners.TR,o.frustumCorners.BR,o.frustumCorners.BL,o.frustumCorners.horizon,l,_,c,h,u,f,y,b,p);t.prepareDrawProgram(r,a);const T=t.atmosphereBuffer;T&&a.draw(r,n.TRIANGLES,s,e.StencilMode.disabled,e.ColorMode.alphaBlended,e.CullFaceMode.backCW,w,"skybox",T.vertexBuffer,T.indexBuffer,T.segments)}(this,this.style.fog),this.renderPass="sky",(e.globeToMercatorTransition(this.transform.zoom)>0||"globe"!==this.transform.projection.name)&&this.transform.isHorizonVisible())for(this.currentLayer=0;this.currentLayer{const r=t._getLayerSourceCache(e);r&&!e.isHidden(this.transform.zoom)&&(!i||i.getSource().maxzoom0?t.pop():null}isPatternMissing(e){return null===e||void 0!==e&&!this.imageManager.getPattern(e.toString())}terrainRenderModeElevated(){return this.style&&!!this.style.getTerrain()&&!!this.terrain&&!this.terrain.renderingToTexture}currentGlobalDefines(){const e=this.terrain&&this.terrain.renderingToTexture,t=this.terrain&&0===this.terrain.exaggeration(),i=this.style&&this.style.fog,r=[];return this.terrainRenderModeElevated()&&r.push("TERRAIN"),"globe"===this.transform.projection.name&&r.push("GLOBE"),t&&r.push("ZERO_EXAGGERATION"),i&&!e&&0!==i.getOpacity(this.transform.pitch)&&r.push("FOG"),e&&r.push("RENDER_TO_TEXTURE"),this._showOverdrawInspector&&r.push("OVERDRAW_INSPECTOR"),r}useProgram(e,t,i){this.cache=this.cache||{};const r=i||[],n=this.currentGlobalDefines().concat(r),o=Pi.cacheKey(ci[e],e,n,t);return this.cache[o]||(this.cache[o]=new Pi(this.context,e,ci[e],t,sr[e],n)),this.cache[o]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.frontFace.setDefault(),this.context.cullFaceSide.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){const e=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(e.FUNC_ADD)}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=e.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new e.Texture(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this._terrain&&this._terrain.destroy(),this.globeSharedBuffers&&this.globeSharedBuffers.destroy(),this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy(),this.atmosphereBuffer&&this.atmosphereBuffer.destroy()}prepareDrawTile(){this.terrain&&this.terrain.prepareDrawTile()}prepareDrawProgram(t,i,r){if(this.terrain&&this.terrain.renderingToTexture)return;const n=this.style.fog;if(n){const o=n.getOpacity(this.transform.pitch),s=((t,i,r,n,o,s,a,l,c,h,u)=>{const d=t.transform,p=i.properties.get("color").toArray01();p[3]=n;const f=t.frameCounter/1e3%1;return{u_fog_matrix:r?d.calculateFogTileMatrix(r):t.identityMat,u_fog_range:i.getFovAdjustedRange(d._fov),u_fog_color:p,u_fog_horizon_blend:i.properties.get("horizon-blend"),u_fog_temporal_offset:f,u_frustum_tl:o,u_frustum_tr:s,u_frustum_br:a,u_frustum_bl:l,u_globe_pos:c,u_globe_radius:h,u_viewport:u,u_globe_transition:e.globeToMercatorTransition(d.zoom),u_is_globe:+("globe"===d.projection.name)}})(this,n,r,o,this.transform.frustumCorners.TL,this.transform.frustumCorners.TR,this.transform.frustumCorners.BR,this.transform.frustumCorners.BL,this.transform.globeCenterInViewSpace,this.transform.globeRadius,[this.transform.width*e.exported.devicePixelRatio,this.transform.height*e.exported.devicePixelRatio]);i.setFogUniformValues(t,s)}}setTileLoadedFlag(e){this.tileLoaded=e}saveCanvasCopy(){const e=this.canvasCopy();e&&(this.frameCopies.push(e),this.tileLoaded=!1)}canvasCopy(){const e=this.context.gl,t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.copyTexImage2D(e.TEXTURE_2D,0,e.RGBA,0,0,e.drawingBufferWidth,e.drawingBufferHeight,0),t}getCanvasCopiesAndTimestamps(){return{canvasCopies:this.frameCopies,timeStamps:this.loadTimeStamps}}averageElevationNeedsEasing(){if(!this.transform._elevation)return!1;const e=this.style&&this.style.fog;return!!e&&0!==e.getOpacity(this.transform.pitch)}getBackgroundTiles(){const t=this._backgroundTiles,i=this._backgroundTiles={},r=this.transform.coveringTiles({tileSize:512});for(const n of r)i[n.key]=t[n.key]||new e.Tile(n,512,this.transform.tileZoom,this);return i}clearBackgroundTiles(){this._backgroundTiles={}}}class Br{constructor(e=0,t=0,i=0,r=0){if(isNaN(e)||e<0||isNaN(t)||t<0||isNaN(i)||i<0||isNaN(r)||r<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=e,this.bottom=t,this.left=i,this.right=r}interpolate(t,i,r){return null!=i.top&&null!=t.top&&(this.top=e.number(t.top,i.top,r)),null!=i.bottom&&null!=t.bottom&&(this.bottom=e.number(t.bottom,i.bottom,r)),null!=i.left&&null!=t.left&&(this.left=e.number(t.left,i.left,r)),null!=i.right&&null!=t.right&&(this.right=e.number(t.right,i.right,r)),this}getCenter(t,i){const r=e.clamp((this.left+t-this.right)/2,0,t),n=e.clamp((this.top+i-this.bottom)/2,0,i);return new e.Point(r,n)}equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left===e.left&&this.right===e.right}clone(){return new Br(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function Or(t,i){const r=e.getColumn(t,3);e.fromQuat(t,i),e.setColumn(t,3,r)}function Fr(t,i){const r=e.identity$1([]);return e.rotateZ$1(r,r,-i),e.rotateX$1(r,r,-t),r}function Ur(t,i){const r=[t[0],t[1],0],n=[i[0],i[1],0];if(e.length(r)>=1e-15){const t=e.normalize([],r);e.scale$2(n,t,e.dot(n,t)),i[0]=n[0],i[1]=n[1]}const o=e.cross([],i,t);if(e.len(o)<1e-15)return null;const s=Math.atan2(-o[1],o[0]);return Fr(Math.atan2(Math.sqrt(t[0]*t[0]+t[1]*t[1]),-t[2]),s)}class Vr{constructor(e,t){this.position=e,this.orientation=t}get position(){return this._position}set position(t){if(t){const i=t instanceof e.MercatorCoordinate?t:new e.MercatorCoordinate(t[0],t[1],t[2]);this._renderWorldCopies&&(i.x=e.wrap(i.x,0,1)),this._position=i}else this._position=null}lookAtPoint(t,i){if(this.orientation=null,!this.position)return;const r=this.position,n=this._elevation?this._elevation.getAtPointOrZero(e.MercatorCoordinate.fromLngLat(t)):0,o=e.MercatorCoordinate.fromLngLat(t,n),s=[o.x-r.x,o.y-r.y,o.z-r.z];i||(i=[0,0,1]),i[2]=Math.abs(i[2]),this.orientation=Ur(s,i)}setPitchBearing(t,i){this.orientation=Fr(e.degToRad(t),e.degToRad(-i))}}class Nr{constructor(t,i){this._transform=e.identity([]),this.orientation=i,this.position=t}get mercatorPosition(){const t=this.position;return new e.MercatorCoordinate(t[0],t[1],t[2])}get position(){const t=e.getColumn(this._transform,3);return[t[0],t[1],t[2]]}set position(t){var i;t&&e.setColumn(this._transform,3,[(i=t)[0],i[1],i[2],1])}get orientation(){return this._orientation}set orientation(t){this._orientation=t||e.identity$1([]),t&&Or(this._transform,this._orientation)}getPitchBearing(){const e=this.forward(),t=this.right();return{bearing:Math.atan2(-t[1],t[0]),pitch:Math.atan2(Math.sqrt(e[0]*e[0]+e[1]*e[1]),-e[2])}}setPitchBearing(e,t){this._orientation=Fr(e,t),Or(this._transform,this._orientation)}forward(){const t=e.getColumn(this._transform,2);return[-t[0],-t[1],-t[2]]}up(){const t=e.getColumn(this._transform,1);return[-t[0],-t[1],-t[2]]}right(){const t=e.getColumn(this._transform,0);return[t[0],t[1],t[2]]}getCameraToWorld(t,i){const r=new Float64Array(16);return e.invert(r,this.getWorldToCamera(t,i)),r}getWorldToCameraPosition(t,i,r){const n=this.position;e.scale$2(n,n,-t);const o=new Float64Array(16);return e.fromScaling(o,[r,r,r]),e.translate(o,o,n),o[10]*=i,o}getWorldToCamera(t,i){const r=new Float64Array(16),n=new Float64Array(4),o=this.position;return e.conjugate(n,this._orientation),e.scale$2(o,o,-t),e.fromQuat(r,n),e.translate(r,r,o),r[1]*=-1,r[5]*=-1,r[9]*=-1,r[13]*=-1,r[8]*=i,r[9]*=i,r[10]*=i,r[11]*=i,r}getCameraToClipPerspective(t,i,r,n){const o=new Float64Array(16);return e.perspective(o,t,i,r,n),o}getDistanceToElevation(t,i=!1){const r=0===t?0:e.mercatorZfromAltitude(t,i?e.latFromMercatorY(this.position[1]):this.position[1]),n=this.forward();return(r-this.position[2])/n[2]}clone(){return new Nr([...this.position],[...this.orientation])}}function jr(t,i){const r=$r(t.projection,t.zoom,t.width,t.height),n=function(t,i,r,n,o){const s=new e.LngLat(r.lng-180*Zr,r.lat),a=new e.LngLat(r.lng+180*Zr,r.lat),l=t.project(s.lng,s.lat),c=t.project(a.lng,a.lat),h=-Math.atan2(c.y-l.y,c.x-l.x),u=e.MercatorCoordinate.fromLngLat(r);u.y=e.clamp(u.y,-1+Zr,1-Zr);const d=u.toLngLat(),p=t.project(d.lng,d.lat),f=e.MercatorCoordinate.fromLngLat(d);f.x+=Zr;const m=f.toLngLat(),_=t.project(m.lng,m.lat),g=Wr(_.x-p.x,_.y-p.y,h),y=e.MercatorCoordinate.fromLngLat(d);y.y+=Zr;const x=y.toLngLat(),v=t.project(x.lng,x.lat),b=Wr(v.x-p.x,v.y-p.y,h),w=Math.abs(g.x)/Math.abs(b.y),T=e.identity([]);e.rotateZ(T,T,-h*(1-(o?0:n)));const E=e.identity([]);return e.scale(E,E,[1,1-(1-w)*n,1]),E[4]=-b.x/b.y*n,e.rotateZ(E,E,h),e.multiply(E,T,E),E}(t.projection,0,t.center,r,i),o=Gr(t);return e.scale(n,n,[o,o,1]),n}function Gr(t){const i=t.projection,r=$r(t.projection,t.zoom,t.width,t.height),n=qr(i,t.center),o=qr(i,e.LngLat.convert(i.center));return Math.pow(2,n*r+(1-r)*o)}function $r(t,i,r,n,o=1/0){const s=t.range;if(!s)return 0;const a=Math.min(o,Math.max(r,n)),l=Math.log(a/1024)/Math.LN2;return e.smoothstep(s[0]+l,s[1]+l,i)}const Zr=1/4e4;function qr(t,i){const r=e.clamp(i.lat,-e.MAX_MERCATOR_LATITUDE,e.MAX_MERCATOR_LATITUDE),n=new e.LngLat(i.lng-180*Zr,r),o=new e.LngLat(i.lng+180*Zr,r),s=t.project(n.lng,r),a=t.project(o.lng,r),l=e.MercatorCoordinate.fromLngLat(n),c=e.MercatorCoordinate.fromLngLat(o),h=a.x-s.x,u=a.y-s.y,d=c.x-l.x,p=c.y-l.y,f=Math.sqrt((d*d+p*p)/(h*h+u*u));return Math.log(f)/Math.LN2}function Wr(e,t,i){const r=Math.cos(i),n=Math.sin(i);return{x:e*r-t*n,y:e*n+t*r}}class Xr{constructor(t,i,r,n,o,s,a){this.tileSize=512,this._renderWorldCopies=void 0===o||o,this._minZoom=t||0,this._maxZoom=i||22,this._minPitch=null==r?0:r,this._maxPitch=null==n?60:n,this.setProjection(s),this.setMaxBounds(a),this.width=0,this.height=0,this._center=new e.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._nearZ=0,this._farZ=0,this._unmodified=!0,this._edgeInsets=new Br,this._projMatrixCache={},this._alignedProjMatrixCache={},this._fogTileMatrixCache={},this._distanceTileDataCache={},this._camera=new Nr,this._centerAltitude=0,this._averageElevation=0,this.cameraElevationReference="ground",this._pixelsPerMercatorPixel=1,this.globeRadius=0,this.globeCenterInViewSpace=[0,0,0],this._horizonShift=.1}clone(){const e=new Xr(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies,this.getProjection());return e._elevation=this._elevation,e._centerAltitude=this._centerAltitude,e._centerAltitudeValidForExaggeration=this._centerAltitudeValidForExaggeration,e.tileSize=this.tileSize,e.mercatorFromTransition=this.mercatorFromTransition,e.width=this.width,e.height=this.height,e.cameraElevationReference=this.cameraElevationReference,e._center=this._center,e._setZoom(this.zoom),e._seaLevelZoom=this._seaLevelZoom,e.angle=this.angle,e._fov=this._fov,e._pitch=this._pitch,e._nearZ=this._nearZ,e._farZ=this._farZ,e._averageElevation=this._averageElevation,e._unmodified=this._unmodified,e._edgeInsets=this._edgeInsets.clone(),e._camera=this._camera.clone(),e._calcMatrices(),e.freezeTileCoverage=this.freezeTileCoverage,e.frustumCorners=this.frustumCorners,e}get elevation(){return this._elevation}set elevation(e){this._elevation!==e&&(this._elevation=e,this._updateCameraOnTerrain(),this._calcMatrices())}updateElevation(e,t=!1){const i=this._elevation&&this._elevation.exaggeration()!==this._centerAltitudeValidForExaggeration;(null==this._seaLevelZoom||i)&&this._updateCameraOnTerrain(),(e||i)&&this._constrainCamera(t),this._calcMatrices()}getProjection(){return e.pick(this.projection,["name","center","parallels"])}setProjection(i){this.projectionOptions=i||{name:"mercator"};const r=this.projection?this.getProjection():void 0;this.projection=e.getProjection(this.projectionOptions);const n=!t(r,this.getProjection());return n&&this._calcMatrices(),this.mercatorFromTransition=!1,n}setMercatorFromTransition(){const t=this.projection.name;this.mercatorFromTransition=!0,this.projectionOptions={name:"mercator"},this.projection=e.getProjection({name:"mercator"});const i=t!==this.projection.name;return i&&this._calcMatrices(),i}get minZoom(){return this._minZoom}set minZoom(e){this._minZoom!==e&&(this._minZoom=e,this.zoom=Math.max(this.zoom,e))}get maxZoom(){return this._maxZoom}set maxZoom(e){this._maxZoom!==e&&(this._maxZoom=e,this.zoom=Math.min(this.zoom,e))}get minPitch(){return this._minPitch}set minPitch(e){this._minPitch!==e&&(this._minPitch=e,this.pitch=Math.max(this.pitch,e))}get maxPitch(){return this._maxPitch}set maxPitch(e){this._maxPitch!==e&&(this._maxPitch=e,this.pitch=Math.min(this.pitch,e))}get renderWorldCopies(){return this._renderWorldCopies&&!0===this.projection.supportsWorldCopies}set renderWorldCopies(e){void 0===e?e=!0:null===e&&(e=!1),this._renderWorldCopies=e}get worldSize(){return this.tileSize*this.scale}get cameraWorldSizeForFog(){const e=Math.max(this._camera.getDistanceToElevation(this._averageElevation),Number.EPSILON);return this._worldSizeFromZoom(this._zoomFromMercatorZ(e))}get cameraWorldSize(){const e=Math.max(this._camera.getDistanceToElevation(this._averageElevation,!0),Number.EPSILON);return this._worldSizeFromZoom(this._zoomFromMercatorZ(e))}get pixelsPerMeter(){return this.projection.pixelsPerMeter(this.center.lat,this.worldSize)}get cameraPixelsPerMeter(){return e.mercatorZfromAltitude(this.center.lat,this.cameraWorldSizeForFog)}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new e.Point(this.width,this.height)}get bearing(){return e.wrap(this.rotation,-180,180)}set bearing(e){this.rotation=e}get rotation(){return-this.angle/Math.PI*180}set rotation(t){const i=-t*Math.PI/180;var r;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=(r=new e.ARRAY_TYPE(4),e.ARRAY_TYPE!=Float32Array&&(r[1]=0,r[2]=0),r[0]=1,r[3]=1,r),function(e,t,i){var r=t[0],n=t[1],o=t[2],s=t[3],a=Math.sin(i),l=Math.cos(i);e[0]=r*l+o*a,e[1]=n*l+s*a,e[2]=r*-a+o*l,e[3]=n*-a+s*l}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(t){const i=e.clamp(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices())}get aspect(){return this.width/this.height}get fov(){return this._fov/Math.PI*180}get fovX(){return this._fov}get fovY(){const e=1/Math.tan(.5*this.fovX);return 2*Math.atan(1/this.aspect/e)}set fov(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=e.degToRad(t),this._calcMatrices())}get averageElevation(){return this._averageElevation}set averageElevation(e){this._averageElevation=e,this._calcFogMatrices(),this._distanceTileDataCache={}}get zoom(){return this._zoom}set zoom(e){const t=Math.min(Math.max(e,this.minZoom),this.maxZoom);this._zoom!==t&&(this._unmodified=!1,this._setZoom(t),this._updateSeaLevelZoom(),this._constrain(),this._calcMatrices())}_setZoom(e){this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom}_updateCameraOnTerrain(){if(!this._elevation||!this._elevation.isDataAvailableAtPoint(this.locationCoordinate(this.center)))return this._centerAltitude=0,this._seaLevelZoom=null,void(this._centerAltitudeValidForExaggeration=void 0);const e=this._elevation;this._centerAltitude=e.getAtPointOrZero(this.locationCoordinate(this.center)),this._centerAltitudeValidForExaggeration=e.exaggeration(),this._updateSeaLevelZoom()}_updateSeaLevelZoom(){void 0!==this._centerAltitudeValidForExaggeration&&(this._seaLevelZoom=this._zoomFromMercatorZ((this.pixelsPerMeter*this._centerAltitude+this.cameraToCenterDistance)/this.worldSize))}sampleAverageElevation(){if(!this._elevation)return 0;const t=this._elevation,i=[[.5,.2],[.3,.5],[.5,.5],[.7,.5],[.5,.8]],r=this.horizonLineFromTop();let n=0,o=0;for(let s=0;st.maxzoom&&(i=t.maxzoom);const s=this.locationCoordinate(this.center),a=this.center.lat,l=1<{const i=1/4e4,r=new e.MercatorCoordinate(t.x+i,t.y,t.z),n=new e.MercatorCoordinate(t.x,t.y+i,t.z),o=t.toLngLat(),s=r.toLngLat(),a=n.toLngLat(),l=this.locationCoordinate(o),c=this.locationCoordinate(s),h=this.locationCoordinate(a),u=Math.hypot(c.x-l.x,c.y-l.y),d=Math.hypot(h.x-l.x,h.y-l.y);return Math.sqrt(u*d)*b/i},T=t=>{const i=x,r=v;return{aabb:e.tileAABB(this,l,0,0,0,t,r,i,this.projection),zoom:0,x:0,y:0,minZ:r,maxZ:i,wrap:t,fullyVisible:!1}},E=[];let S=[];const M=i,A=t.reparseOverscaled?r:i,I=e=>e*e,C=I((m-this._centerAltitude)*f),z=e=>{if(!this._elevation||!e.tileID||!o)return;const t=this._elevation.getMinMaxForTile(e.tileID),i=e.aabb;t?(i.min[2]=t.min,i.max[2]=t.max,i.center[2]=(i.min[2]+i.max[2])/2):(e.shouldSplit=P(e),e.shouldSplit||(i.min[2]=i.max[2]=i.center[2]=this._centerAltitude))},P=t=>{if(t.zoom=.9)return!0}else if(n&&(s=I(t.aabb.distanceZ(_)*f)),this.projection.isReprojectedInTileSpace&&r<=5){const i=Math.pow(2,t.zoom),r=w(new e.MercatorCoordinate((t.x+.5)/i,(t.y+.5)/i));l=r>.85?1:r}const c=i*i+o*o+s,u=I((1<{if(t*I(.707)0;){const r=E.pop(),s=r.x,a=r.y;let u=r.fullyVisible;if(!u){const e=r.aabb.intersects(d);if(0===e)continue;u=2===e}if(r.zoom!==M&&P(r))for(let t=0;t<4;t++){const i=(s<<1)+t%2,c=(a<<1)+(t>>1),d={aabb:o?r.aabb.quadrant(t):e.tileAABB(this,l,r.zoom+1,i,c,r.wrap,r.minZ,r.maxZ,this.projection),zoom:r.zoom+1,x:i,y:c,wrap:r.wrap,fullyVisible:u,tileID:void 0,shouldSplit:void 0,minZ:r.minZ,maxZ:r.maxZ};n&&!h&&(d.tileID=new e.OverscaledTileID(r.zoom+1===M?A:r.zoom+1,r.wrap,r.zoom+1,i,c),z(d)),E.push(d)}else{const n=r.zoom===M?A:r.zoom;if(t.minzoom&&t.minzoom>n)continue;const o=c[0]-(.5+s+(r.wrap<{const o=[0,0,0,1],s=[e.EXTENT,e.EXTENT,0,1],a=this.calculateFogTileMatrix(n.tileID.toUnwrapped());e.transformMat4$1(o,o,a),e.transformMat4$1(s,s,a);const l=e.getAABBPointSquareDist(o,s);if(0===l)return!0;let c=!1;const h=this._elevation;if(h&&l>i&&0!==r){const i=this.calculateProjMatrix(n.tileID.toUnwrapped());let o;t.isTerrainDEM||(o=h.getMinMaxForTile(n.tileID)),o||(o={min:v,max:x});const s=e.furthestTileCorner(this.rotation),a=[s[0]*e.EXTENT,s[1]*e.EXTENT,o.max];e.transformMat4(a,a,i),c=(1-a[1])*this.height*.5e.distanceSq-t.distanceSq)).map((e=>e.tileID))}resize(e,t){this.width=e,this.height=t,this.pixelsToGLUnits=[2/e,-2/t],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(e){return Math.pow(2,e)}scaleZoom(e){return Math.log(e)/Math.LN2}project(t){const i=e.clamp(t.lat,-e.MAX_MERCATOR_LATITUDE,e.MAX_MERCATOR_LATITUDE),r=this.projection.project(t.lng,i);return new e.Point(r.x*this.worldSize,r.y*this.worldSize)}unproject(e){return this.projection.unproject(e.x/this.worldSize,e.y/this.worldSize)}get point(){return this.project(this.center)}get pointMerc(){return this.point._div(this.worldSize)}get pixelsPerMeterRatio(){return this.pixelsPerMeter/e.mercatorZfromAltitude(1,this.center.lat)/this.worldSize}setLocationAtPoint(t,i){let r,n;const o=this.centerPoint;if("globe"===this.projection.name){const e=this.worldSize;r=(i.x-o.x)/e,n=(i.y-o.y)/e}else{const e=this.pointCoordinate(i),t=this.pointCoordinate(o);r=e.x-t.x,n=e.y-t.y}const s=this.locationCoordinate(t);this.setLocation(new e.MercatorCoordinate(s.x-r,s.y-n))}setLocation(e){this.center=this.coordinateLocation(e),this.projection.wrap&&(this.center=this.center.wrap())}locationPoint(e){return this.projection.locationPoint(this,e)}locationPoint3D(e){return this.projection.locationPoint(this,e,!0)}pointLocation(e){return this.coordinateLocation(this.pointCoordinate(e))}pointLocation3D(e){return this.coordinateLocation(this.pointCoordinate3D(e))}locationCoordinate(t,i){const r=i?e.mercatorZfromAltitude(i,t.lat):void 0,n=this.projection.project(t.lng,t.lat);return new e.MercatorCoordinate(n.x,n.y,r)}coordinateLocation(e){return this.projection.unproject(e.x,e.y)}pointRayIntersection(t,i){const r=null!=i?i:this._centerAltitude,n=[t.x,t.y,0,1],o=[t.x,t.y,1,1];e.transformMat4$1(n,n,this.pixelMatrixInverse),e.transformMat4$1(o,o,this.pixelMatrixInverse);const s=o[3];e.scale$1(n,n,1/n[3]),e.scale$1(o,o,1/s);const a=n[2],l=o[2];return{p0:n,p1:o,t:a===l?0:(r-a)/(l-a)}}screenPointToMercatorRay(t){const i=[t.x,t.y,0,1],r=[t.x,t.y,1,1];return e.transformMat4$1(i,i,this.pixelMatrixInverse),e.transformMat4$1(r,r,this.pixelMatrixInverse),e.scale$1(i,i,1/i[3]),e.scale$1(r,r,1/r[3]),i[2]=e.mercatorZfromAltitude(i[2],this._center.lat)*this.worldSize,r[2]=e.mercatorZfromAltitude(r[2],this._center.lat)*this.worldSize,e.scale$1(i,i,1/this.worldSize),e.scale$1(r,r,1/this.worldSize),new e.Ray([i[0],i[1],i[2]],e.normalize([],e.sub([],r,i)))}rayIntersectionCoordinate(t){const{p0:i,p1:r,t:n}=t,o=e.mercatorZfromAltitude(i[2],this._center.lat),s=e.mercatorZfromAltitude(r[2],this._center.lat);return new e.MercatorCoordinate(e.number(i[0],r[0],n)/this.worldSize,e.number(i[1],r[1],n)/this.worldSize,e.number(o,s,n))}pointCoordinate(e,t=this._centerAltitude){return this.projection.pointCoordinate(this,e.x,e.y,t)}pointCoordinate3D(t){if(!this.elevation)return this.pointCoordinate(t);let i=this.projection.pointCoordinate3D(this,t.x,t.y);if(i)return new e.MercatorCoordinate(i[0],i[1],i[2]);let r=0,n=this.horizonLineFromTop();if(t.y>n)return this.pointCoordinate(t);const o=.02*n,s=t.clone();for(let t=0;t<10&&n-r>o;t++){s.y=e.number(r,n,.66);const t=this.projection.pointCoordinate3D(this,s.x,s.y);t?(n=s.y,i=t):r=s.y}return i?new e.MercatorCoordinate(i[0],i[1],i[2]):this.pointCoordinate(t)}isPointAboveHorizon(e){return this.projection.isPointAboveHorizon(this,e)}isPointOnSurface(t){if(t.y<0||t.y>this.height||t.x<0||t.x>this.width)return!1;if(this.elevation||this.zoom>=e.GLOBE_ZOOM_THRESHOLD_MAX)return!this.isPointAboveHorizon(t);const i=this.pointCoordinate(t);return i.y>=0&&i.y<=1}_coordinatePoint(t,i){const r=i&&this.elevation?this.elevation.getAtPointOrZero(t,this._centerAltitude):this._centerAltitude,n=[t.x*this.worldSize,t.y*this.worldSize,r+t.toAltitude(),1];return e.transformMat4$1(n,n,this.pixelMatrix),n[3]>0?new e.Point(n[0]/n[3],n[1]/n[3]):new e.Point(Number.MAX_VALUE,Number.MAX_VALUE)}_getBoundsNonRectangular(){const{top:t,left:i}=this._edgeInsets,r=this.height-this._edgeInsets.bottom,n=this.width-this._edgeInsets.right,o=this.pointLocation3D(new e.Point(i,t)),s=this.pointLocation3D(new e.Point(n,t)),a=this.pointLocation3D(new e.Point(n,r)),l=this.pointLocation3D(new e.Point(i,r));let c=Math.min(o.lng,s.lng,a.lng,l.lng),h=Math.max(o.lng,s.lng,a.lng,l.lng),u=Math.min(o.lat,s.lat,a.lat,l.lat),d=Math.max(o.lat,s.lat,a.lat,l.lat);const p=Math.pow(2,-this.zoom)/16*270,f="globe"===this.projection.name?1:4,m=(t,i,r,n,o)=>{const s=(t+r)/2,a=(i+n)/2,l=new e.Point(s,a),{lng:_,lat:g}=this.pointLocation3D(l),y=Math.max(0,c-_,u-g,_-h,g-d);c=Math.min(c,_),h=Math.max(h,_),u=Math.min(u,g),d=Math.max(d,g),(op)&&(m(t,i,s,a,o+1),m(s,a,r,n,o+1))};if(m(i,t,n,t,1),m(n,t,n,r,1),m(n,r,i,r,1),m(i,r,i,t,1),"globe"===this.projection.name){const[t,i]=e.polesInViewport(this);t?(d=90,h=180,c=-180):i&&(u=-90,h=180,c=-180)}return new e.LngLatBounds(new e.LngLat(c,u),new e.LngLat(h,d))}_getBoundsRectangular(t,i){const{top:r,left:n}=this._edgeInsets,o=this.height-this._edgeInsets.bottom,s=this.width-this._edgeInsets.right,a=new e.Point(n,r),l=new e.Point(s,r),c=new e.Point(s,o),h=new e.Point(n,o);let u=this.pointCoordinate(a,t),d=this.pointCoordinate(l,t);const p=this.pointCoordinate(c,i),f=this.pointCoordinate(h,i),m=(e,t)=>(t.y-e.y)/(t.x-e.x);return u.y>1&&d.y>=0?u=new e.MercatorCoordinate((1-f.y)/m(f,u)+f.x,1):u.y<0&&d.y<=1&&(u=new e.MercatorCoordinate(-f.y/m(f,u)+f.x,0)),d.y>1&&u.y>=0?d=new e.MercatorCoordinate((1-p.y)/m(p,d)+p.x,1):d.y<0&&u.y<=1&&(d=new e.MercatorCoordinate(-p.y/m(p,d)+p.x,0)),(new e.LngLatBounds).extend(this.coordinateLocation(u)).extend(this.coordinateLocation(d)).extend(this.coordinateLocation(f)).extend(this.coordinateLocation(p))}_getBoundsRectangularTerrain(){const e=this.elevation;if(!e.visibleDemTiles.length||e.isUsingMockSource())return this._getBoundsRectangular(0,0);const t=e.visibleDemTiles.reduce(((e,t)=>{if(t.dem){const i=t.dem.tree;e.min=Math.min(e.min,i.minimums[0]),e.max=Math.max(e.max,i.maximums[0])}return e}),{min:Number.MAX_VALUE,max:0});return this._getBoundsRectangular(t.min*e.exaggeration(),t.max*e.exaggeration())}getBounds(){return"mercator"===this.projection.name||"equirectangular"===this.projection.name?this._terrainEnabled()?this._getBoundsRectangularTerrain():this._getBoundsRectangular(0,0):this._getBoundsNonRectangular()}horizonLineFromTop(e=!0){const t=this.height/2/Math.tan(this._fov/2)/Math.tan(Math.max(this._pitch,.1))+this.centerOffset.y,i=this.height/2-t*(1-this._horizonShift);return e?Math.max(0,i):i}getMaxBounds(){return this.maxBounds}setMaxBounds(t){this.maxBounds=t,this.minLat=-e.MAX_MERCATOR_LATITUDE,this.maxLat=e.MAX_MERCATOR_LATITUDE,this.minLng=-180,this.maxLng=180,t&&(this.minLat=t.getSouth(),this.maxLat=t.getNorth(),this.minLng=t.getWest(),this.maxLng=t.getEast(),this.maxLngu&&(a=u-c),u-ht&&(s=t-l),t-e.5?v-1:v,b>.5?b-1:b,0]),this.alignedProjMatrix=w,a=e.create(),e.scale(a,a,[this.width/2,-this.height/2,1]),e.translate(a,a,[1,-1,0]),this.labelPlaneMatrix=a,a=e.create(),e.scale(a,a,[1,-1,1]),e.translate(a,a,[-1,-1,0]),e.scale(a,a,[2/this.width,2/this.height,1]),this.glCoordMatrix=a,this.pixelMatrix=e.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),this._calcFogMatrices(),this._distanceTileDataCache={},a=e.invert(new Float64Array(16),this.pixelMatrix),!a)throw new Error("failed to invert matrix");if(this.pixelMatrixInverse=a,"globe"===this.projection.name||this.mercatorFromTransition){this.globeMatrix=e.calculateGlobeMatrix(this);const t=[this.globeMatrix[12],this.globeMatrix[13],this.globeMatrix[14]];this.globeCenterInViewSpace=e.transformMat4(t,t,o),this.globeRadius=this.worldSize/2/Math.PI-1}else this.globeMatrix=a;this._projMatrixCache={},this._alignedProjMatrixCache={},this._pixelsToTileUnitsCache={}}_calcFogMatrices(){this._fogTileMatrixCache={};const t=this.cameraWorldSizeForFog,i=this.cameraPixelsPerMeter,r=this._camera.position,n=1/this.height/this._pixelsPerMercatorPixel,o=[t,t,i];e.scale$2(o,o,n),e.scale$2(r,r,-1),e.multiply$2(r,r,o);const s=e.create();e.translate(s,s,r),e.scale(s,s,o),this.mercatorFogMatrix=s,this.worldToFogMatrix=this._camera.getWorldToCameraPosition(t,i,n)}_computeCameraPosition(e){const t=(e=e||this.pixelsPerMeter)/this.pixelsPerMeter,i=this._camera.forward(),r=this.point,n=this._mercatorZfromZoom(this._seaLevelZoom?this._seaLevelZoom:this._zoom)*t-e/this.worldSize*this._centerAltitude;return[r.x/this.worldSize-i[0]*n,r.y/this.worldSize-i[1]*n,e/this.worldSize*this._centerAltitude-i[2]*n]}_updateCameraState(){this.height&&(this._camera.setPitchBearing(this._pitch,this.angle),this._camera.position=this._computeCameraPosition())}_translateCameraConstrained(t){const i=this._maxCameraBoundsDistance()*Math.cos(this._pitch),r=this._camera.position[2],n=t[2];let o=1;this.projection.wrap&&(this.center=this.center.wrap()),n>0&&(o=Math.min((i-r)/n,1)),this._camera.position=e.scaleAndAdd([],this._camera.position,t,o),this._updateStateFromCamera()}_updateStateFromCamera(){const t=this._camera.position,i=this._camera.forward(),{pitch:r,bearing:n}=this._camera.getPitchBearing(),o=e.mercatorZfromAltitude(this._centerAltitude,this.center.lat)*this._pixelsPerMercatorPixel,s=this._mercatorZfromZoom(this._maxZoom)*Math.cos(e.degToRad(this._maxPitch)),a=Math.max((t[2]-o)/Math.cos(r),s),l=this._zoomFromMercatorZ(a);e.scaleAndAdd(t,t,i,a),this._pitch=e.clamp(r,e.degToRad(this.minPitch),e.degToRad(this.maxPitch)),this.angle=e.wrap(n,-Math.PI,Math.PI),this._setZoom(e.clamp(l,this._minZoom,this._maxZoom)),this._updateSeaLevelZoom(),this._center=this.coordinateLocation(new e.MercatorCoordinate(t[0],t[1],t[2])),this._unmodified=!1,this._constrain(),this._calcMatrices()}_worldSizeFromZoom(e){return Math.pow(2,e)*this.tileSize}_mercatorZfromZoom(e){return this.cameraToCenterDistance/this._worldSizeFromZoom(e)}_minimumHeightOverTerrain(){const e=Math.min((null!=this._seaLevelZoom?this._seaLevelZoom:this._zoom)+4,this._maxZoom);return this._mercatorZfromZoom(e)}_zoomFromMercatorZ(e){return this.scaleZoom(this.cameraToCenterDistance/(e*this.tileSize))}zoomFromMercatorZAdjusted(t){let i=0,r=e.GLOBE_ZOOM_THRESHOLD_MAX,n=0,o=1/0;for(;r-i>1e-6&&r>i;){const e=i+.5*(r-i),s=this.tileSize*Math.pow(2,e),a=this.getCameraToCenterDistance(this.projection,e,s),l=this.scaleZoom(a/(t*this.tileSize)),c=Math.abs(e-l);cc||i.y>1)return!0}return!1}isHorizonVisible(){return this.pitch+e.radToDeg(this.fovAboveCenter)>88||this.anyCornerOffEdge(new e.Point(0,0),new e.Point(this.width,this.height))}zoomDeltaToMovement(t,i){const r=e.length(e.sub([],this._camera.position,t)),n=this._zoomFromMercatorZ(r)+i;return r-this._mercatorZfromZoom(n)}getCameraPoint(){if("globe"===this.projection.name){const t=function([t,i,r],n){const o=[t,i,r,1];e.transformMat4$1(o,o,n);const s=o[3]=Math.max(o[3],1e-6);return o[0]/=s,o[1]/=s,o[2]/=s,o}([this.globeMatrix[12],this.globeMatrix[13],this.globeMatrix[14]],this.pixelMatrix);return new e.Point(t[0],t[1])}{const t=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new e.Point(0,t))}}getCameraToCenterDistance(e,t=this.zoom,i=this.worldSize){const r=$r(e,t,this.width,this.height,1024),n=e.pixelSpaceConversion(this.center.lat,i,r);return.5/Math.tan(.5*this._fov)*this.height*n}getWorldToCameraMatrix(){const t=this._camera.getWorldToCamera(this.worldSize,"meters"===this.projection.zAxisUnit?this.pixelsPerMeter:1);return"globe"===this.projection.name&&e.multiply(t,t,this.globeMatrix),t}}function Hr(e,t){let i=!1,r=null;const n=()=>{r=null,i&&(e(),r=setTimeout(n,t),i=!1)};return()=>(i=!0,r||n(),r)}class Kr{constructor(t){this._hashName=t&&encodeURIComponent(t),e.bindAll(["_getCurrentHash","_onHashChange","_updateHash"],this),this._updateHash=Hr(this._updateHashUnthrottled.bind(this),300)}addTo(t){return this._map=t,e.window.addEventListener("hashchange",this._onHashChange,!1),t.on("moveend",this._updateHash),this}remove(){return this._map?(this._map.off("moveend",this._updateHash),e.window.removeEventListener("hashchange",this._onHashChange,!1),clearTimeout(this._updateHash()),this._map=void 0,this):this}getHashString(){const t=this._map;if(!t)return"";const i=Yr(t);if(this._hashName){const t=this._hashName;let r=!1;const n=e.window.location.hash.slice(1).split("&").map((e=>{const n=e.split("=")[0];return n===t?(r=!0,`${n}=${i}`):e})).filter((e=>e));return r||n.push(`${t}=${i}`),`#${n.join("&")}`}return`#${i}`}_getCurrentHash(){const t=e.window.location.hash.replace("#","");if(this._hashName){let e;return t.split("&").map((e=>e.split("="))).forEach((t=>{t[0]===this._hashName&&(e=t)})),(e&&e[1]||"").split("/")}return t.split("/")}_onHashChange(){const e=this._map;if(!e)return!1;const t=this._getCurrentHash();if(t.length>=3&&!t.some((e=>isNaN(e)))){const i=e.dragRotate.isEnabled()&&e.touchZoomRotate.isEnabled()?+(t[3]||0):e.getBearing();return e.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:i,pitch:+(t[4]||0)}),!0}return!1}_updateHashUnthrottled(){const t=e.window.location.href.replace(/(#.+)?$/,this.getHashString());e.window.history.replaceState(e.window.history.state,null,t)}}function Yr(e,t){const i=e.getCenter(),r=Math.round(100*e.getZoom())/100,n=Math.ceil((r*Math.LN2+Math.log(512/360/.5))/Math.LN10),o=Math.pow(10,n),s=Math.round(i.lng*o)/o,a=Math.round(i.lat*o)/o,l=e.getBearing(),c=e.getPitch();let h=t?`/${s}/${a}/${r}`:`${r}/${a}/${s}`;return(l||c)&&(h+="/"+Math.round(10*l)/10),c&&(h+=`/${Math.round(c)}`),h}const Jr={linearity:.3,easing:e.bezier(0,0,.3,1)},Qr=e.extend({deceleration:2500,maxSpeed:1400},Jr),en=e.extend({deceleration:20,maxSpeed:1400},Jr),tn=e.extend({deceleration:1e3,maxSpeed:360},Jr),rn=e.extend({deceleration:1e3,maxSpeed:90},Jr);class nn{constructor(e){this._map=e,this.clear()}clear(){this._inertiaBuffer=[]}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:e.exported.now(),settings:t})}_drainInertiaBuffer(){const t=this._inertiaBuffer,i=e.exported.now();for(;t.length>0&&i-t[0].time>160;)t.shift()}_onMoveEnd(t){if(this._map._prefersReducedMotion())return;if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,pan:new e.Point(0,0),pinchAround:void 0,around:void 0};for(const{settings:e}of this._inertiaBuffer)i.zoom+=e.zoomDelta||0,i.bearing+=e.bearingDelta||0,i.pitch+=e.pitchDelta||0,e.panDelta&&i.pan._add(e.panDelta),e.around&&(i.around=e.around),e.pinchAround&&(i.pinchAround=e.pinchAround);const r=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,n={};if(i.pan.mag()){const o=sn(i.pan.mag(),r,e.extend({},Qr,t||{}));n.offset=i.pan.mult(o.amount/i.pan.mag()),n.center=this._map.transform.center,on(n,o)}if(i.zoom){const e=sn(i.zoom,r,en);n.zoom=this._map.transform.zoom+e.amount,on(n,e)}if(i.bearing){const t=sn(i.bearing,r,tn);n.bearing=this._map.transform.bearing+e.clamp(t.amount,-179,179),on(n,t)}if(i.pitch){const e=sn(i.pitch,r,rn);n.pitch=this._map.transform.pitch+e.amount,on(n,e)}if(n.zoom||n.bearing){const e=void 0===i.pinchAround?i.around:i.pinchAround;n.around=e?this._map.unproject(e):this._map.getCenter()}return this.clear(),n.noMoveStart=!0,n}}function on(e,t){(!e.duration||e.durationi.unproject(e))),a=o.reduce(((e,t,i,r)=>e.add(t.div(r.length))),new e.Point(0,0));super(t,{points:o,point:a,lngLats:s,lngLat:i.unproject(a),originalEvent:r}),this._defaultPrevented=!1}}class cn extends e.Event{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(e,t,i){super(e,{originalEvent:i}),this._defaultPrevented=!1}}class hn{constructor(e,t){this._map=e,this._clickTolerance=t.clickTolerance}reset(){this._mousedownPos=void 0}wheel(e){return this._firePreventable(new cn(e.type,this._map,e))}mousedown(e,t){return this._mousedownPos=t,this._firePreventable(new an(e.type,this._map,e))}mouseup(e){this._map.fire(new an(e.type,this._map,e))}preclick(t){const i=e.extend({},t);i.type="preclick",this._map.fire(new an(i.type,this._map,i))}click(e,t){this._mousedownPos&&this._mousedownPos.dist(t)>=this._clickTolerance||(this.preclick(e),this._map.fire(new an(e.type,this._map,e)))}dblclick(e){return this._firePreventable(new an(e.type,this._map,e))}mouseover(e){this._map.fire(new an(e.type,this._map,e))}mouseout(e){this._map.fire(new an(e.type,this._map,e))}touchstart(e){return this._firePreventable(new ln(e.type,this._map,e))}touchmove(e){this._map.fire(new ln(e.type,this._map,e))}touchend(e){this._map.fire(new ln(e.type,this._map,e))}touchcancel(e){this._map.fire(new ln(e.type,this._map,e))}_firePreventable(e){if(this._map.fire(e),e.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class un{constructor(e){this._map=e}reset(){this._delayContextMenu=!1,this._contextMenuEvent=void 0}mousemove(e){this._map.fire(new an(e.type,this._map,e))}mousedown(){this._delayContextMenu=!0}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new an("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(e){this._delayContextMenu?this._contextMenuEvent=e:this._map.fire(new an(e.type,this._map,e)),this._map.listens("contextmenu")&&e.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class dn{constructor(e,t){this._map=e,this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=t.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(e,t){this.isEnabled()&&e.shiftKey&&0===e.button&&(h(),this._startPos=this._lastPos=t,this._active=!0)}mousemoveWindow(e,t){if(!this._active)return;const i=t,r=this._startPos,n=this._lastPos;if(!r||!n||n.equals(i)||!this._box&&i.dist(r){this._box&&(this._box.style.transform=`translate(${s}px,${l}px)`,this._box.style.width=a-s+"px",this._box.style.height=c-l+"px")}))}mouseupWindow(t,i){if(!this._active)return;const r=this._startPos,n=i;if(r&&0===t.button){if(this.reset(),p(),r.x!==n.x||r.y!==n.y)return this._map.fire(new e.Event("boxzoomend",{originalEvent:t})),{cameraAnimation:e=>e.fitScreenCoordinates(r,n,this._map.getBearing(),{linear:!1})};this._fireEvent("boxzoomcancel",t)}}keydown(e){this._active&&27===e.keyCode&&(this.reset(),this._fireEvent("boxzoomcancel",e))}blur(){this.reset()}reset(){this._active=!1,this._container.classList.remove("mapboxgl-crosshair"),this._box&&(this._box.remove(),this._box=null),u(),delete this._startPos,delete this._lastPos}_fireEvent(t,i){return this._map.fire(new e.Event(t,{originalEvent:i}))}}function pn(e,t){const i={};for(let r=0;rthis.numTouches)&&(this.aborted=!0),this.aborted||(0===this.startTime&&(this.startTime=t.timeStamp),r.length===this.numTouches&&(this.centroid=function(t){const i=new e.Point(0,0);for(const e of t)i._add(e);return i.div(t.length)}(i),this.touches=pn(r,i)))}touchmove(e,t,i){if(this.aborted||!this.centroid)return;const r=pn(i,t);for(const e in this.touches){const t=r[e];(!t||t.dist(this.touches[e])>30)&&(this.aborted=!0)}}touchend(e,t,i){if((!this.centroid||e.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const e=!this.aborted&&this.centroid;if(this.reset(),e)return e}}}class mn{constructor(e){this.singleTap=new fn(e),this.numTaps=e.numTaps,this.reset()}reset(){this.lastTime=1/0,this.lastTap=void 0,this.count=0,this.singleTap.reset()}touchstart(e,t,i){this.singleTap.touchstart(e,t,i)}touchmove(e,t,i){this.singleTap.touchmove(e,t,i)}touchend(e,t,i){const r=this.singleTap.touchend(e,t,i);if(r){const t=e.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(r)<30;if(t&&i||this.reset(),this.count++,this.lastTime=e.timeStamp,this.lastTap=r,this.count===this.numTaps)return this.reset(),r}}}class _n{constructor(){this._zoomIn=new mn({numTouches:1,numTaps:2}),this._zoomOut=new mn({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(e,t,i){this._zoomIn.touchstart(e,t,i),this._zoomOut.touchstart(e,t,i)}touchmove(e,t,i){this._zoomIn.touchmove(e,t,i),this._zoomOut.touchmove(e,t,i)}touchend(e,t,i){const r=this._zoomIn.touchend(e,t,i),n=this._zoomOut.touchend(e,t,i);return r?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:t.getZoom()+1,around:t.unproject(r)},{originalEvent:e})}):n?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:t.getZoom()-1,around:t.unproject(n)},{originalEvent:e})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}const gn={0:1,2:2};class yn{constructor(e){this.reset(),this._clickTolerance=e.clickTolerance||1}blur(){this.reset()}reset(){this._active=!1,this._moved=!1,this._lastPoint=void 0,this._eventButton=void 0}_correctButton(e,t){return!1}_move(e,t){return{}}mousedown(e,t){if(this._lastPoint)return;const i=_(e);this._correctButton(e,i)&&(this._lastPoint=t,this._eventButton=i)}mousemoveWindow(e,t){const i=this._lastPoint;if(i)if(e.preventDefault(),null!=this._eventButton&&function(e,t){const i=gn[t];return void 0===e.buttons||(e.buttons&i)!==i}(e,this._eventButton))this.reset();else if(this._moved||!(t.dist(i)0&&(this._active=!0);const n=pn(r,i),o=new e.Point(0,0),s=new e.Point(0,0);let a=0;for(const e in n){const t=n[e],i=this._touches[e];i&&(o._add(t),s._add(t.sub(i)),a++,n[e]=t)}if(this._touches=n,a{this._alertContainer.classList.remove("mapboxgl-touch-pan-blocker-show"),this._alertContainer.setAttribute("role","null")}),500)}}class Tn{constructor(){this.reset()}reset(){this._active=!1,this._firstTwoTouches=void 0}_start(e){}_move(e,t,i){return{}}touchstart(e,t,i){this._firstTwoTouches||i.length<2||(this._firstTwoTouches=[i[0].identifier,i[1].identifier],this._start([t[0],t[1]]))}touchmove(e,t,i){const r=this._firstTwoTouches;if(!r)return;e.preventDefault();const[n,o]=r,s=En(i,t,n),a=En(i,t,o);if(!s||!a)return;const l=this._aroundCenter?null:s.add(a).div(2);return this._move([s,a],l,e)}touchend(e,t,i){if(!this._firstTwoTouches)return;const[r,n]=this._firstTwoTouches,o=En(i,t,r),s=En(i,t,n);o&&s||(this._active&&p(),this.reset())}touchcancel(){this.reset()}enable(e){this._enabled=!0,this._aroundCenter=!!e&&"center"===e.around}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}function En(e,t,i){for(let r=0;rMath.abs(e.x)}class zn extends Tn{constructor(e){super(),this._map=e}reset(){super.reset(),this._valid=void 0,this._firstMove=void 0,this._lastPoints=void 0}_start(e){this._lastPoints=e,Cn(e[0].sub(e[1]))&&(this._valid=!1)}_move(t,i,r){const n=this._lastPoints;if(!n)return;const o=t[0].sub(n[0]),s=t[1].sub(n[1]);return this._map._cooperativeGestures&&!e.isFullscreen()&&r.touches.length<3||(this._valid=this.gestureBeginsVertically(o,s,r.timeStamp),!this._valid)?void 0:(this._lastPoints=t,this._active=!0,{pitchDelta:(o.y+s.y)/2*-.5})}gestureBeginsVertically(e,t,i){if(void 0!==this._valid)return this._valid;const r=e.mag()>=2,n=t.mag()>=2;if(!r&&!n)return;if(!r||!n)return null==this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const o=e.y>0==t.y>0;return Cn(e)&&Cn(t)&&o}}const Pn={panStep:100,bearingStep:15,pitchStep:10};class kn{constructor(){const e=Pn;this._panStep=e.panStep,this._bearingStep=e.bearingStep,this._pitchStep=e.pitchStep,this._rotationDisabled=!1}blur(){this.reset()}reset(){this._active=!1}keydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=0,i=0,r=0,n=0,o=0;switch(e.keyCode){case 61:case 107:case 171:case 187:t=1;break;case 189:case 109:case 173:t=-1;break;case 37:e.shiftKey?i=-1:(e.preventDefault(),n=-1);break;case 39:e.shiftKey?i=1:(e.preventDefault(),n=1);break;case 38:e.shiftKey?r=1:(e.preventDefault(),o=-1);break;case 40:e.shiftKey?r=-1:(e.preventDefault(),o=1);break;default:return}return this._rotationDisabled&&(i=0,r=0),{cameraAnimation:s=>{const a=s.getZoom();s.easeTo({duration:300,easeId:"keyboardHandler",easing:Dn,zoom:t?Math.round(a)+t*(e.shiftKey?2:1):a,bearing:s.getBearing()+i*this._bearingStep,pitch:s.getPitch()+r*this._pitchStep,offset:[-n*this._panStep,-o*this._panStep],center:s.getCenter()},{originalEvent:e})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function Dn(e){return e*(2-e)}const Ln=4.000244140625;class Rn{constructor(t,i){this._map=t,this._el=t.getCanvasContainer(),this._handler=i,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222,e.bindAll(["_onTimeout","_addScrollZoomBlocker","_showBlockerAlert"],this)}setZoomRate(e){this._defaultZoomRate=e}setWheelZoomRate(e){this._wheelZoomRate=e}isEnabled(){return!!this._enabled}isActive(){return this._active||void 0!==this._finishTimeout}isZooming(){return!!this._zooming}enable(e){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!e&&"center"===e.around,this._map._cooperativeGestures&&this._addScrollZoomBlocker())}disable(){this.isEnabled()&&(this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove()))}wheel(t){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!(t.ctrlKey||t.metaKey||this.isZooming()||e.isFullscreen()))return void this._showBlockerAlert();"hidden"!==this._alertContainer.style.visibility&&(this._alertContainer.style.visibility="hidden",clearTimeout(this._alertTimer))}let i=t.deltaMode===e.window.WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY;const r=e.exported.now(),n=r-(this._lastWheelEventTime||0);this._lastWheelEventTime=r,0!==i&&i%Ln==0?this._type="wheel":0!==i&&Math.abs(i)<4?this._type="trackpad":n>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(n*i)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,i+=this._lastValue)),t.shiftKey&&i&&(i/=4),this._type&&(this._lastWheelEvent=t,this._delta-=i,this._active||this._start(t)),t.preventDefault()}_onTimeout(e){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(e)}_start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const t=f(this._el,e);this._aroundPoint=this._aroundCenter?this._map.transform.centerPoint:t,this._aroundCoord=this._map.transform.pointCoordinate3D(this._aroundPoint),this._targetZoom=void 0,this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isActive())return;const t=this._map.transform;"wheel"===this._type&&t.projection.wrap&&(t._center.lng>=180||t._center.lng<=-180)&&(this._prevEase=null,this._easing=null,this._lastWheelEvent=null,this._lastWheelEventTime=0);const i=()=>t._terrainEnabled()&&this._aroundCoord?t.computeZoomRelativeTo(this._aroundCoord):t.zoom;if(0!==this._delta){const e="wheel"===this._type&&Math.abs(this._delta)>Ln?this._wheelZoomRate:this._defaultZoomRate;let r=2/(1+Math.exp(-Math.abs(this._delta*e)));this._delta<0&&0!==r&&(r=1/r);const n=i(),o=Math.pow(2,n),s="number"==typeof this._targetZoom?t.zoomScale(this._targetZoom):o;this._targetZoom=Math.min(t.maxZoom,Math.max(t.minZoom,t.scaleZoom(s*r))),"wheel"===this._type&&(this._startZoom=n,this._easing=this._smoothOutEasing(200)),this._delta=0}const r="number"==typeof this._targetZoom?this._targetZoom:i(),n=this._startZoom,o=this._easing;let s,a=!1;if("wheel"===this._type&&n&&o){const t=Math.min((e.exported.now()-this._lastWheelEventTime)/200,1),i=o(t);s=e.number(n,r,i),t<1?this._frameId||(this._frameId=!0):a=!0}else s=r,a=!0;return this._active=!0,a&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._handler._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout}),200)),{noInertia:!0,needsRenderFrame:!a,zoomDelta:s-i(),around:this._aroundPoint,aroundCoord:this._aroundCoord,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let i=e.ease;if(this._prevEase){const t=this._prevEase,r=(e.exported.now()-t.start)/t.duration,n=t.easing(r+.01)-t.easing(r),o=.27/Math.sqrt(n*n+1e-4)*.01,s=Math.sqrt(.0729-o*o);i=e.bezier(o,s,.25,1)}return this._prevEase={start:e.exported.now(),duration:t,easing:i},i}blur(){this.reset()}reset(){this._active=!1}_addScrollZoomBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=o("div","mapboxgl-scroll-zoom-blocker",this._map._container),this._alertContainer.textContent=/(Mac|iPad)/i.test(e.window.navigator.userAgent)?this._map._getUIString("ScrollZoomBlocker.CmdMessage"):this._map._getUIString("ScrollZoomBlocker.CtrlMessage"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`)}_showBlockerAlert(){this._alertContainer.style.visibility="visible",this._alertContainer.classList.add("mapboxgl-scroll-zoom-blocker-show"),this._alertContainer.setAttribute("role","alert"),clearTimeout(this._alertTimer),this._alertTimer=setTimeout((()=>{this._alertContainer.classList.remove("mapboxgl-scroll-zoom-blocker-show"),this._alertContainer.setAttribute("role","null")}),200)}}class Bn{constructor(e,t){this._clickZoom=e,this._tapZoom=t}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class On{constructor(){this.reset()}reset(){this._active=!1}blur(){this.reset()}dblclick(e,t){return e.preventDefault(),{cameraAnimation:i=>{i.easeTo({duration:300,zoom:i.getZoom()+(e.shiftKey?-1:1),around:i.unproject(t)},{originalEvent:e})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Fn{constructor(){this._tap=new mn({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,this._swipePoint=void 0,this._swipeTouch=0,this._tapTime=0,this._tap.reset()}touchstart(e,t,i){this._swipePoint||(this._tapTime&&e.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?i.length>0&&(this._swipePoint=t[0],this._swipeTouch=i[0].identifier):this._tap.touchstart(e,t,i))}touchmove(e,t,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const r=t[0],n=r.y-this._swipePoint.y;return this._swipePoint=r,e.preventDefault(),this._active=!0,{zoomDelta:n/128}}}else this._tap.touchmove(e,t,i)}touchend(e,t,i){this._tapTime?this._swipePoint&&0===i.length&&this.reset():this._tap.touchend(e,t,i)&&(this._tapTime=e.timeStamp)}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Un{constructor(e,t,i){this._el=e,this._mousePan=t,this._touchPan=i}enable(e){this._inertiaOptions=e||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class Vn{constructor(e,t,i){this._pitchWithRotate=e.pitchWithRotate,this._mouseRotate=t,this._mousePitch=i}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Nn{constructor(e,t,i,r){this._el=e,this._touchZoom=t,this._touchRotate=i,this._tapDragZoom=r,this._rotationDisabled=!1,this._enabled=!0}enable(e){this._touchZoom.enable(e),this._rotationDisabled||this._touchRotate.enable(e),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}const jn=e=>e.zoom||e.drag||e.pitch||e.rotate;class Gn extends e.Event{}class $n{constructor(){this.constants=[1,1,.01],this.radius=0}setup(t,i){const r=e.sub([],i,t);this.radius=e.length(r[2]<0?e.div([],r,this.constants):[r[0],r[1],0])}projectRay(t){e.div(t,t,this.constants),e.normalize(t,t),e.mul$1(t,t,this.constants);const i=e.scale$2([],t,this.radius);if(i[2]>0){const t=e.scale$2([],[0,0,1],e.dot(i,[0,0,1])),r=e.scale$2([],e.normalize([],[i[0],i[1],0]),this.radius),n=e.add([],i,e.scale$2([],e.sub([],e.add([],r,t),i),2));i[0]=n[0],i[1]=n[1]}return i}}function Zn(e){return e.panDelta&&e.panDelta.mag()||e.zoomDelta||e.bearingDelta||e.pitchDelta}class qn{constructor(t,i){this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new nn(t),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._trackingEllipsoid=new $n,this._dragOrigin=null,this._eventsInProgress={},this._addDefaultHandlers(i),e.bindAll(["handleEvent","handleWindowEvent"],this);const r=this._el;this._listeners=[[r,"touchstart",{passive:!0}],[r,"touchmove",{passive:!1}],[r,"touchend",void 0],[r,"touchcancel",void 0],[r,"mousedown",void 0],[r,"mousemove",void 0],[r,"mouseup",void 0],[e.window.document,"mousemove",{capture:!0}],[e.window.document,"mouseup",void 0],[r,"mouseover",void 0],[r,"mouseout",void 0],[r,"dblclick",void 0],[r,"click",void 0],[r,"keydown",{capture:!1}],[r,"keyup",void 0],[r,"wheel",{passive:!1}],[r,"contextmenu",void 0],[e.window,"blur",void 0]];for(const[t,i,r]of this._listeners)t.addEventListener(i,t===e.window.document?this.handleWindowEvent:this.handleEvent,r)}destroy(){for(const[t,i,r]of this._listeners)t.removeEventListener(i,t===e.window.document?this.handleWindowEvent:this.handleEvent,r)}_addDefaultHandlers(e){const t=this._map,i=t.getCanvasContainer();this._add("mapEvent",new hn(t,e));const r=t.boxZoom=new dn(t,e);this._add("boxZoom",r);const n=new _n,o=new On;t.doubleClickZoom=new Bn(o,n),this._add("tapZoom",n),this._add("clickZoom",o);const s=new Fn;this._add("tapDragZoom",s);const a=t.touchPitch=new zn(t);this._add("touchPitch",a);const l=new vn(e),c=new bn(e);t.dragRotate=new Vn(e,l,c),this._add("mouseRotate",l,["mousePitch"]),this._add("mousePitch",c,["mouseRotate"]);const h=new xn(e),u=new wn(t,e);t.dragPan=new Un(i,h,u),this._add("mousePan",h),this._add("touchPan",u,["touchZoom","touchRotate"]);const d=new In,p=new Mn;t.touchZoomRotate=new Nn(i,p,d,s),this._add("touchRotate",d,["touchPan","touchZoom"]),this._add("touchZoom",p,["touchPan","touchRotate"]),this._add("blockableMapEvent",new un(t));const f=t.scrollZoom=new Rn(t,this);this._add("scrollZoom",f,["mousePan"]);const m=t.keyboard=new kn;this._add("keyboard",m);for(const i of["boxZoom","doubleClickZoom","tapDragZoom","touchPitch","dragRotate","dragPan","touchZoomRotate","scrollZoom","keyboard"])e.interactive&&e[i]&&t[i].enable(e[i])}_add(e,t,i){this._handlers.push({handlerName:e,handler:t,allowed:i}),this._handlersById[e]=t}stop(e){if(!this._updatingCamera){for(const{handler:e}of this._handlers)e.reset();this._inertia.clear(),this._fireEvents({},{},e),this._changes=[]}}isActive(){for(const{handler:e}of this._handlers)if(e.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!jn(this._eventsInProgress)||this.isZooming()}_isDragging(){return!!this._eventsInProgress.drag}_blockedByActive(e,t,i){for(const r in e)if(r!==i&&(!t||t.indexOf(r)<0))return!0;return!1}handleWindowEvent(e){this.handleEvent(e,`${e.type}Window`)}_getMapTouches(e){const t=[];for(const i of e)this._el.contains(i.target)&&t.push(i);return t}handleEvent(e,t){this._updatingCamera=!0;const i="renderFrame"===e.type,r=i?void 0:e,n={needsRenderFrame:!1},o={},s={},a=e.touches?this._getMapTouches(e.touches):void 0,l=a?m(this._el,a):i?void 0:f(this._el,e);for(const{handlerName:i,handler:c,allowed:h}of this._handlers){if(!c.isEnabled())continue;let u;this._blockedByActive(s,h,i)?c.reset():c[t||e.type]&&(u=c[t||e.type](e,l,a),this.mergeHandlerResult(n,o,u,i,r),u&&u.needsRenderFrame&&this._triggerRenderFrame()),(u||c.isActive())&&(s[i]=c)}const c={};for(const e in this._previousActiveHandlers)s[e]||(c[e]=r);this._previousActiveHandlers=s,(Object.keys(c).length||Zn(n))&&(this._changes.push([n,o,c]),this._triggerRenderFrame()),(Object.keys(s).length||Zn(n))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:h}=n;h&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],h(this._map))}mergeHandlerResult(t,i,r,n,o){if(!r)return;e.extend(t,r);const s={handlerName:n,originalEvent:r.originalEvent||o};void 0!==r.zoomDelta&&(i.zoom=s),void 0!==r.panDelta&&(i.drag=s),void 0!==r.pitchDelta&&(i.pitch=s),void 0!==r.bearingDelta&&(i.rotate=s)}_applyChanges(){const t={},i={},r={};for(const[n,o,s]of this._changes)n.panDelta&&(t.panDelta=(t.panDelta||new e.Point(0,0))._add(n.panDelta)),n.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+n.zoomDelta),n.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+n.bearingDelta),n.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+n.pitchDelta),void 0!==n.around&&(t.around=n.around),void 0!==n.aroundCoord&&(t.aroundCoord=n.aroundCoord),void 0!==n.pinchAround&&(t.pinchAround=n.pinchAround),n.noInertia&&(t.noInertia=n.noInertia),e.extend(i,o),e.extend(r,s);this._updateMapTransform(t,i,r),this._changes=[]}_updateMapTransform(t,i,r){const n=this._map,o=n.transform,s=e=>[e.x,e.y,e.z];if((e=>{const t=this._eventsInProgress.drag;return t&&!this._handlersById[t.handlerName].isActive()})()&&!Zn(t)){const e=o.zoom;o.cameraElevationReference="sea",o.recenterOnTerrain(),o.cameraElevationReference="ground",e!==o.zoom&&this._map._update(!0)}if(o._isCameraConstrained&&n._stop(!0),!Zn(t))return void this._fireEvents(i,r,!0);let{panDelta:a,zoomDelta:l,bearingDelta:c,pitchDelta:h,around:u,aroundCoord:d,pinchAround:p}=t;o._isCameraConstrained&&(l>0&&(l=0),o._isCameraConstrained=!1),void 0!==p&&(u=p),(l||(e=>i[e]&&!this._eventsInProgress[e])("drag"))&&u&&(this._dragOrigin=s(o.pointCoordinate3D(u)),this._trackingEllipsoid.setup(o._camera.position,this._dragOrigin)),o.cameraElevationReference="sea",n._stop(!0),u=u||n.transform.centerPoint,c&&(o.bearing+=c),h&&(o.pitch+=h),o._updateCameraState();const f=[0,0,0];if(a)if("mercator"===o.projection.name){const e=this._trackingEllipsoid.projectRay(o.screenPointToMercatorRay(u).dir),t=this._trackingEllipsoid.projectRay(o.screenPointToMercatorRay(u.sub(a)).dir);f[0]=t[0]-e[0],f[1]=t[1]-e[1]}else{const t=o.pointCoordinate(u);if("globe"===o.projection.name){a=a.rotate(-o.angle);const i=o._pixelsPerMercatorPixel/o.worldSize;f[0]=-a.x*e.mercatorScale(e.latFromMercatorY(t.y))*i,f[1]=-a.y*e.mercatorScale(o.center.lat)*i}else{const e=o.pointCoordinate(u.sub(a));t&&e&&(f[0]=e.x-t.x,f[1]=e.y-t.y)}}const m=o.zoom,_=[0,0,0];if(l){const t=s(d||o.pointCoordinate3D(u)),i={dir:e.normalize([],e.sub([],t,o._camera.position))};if(i.dir[2]<0){const r=o.zoomDeltaToMovement(t,l);e.scale$2(_,i.dir,r)}}const g=e.add(f,f,_);o._translateCameraConstrained(g),l&&Math.abs(o.zoom-m)>1e-4&&o.recenterOnTerrain(),o.cameraElevationReference="ground",this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(i,r,!0)}_fireEvents(t,i,r){const n=jn(this._eventsInProgress),o=jn(t),s={};for(const e in t){const{originalEvent:i}=t[e];this._eventsInProgress[e]||(s[`${e}start`]=i),this._eventsInProgress[e]=t[e]}!n&&o&&this._fireEvent("movestart",o.originalEvent);for(const e in s)this._fireEvent(e,s[e]);o&&this._fireEvent("move",o.originalEvent);for(const e in t){const{originalEvent:i}=t[e];this._fireEvent(e,i)}const a={};let l;for(const e in this._eventsInProgress){const{handlerName:t,originalEvent:r}=this._eventsInProgress[e];this._handlersById[t].isActive()||(delete this._eventsInProgress[e],l=i[t]||r,a[`${e}end`]=l)}for(const e in a)this._fireEvent(e,a[e]);const c=jn(this._eventsInProgress);if(r&&(n||o)&&!c){this._updatingCamera=!0;const t=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=e=>0!==e&&-this._bearingSnap{this._frameId=void 0,this.handleEvent(new Gn("renderFrame",{timeStamp:e})),this._applyChanges()}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame())}}const Wn="map.setFreeCameraOptions(...) and map.getFreeCameraOptions() are not yet supported for non-mercator projections.";class Xn extends e.Evented{constructor(t,i){super(),this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=i.bearingSnap,this._respectPrefersReducedMotion=!1!==i.respectPrefersReducedMotion,e.bindAll(["_renderFrameCallback"],this)}getCenter(){return new e.LngLat(this.transform.center.lng,this.transform.center.lat)}setCenter(e,t){return this.jumpTo({center:e},t)}panBy(t,i,r){return t=e.Point.convert(t).mult(-1),this.panTo(this.transform.center,e.extend({offset:t},i),r)}panTo(t,i,r){return this.easeTo(e.extend({center:t},i),r)}getZoom(){return this.transform.zoom}setZoom(e,t){return this.jumpTo({zoom:e},t),this}zoomTo(t,i,r){return this.easeTo(e.extend({zoom:t},i),r)}zoomIn(e,t){return this.zoomTo(this.getZoom()+1,e,t),this}zoomOut(e,t){return this.zoomTo(this.getZoom()-1,e,t),this}getBearing(){return this.transform.bearing}setBearing(e,t){return this.jumpTo({bearing:e},t),this}getPadding(){return this.transform.padding}setPadding(e,t){return this.jumpTo({padding:e},t),this}rotateTo(t,i,r){return this.easeTo(e.extend({bearing:t},i),r)}resetNorth(t,i){return this.rotateTo(0,e.extend({duration:1e3},t),i),this}resetNorthPitch(t,i){return this.easeTo(e.extend({bearing:0,pitch:0,duration:1e3},t),i),this}snapToNorth(e,t){return Math.abs(this.getBearing())e.aspect?i/(2*Math.tan(.5*e.fovX)*e.aspect):r/(2*Math.tan(.5*e.fovY)*e.aspect)}_cameraForBoundsOnGlobe(t,i,r,n,o,s){const a=t.clone(),l=this._extendCameraOptions(s);a.bearing=n,a.pitch=o;const c=e.LngLat.convert(i),h=e.LngLat.convert(r),u=.5*(c.lat+h.lat),d=.5*(c.lng+h.lng),p=e.latLngToECEF(u,d),f=e.normalize([],p),m=e.normalize([],e.cross([],f,[0,1,0])),_=e.cross([],m,f),g=[m[0],m[1],m[2],0,_[0],_[1],_[2],0,f[0],f[1],f[2],0,0,0,0,1],y=[p,e.latLngToECEF(c.lat,c.lng),e.latLngToECEF(h.lat,c.lng),e.latLngToECEF(h.lat,h.lng),e.latLngToECEF(c.lat,h.lng),e.latLngToECEF(u,c.lng),e.latLngToECEF(u,h.lng),e.latLngToECEF(c.lat,d),e.latLngToECEF(h.lat,d)];let x=e.Aabb.fromPoints(y.map((t=>[e.dot(m,t),e.dot(_,t),e.dot(f,t)])));const v=e.transformMat4([],x.center,g);0===e.squaredLength(v)&&e.set(v,0,0,1),e.normalize(v,v),e.scale$2(v,v,e.GLOBE_RADIUS),a.center=e.ecefToLatLng(v);const b=a.getWorldToCameraMatrix(),w=e.invert(new Float64Array(16),b);x=e.Aabb.applyTransform(x,e.multiply([],b,g)),e.transformMat4(v,v,b);const T=.5*(x.max[2]-x.min[2]),E=this._minimumAABBFrustumDistance(a,x),S=e.scale$2([],[0,0,1],T),M=e.add(S,v,S),A=E+(0===a.pitch?0:e.distance(v,M)),I=a.globeCenterInViewSpace,C=e.sub([],v,[I[0],I[1],I[2]]);e.normalize(C,C),e.scale$2(C,C,A);const z=e.add([],v,C);e.transformMat4(z,z,w);const P=e.earthRadius/e.GLOBE_RADIUS,k=e.length(z),D=e.mercatorZfromAltitude(Math.max(k*P-e.earthRadius,Number.EPSILON),0),L=Math.min(a.zoomFromMercatorZAdjusted(D),l.maxZoom);return L>.5*(e.GLOBE_ZOOM_THRESHOLD_MIN+e.GLOBE_ZOOM_THRESHOLD_MAX)?(a.setProjection({name:"mercator"}),a.zoom=L,this._cameraForBounds(a,i,r,n,o,s)):{center:a.center,zoom:L,bearing:n,pitch:o}}queryTerrainElevation(t,i){const r=this.transform.elevation;return r?(i=e.extend({},{exaggerated:!0},i),r.getAtPoint(e.MercatorCoordinate.fromLngLat(t),null,i.exaggerated)):null}_cameraForBounds(t,i,r,n,o,s){if("globe"===t.projection.name)return this._cameraForBoundsOnGlobe(t,i,r,n,o,s);const a=t.clone(),l=this._extendCameraOptions(s),c=a.padding;a.bearing=n,a.pitch=o;const h=e.LngLat.convert(i),u=e.LngLat.convert(r),d=new e.LngLat(h.lng,u.lat),p=new e.LngLat(u.lng,h.lat),f=a.project(h),m=a.project(u),_=this.queryTerrainElevation(h),g=this.queryTerrainElevation(u),y=this.queryTerrainElevation(d),x=this.queryTerrainElevation(p),v=[[f.x,f.y,Math.min(_||0,g||0,y||0,x||0)],[m.x,m.y,Math.max(_||0,g||0,y||0,x||0)]];let b=e.Aabb.fromPoints(v);const w=a.getWorldToCameraMatrix(),T=e.invert(new Float64Array(16),w);b=e.Aabb.applyTransform(b,w);const E=e.sub([],b.max,b.min),S=c.left||0,M=c.right||0,A=c.bottom||0,I=c.top||0,{left:C,right:z,top:P,bottom:k}=l.padding,D=.5*(S+M),L=.5*(I+A),R=Math.min(a.scaleZoom(a.scale*Math.min((a.width-(S+M+C+z))/E[0],(a.height-(A+I+k+P))/E[1])),l.maxZoom),B=a.scale/a.zoomScale(R);b=new e.Aabb([b.min[0]-(C+D)*B,b.min[1]-(k+L)*B,b.min[2]],[b.max[0]+(z+D)*B,b.max[1]+(P+L)*B,b.max[2]]);const O=.5*E[2],F=this._minimumAABBFrustumDistance(a,b),U=[0,0,1,0];e.transformMat4$1(U,U,w),e.normalize$2(U,U);const V=e.scale$2([],U,F+O),N=e.add([],b.center,V),j=("number"==typeof l.offset.x&&"number"==typeof l.offset.y?new e.Point(l.offset.x,l.offset.y):e.Point.convert(l.offset)).rotate(-e.degToRad(n));b.center[0]-=j.x*B,b.center[1]+=j.y*B,e.transformMat4(b.center,b.center,T),e.transformMat4(N,N,T);const G=[b.center[0],b.center[1],N[2]*a.pixelsPerMeter];e.scale$2(G,G,1/a.worldSize);const $=e.lngFromMercatorX(G[0]),Z=e.latFromMercatorY(G[1]),q=Math.min(a._zoomFromMercatorZ(G[2]),l.maxZoom),W=new e.LngLat($,Z);return a.mercatorFromTransition&&q<.5*(e.GLOBE_ZOOM_THRESHOLD_MIN+e.GLOBE_ZOOM_THRESHOLD_MAX)?(a.setProjection({name:"globe"}),a.zoom=q,this._cameraForBounds(a,i,r,n,o,s)):{center:W,zoom:q,bearing:n,pitch:o}}fitBounds(e,t,i){const r=this.cameraForBounds(e,t);return this._fitInternal(r,t,i)}fitScreenCoordinates(t,i,r,n,o){const s=e.Point.convert(t),a=e.Point.convert(i),l=new e.Point(Math.min(s.x,a.x),Math.min(s.y,a.y)),c=new e.Point(Math.max(s.x,a.x),Math.max(s.y,a.y));if("mercator"===this.transform.projection.name&&this.transform.anyCornerOffEdge(s,a))return this;const h=this.transform.pointLocation3D(l),u=this.transform.pointLocation3D(c),d=this.transform.pointLocation3D(new e.Point(l.x,c.y)),p=this.transform.pointLocation3D(new e.Point(c.x,l.y)),f=[Math.min(h.lng,u.lng,d.lng,p.lng),Math.min(h.lat,u.lat,d.lat,p.lat)],m=[Math.max(h.lng,u.lng,d.lng,p.lng),Math.max(h.lat,u.lat,d.lat,p.lat)],_=n&&n.pitch?n.pitch:this.getPitch(),g=this._cameraForBounds(this.transform,f,m,r,_,n);return this._fitInternal(g,n,o)}_fitInternal(t,i,r){return t?(delete(i=e.extend(t,i)).padding,i.linear?this.easeTo(i,r):this.flyTo(i,r)):this}jumpTo(t,i){this.stop();const r=t.preloadOnly?this.transform.clone():this.transform;let n=!1,o=!1,s=!1;return"zoom"in t&&r.zoom!==+t.zoom&&(n=!0,r.zoom=+t.zoom),void 0!==t.center&&(r.center=e.LngLat.convert(t.center)),"bearing"in t&&r.bearing!==+t.bearing&&(o=!0,r.bearing=+t.bearing),"pitch"in t&&r.pitch!==+t.pitch&&(s=!0,r.pitch=+t.pitch),null==t.padding||r.isPaddingEqual(t.padding)||(r.padding=t.padding),t.preloadOnly?(this._preloadTiles(r),this):(this.fire(new e.Event("movestart",i)).fire(new e.Event("move",i)),n&&this.fire(new e.Event("zoomstart",i)).fire(new e.Event("zoom",i)).fire(new e.Event("zoomend",i)),o&&this.fire(new e.Event("rotatestart",i)).fire(new e.Event("rotate",i)).fire(new e.Event("rotateend",i)),s&&this.fire(new e.Event("pitchstart",i)).fire(new e.Event("pitch",i)).fire(new e.Event("pitchend",i)),this.fire(new e.Event("moveend",i)))}getFreeCameraOptions(){return this.transform.projection.supportsFreeCamera||e.warnOnce(Wn),this.transform.getFreeCameraOptions()}setFreeCameraOptions(t,i){const r=this.transform;if(!r.projection.supportsFreeCamera)return e.warnOnce(Wn),this;this.stop();const n=r.zoom,o=r.pitch,s=r.bearing;r.setFreeCameraOptions(t);const a=n!==r.zoom,l=o!==r.pitch,c=s!==r.bearing;return this.fire(new e.Event("movestart",i)).fire(new e.Event("move",i)),a&&this.fire(new e.Event("zoomstart",i)).fire(new e.Event("zoom",i)).fire(new e.Event("zoomend",i)),c&&this.fire(new e.Event("rotatestart",i)).fire(new e.Event("rotate",i)).fire(new e.Event("rotateend",i)),l&&this.fire(new e.Event("pitchstart",i)).fire(new e.Event("pitch",i)).fire(new e.Event("pitchend",i)),this.fire(new e.Event("moveend",i)),this}easeTo(t,i){this._stop(!1,t.easeId),(!1===(t=e.extend({offset:[0,0],duration:500,easing:e.ease},t)).animate||this._prefersReducedMotion(t))&&(t.duration=0);const r=this.transform,n=this.getZoom(),o=this.getBearing(),s=this.getPitch(),a=this.getPadding(),l="zoom"in t?+t.zoom:n,c="bearing"in t?this._normalizeBearing(t.bearing,o):o,h="pitch"in t?+t.pitch:s,u="padding"in t?t.padding:r.padding,d=e.Point.convert(t.offset);let p,f,m;if("globe"===r.projection.name){const i=e.MercatorCoordinate.fromLngLat(r.center),n=d.rotate(-r.angle);i.x+=n.x/r.worldSize,i.y+=n.y/r.worldSize;const o=i.toLngLat(),s=e.LngLat.convert(t.center||o);this._normalizeCenter(s),p=r.centerPoint.add(n),f=new e.Point(i.x,i.y).mult(r.worldSize),m=new e.Point(e.mercatorXfromLng(s.lng),e.mercatorYfromLat(s.lat)).mult(r.worldSize).sub(f)}else{p=r.centerPoint.add(d);const i=r.pointLocation(p),n=e.LngLat.convert(t.center||i);this._normalizeCenter(n),f=r.project(i),m=r.project(n).sub(f)}const _=r.zoomScale(l-n);let g,y;t.around&&(g=e.LngLat.convert(t.around),y=r.locationPoint(g));const x=this._zooming||l!==n,v=this._rotating||o!==c,b=this._pitching||h!==s,w=!r.isPaddingEqual(u),T=r=>T=>{if(x&&(r.zoom=e.number(n,l,T)),v&&(r.bearing=e.number(o,c,T)),b&&(r.pitch=e.number(s,h,T)),w&&(r.interpolatePadding(a,u,T),p=r.centerPoint.add(d)),g)r.setLocationAtPoint(g,y);else{const e=r.zoomScale(r.zoom-n),t=l>n?Math.min(2,_):Math.max(.5,_),i=Math.pow(t,1-T),o=r.unproject(f.add(m.mult(T*i)).mult(e));r.setLocationAtPoint(r.renderWorldCopies?o.wrap():o,p)}return t.preloadOnly||this._fireMoveEvents(i),r};if(t.preloadOnly){const e=this._emulate(T,t.duration,r);return this._preloadTiles(e),this}const E={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=x,this._rotating=v,this._pitching=b,this._padding=w,this._easeId=t.easeId,this._prepareEase(i,t.noMoveStart,E),this._ease(T(r),(e=>{r.recenterOnTerrain(),this._afterEase(i,e)}),t),this}_prepareEase(t,i,r={}){this._moving=!0,this.transform.cameraElevationReference="sea",i||r.moving||this.fire(new e.Event("movestart",t)),this._zooming&&!r.zooming&&this.fire(new e.Event("zoomstart",t)),this._rotating&&!r.rotating&&this.fire(new e.Event("rotatestart",t)),this._pitching&&!r.pitching&&this.fire(new e.Event("pitchstart",t))}_fireMoveEvents(t){this.fire(new e.Event("move",t)),this._zooming&&this.fire(new e.Event("zoom",t)),this._rotating&&this.fire(new e.Event("rotate",t)),this._pitching&&this.fire(new e.Event("pitch",t))}_afterEase(t,i){if(this._easeId&&i&&this._easeId===i)return;this._easeId=void 0,this.transform.cameraElevationReference="ground";const r=this._zooming,n=this._rotating,o=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,r&&this.fire(new e.Event("zoomend",t)),n&&this.fire(new e.Event("rotateend",t)),o&&this.fire(new e.Event("pitchend",t)),this.fire(new e.Event("moveend",t))}flyTo(t,i){if(this._prefersReducedMotion(t)){const r=e.pick(t,["center","zoom","bearing","pitch","around"]);return this.jumpTo(r,i)}this.stop(),t=e.extend({offset:[0,0],speed:1.2,curve:1.42,easing:e.ease},t);const r=this.transform,n=this.getZoom(),o=this.getBearing(),s=this.getPitch(),a=this.getPadding(),l="zoom"in t?e.clamp(+t.zoom,r.minZoom,r.maxZoom):n,c="bearing"in t?this._normalizeBearing(t.bearing,o):o,h="pitch"in t?+t.pitch:s,u="padding"in t?t.padding:r.padding,d=r.zoomScale(l-n),p=e.Point.convert(t.offset);let f=r.centerPoint.add(p);const m=r.pointLocation(f),_=e.LngLat.convert(t.center||m);this._normalizeCenter(_);const g=r.project(m),y=r.project(_).sub(g);let x=t.curve;const v=Math.max(r.width,r.height),b=v/d,w=y.mag();if("minZoom"in t){const i=e.clamp(Math.min(t.minZoom,n,l),r.minZoom,r.maxZoom),o=v/r.zoomScale(i-n);x=Math.sqrt(o/w*2)}const T=x*x;function E(e){const t=(b*b-v*v+(e?-1:1)*T*T*w*w)/(2*(e?b:v)*T*w);return Math.log(Math.sqrt(t*t+1)-t)}function S(e){return(Math.exp(e)-Math.exp(-e))/2}function M(e){return(Math.exp(e)+Math.exp(-e))/2}const A=E(0);let I=function(e){return M(A)/M(A+x*e)},C=function(e){return v*((M(A)*(S(t=A+x*e)/M(t))-S(A))/T)/w;var t},z=(E(1)-A)/x;if(Math.abs(w)<1e-6||!isFinite(z)){if(Math.abs(v-b)<1e-6)return this.easeTo(t,i);const e=bt.maxDuration&&(t.duration=0);const P=o!==c,k=h!==s,D=!r.isPaddingEqual(u),L=r=>d=>{const m=d*z,x=1/I(m);r.zoom=1===d?l:n+r.scaleZoom(x),P&&(r.bearing=e.number(o,c,d)),k&&(r.pitch=e.number(s,h,d)),D&&(r.interpolatePadding(a,u,d),f=r.centerPoint.add(p));const v=1===d?_:r.unproject(g.add(y.mult(C(m))).mult(x));return r.setLocationAtPoint(r.renderWorldCopies?v.wrap():v,f),r._updateCameraOnTerrain(),t.preloadOnly||this._fireMoveEvents(i),r};if(t.preloadOnly){const e=this._emulate(L,t.duration,r);return this._preloadTiles(e),this}return this._zooming=!0,this._rotating=P,this._pitching=k,this._padding=D,this._prepareEase(i,!1),this._ease(L(r),(()=>this._afterEase(i)),t),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(e,t){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),this._easeFrameId=void 0,this._onEaseFrame=void 0),this._onEaseEnd){const e=this._onEaseEnd;this._onEaseEnd=void 0,e.call(this,t)}if(!e){const e=this.handlers;e&&e.stop(!1)}return this}_ease(t,i,r){!1===r.animate||0===r.duration?(t(1),i()):(this._easeStart=e.exported.now(),this._easeOptions=r,this._onEaseFrame=t,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_renderFrameCallback(){const t=Math.min((e.exported.now()-this._easeStart)/this._easeOptions.duration,1),i=this._onEaseFrame;i&&i(this._easeOptions.easing(t)),t<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()}_normalizeBearing(t,i){t=e.wrap(t,-180,180);const r=Math.abs(t-i);return Math.abs(t-360-i)180?-360:i<-180?360:0}_prefersReducedMotion(t){return this._respectPrefersReducedMotion&&e.exported.prefersReducedMotion&&!(t&&t.essential)}_emulate(e,t,i){const r=Math.ceil(15*t/1e3),n=[],o=e(i.clone());for(let e=0;e<=r;e++){const t=o(e/r);n.push(t.clone())}return n}}class Hn{constructor(t={}){this.options=t,e.bindAll(["_toggleAttribution","_updateEditLink","_updateData","_updateCompact"],this)}getDefaultPosition(){return"bottom-right"}onAdd(e){const t=this.options&&this.options.compact;return this._map=e,this._container=o("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._compactButton=o("button","mapboxgl-ctrl-attrib-button",this._container),o("span","mapboxgl-ctrl-icon",this._compactButton).setAttribute("aria-hidden","true"),this._compactButton.type="button",this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=o("div","mapboxgl-ctrl-attrib-inner",this._container),this._innerContainer.setAttribute("role","list"),t&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),void 0===t&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container}onRemove(){this._container.remove(),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0}_setElementTitle(e,t){const i=this._map._getUIString(`AttributionControl.${t}`);e.setAttribute("aria-label",i),e.removeAttribute("title"),e.firstElementChild&&e.firstElementChild.setAttribute("title",i)}_toggleAttribution(){this._container.classList.contains("mapboxgl-compact-show")?(this._container.classList.remove("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-expanded","false")):(this._container.classList.add("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-expanded","true"))}_updateEditLink(){let t=this._editLink;t||(t=this._editLink=this._container.querySelector(".mapbox-improve-map"));const i=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||e.config.ACCESS_TOKEN}];if(t){const r=i.reduce(((e,t,r)=>(t.value&&(e+=`${t.key}=${t.value}${re.length-t.length)),e=e.filter(((t,i)=>{for(let r=i+1;r=0)return!1;return!0})),this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?e=[...this.options.customAttribution,...e]:e.unshift(this.options.customAttribution));const i=e.join(" | ");i!==this._attribHTML&&(this._attribHTML=i,e.length?(this._innerContainer.innerHTML=i,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}_updateCompact(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact","mapboxgl-compact-show")}}class Kn{constructor(){e.bindAll(["_updateLogo","_updateCompact"],this)}onAdd(e){this._map=e,this._container=o("div","mapboxgl-ctrl");const t=o("a","mapboxgl-ctrl-logo");return t.target="_blank",t.rel="noopener nofollow",t.href="https://www.mapbox.com/",t.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),t.setAttribute("rel","noopener nofollow"),this._container.appendChild(t),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){this._container.remove(),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)}getDefaultPosition(){return"bottom-left"}_updateLogo(e){e&&"metadata"!==e.sourceDataType||(this._container.style.display=this._logoRequired()?"block":"none")}_logoRequired(){if(!this._map.style)return!0;const e=this._map.style._sourceCaches;if(0===Object.entries(e).length)return!0;for(const t in e){const i=e[t].getSource();if(i.hasOwnProperty("mapbox_logo")&&!i.mapbox_logo)return!1}return!0}_updateCompact(){const e=this._container.children;if(e.length){const t=e[0];this._map.getCanvasContainer().offsetWidth<250?t.classList.add("mapboxgl-compact"):t.classList.remove("mapboxgl-compact")}}}class Yn{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(e){const t=++this._id;return this._queue.push({callback:e,id:t,cancelled:!1}),t}remove(e){const t=this._currentlyRunning,i=t?this._queue.concat(t):this._queue;for(const t of i)if(t.id===e)return void(t.cancelled=!0)}run(e=0){const t=this._currentlyRunning=this._queue;this._queue=[];for(const i of t)if(!i.cancelled&&(i.callback(e),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}function Jn(t,i,r){if(t=new e.LngLat(t.lng,t.lat),i){const n=new e.LngLat(t.lng-360,t.lat),o=new e.LngLat(t.lng+360,t.lat),s=360*Math.ceil(Math.abs(t.lng-r.center.lng)/360),a=r.locationPoint(t).distSqr(i),l=i.x<0||i.y<0||i.x>r.width||i.y>r.height;r.locationPoint(n).distSqr(i)180;){const e=r.locationPoint(t);if(e.x>=0&&e.y>=0&&e.x<=r.width&&e.y<=r.height)break;t.lng>r.center.lng?t.lng-=360:t.lng+=360}return t}const Qn={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};class eo extends e.Evented{constructor(t,i){if(super(),(t instanceof e.window.HTMLElement||i)&&(t=e.extend({element:t},i)),e.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress","_clearFadeTimer"],this),this._anchor=t&&t.anchor||"center",this._color=t&&t.color||"#3FB1CE",this._scale=t&&t.scale||1,this._draggable=t&&t.draggable||!1,this._clickTolerance=t&&t.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=t&&t.rotation||0,this._rotationAlignment=t&&t.rotationAlignment||"auto",this._pitchAlignment=t&&t.pitchAlignment&&t.pitchAlignment||"auto",this._updateMoving=()=>this._update(!0),this._occludedOpacity=t&&t.occludedOpacity||.2,t&&t.element)this._element=t.element,this._offset=e.Point.convert(t&&t.offset||[0,0]);else{this._defaultMarker=!0,this._element=o("div");const i=41,r=27,n=s("svg",{display:"block",height:i*this._scale+"px",width:r*this._scale+"px",viewBox:`0 0 ${r} ${i}`},this._element),a=s("radialGradient",{id:"shadowGradient"},s("defs",{},n));s("stop",{offset:"10%","stop-opacity":.4},a),s("stop",{offset:"100%","stop-opacity":.05},a),s("ellipse",{cx:13.5,cy:34.8,rx:10.5,ry:5.25,fill:"url(#shadowGradient)"},n),s("path",{fill:this._color,d:"M27,13.5C27,19.07 20.25,27 14.75,34.5C14.02,35.5 12.98,35.5 12.25,34.5C6.75,27 0,19.22 0,13.5C0,6.04 6.04,0 13.5,0C20.96,0 27,6.04 27,13.5Z"},n),s("path",{opacity:.25,d:"M13.5,0C6.04,0 0,6.04 0,13.5C0,19.22 6.75,27 12.25,34.5C13,35.52 14.02,35.5 14.75,34.5C20.25,27 27,19.07 27,13.5C27,6.04 20.96,0 13.5,0ZM13.5,1C20.42,1 26,6.58 26,13.5C26,15.9 24.5,19.18 22.22,22.74C19.95,26.3 16.71,30.14 13.94,33.91C13.74,34.18 13.61,34.32 13.5,34.44C13.39,34.32 13.26,34.18 13.06,33.91C10.28,30.13 7.41,26.31 5.02,22.77C2.62,19.23 1,15.95 1,13.5C1,6.58 6.58,1 13.5,1Z"},n),s("circle",{fill:"white",cx:13.5,cy:13.5,r:5.5},n),this._offset=e.Point.convert(t&&t.offset||[0,-14])}this._element.hasAttribute("aria-label")||this._element.setAttribute("aria-label","Map marker"),this._element.classList.add("mapboxgl-marker"),this._element.addEventListener("dragstart",(e=>{e.preventDefault()})),this._element.addEventListener("mousedown",(e=>{e.preventDefault()}));const r=this._element.classList;for(const e in Qn)r.remove(`mapboxgl-marker-anchor-${e}`);r.add(`mapboxgl-marker-anchor-${this._anchor}`),this._popup=null}addTo(e){return e===this._map||(this.remove(),this._map=e,e.getCanvasContainer().appendChild(this._element),e.on("move",this._updateMoving),e.on("moveend",this._update),e.on("remove",this._clearFadeTimer),e._addMarker(this),this.setDraggable(this._draggable),this._update(),e.on("click",this._onMapClick)),this}remove(){const e=this._map;return e&&(e.off("click",this._onMapClick),e.off("move",this._updateMoving),e.off("moveend",this._update),e.off("mousedown",this._addDragHandler),e.off("touchstart",this._addDragHandler),e.off("mouseup",this._onUp),e.off("touchend",this._onUp),e.off("mousemove",this._onMove),e.off("touchmove",this._onMove),e.off("remove",this._clearFadeTimer),e._removeMarker(this),this._map=void 0),this._clearFadeTimer(),this._element.remove(),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=e.LngLat.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(!0),this}getElement(){return this._element}setPopup(e){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeAttribute("role"),this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),e){if(!("offset"in e.options)){const t=38.1,i=13.5,r=Math.sqrt(Math.pow(i,2)/2);e.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-t],"bottom-left":[r,-1*(t-i+r)],"bottom-right":[-r,-1*(t-i+r)],left:[i,-1*(t-i)],right:[-i,-1*(t-i)]}:this._offset}this._popup=e,e._marker=this,this._lngLat&&this._popup.setLngLat(this._lngLat),this._element.setAttribute("role","button"),this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress),this._element.setAttribute("aria-expanded","false")}return this}_onKeyPress(e){const t=e.code,i=e.charCode||e.keyCode;"Space"!==t&&"Enter"!==t&&32!==i&&13!==i||this.togglePopup()}_onMapClick(e){const t=e.originalEvent.target,i=this._element;this._popup&&(t===i||i.contains(t))&&this.togglePopup()}getPopup(){return this._popup}togglePopup(){const e=this._popup;return e?(e.isOpen()?(e.remove(),this._element.setAttribute("aria-expanded","false")):this._map&&(e.addTo(this._map),this._element.setAttribute("aria-expanded","true")),this):this}_behindTerrain(){const e=this._map,t=this._pos;if(!e||!t)return!1;const i=e.unproject(t),r=e.getFreeCameraOptions();if(!r.position)return!1;const n=r.position.toLngLat();return n.distanceTo(i)<.9*n.distanceTo(this._lngLat)}_evaluateOpacity(){const t=this._map;if(!t)return;const i=this._pos;if(!i||i.x<0||i.x>t.transform.width||i.y<0||i.y>t.transform.height)return void this._clearFadeTimer();const r=t.unproject(i);let n;t._showingGlobe()&&e.isLngLatBehindGlobe(t.transform,this._lngLat)?n=0:(n=1-t._queryFogOpacity(r),t.transform._terrainEnabled()&&t.getTerrain()&&this._behindTerrain()&&(n*=this._occludedOpacity)),this._element.style.opacity=`${n}`,this._element.style.pointerEvents=n>0?"auto":"none",this._popup&&this._popup._setOpacity(n),this._fadeTimer=null}_clearFadeTimer(){this._fadeTimer&&(clearTimeout(this._fadeTimer),this._fadeTimer=null)}_updateDOM(){const e=this._pos;if(!e||!this._map)return;const t=this._offset.mult(this._scale);this._element.style.transform=`\n translate(${e.x}px,${e.y}px)\n ${Qn[this._anchor]}\n ${this._calculateXYTransform()} ${this._calculateZTransform()}\n translate(${t.x}px,${t.y}px)\n `}_calculateXYTransform(){const t=this._pos,i=this._map,r=this.getPitchAlignment();if(!i||!t||"map"!==r)return"";if(!i._showingGlobe()){const e=i.getPitch();return e?`rotateX(${e}deg)`:""}const n=e.radToDeg(e.globeTiltAtLngLat(i.transform,this._lngLat)),o=t.sub(e.globeCenterToScreenPoint(i.transform)),s=Math.abs(o.x)+Math.abs(o.y);if(0===s)return"";const a=n/s;return`rotateX(${-o.y*a}deg) rotateY(${o.x*a}deg)`}_calculateZTransform(){const t=this._pos,i=this._map;if(!i||!t)return"";let r=0;const n=this.getRotationAlignment();if("map"===n)if(i._showingGlobe()){const t=i.project(new e.LngLat(this._lngLat.lng,this._lngLat.lat+.001)),n=i.project(new e.LngLat(this._lngLat.lng,this._lngLat.lat-.001)).sub(t);r=e.radToDeg(Math.atan2(n.y,n.x))-90}else r=-i.getBearing();else if("horizon"===n){const n=e.smoothstep(4,6,i.getZoom()),o=e.globeCenterToScreenPoint(i.transform);o.y+=n*i.transform.height;const s=t.sub(o),a=e.radToDeg(Math.atan2(s.y,s.x));r=(a>90?a-270:a+90)*(1-n)}return r+=this._rotation,r?`rotateZ(${r}deg)`:""}_update(t){e.window.cancelAnimationFrame(this._updateFrameId);const i=this._map;i&&(i.transform.renderWorldCopies&&(this._lngLat=Jn(this._lngLat,this._pos,i.transform)),this._pos=i.project(this._lngLat),!0===t?this._updateFrameId=e.window.requestAnimationFrame((()=>{this._element&&this._pos&&this._anchor&&(this._pos=this._pos.round(),this._updateDOM())})):this._pos=this._pos.round(),i._requestDomTask((()=>{this._map&&(this._element&&this._pos&&this._anchor&&this._updateDOM(),(i._showingGlobe()||i.getTerrain()||i.getFog())&&!this._fadeTimer&&(this._fadeTimer=setTimeout(this._evaluateOpacity.bind(this),60)))})))}getOffset(){return this._offset}setOffset(t){return this._offset=e.Point.convert(t),this._update(),this}_onMove(t){const i=this._map;if(!i)return;const r=this._pointerdownPos,n=this._positionDelta;if(r&&n){if(!this._isDragging){const e=this._clickTolerance||i._clickTolerance;if(t.point.dist(r)=this._endTime)return this._end;const i=e.easeCubicInOut((t-this._startTime)/(this._endTime-this._startTime));return this._start*(1-i)+this._end*i}isEasing(e){return e>=this._startTime&&e<=this._endTime}jumpTo(e){this._startTime=-1/0,this._endTime=-1/0,this._start=e,this._end=e}easeTo(e,t,i){this._start=this.getValue(t),this._end=e,this._startTime=t,this._endTime=t+i}}const oo={"AttributionControl.ToggleAttribution":"Toggle attribution","AttributionControl.MapFeedback":"Map feedback","FullscreenControl.Enter":"Enter fullscreen","FullscreenControl.Exit":"Exit fullscreen","GeolocateControl.FindMyLocation":"Find my location","GeolocateControl.LocationNotAvailable":"Location not available","LogoControl.Title":"Mapbox logo","Map.Title":"Map","NavigationControl.ResetBearing":"Reset bearing to north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","ScrollZoomBlocker.CtrlMessage":"Use ctrl + scroll to zoom the map","ScrollZoomBlocker.CmdMessage":"Use ⌘ + scroll to zoom the map","TouchPanBlocker.Message":"Use two fingers to move the map"},so={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:85,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,performanceMetricsCollection:!0,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,optimizeForTerrain:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,minTileCacheSize:null,maxTileCacheSize:null,localIdeographFontFamily:"sans-serif",localFontFamily:null,transformRequest:null,accessToken:null,fadeDuration:300,respectPrefersReducedMotion:!0,crossSourceCollisions:!0},ao={showCompass:!0,showZoom:!0,visualizePitch:!1};class lo{constructor(t,i,r=!1){this._clickTolerance=10,this.element=i,this.mouseRotate=new vn({clickTolerance:t.dragRotate._mouseRotate._clickTolerance}),this.map=t,r&&(this.mousePitch=new bn({clickTolerance:t.dragRotate._mousePitch._clickTolerance})),e.bindAll(["mousedown","mousemove","mouseup","touchstart","touchmove","touchend","reset"],this),i.addEventListener("mousedown",this.mousedown),i.addEventListener("touchstart",this.touchstart,{passive:!1}),i.addEventListener("touchmove",this.touchmove),i.addEventListener("touchend",this.touchend),i.addEventListener("touchcancel",this.reset)}down(e,t){this.mouseRotate.mousedown(e,t),this.mousePitch&&this.mousePitch.mousedown(e,t),h()}move(e,t){const i=this.map,r=this.mouseRotate.mousemoveWindow(e,t),n=r&&r.bearingDelta;if(n&&i.setBearing(i.getBearing()+n),this.mousePitch){const r=this.mousePitch.mousemoveWindow(e,t),n=r&&r.pitchDelta;n&&i.setPitch(i.getPitch()+n)}}off(){const e=this.element;e.removeEventListener("mousedown",this.mousedown),e.removeEventListener("touchstart",this.touchstart,{passive:!1}),e.removeEventListener("touchmove",this.touchmove),e.removeEventListener("touchend",this.touchend),e.removeEventListener("touchcancel",this.reset),this.offTemp()}offTemp(){u(),e.window.removeEventListener("mousemove",this.mousemove),e.window.removeEventListener("mouseup",this.mouseup)}mousedown(t){this.down(e.extend({},t,{ctrlKey:!0,preventDefault:()=>t.preventDefault()}),f(this.element,t)),e.window.addEventListener("mousemove",this.mousemove),e.window.addEventListener("mouseup",this.mouseup)}mousemove(e){this.move(e,f(this.element,e))}mouseup(e){this.mouseRotate.mouseupWindow(e),this.mousePitch&&this.mousePitch.mouseupWindow(e),this.offTemp()}touchstart(e){1!==e.targetTouches.length?this.reset():(this._startPos=this._lastPos=m(this.element,e.targetTouches)[0],this.down({type:"mousedown",button:0,ctrlKey:!0,preventDefault:()=>e.preventDefault()},this._startPos))}touchmove(e){1!==e.targetTouches.length?this.reset():(this._lastPos=m(this.element,e.targetTouches)[0],this.move({preventDefault:()=>e.preventDefault()},this._lastPos))}touchend(e){0===e.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)t.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=t.minPitch&&null!=t.maxPitch&&t.minPitch>t.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=t.minPitch&&t.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=t.maxPitch&&t.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(t.antialias&&e.isSafariWithAntialiasingBug(e.window)&&(t.antialias=!1,e.warnOnce("Antialiasing is disabled for this WebGL context to avoid browser bug: https://github.com/mapbox/mapbox-gl-js/issues/11609")),super(new Xr(t.minZoom,t.maxZoom,t.minPitch,t.maxPitch,t.renderWorldCopies),t),this._interactive=t.interactive,this._minTileCacheSize=t.minTileCacheSize,this._maxTileCacheSize=t.maxTileCacheSize,this._failIfMajorPerformanceCaveat=t.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=t.preserveDrawingBuffer,this._antialias=t.antialias,this._useWebGL2=t.useWebGL2,this._trackResize=t.trackResize,this._bearingSnap=t.bearingSnap,this._refreshExpiredTiles=t.refreshExpiredTiles,this._fadeDuration=t.fadeDuration,this._isInitialLoad=!0,this._crossSourceCollisions=t.crossSourceCollisions,this._collectResourceTiming=t.collectResourceTiming,this._optimizeForTerrain=t.optimizeForTerrain,this._language=this._parseLanguage(t.language),this._worldview=t.worldview,this._renderTaskQueue=new Yn,this._domRenderTaskQueue=new Yn,this._controls=[],this._markers=[],this._popups=[],this._mapId=e.uniqueId(),this._locale=e.extend({},oo,t.locale),this._clickTolerance=t.clickTolerance,this._cooperativeGestures=t.cooperativeGestures,this._performanceMetricsCollection=t.performanceMetricsCollection,this._containerWidth=0,this._containerHeight=0,this._averageElevationLastSampledAt=-1/0,this._averageElevationExaggeration=0,this._averageElevation=new no(0),this._interactionRange=[1/0,-1/0],this._visibilityHidden=0,this._useExplicitProjection=!1,this._requestManager=new e.RequestManager(t.transformRequest,t.accessToken,t.testMode),this._silenceAuthErrors=!!t.testMode,"string"==typeof t.container){if(this._container=e.window.document.getElementById(t.container),!this._container)throw new Error(`Container '${t.container}' not found.`)}else{if(!(t.container instanceof e.window.HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=t.container}if(this._container.childNodes.length>0&&e.warnOnce("The map container element should be empty, otherwise the map's interactivity will be negatively impacted. If you want to display a message when WebGL is not supported, use the Mapbox GL Supported plugin instead."),t.maxBounds&&this.setMaxBounds(t.maxBounds),e.bindAll(["_onWindowOnline","_onWindowResize","_onVisibilityChange","_onMapScroll","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error("Failed to initialize WebGL.");this.on("move",(()=>this._update(!1))),this.on("moveend",(()=>this._update(!1))),this.on("zoom",(()=>this._update(!0))),void 0!==e.window&&(e.window.addEventListener("online",this._onWindowOnline,!1),e.window.addEventListener("resize",this._onWindowResize,!1),e.window.addEventListener("orientationchange",this._onWindowResize,!1),e.window.addEventListener("webkitfullscreenchange",this._onWindowResize,!1),e.window.addEventListener("visibilitychange",this._onVisibilityChange,!1)),this.handlers=new qn(this,t),this._localFontFamily=t.localFontFamily,this._localIdeographFontFamily=t.localIdeographFontFamily,t.style&&this.setStyle(t.style,{localFontFamily:this._localFontFamily,localIdeographFontFamily:this._localIdeographFontFamily}),t.projection&&this.setProjection(t.projection),this._hash=t.hash&&new Kr("string"==typeof t.hash&&t.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:t.center,zoom:t.zoom,bearing:t.bearing,pitch:t.pitch}),t.bounds&&(this.resize(),this.fitBounds(t.bounds,e.extend({},t.fitBoundsOptions,{duration:0})))),this.resize(),t.attributionControl&&this.addControl(new Hn({customAttribution:t.customAttribution})),this._logoControl=new Kn,this.addControl(this._logoControl,t.logoPosition),this.on("style.load",(()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)})),this.on("data",(t=>{this._update("style"===t.dataType),this.fire(new e.Event(`${t.dataType}data`,t))})),this.on("dataloading",(t=>{this.fire(new e.Event(`${t.dataType}dataloading`,t))}))}_getMapId(){return this._mapId}addControl(t,i){if(void 0===i&&(i=t.getDefaultPosition?t.getDefaultPosition():"top-right"),!t||!t.onAdd)return this.fire(new e.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const r=t.onAdd(this);this._controls.push(t);const n=this._controlPositions[i];return-1!==i.indexOf("bottom")?n.insertBefore(r,n.firstChild):n.appendChild(r),this}removeControl(t){if(!t||!t.onRemove)return this.fire(new e.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const i=this._controls.indexOf(t);return i>-1&&this._controls.splice(i,1),t.onRemove(this),this}hasControl(e){return this._controls.indexOf(e)>-1}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}resize(t){if(this._updateContainerDimensions(),this._containerWidth===this.transform.width&&this._containerHeight===this.transform.height)return this;this._resizeCanvas(this._containerWidth,this._containerHeight),this.transform.resize(this._containerWidth,this._containerHeight),this.painter.resize(Math.ceil(this._containerWidth),Math.ceil(this._containerHeight));const i=!this._moving;return i&&this.fire(new e.Event("movestart",t)).fire(new e.Event("move",t)),this.fire(new e.Event("resize",t)),i&&this.fire(new e.Event("moveend",t)),this}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()||null}setMaxBounds(t){return this.transform.setMaxBounds(e.LngLatBounds.convert(t)),this._update()}setMinZoom(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t?this.setZoom(t):this.fire(new e.Event("zoomstart")).fire(new e.Event("zoom")).fire(new e.Event("zoomend")),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(t){if((t=null==t?0:t)<0)throw new Error("minPitch must be greater than or equal to 0");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()85)throw new Error("maxPitch must be less than or equal to 85");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t?this.setPitch(t):this.fire(new e.Event("pitchstart")).fire(new e.Event("pitch")).fire(new e.Event("pitchend")),this;throw new Error("maxPitch must be greater than or equal to minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(e){return this.transform.renderWorldCopies=e,this.transform.renderWorldCopies||this._forceMarkerAndPopupUpdate(!0),this._update()}getLanguage(){return this._language}_parseLanguage(t){return"auto"===t?e.window.navigator.language:Array.isArray(t)?0===t.length?void 0:t.map((t=>"auto"===t?e.window.navigator.language:t)):t}setLanguage(e){const t=this._parseLanguage(e);if(!this.style||t===this._language)return this;this._language=t,this.style._reloadSources();for(const e of this._controls)e._setLanguage&&e._setLanguage(this._language);return this}getWorldview(){return this._worldview}setWorldview(e){return this.style&&e!==this._worldview?(this._worldview=e,this.style._reloadSources(),this):this}getProjection(){return this.transform.mercatorFromTransition?{name:"globe",center:[0,0]}:this.transform.getProjection()}_showingGlobe(){return"globe"===this.transform.projection.name}setProjection(e){return this._lazyInitEmptyStyle(),e?"string"==typeof e&&(e={name:e}):e=null,this._useExplicitProjection=!!e,this._prioritizeAndUpdateProjection(e,this.style.stylesheet?this.style.stylesheet.projection:null)}_updateProjectionTransition(){if("globe"!==this.getProjection().name)return;const t=this.transform,i=t.projection.name;let r;"globe"===i&&t.zoom>=e.GLOBE_ZOOM_THRESHOLD_MAX?(t.setMercatorFromTransition(),r=!0):"mercator"===i&&t.zoom=e.GLOBE_ZOOM_THRESHOLD_MAX?this.transform.setMercatorFromTransition():this.transform.setProjection(t),this.style.applyProjectionUpdate(),i){this.painter.clearBackgroundTiles();for(const e in this.style._sourceCaches)this.style._sourceCaches[e].clearTiles();this._update(!0),this._forceMarkerAndPopupUpdate(!0)}return this}project(t){return this.transform.locationPoint3D(e.LngLat.convert(t))}unproject(t){return this.transform.pointLocation3D(e.Point.convert(t))}isMoving(){return this._moving||this.handlers&&this.handlers.isMoving()||!1}isZooming(){return this._zooming||this.handlers&&this.handlers.isZooming()||!1}isRotating(){return this._rotating||this.handlers&&this.handlers.isRotating()||!1}_isDragging(){return this.handlers&&this.handlers._isDragging()||!1}_createDelegatedListener(e,t,i){if("mouseenter"===e||"mouseover"===e){let r=!1;const n=n=>{const o=t.filter((e=>this.getLayer(e))),s=o.length?this.queryRenderedFeatures(n.point,{layers:o}):[];s.length?r||(r=!0,i.call(this,new an(e,this,n.originalEvent,{features:s}))):r=!1},o=()=>{r=!1};return{layers:new Set(t),listener:i,delegates:{mousemove:n,mouseout:o}}}if("mouseleave"===e||"mouseout"===e){let r=!1;const n=n=>{const o=t.filter((e=>this.getLayer(e)));(o.length?this.queryRenderedFeatures(n.point,{layers:o}):[]).length?r=!0:r&&(r=!1,i.call(this,new an(e,this,n.originalEvent)))},o=t=>{r&&(r=!1,i.call(this,new an(e,this,t.originalEvent)))};return{layers:new Set(t),listener:i,delegates:{mousemove:n,mouseout:o}}}{const r=e=>{const r=t.filter((e=>this.getLayer(e))),n=r.length?this.queryRenderedFeatures(e.point,{layers:r}):[];n.length&&(e.features=n,i.call(this,e),delete e.features)};return{layers:new Set(t),listener:i,delegates:{[e]:r}}}}on(e,t,i){if(void 0===i)return super.on(e,t);Array.isArray(t)||(t=[t]);const r=this._createDelegatedListener(e,t,i);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[e]=this._delegatedListeners[e]||[],this._delegatedListeners[e].push(r);for(const e in r.delegates)this.on(e,r.delegates[e]);return this}once(e,t,i){if(void 0===i)return super.once(e,t);Array.isArray(t)||(t=[t]);const r=this._createDelegatedListener(e,t,i);for(const e in r.delegates)this.once(e,r.delegates[e]);return this}off(e,t,i){if(void 0===i)return super.off(e,t);t=new Set(Array.isArray(t)?t:[t]);const r=(e,t)=>{if(e.size!==t.size)return!1;for(const i of e)if(!t.has(i))return!1;return!0},n=this._delegatedListeners?this._delegatedListeners[e]:void 0;return n&&(e=>{for(let n=0;n{t?this.fire(new e.ErrorEvent(t)):r&&this._updateDiff(r,i)}))}else"object"==typeof t&&this._updateDiff(t,i)}_updateDiff(t,i){try{this.style.setState(t)&&this._update(!0)}catch(r){e.warnOnce(`Unable to perform style diff: ${r.message||r.error||r}. Rebuilding the style from scratch.`),this._updateStyle(t,i)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():(e.warnOnce("There is no style added to the map."),!1)}addSource(e,t){return this._lazyInitEmptyStyle(),this.style.addSource(e,t),this._update(!0)}isSourceLoaded(e){return!!this.style&&this.style._isSourceCacheLoaded(e)}areTilesLoaded(){const e=this.style&&this.style._sourceCaches;for(const t in e){const i=e[t]._tiles;for(const e in i){const t=i[e];if("loaded"!==t.state&&"errored"!==t.state)return!1}}return!0}addSourceType(e,t,i){this._lazyInitEmptyStyle(),this.style.addSourceType(e,t,i)}removeSource(e){return this.style.removeSource(e),this._updateTerrain(),this._update(!0)}getSource(e){return this.style.getSource(e)}addImage(t,i,{pixelRatio:r=1,sdf:n=!1,stretchX:o,stretchY:s,content:a}={}){if(this._lazyInitEmptyStyle(),i instanceof e.window.HTMLImageElement||e.window.ImageBitmap&&i instanceof e.window.ImageBitmap){const{width:l,height:c,data:h}=e.exported.getImageData(i);this.style.addImage(t,{data:new e.RGBAImage({width:l,height:c},h),pixelRatio:r,stretchX:o,stretchY:s,content:a,sdf:n,version:0})}else if(void 0===i.width||void 0===i.height)this.fire(new e.ErrorEvent(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));else{const{width:l,height:c}=i,h=i;this.style.addImage(t,{data:new e.RGBAImage({width:l,height:c},new Uint8Array(h.data)),pixelRatio:r,stretchX:o,stretchY:s,content:a,sdf:n,version:0,userImage:h}),h.onAdd&&h.onAdd(this,t)}}updateImage(t,i){const r=this.style.getImage(t);if(!r)return void this.fire(new e.ErrorEvent(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const n=i instanceof e.window.HTMLImageElement||e.window.ImageBitmap&&i instanceof e.window.ImageBitmap?e.exported.getImageData(i):i,{width:o,height:s}=n;void 0!==o&&void 0!==s?o===r.data.width&&s===r.data.height?(r.data.replace(n.data,!(i instanceof e.window.HTMLImageElement||e.window.ImageBitmap&&i instanceof e.window.ImageBitmap)),this.style.updateImage(t,r)):this.fire(new e.ErrorEvent(new Error(`The width and height of the updated image (${o}, ${s})\n must be that same as the previous version of the image\n (${r.data.width}, ${r.data.height})`))):this.fire(new e.ErrorEvent(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")))}hasImage(t){return t?!!this.style.getImage(t):(this.fire(new e.ErrorEvent(new Error("Missing required image id"))),!1)}removeImage(e){this.style.removeImage(e)}loadImage(t,i){e.getImage(this._requestManager.transformRequest(t,e.ResourceType.Image),((t,r)=>{i(t,r instanceof e.window.HTMLImageElement?e.exported.getImageData(r):r)}))}listImages(){return this.style.listImages()}addLayer(e,t){return this._lazyInitEmptyStyle(),this.style.addLayer(e,t),this._update(!0)}moveLayer(e,t){return this.style.moveLayer(e,t),this._update(!0)}removeLayer(e){return this.style.removeLayer(e),this._update(!0)}getLayer(e){return this.style.getLayer(e)}setLayerZoomRange(e,t,i){return this.style.setLayerZoomRange(e,t,i),this._update(!0)}setFilter(e,t,i={}){return this.style.setFilter(e,t,i),this._update(!0)}getFilter(e){return this.style.getFilter(e)}setPaintProperty(e,t,i,r={}){return this.style.setPaintProperty(e,t,i,r),this._update(!0)}getPaintProperty(e,t){return this.style.getPaintProperty(e,t)}setLayoutProperty(e,t,i,r={}){return this.style.setLayoutProperty(e,t,i,r),this._update(!0)}getLayoutProperty(e,t){return this.style.getLayoutProperty(e,t)}setLight(e,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(e,t),this._update(!0)}getLight(){return this.style.getLight()}setTerrain(e){return this._lazyInitEmptyStyle(),!e&&this.transform.projection.requiresDraping?this.style.setTerrainForDraping():this.style.setTerrain(e),this._averageElevationLastSampledAt=-1/0,this._update(!0)}getTerrain(){return this.style?this.style.getTerrain():null}setFog(e){return this._lazyInitEmptyStyle(),this.style.setFog(e),this._update(!0)}getFog(){return this.style?this.style.getFog():null}_queryFogOpacity(t){return this.style&&this.style.fog?this.style.fog.getOpacityAtLatLng(e.LngLat.convert(t),this.transform):0}setFeatureState(e,t){return this.style.setFeatureState(e,t),this._update()}removeFeatureState(e,t){return this.style.removeFeatureState(e,t),this._update()}getFeatureState(e){return this.style.getFeatureState(e)}_updateContainerDimensions(){if(!this._container)return;const t=this._container.getBoundingClientRect().width||400,i=this._container.getBoundingClientRect().height||300;let r,n,o,s=this._container;for(;s&&(!n||!o);){const t=e.window.getComputedStyle(s).transform;t&&"none"!==t&&(r=t.match(/matrix.*\((.+)\)/)[1].split(", "),r[0]&&"0"!==r[0]&&"1"!==r[0]&&(n=r[0]),r[3]&&"0"!==r[3]&&"1"!==r[3]&&(o=r[3])),s=s.parentElement}this._containerWidth=n?Math.abs(t/n):t,this._containerHeight=o?Math.abs(i/o):i}_detectMissingCSS(){"rgb(250, 128, 114)"!==e.window.getComputedStyle(this._missingCSSCanary).getPropertyValue("background-color")&&e.warnOnce("This page appears to be missing CSS declarations for Mapbox GL JS, which may cause the map to display incorrectly. Please ensure your page includes mapbox-gl.css, as described in https://www.mapbox.com/mapbox-gl-js/api/.")}_setupContainer(){const e=this._container;e.classList.add("mapboxgl-map"),(this._missingCSSCanary=o("div","mapboxgl-canary",e)).style.visibility="hidden",this._detectMissingCSS();const t=this._canvasContainer=o("div","mapboxgl-canvas-container",e);this._interactive&&t.classList.add("mapboxgl-interactive"),this._canvas=o("canvas","mapboxgl-canvas",t),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex","0"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region"),this._updateContainerDimensions(),this._resizeCanvas(this._containerWidth,this._containerHeight);const i=this._controlContainer=o("div","mapboxgl-control-container",e),r=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach((e=>{r[e]=o("div",`mapboxgl-ctrl-${e}`,i)})),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(t,i){const r=e.exported.devicePixelRatio||1;this._canvas.width=r*Math.ceil(t),this._canvas.height=r*Math.ceil(i),this._canvas.style.width=`${t}px`,this._canvas.style.height=`${i}px`}_addMarker(e){this._markers.push(e)}_removeMarker(e){const t=this._markers.indexOf(e);-1!==t&&this._markers.splice(t,1)}_addPopup(e){this._popups.push(e)}_removePopup(e){const t=this._popups.indexOf(e);-1!==t&&this._popups.splice(t,1)}_setupPainter(){const t=e.extend({},i.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1}),r=this._useWebGL2&&this._canvas.getContext("webgl2",t),n=r||this._canvas.getContext("webgl",t)||this._canvas.getContext("experimental-webgl",t);n?(this._useWebGL2&&!r&&e.warnOnce("Failed to create WebGL 2 context. Using WebGL 1."),e.storeAuthState(n,!0),this.painter=new Rr(n,this.transform,!!r),this.on("data",(e=>{"source"===e.dataType&&this.painter.setTileLoadedFlag(!0)})),e.exported$1.testSupport(n)):this.fire(new e.ErrorEvent(new Error("Failed to initialize WebGL")))}_contextLost(t){t.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new e.Event("webglcontextlost",{originalEvent:t}))}_contextRestored(t){this._setupPainter(),this.resize(),this._update(),this.fire(new e.Event("webglcontextrestored",{originalEvent:t}))}_onMapScroll(e){if(e.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(e){return this.style?(this._styleDirty=this._styleDirty||e,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(e){return this._update(),this._renderTaskQueue.add(e)}_cancelRenderFrame(e){this._renderTaskQueue.remove(e)}_requestDomTask(e){!this.loaded()||this.loaded()&&!this.isMoving()?e():this._domRenderTaskQueue.add(e)}_render(t){let i;const r=this.painter.context.extTimerQuery,n=e.exported.now();if(this.listens("gpu-timing-frame")&&(i=r.createQueryEXT(),r.beginQueryEXT(r.TIME_ELAPSED_EXT,i)),this.painter.context.setDirty(),this.painter.setBaseState(),(this.isMoving()||this.isRotating()||this.isZooming())&&(this._interactionRange[0]=Math.min(this._interactionRange[0],e.window.performance.now()),this._interactionRange[1]=Math.max(this._interactionRange[1],e.window.performance.now())),this._renderTaskQueue.run(t),this._domRenderTaskQueue.run(t),this._removed)return;this._updateProjectionTransition();const o=this._isInitialLoad?0:this._fadeDuration;if(this.style&&this._styleDirty){this._styleDirty=!1;const t=this.transform.zoom,i=this.transform.pitch,r=e.exported.now(),n=new e.EvaluationParameters(t,{now:r,fadeDuration:o,pitch:i,transition:this.style.getTransition()});this.style.update(n)}this.style&&this.style.fog&&this.style.fog.hasTransition()&&(this.style._markersNeedUpdate=!0,this._sourcesDirty=!0);let s=!1;if(this.style&&this._sourcesDirty?(this._sourcesDirty=!1,this.painter._updateFog(this.style),this._updateTerrain(),s=this._updateAverageElevation(n),this.style._updateSources(this.transform),this._forceMarkerAndPopupUpdate()):s=this._updateAverageElevation(n),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,o,this._crossSourceCollisions),this.style&&this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showTerrainWireframe:this.showTerrainWireframe,showOverdrawInspector:this._showOverdrawInspector,showQueryGeometry:!!this._showQueryGeometry,showTileAABBs:this.showTileAABBs,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:o,isInitialLoad:this._isInitialLoad,showPadding:this.showPadding,gpuTiming:!!this.listens("gpu-timing-layer"),gpuTimingDeferredRender:!!this.listens("gpu-timing-deferred-render"),speedIndexTiming:this.speedIndexTiming}),this.fire(new e.Event("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new e.Event("load"))),this.style&&this.style.hasTransitions()&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),i){const t=e.exported.now()-n;r.endQueryEXT(r.TIME_ELAPSED_EXT,i),setTimeout((()=>{const o=r.getQueryObjectEXT(i,r.QUERY_RESULT_EXT)/1e6;r.deleteQueryEXT(i),this.fire(new e.Event("gpu-timing-frame",{cpuTime:t,gpuTime:o})),e.window.performance.mark("frame-gpu",{startTime:n,detail:{gpuTime:o}})}),50)}if(this.listens("gpu-timing-layer")){const t=this.painter.collectGpuTimers();setTimeout((()=>{const i=this.painter.queryGpuTimers(t);this.fire(new e.Event("gpu-timing-layer",{layerTimes:i}))}),50)}if(this.listens("gpu-timing-deferred-render")){const t=this.painter.collectDeferredRenderGpuQueries();setTimeout((()=>{const i=this.painter.queryGpuTimeDeferredRender(t);this.fire(new e.Event("gpu-timing-deferred-render",{gpuTime:i}))}),50)}const a=this._sourcesDirty||this._styleDirty||this._placementDirty||s;if(a||this._repaint)this.triggerRepaint();else{const t=!this.isMoving()&&this.loaded();if(t&&(s=this._updateAverageElevation(n,!0)),s)this.triggerRepaint();else if(this._triggerFrame(!1),t&&(this.fire(new e.Event("idle")),this._isInitialLoad=!1,this.speedIndexTiming)){const t=this._calculateSpeedIndex();this.fire(new e.Event("speedindexcompleted",{speedIndex:t})),this.speedIndexTiming=!1}}!this._loaded||this._fullyLoaded||a||(this._fullyLoaded=!0,e.LivePerformanceUtils.mark(e.PerformanceMarkers.fullLoad),this._performanceMetricsCollection&&e.postPerformanceEvent(this._requestManager._customAccessToken,{width:this.painter.width,height:this.painter.height,interactionRange:this._interactionRange,visibilityHidden:this._visibilityHidden,terrainEnabled:!!this.painter.style.getTerrain(),fogEnabled:!!this.painter.style.getFog(),projection:this.getProjection().name,zoom:this.transform.zoom,renderer:this.painter.context.renderer,vendor:this.painter.context.vendor}),this._authenticate())}_forceMarkerAndPopupUpdate(e){for(const t of this._markers)e&&!this.getRenderWorldCopies()&&(t._lngLat=t._lngLat.wrap()),t._update();for(const t of this._popups)!e||this.getRenderWorldCopies()||t._trackPointer||(t._lngLat=t._lngLat.wrap()),t._update()}_updateAverageElevation(e,t=!1){const i=e=>(this.transform.averageElevation=e,this._update(!1),!0);if(!this.painter.averageElevationNeedsEasing())return 0!==this.transform.averageElevation&&i(0);if((t||e-this._averageElevationLastSampledAt>500)&&!this._averageElevation.isEasing(e)){const t=this.transform.averageElevation;let r=this.transform.sampleAverageElevation(),n=!1;this.transform.elevation&&(n=this.transform.elevation.exaggeration()!==this._averageElevationExaggeration,this._averageElevationExaggeration=this.transform.elevation.exaggeration()),isNaN(r)?r=0:this._averageElevationLastSampledAt=e;const o=Math.abs(t-r);if(o>1){if(this._isInitialLoad||n)return this._averageElevation.jumpTo(r),i(r);this._averageElevation.easeTo(r,e,300)}else if(o>1e-4)return this._averageElevation.jumpTo(r),i(r)}return!!this._averageElevation.isEasing(e)&&i(this._averageElevation.getValue(e))}_authenticate(){e.getMapSessionAPI(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,(t=>{if(t&&(t.message===e.AUTH_ERR_MSG||401===t.status)){const t=this.painter.context.gl;e.storeAuthState(t,!1),this._logoControl instanceof Kn&&this._logoControl._updateLogo(),t&&t.clear(t.DEPTH_BUFFER_BIT|t.COLOR_BUFFER_BIT|t.STENCIL_BUFFER_BIT),this._silenceAuthErrors||this.fire(new e.ErrorEvent(new Error("A valid Mapbox access token is required to use Mapbox GL JS. To create an account or a new access token, visit https://account.mapbox.com/")))}})),e.postMapLoadEvent(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,(()=>{}))}_updateTerrain(){const e=this._isDragging();this.painter.updateTerrain(this.style,e)}_calculateSpeedIndex(){const e=this.painter.canvasCopy(),t=this.painter.getCanvasCopiesAndTimestamps();t.timeStamps.push(performance.now());const i=this.painter.context.gl,r=i.createFramebuffer();function n(e){i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,e,0);const t=new Uint8Array(i.drawingBufferWidth*i.drawingBufferHeight*4);return i.readPixels(0,0,i.drawingBufferWidth,i.drawingBufferHeight,i.RGBA,i.UNSIGNED_BYTE,t),t}return i.bindFramebuffer(i.FRAMEBUFFER,r),this._canvasPixelComparison(n(e),t.canvasCopies.map(n),t.timeStamps)}_canvasPixelComparison(e,t,i){let r=i[1]-i[0];const n=e.length/4;for(let o=0;o{const t=!!this._renderNextFrame;this._frame=null,this._renderNextFrame=null,t&&this._render(e)})))}_preloadTiles(t){const i=this.style?Object.values(this.style._sourceCaches):[];return e.asyncAll(i,((e,i)=>e._preloadTiles(t,i)),(()=>{this.triggerRepaint()})),this}_onWindowOnline(){this._update()}_onWindowResize(e){this._trackResize&&this.resize({originalEvent:e})._update()}_onVisibilityChange(){"hidden"===e.window.document.visibilityState&&this._visibilityHidden++}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(e){this._showTileBoundaries!==e&&(this._showTileBoundaries=e,this._update())}get showTerrainWireframe(){return!!this._showTerrainWireframe}set showTerrainWireframe(e){this._showTerrainWireframe!==e&&(this._showTerrainWireframe=e,this._update())}get speedIndexTiming(){return!!this._speedIndexTiming}set speedIndexTiming(e){this._speedIndexTiming!==e&&(this._speedIndexTiming=e,this._update())}get showPadding(){return!!this._showPadding}set showPadding(e){this._showPadding!==e&&(this._showPadding=e,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(e){this._showCollisionBoxes!==e&&(this._showCollisionBoxes=e,e?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(e){this._showOverdrawInspector!==e&&(this._showOverdrawInspector=e,this._update())}get repaint(){return!!this._repaint}set repaint(e){this._repaint!==e&&(this._repaint=e,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(e){this._vertices=e,this._update()}get showTileAABBs(){return!!this._showTileAABBs}set showTileAABBs(e){this._showTileAABBs!==e&&(this._showTileAABBs=e,e&&this._update())}_setCacheLimits(t,i){e.setCacheLimits(t,i)}get version(){return e.version}},NavigationControl:class{constructor(t){this.options=e.extend({},ao,t),this._container=o("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._container.addEventListener("contextmenu",(e=>e.preventDefault())),this.options.showZoom&&(e.bindAll(["_setButtonTitle","_updateZoomButtons"],this),this._zoomInButton=this._createButton("mapboxgl-ctrl-zoom-in",(e=>{this._map&&this._map.zoomIn({},{originalEvent:e})})),o("span","mapboxgl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("mapboxgl-ctrl-zoom-out",(e=>{this._map&&this._map.zoomOut({},{originalEvent:e})})),o("span","mapboxgl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(e.bindAll(["_rotateCompassArrow"],this),this._compass=this._createButton("mapboxgl-ctrl-compass",(e=>{const t=this._map;t&&(this.options.visualizePitch?t.resetNorthPitch({},{originalEvent:e}):t.resetNorth({},{originalEvent:e}))})),this._compassIcon=o("span","mapboxgl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}_updateZoomButtons(){const e=this._map;if(!e)return;const t=e.getZoom(),i=t===e.getMaxZoom(),r=t===e.getMinZoom();this._zoomInButton.disabled=i,this._zoomOutButton.disabled=r,this._zoomInButton.setAttribute("aria-disabled",i.toString()),this._zoomOutButton.setAttribute("aria-disabled",r.toString())}_rotateCompassArrow(){const e=this._map;if(!e)return;const t=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(e.transform.pitch*(Math.PI/180)),.5)}) rotateX(${e.transform.pitch}deg) rotateZ(${e.transform.angle*(180/Math.PI)}deg)`:`rotate(${e.transform.angle*(180/Math.PI)}deg)`;e._requestDomTask((()=>{this._compassIcon&&(this._compassIcon.style.transform=t)}))}onAdd(e){return this._map=e,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),e.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&e.on("pitch",this._rotateCompassArrow),e.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new lo(e,this._compass,this.options.visualizePitch)),this._container}onRemove(){const e=this._map;e&&(this._container.remove(),this.options.showZoom&&e.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&e.off("pitch",this._rotateCompassArrow),e.off("rotate",this._rotateCompassArrow),this._handler&&this._handler.off(),this._handler=void 0),this._map=void 0)}_createButton(e,t){const i=o("button",e,this._container);return i.type="button",i.addEventListener("click",t),i}_setButtonTitle(e,t){if(!this._map)return;const i=this._map._getUIString(`NavigationControl.${t}`);e.setAttribute("aria-label",i),e.firstElementChild&&e.firstElementChild.setAttribute("title",i)}},GeolocateControl:class extends e.Evented{constructor(t){super(),this.options=e.extend({geolocation:e.window.navigator.geolocation},co,t),e.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker","_updateMarkerRotation","_onDeviceOrientation"],this),this._updateMarkerRotationThrottled=Hr(this._updateMarkerRotation,20),this._numberOfWatches=0}onAdd(e){return this._map=e,this._container=o("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkGeolocationSupport(this._setupUI),this._container}onRemove(){void 0!==this._geolocationWatchID&&(this.options.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),this._container.remove(),this._map.off("zoom",this._onZoom),this._map=void 0,this._numberOfWatches=0,this._noTimeout=!1}_checkGeolocationSupport(t){const i=(e=!!this.options.geolocation)=>{this._supportsGeolocation=e,t(e)};void 0!==this._supportsGeolocation?t(this._supportsGeolocation):void 0!==e.window.navigator.permissions?e.window.navigator.permissions.query({name:"geolocation"}).then((e=>i("denied"!==e.state))).catch((()=>i())):i()}_isOutOfMapMaxBounds(e){const t=this._map.getMaxBounds(),i=e.coords;return!!t&&(i.longitudet.getEast()||i.latitudet.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting")}}_onSuccess(t){if(this._map){if(this._isOutOfMapMaxBounds(t))return this._setErrorState(),this.fire(new e.Event("outofmaxbounds",t)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background")}this.options.showUserLocation&&"OFF"!==this._watchState&&this._updateMarker(t),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new e.Event("geolocate",t)),this._finish()}}_updateCamera(t){const i=new e.LngLat(t.coords.longitude,t.coords.latitude),r=t.coords.accuracy,n=this._map.getBearing(),o=e.extend({bearing:n},this.options.fitBoundsOptions);this._map.fitBounds(i.toBounds(r),o,{geolocateSource:!0})}_updateMarker(t){if(t){const i=new e.LngLat(t.coords.longitude,t.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=t.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()}_updateCircleRadius(){const t=this._map.transform,i=e.mercatorZfromAltitude(1,t._center.lat)*t.worldSize,r=Math.ceil(2*this._accuracy*i);this._circleElement.style.width=`${r}px`,this._circleElement.style.height=`${r}px`}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}_updateMarkerRotation(){this._userLocationDotMarker&&"number"==typeof this._heading?(this._userLocationDotMarker.setRotation(this._heading),this._dotElement.classList.add("mapboxgl-user-location-show-heading")):(this._dotElement.classList.remove("mapboxgl-user-location-show-heading"),this._userLocationDotMarker.setRotation(0))}_onError(t){if(this._map){if(this.options.trackUserLocation)if(1===t.code){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;const e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.setAttribute("aria-label",e),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute("title",e),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===t.code&&this._noTimeout)return;this._setErrorState()}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new e.Event("error",t)),this._finish()}}_finish(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0}_setupUI(t){if(void 0!==this._map){if(this._container.addEventListener("contextmenu",(e=>e.preventDefault())),this._geolocateButton=o("button","mapboxgl-ctrl-geolocate",this._container),o("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",!1===t){e.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");const t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.setAttribute("aria-label",t),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute("title",t)}else{const e=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.setAttribute("aria-label",e),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute("title",e)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=o("div","mapboxgl-user-location"),this._dotElement.appendChild(o("div","mapboxgl-user-location-dot")),this._dotElement.appendChild(o("div","mapboxgl-user-location-heading")),this._userLocationDotMarker=new eo({element:this._dotElement,rotationAlignment:"map",pitchAlignment:"map"}),this._circleElement=o("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new eo({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",(t=>{t.geolocateSource||"ACTIVE_LOCK"!==this._watchState||t.originalEvent&&"resize"===t.originalEvent.type||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this.fire(new e.Event("trackuserlocationend")))}))}}_onDeviceOrientation(e){this._userLocationDotMarker&&(e.webkitCompassHeading?this._heading=e.webkitCompassHeading:!0===e.absolute&&(this._heading=-1*e.alpha),this._updateMarkerRotationThrottled())}trigger(){if(!this._setup)return e.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new e.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":this._numberOfWatches--,this._noTimeout=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new e.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new e.Event("trackuserlocationstart"))}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error")}if("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let e;this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),this._numberOfWatches++,this._numberOfWatches>1?(e={maximumAge:6e5,timeout:0},this._noTimeout=!0):(e=this.options.positionOptions,this._noTimeout=!1),this._geolocationWatchID=this.options.geolocation.watchPosition(this._onSuccess,this._onError,e),this.options.showUserHeading&&this._addDeviceOrientationListener()}}else this.options.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_addDeviceOrientationListener(){const t=()=>{e.window.addEventListener("ondeviceorientationabsolute"in e.window?"deviceorientationabsolute":"deviceorientation",this._onDeviceOrientation)};void 0!==e.window.DeviceMotionEvent&&"function"==typeof e.window.DeviceMotionEvent.requestPermission?DeviceOrientationEvent.requestPermission().then((e=>{"granted"===e&&t()})).catch(console.error):t()}_clearWatch(){this.options.geolocation.clearWatch(this._geolocationWatchID),e.window.removeEventListener("deviceorientation",this._onDeviceOrientation),e.window.removeEventListener("deviceorientationabsolute",this._onDeviceOrientation),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},AttributionControl:Hn,ScaleControl:class{constructor(t){this.options=e.extend({},ho,t),this._isNumberFormatSupported=function(){try{return new Intl.NumberFormat("en",{style:"unit",unitDisplay:"short",unit:"meter"}),!0}catch(e){return!1}}(),e.bindAll(["_update","_setScale","setUnit"],this)}getDefaultPosition(){return"bottom-left"}_update(){const e=this.options.maxWidth||100,t=this._map,i=t._containerHeight/2,r=t._containerWidth/2-e/2,n=t.unproject([r,i]),o=t.unproject([r+e,i]),s=n.distanceTo(o);if("imperial"===this.options.unit){const t=3.2808*s;t>5280?this._setScale(e,t/5280,"mile"):this._setScale(e,t,"foot")}else"nautical"===this.options.unit?this._setScale(e,s/1852,"nautical-mile"):s>=1e3?this._setScale(e,s/1e3,"kilometer"):this._setScale(e,s,"meter")}_setScale(e,t,i){this._map._requestDomTask((()=>{const r=function(e){const t=Math.pow(10,`${Math.floor(e)}`.length-1);let i=e/t;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(e){const t=Math.pow(10,Math.ceil(-Math.log(e)/Math.LN10));return Math.round(e*t)/t}(i),t*i}(t),n=r/t;this._container.innerHTML=this._isNumberFormatSupported&&"nautical-mile"!==i?new Intl.NumberFormat(this._language,{style:"unit",unitDisplay:"short",unit:i}).format(r):`${r} ${uo[i]}`,this._container.style.width=e*n+"px"}))}onAdd(e){return this._map=e,this._language=e.getLanguage(),this._container=o("div","mapboxgl-ctrl mapboxgl-ctrl-scale",e.getContainer()),this._container.dir="auto",this._map.on("move",this._update),this._update(),this._container}onRemove(){this._container.remove(),this._map.off("move",this._update),this._map=void 0}_setLanguage(e){this._language=e,this._update()}setUnit(e){this.options.unit=e,this._update()}},FullscreenControl:class{constructor(t){this._fullscreen=!1,t&&t.container&&(t.container instanceof e.window.HTMLElement?this._container=t.container:e.warnOnce("Full screen control 'container' must be a DOM element.")),e.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in e.window.document?this._fullscreenchange="fullscreenchange":"onwebkitfullscreenchange"in e.window.document&&(this._fullscreenchange="webkitfullscreenchange")}onAdd(t){return this._map=t,this._container||(this._container=this._map.getContainer()),this._controlContainer=o("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",e.warnOnce("This device does not support fullscreen mode.")),this._controlContainer}onRemove(){this._controlContainer.remove(),this._map=null,e.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)}_checkFullscreenSupport(){return!(!e.window.document.fullscreenEnabled&&!e.window.document.webkitFullscreenEnabled)}_setupUI(){const t=this._fullscreenButton=o("button","mapboxgl-ctrl-fullscreen",this._controlContainer);o("span","mapboxgl-ctrl-icon",t).setAttribute("aria-hidden","true"),t.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),e.window.document.addEventListener(this._fullscreenchange,this._changeIcon)}_updateTitle(){const e=this._getTitle();this._fullscreenButton.setAttribute("aria-label",e),this._fullscreenButton.firstElementChild&&this._fullscreenButton.firstElementChild.setAttribute("title",e)}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_changeIcon(){(e.window.document.fullscreenElement||e.window.document.webkitFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())}_onClickFullscreen(){this._isFullscreen()?e.window.document.exitFullscreen?e.window.document.exitFullscreen():e.window.document.webkitCancelFullScreen&&e.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()}},Popup:class extends e.Evented{constructor(t){super(),this.options=e.extend(Object.create(to),t),e.bindAll(["_update","_onClose","remove","_onMouseEvent"],this),this._classList=new Set(t&&t.className?t.className.trim().split(/\s+/):[])}addTo(t){return this._map&&this.remove(),this._map=t,this.options.closeOnClick&&t.on("preclick",this._onClose),this.options.closeOnMove&&t.on("move",this._onClose),t.on("remove",this.remove),this._update(),t._addPopup(this),this._focusFirstElement(),this._trackPointer?(t.on("mousemove",this._onMouseEvent),t.on("mouseup",this._onMouseEvent),t._canvasContainer.classList.add("mapboxgl-track-pointer")):t.on("move",this._update),this.fire(new e.Event("open")),this}isOpen(){return!!this._map}remove(){this._content&&this._content.remove(),this._container&&(this._container.remove(),this._container=void 0);const t=this._map;return t&&(t.off("move",this._update),t.off("move",this._onClose),t.off("preclick",this._onClose),t.off("click",this._onClose),t.off("remove",this.remove),t.off("mousemove",this._onMouseEvent),t.off("mouseup",this._onMouseEvent),t.off("drag",this._onMouseEvent),t._canvasContainer&&t._canvasContainer.classList.remove("mapboxgl-track-pointer"),t._removePopup(this),this._map=void 0),this.fire(new e.Event("close")),this}getLngLat(){return this._lngLat}setLngLat(t){this._lngLat=e.LngLat.convert(t),this._pos=null,this._trackPointer=!1,this._update();const i=this._map;return i&&(i.on("move",this._update),i.off("mousemove",this._onMouseEvent),i._canvasContainer.classList.remove("mapboxgl-track-pointer")),this}trackPointer(){this._trackPointer=!0,this._pos=null,this._update();const e=this._map;return e&&(e.off("move",this._update),e.on("mousemove",this._onMouseEvent),e.on("drag",this._onMouseEvent),e._canvasContainer.classList.add("mapboxgl-track-pointer")),this}getElement(){return this._container}setText(t){return this.setDOMContent(e.window.document.createTextNode(t))}setHTML(t){const i=e.window.document.createDocumentFragment(),r=e.window.document.createElement("body");let n;for(r.innerHTML=t;n=r.firstChild,n;)i.appendChild(n);return this.setDOMContent(i)}getMaxWidth(){return this._container&&this._container.style.maxWidth}setMaxWidth(e){return this.options.maxWidth=e,this._update(),this}setDOMContent(e){let t=this._content;if(t)for(;t.hasChildNodes();)t.firstChild&&t.removeChild(t.firstChild);else t=this._content=o("div","mapboxgl-popup-content",this._container||void 0);if(t.appendChild(e),this.options.closeButton){const e=this._closeButton=o("button","mapboxgl-popup-close-button",t);e.type="button",e.setAttribute("aria-label","Close popup"),e.setAttribute("aria-hidden","true"),e.innerHTML="×",e.addEventListener("click",this._onClose)}return this._update(),this._focusFirstElement(),this}addClassName(e){return this._classList.add(e),this._updateClassList(),this}removeClassName(e){return this._classList.delete(e),this._updateClassList(),this}setOffset(e){return this.options.offset=e,this._update(),this}toggleClassName(e){let t;return this._classList.delete(e)?t=!1:(this._classList.add(e),t=!0),this._updateClassList(),t}_onMouseEvent(e){this._update(e.point)}_getAnchor(e){if(this.options.anchor)return this.options.anchor;const t=this._map,i=this._container,r=this._pos;if(!t||!i||!r)return"bottom";const n=i.offsetWidth,o=i.offsetHeight,s=r.xt.transform.width-n/2;if(r.y+et.transform.height-o){if(s)return"bottom-left";if(a)return"bottom-right"}return s?"left":a?"right":"bottom"}_updateClassList(){const e=this._container;if(!e)return;const t=[...this._classList];t.push("mapboxgl-popup"),this._anchor&&t.push(`mapboxgl-popup-anchor-${this._anchor}`),this._trackPointer&&t.push("mapboxgl-popup-track-pointer"),e.className=t.join(" ")}_update(t){const i=this._map,r=this._content;if(!i||!this._lngLat&&!this._trackPointer||!r)return;let n=this._container;if(n||(n=this._container=o("div","mapboxgl-popup",i.getContainer()),this._tip=o("div","mapboxgl-popup-tip",n),n.appendChild(r)),this.options.maxWidth&&n.style.maxWidth!==this.options.maxWidth&&(n.style.maxWidth=this.options.maxWidth),i.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Jn(this._lngLat,this._pos,i.transform)),!this._trackPointer||t){const e=this._pos=this._trackPointer&&t?t:i.project(this._lngLat),r=ro(this.options.offset),n=this._anchor=this._getAnchor(r.y),o=ro(this.options.offset,n),s=e.add(o).round();i._requestDomTask((()=>{this._container&&n&&(this._container.style.transform=`${Qn[n]} translate(${s.x}px,${s.y}px)`)}))}if(!this._marker&&i._showingGlobe()){const t=e.isLngLatBehindGlobe(i.transform,this._lngLat)?0:1;this._setOpacity(t)}this._updateClassList()}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const e=this._container.querySelector(io);e&&e.focus()}_onClose(){this.remove()}_setOpacity(e){this._container&&(this._container.style.opacity=`${e}`),this._content&&(this._content.style.pointerEvents=e?"auto":"none")}},Marker:eo,Style:Yt,LngLat:e.LngLat,LngLatBounds:e.LngLatBounds,Point:e.Point,MercatorCoordinate:e.MercatorCoordinate,FreeCameraOptions:Vr,Evented:e.Evented,config:e.config,prewarm:function(){Ue().acquire(Be)},clearPrewarmedResources:function(){const e=Fe;e&&(e.isPreloaded()&&1===e.numActive()?(e.release(Be),Fe=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},get accessToken(){return e.config.ACCESS_TOKEN},set accessToken(t){e.config.ACCESS_TOKEN=t},get baseApiUrl(){return e.config.API_URL},set baseApiUrl(t){e.config.API_URL=t},get workerCount(){return Oe.workerCount},set workerCount(e){Oe.workerCount=e},get maxParallelImageRequests(){return e.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(t){e.config.MAX_PARALLEL_IMAGE_REQUESTS=t},clearStorage(t){e.clearTileCache(t)},workerUrl:"",workerClass:null,setNow:e.exported.setNow,restoreNow:e.exported.restoreNow};return po})),i}()}}]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQUVDLFdBQVdELEdBQUcsQ0FBQyxJQUFJd2MsR0FBR0MsR0FBRyxDQUFDQyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBR0MsVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLGFBQWEsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxLQUFLLENBQUMsRUFBRSxJQUFJLElBQUksR0FBR0MsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHQyxlQUFlLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUdDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHQyxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBR0MsVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFVBQVUsQ0FBQyxHQUFHLElBQUksSUFBSSxHQUFHQyxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUUsR0FBR0MsVUFBVSxDQUFDLElBQUksSUFBSSxHQUFHLEdBQUdDLE1BQU0sQ0FBQyxJQUFJLElBQUksR0FBRyxHQUFHQyxlQUFlLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHQyxLQUFLLENBQUMsRUFBRSxJQUFJLElBQUksR0FBR0MsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUdDLFNBQVMsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHQyxjQUFjLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBR0MsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHQyxTQUFTLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHQyxlQUFlLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBR0MsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUdDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBR0MsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLGFBQWEsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxjQUFjLENBQUMsR0FBRyxHQUFHLElBQUksR0FBR0MsY0FBYyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUdDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHQyxjQUFjLENBQUMsRUFBRSxJQUFJLElBQUksR0FBR0MsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUdDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHQyxZQUFZLENBQUMsRUFBRSxJQUFJLElBQUksR0FBR0MsUUFBUSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxXQUFXLENBQUMsR0FBRyxJQUFJLElBQUksR0FBR0MsVUFBVSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUdDLFlBQVksQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxZQUFZLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBR0MsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUdDLFVBQVUsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUdDLFVBQVUsQ0FBQyxJQUFJLElBQUksR0FBRyxHQUFHQyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUdDLFlBQVksQ0FBQyxJQUFJLElBQUksR0FBRyxHQUFHQyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxVQUFVLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUdDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLGNBQWMsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsR0FBR0MsYUFBYSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFVBQVUsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLHFCQUFxQixDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFVBQVUsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFVBQVUsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxZQUFZLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsY0FBYyxDQUFDLEdBQUcsSUFBSSxJQUFJLEdBQUdDLGFBQWEsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxlQUFlLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsZUFBZSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLGVBQWUsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxZQUFZLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUdDLFVBQVUsQ0FBQyxHQUFHLElBQUksR0FBRyxHQUFHQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUdDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxXQUFXLENBQUMsRUFBRSxFQUFFLElBQUksR0FBR0MsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUdDLGFBQWEsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxlQUFlLENBQUMsR0FBRyxJQUFJLElBQUksR0FBR0MsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0Msa0JBQWtCLENBQUMsRUFBRSxJQUFJLElBQUksR0FBR0MsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLElBQUksR0FBR0MsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLElBQUksR0FBR0MsYUFBYSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUdDLFVBQVUsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxVQUFVLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFlBQVksQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksR0FBR0MsUUFBUSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxHQUFHQyxVQUFVLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBR0MsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUdDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHQyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsY0FBYyxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFVBQVUsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxjQUFjLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsY0FBYyxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFdBQVcsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxVQUFVLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLEdBQUdDLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHQyxjQUFjLENBQUMsSUFBSSxHQUFHLElBQUksR0FBR0MsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUdDLFVBQVUsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxVQUFVLENBQUMsR0FBRyxJQUFJLElBQUksR0FBR0MsWUFBWSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxXQUFXLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBR0MsU0FBUyxDQUFDLEdBQUcsSUFBSSxHQUFHLEdBQUdDLFNBQVMsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxPQUFPLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBR0MsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksR0FBR0MsVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUdDLFVBQVUsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsWUFBWSxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUdDLFVBQVUsQ0FBQyxHQUFHLElBQUksSUFBSSxHQUFHQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksR0FBR0MsS0FBSyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUdDLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxHQUFHQyxPQUFPLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBR0MsVUFBVSxDQUFDLEdBQUcsSUFBSSxJQUFJLEdBQUdDLE9BQU8sQ0FB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azJGLFNBQVMxOUUsWUFBWSxPQUFPeVosRUFBRyxJQVF6cTllOXlCLENBSWhCLENBN0MrRTRvQiIsInNvdXJjZXMiOlsid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9tYXBib3gtZ2wvZGlzdC9tYXBib3gtZ2wuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogTWFwYm94IEdMIEpTIGlzIENvcHlyaWdodCDCqSAyMDIwIE1hcGJveCBhbmQgc3ViamVjdCB0byB0aGUgTWFwYm94IFRlcm1zIG9mIFNlcnZpY2UgKChodHRwczovL3d3dy5tYXBib3guY29tL2xlZ2FsL3Rvcy8pLiAqL1xuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbnR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbnR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6XG4oZ2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyA6IGdsb2JhbCB8fCBzZWxmLCBnbG9iYWwubWFwYm94Z2wgPSBmYWN0b3J5KCkpO1xufSkodGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG52YXIgc2hhcmVkLCB3b3JrZXIsIG1hcGJveGdsO1xuLy8gZGVmaW5lIGdldHMgY2FsbGVkIHRocmVlIHRpbWVzOiBvbmUgZm9yIGVhY2ggY2h1bmsuIHdlIHJlbHkgb24gdGhlIG9yZGVyXG4vLyB0aGV5J3JlIGltcG9ydGVkIHRvIGtub3cgd2hpY2ggaXMgd2hpY2hcbmZ1bmN0aW9uIGRlZmluZShfLCBjaHVuaykge1xuaWYgKCFzaGFyZWQpIHtcbiAgICBzaGFyZWQgPSBjaHVuaztcbn0gZWxzZSBpZiAoIXdvcmtlcikge1xuICAgIHdvcmtlciA9IGNodW5rO1xufSBlbHNlIHtcbiAgICB2YXIgd29ya2VyQnVuZGxlU3RyaW5nID0gXCJzZWxmLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgY29uc29sZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcGFyc2luZyB0aGUgV2ViV29ya2VyIGJ1bmRsZS4gVGhpcyBpcyBtb3N0IGxpa2VseSBkdWUgdG8gaW1wcm9wZXIgdHJhbnNwaWxhdGlvbiBieSBCYWJlbDsgcGxlYXNlIHNlZSBodHRwczovL2RvY3MubWFwYm94LmNvbS9tYXBib3gtZ2wtanMvZ3VpZGVzL2luc3RhbGwvI3RyYW5zcGlsaW5nJyk7IH07IHZhciBzaGFyZWRDaHVuayA9IHt9OyAoXCIgKyBzaGFyZWQgKyBcIikoc2hhcmVkQ2h1bmspOyAoXCIgKyB3b3JrZXIgKyBcIikoc2hhcmVkQ2h1bmspOyBzZWxmLm9uZXJyb3IgPSBudWxsO1wiXG5cbiAgICB2YXIgc2hhcmVkQ2h1bmsgPSB7fTtcbiAgICBzaGFyZWQoc2hhcmVkQ2h1bmspO1xuICAgIG1hcGJveGdsID0gY2h1bmsoc2hhcmVkQ2h1bmspO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cgJiYgd2luZG93LlVSTCAmJiB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCkge1xuICAgICAgICBtYXBib3hnbC53b3JrZXJVcmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbd29ya2VyQnVuZGxlU3RyaW5nXSwgeyB0eXBlOiAndGV4dC9qYXZhc2NyaXB0JyB9KSk7XG4gICAgfVxufVxufVxuXG5cbmRlZmluZShbXCJleHBvcnRzXCJdLChmdW5jdGlvbih0KXtcInVzZSBzdHJpY3RcIjt2YXIgZT1cInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOnt9LHI9XCIyLjE1LjBcIjtsZXQgbjtjb25zdCBpPXtBUElfVVJMOlwiaHR0cHM6Ly9hcGkubWFwYm94LmNvbVwiLGdldCBBUElfVVJMX1JFR0VYKCl7aWYobnVsbD09bil7Y29uc3QgdD0vXigoaHR0cHM/Oik/XFwvXFwvKT8oW15cXC9dK1xcLik/bWFwYm94XFwuYyhufG9tKShcXC98XFw/fCQpL2k7dHJ5e249bnVsbCE9cHJvY2Vzcy5lbnYuQVBJX1VSTF9SRUdFWD9uZXcgUmVnRXhwKHByb2Nlc3MuZW52LkFQSV9VUkxfUkVHRVgpOnQ7fWNhdGNoKGUpe249dDt9fXJldHVybiBufSxnZXQgQVBJX1RJTEVKU09OX1JFR0VYKCl7cmV0dXJuIC9eKChodHRwcz86KT9cXC9cXC8pPyhbXlxcL10rXFwuKT9tYXBib3hcXC5jKG58b20pKFxcL3ZbMC05XSpcXC8uKlxcLmpzb24uKiQpL2l9LGdldCBBUElfU1BSSVRFX1JFR0VYKCl7cmV0dXJuIC9eKChodHRwcz86KT9cXC9cXC8pPyhbXlxcL10rXFwuKT9tYXBib3hcXC5jKG58b20pKFxcL3N0eWxlc1xcL3ZbMC05XSpcXC8pKC4qXFwvc3ByaXRlLipcXC4uKiQpL2l9LGdldCBBUElfRk9OVFNfUkVHRVgoKXtyZXR1cm4gL14oKGh0dHBzPzopP1xcL1xcLyk/KFteXFwvXStcXC4pP21hcGJveFxcLmMobnxvbSkoXFwvZm9udHNcXC92WzAtOV0qXFwvKSguKlxcLnBiZi4qJCkvaX0sZ2V0IEFQSV9TVFlMRV9SRUdFWCgpe3JldHVybiAvXigoaHR0cHM/Oik/XFwvXFwvKT8oW15cXC9dK1xcLik/bWFwYm94XFwuYyhufG9tKShcXC9zdHlsZXNcXC92WzAtOV0qXFwvKSguKiQpL2l9LGdldCBBUElfQ0ROX1VSTF9SRUdFWCgpe3JldHVybiAvXigoaHR0cHM/Oik/XFwvXFwvKT9hcGlcXC5tYXBib3hcXC5jKG58b20pKFxcL21hcGJveC1nbC1qc1xcLykoLiokKS9pfSxnZXQgRVZFTlRTX1VSTCgpe2lmKCFpLkFQSV9VUkwpcmV0dXJuIG51bGw7dHJ5e2NvbnN0IHQ9bmV3IFVSTChpLkFQSV9VUkwpO3JldHVybiBcImFwaS5tYXBib3guY25cIj09PXQuaG9zdG5hbWU/XCJodHRwczovL2V2ZW50cy5tYXBib3guY24vZXZlbnRzL3YyXCI6XCJhcGkubWFwYm94LmNvbVwiPT09dC5ob3N0bmFtZT9cImh0dHBzOi8vZXZlbnRzLm1hcGJveC5jb20vZXZlbnRzL3YyXCI6bnVsbH1jYXRjaCh0KXtyZXR1cm4gbnVsbH19LFNFU1NJT05fUEFUSDpcIi9tYXAtc2Vzc2lvbnMvdjFcIixGRUVEQkFDS19VUkw6XCJodHRwczovL2FwcHMubWFwYm94LmNvbS9mZWVkYmFja1wiLFRJTEVfVVJMX1ZFUlNJT046XCJ2NFwiLFJBU1RFUl9VUkxfUFJFRklYOlwicmFzdGVyL3YxXCIsUkVRVUlSRV9BQ0NFU1NfVE9LRU46ITAsQUNDRVNTX1RPS0VOOm51bGwsTUFYX1BBUkFMTEVMX0lNQUdFX1JFUVVFU1RTOjE2fSxzPXtzdXBwb3J0ZWQ6ITEsdGVzdFN1cHBvcnQ6ZnVuY3Rpb24odCl7IWwmJm8mJih1P2ModCk6YT10KTt9fTtsZXQgYSxvLGw9ITEsdT0hMTtmdW5jdGlvbiBjKHQpe2NvbnN0IGU9dC5jcmVhdGVUZXh0dXJlKCk7dC5iaW5kVGV4dHVyZSh0LlRFWFRVUkVfMkQsZSk7dHJ5e2lmKHQudGV4SW1hZ2UyRCh0LlRFWFRVUkVfMkQsMCx0LlJHQkEsdC5SR0JBLHQuVU5TSUdORURfQllURSxvKSx0LmlzQ29udGV4dExvc3QoKSlyZXR1cm47cy5zdXBwb3J0ZWQ9ITA7fWNhdGNoKHQpe310LmRlbGV0ZVRleHR1cmUoZSksbD0hMDt9ZS5kb2N1bWVudCYmKG89ZS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpLG8ub25sb2FkPWZ1bmN0aW9uKCl7YSYmYyhhKSxhPW51bGwsdT0hMDt9LG8ub25lcnJvcj1mdW5jdGlvbigpe2w9ITAsYT1udWxsO30sby5zcmM9XCJkYXRhOmltYWdlL3dlYnA7YmFzZTY0LFVrbEdSaDRBQUFCWFJVSlFWbEE0VEJFQUFBQXZBUUFBQUFmUS8vNzN2LytCaU9oL0FBQT1cIik7Y29uc3QgaD1cIjAxXCI7ZnVuY3Rpb24gcCh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxcImRlZmF1bHRcIik/dC5kZWZhdWx0OnR9dmFyIGQ9ZjtmdW5jdGlvbiBmKHQsZSxyLG4pe3RoaXMuY3g9Myp0LHRoaXMuYng9Myooci10KS10aGlzLmN4LHRoaXMuYXg9MS10aGlzLmN4LXRoaXMuYngsdGhpcy5jeT0zKmUsdGhpcy5ieT0zKihuLWUpLXRoaXMuY3ksdGhpcy5heT0xLXRoaXMuY3ktdGhpcy5ieSx0aGlzLnAxeD10LHRoaXMucDF5PWUsdGhpcy5wMng9cix0aGlzLnAyeT1uO31mLnByb3RvdHlwZT17c2FtcGxlQ3VydmVYOmZ1bmN0aW9uKHQpe3JldHVybiAoKHRoaXMuYXgqdCt0aGlzLmJ4KSp0K3RoaXMuY3gpKnR9LHNhbXBsZUN1cnZlWTpmdW5jdGlvbih0KXtyZXR1cm4gKCh0aGlzLmF5KnQrdGhpcy5ieSkqdCt0aGlzLmN5KSp0fSxzYW1wbGVDdXJ2ZURlcml2YXRpdmVYOmZ1bmN0aW9uKHQpe3JldHVybiAoMyp0aGlzLmF4KnQrMip0aGlzLmJ4KSp0K3RoaXMuY3h9LHNvbHZlQ3VydmVYOmZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09ZSYmKGU9MWUtNiksdDwwKXJldHVybiAwO2lmKHQ+MSlyZXR1cm4gMTtmb3IodmFyIHI9dCxuPTA7bjw4O24rKyl7dmFyIGk9dGhpcy5zYW1wbGVDdXJ2ZVgociktdDtpZihNYXRoLmFicyhpKTxlKXJldHVybiByO3ZhciBzPXRoaXMuc2FtcGxlQ3VydmVEZXJpdmF0aXZlWChyKTtpZihNYXRoLmFicyhzKTwxZS02KWJyZWFrO3ItPWkvczt9dmFyIGE9MCxvPTE7Zm9yKHI9dCxuPTA7bjwyMCYmKGk9dGhpcy5zYW1wbGVDdXJ2ZVgociksIShNYXRoLmFicyhpLXQpPGUpKTtuKyspdD5pP2E9cjpvPXIscj0uNSooby1hKSthO3JldHVybiByfSxzb2x2ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNhbXBsZUN1cnZlWSh0aGlzLnNvbHZlQ3VydmVYKHQsZSkpfX07dmFyIHk9cChkKSxtPWc7ZnVuY3Rpb24gZyh0LGUpe3RoaXMueD10LHRoaXMueT1lO31nLnByb3RvdHlwZT17Y2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGcodGhpcy54LHRoaXMueSl9LGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9hZGQodCl9LHN1YjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9zdWIodCl9LG11bHRCeVBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX211bHRCeVBvaW50KHQpfSxkaXZCeVBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2RpdkJ5UG9pbnQodCl9LG11bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fbXVsdCh0KX0sZGl2OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2Rpdih0KX0scm90YXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX3JvdGF0ZSh0KX0scm90YXRlQXJvdW5kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fcm90YXRlQXJvdW5kKHQsZSl9LG1hdE11bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fbWF0TXVsdCh0KX0sdW5pdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX3VuaXQoKX0scGVycDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX3BlcnAoKX0scm91bmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9yb3VuZCgpfSxtYWc6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSl9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54PT09dC54JiZ0aGlzLnk9PT10Lnl9LGRpc3Q6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RTcXIodCkpfSxkaXN0U3FyOmZ1bmN0aW9uKHQpe3ZhciBlPXQueC10aGlzLngscj10LnktdGhpcy55O3JldHVybiBlKmUrcipyfSxhbmdsZTpmdW5jdGlvbigpe3JldHVybiBNYXRoLmF0YW4yKHRoaXMueSx0aGlzLngpfSxhbmdsZVRvOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmF0YW4yKHRoaXMueS10LnksdGhpcy54LXQueCl9LGFuZ2xlV2l0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hbmdsZVdpdGhTZXAodC54LHQueSl9LGFuZ2xlV2l0aFNlcDpmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLmF0YW4yKHRoaXMueCplLXRoaXMueSp0LHRoaXMueCp0K3RoaXMueSplKX0sX21hdE11bHQ6ZnVuY3Rpb24odCl7dmFyIGU9dFsyXSp0aGlzLngrdFszXSp0aGlzLnk7cmV0dXJuIHRoaXMueD10WzBdKnRoaXMueCt0WzFdKnRoaXMueSx0aGlzLnk9ZSx0aGlzfSxfYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzfSxfc3ViOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzfSxfbXVsdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzfSxfZGl2OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngvPXQsdGhpcy55Lz10LHRoaXN9LF9tdWx0QnlQb2ludDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpc30sX2RpdkJ5UG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXN9LF91bml0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpdih0aGlzLm1hZygpKSx0aGlzfSxfcGVycDpmdW5jdGlvbigpe3ZhciB0PXRoaXMueTtyZXR1cm4gdGhpcy55PXRoaXMueCx0aGlzLng9LXQsdGhpc30sX3JvdGF0ZTpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLmNvcyh0KSxyPU1hdGguc2luKHQpLG49cip0aGlzLngrZSp0aGlzLnk7cmV0dXJuIHRoaXMueD1lKnRoaXMueC1yKnRoaXMueSx0aGlzLnk9bix0aGlzfSxfcm90YXRlQXJvdW5kOmZ1bmN0aW9uKHQsZSl7dmFyIHI9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KSxpPWUueStuKih0aGlzLngtZS54KStyKih0aGlzLnktZS55KTtyZXR1cm4gdGhpcy54PWUueCtyKih0aGlzLngtZS54KS1uKih0aGlzLnktZS55KSx0aGlzLnk9aSx0aGlzfSxfcm91bmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXN9fSxnLmNvbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBnP3Q6QXJyYXkuaXNBcnJheSh0KT9uZXcgZyh0WzBdLHRbMV0pOnR9O3ZhciB4PXAobSk7Y29uc3Qgdj1NYXRoLlBJLzE4MCxiPTE4MC9NYXRoLlBJO2Z1bmN0aW9uIHcodCl7cmV0dXJuIHQqdn1mdW5jdGlvbiBfKHQpe3JldHVybiB0KmJ9Y29uc3QgQT1bWzAsMF0sWzEsMF0sWzEsMV0sWzAsMV1dO2Z1bmN0aW9uIFModCl7aWYodDw9MClyZXR1cm4gMDtpZih0Pj0xKXJldHVybiAxO2NvbnN0IGU9dCp0LHI9ZSp0O3JldHVybiA0Kih0PC41P3I6MyoodC1lKStyLS43NSl9ZnVuY3Rpb24gayh0LGUscixuKXtjb25zdCBpPW5ldyB5KHQsZSxyLG4pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaS5zb2x2ZSh0KX19Y29uc3QgST1rKC4yNSwuMSwuMjUsMSk7ZnVuY3Rpb24gTSh0LGUscil7cmV0dXJuIE1hdGgubWluKHIsTWF0aC5tYXgoZSx0KSl9ZnVuY3Rpb24gVCh0LGUscil7cmV0dXJuIChyPU0oKHItdCkvKGUtdCksMCwxKSkqciooMy0yKnIpfWZ1bmN0aW9uIHoodCxlLHIpe2NvbnN0IG49ci1lLGk9KCh0LWUpJW4rbiklbitlO3JldHVybiBpPT09ZT9yOml9ZnVuY3Rpb24gQih0LGUscil7aWYoIXQubGVuZ3RoKXJldHVybiByKG51bGwsW10pO2xldCBuPXQubGVuZ3RoO2NvbnN0IGk9bmV3IEFycmF5KHQubGVuZ3RoKTtsZXQgcz1udWxsO3QuZm9yRWFjaCgoKHQsYSk9PntlKHQsKCh0LGUpPT57dCYmKHM9dCksaVthXT1lLDA9PS0tbiYmcihzLGkpO30pKTt9KSk7fWZ1bmN0aW9uIEUodCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgciBpbiB0KWUucHVzaCh0W3JdKTtyZXR1cm4gZX1mdW5jdGlvbiBDKHQsLi4uZSl7Zm9yKGNvbnN0IHIgb2YgZSlmb3IoY29uc3QgZSBpbiByKXRbZV09cltlXTtyZXR1cm4gdH1sZXQgUD0xO2Z1bmN0aW9uIEQoKXtyZXR1cm4gUCsrfWZ1bmN0aW9uIFYoKXtyZXR1cm4gZnVuY3Rpb24gdChlKXtyZXR1cm4gZT8oZV5NYXRoLnJhbmRvbSgpKigxNj4+ZS80KSkudG9TdHJpbmcoMTYpOihbMWU3XSstWzFlM10rLTRlMystOGUzKy0xZTExKS5yZXBsYWNlKC9bMDE4XS9nLHQpfSgpfWZ1bmN0aW9uIEwodCl7cmV0dXJuIHQ8PTE/MTpNYXRoLnBvdygyLE1hdGguY2VpbChNYXRoLmxvZyh0KS9NYXRoLkxOMikpfWZ1bmN0aW9uIEYodCl7cmV0dXJuICEhdCYmL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bNF1bMC05YS1mXXszfS1bODlhYl1bMC05YS1mXXszfS1bMC05YS1mXXsxMn0kL2kudGVzdCh0KX1mdW5jdGlvbiBSKHQsZSl7dC5mb3JFYWNoKCh0PT57ZVt0XSYmKGVbdF09ZVt0XS5iaW5kKGUpKTt9KSk7fWZ1bmN0aW9uIFUodCxlKXtyZXR1cm4gLTEhPT10LmluZGV4T2YoZSx0Lmxlbmd0aC1lLmxlbmd0aCl9ZnVuY3Rpb24gJCh0LGUscil7Y29uc3Qgbj17fTtmb3IoY29uc3QgaSBpbiB0KW5baV09ZS5jYWxsKHJ8fHRoaXMsdFtpXSxpLHQpO3JldHVybiBufWZ1bmN0aW9uIGoodCxlLHIpe2NvbnN0IG49e307Zm9yKGNvbnN0IGkgaW4gdCllLmNhbGwocnx8dGhpcyx0W2ldLGksdCkmJihuW2ldPXRbaV0pO3JldHVybiBufWZ1bmN0aW9uIE8odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5tYXAoTyk6XCJvYmplY3RcIj09dHlwZW9mIHQmJnQ/JCh0LE8pOnR9Y29uc3QgcT17fTtmdW5jdGlvbiBOKHQpe3FbdF18fChcInVuZGVmaW5lZFwiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuKHQpLHFbdF09ITApO31mdW5jdGlvbiBHKHQsZSxyKXtyZXR1cm4gKHIueS10LnkpKihlLngtdC54KT4oZS55LXQueSkqKHIueC10LngpfWZ1bmN0aW9uIFoodCl7bGV0IGU9MDtmb3IobGV0IHIsbixpPTAscz10Lmxlbmd0aCxhPXMtMTtpPHM7YT1pKyspcj10W2ldLG49dFthXSxlKz0obi54LXIueCkqKHIueStuLnkpO3JldHVybiBlfWZ1bmN0aW9uIEsoKXtyZXR1cm4gXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlfWZ1bmN0aW9uIFgodCl7Y29uc3QgZT17fTtpZih0LnJlcGxhY2UoLyg/Ol58KD86XFxzKlxcLFxccyopKShbXlxceDAwLVxceDIwXFwoXFwpPD5AXFwsO1xcOlxcXFxcIlxcL1xcW1xcXVxcP1xcPVxce1xcfVxceDdGXSspKD86XFw9KD86KFteXFx4MDAtXFx4MjBcXChcXCk8PkBcXCw7XFw6XFxcXFwiXFwvXFxbXFxdXFw/XFw9XFx7XFx9XFx4N0ZdKyl8KD86XFxcIigoPzpbXlwiXFxcXF18XFxcXC4pKilcXFwiKSkpPy9nLCgodCxyLG4saSk9Pntjb25zdCBzPW58fGk7cmV0dXJuIGVbcl09IXN8fHMudG9Mb3dlckNhc2UoKSxcIlwifSkpLGVbXCJtYXgtYWdlXCJdKXtjb25zdCB0PXBhcnNlSW50KGVbXCJtYXgtYWdlXCJdLDEwKTtpc05hTih0KT9kZWxldGUgZVtcIm1heC1hZ2VcIl06ZVtcIm1heC1hZ2VcIl09dDt9cmV0dXJuIGV9bGV0IEo9bnVsbDtmdW5jdGlvbiBIKHQpe2lmKG51bGw9PUope2NvbnN0IGU9dC5uYXZpZ2F0b3I/dC5uYXZpZ2F0b3IudXNlckFnZW50Om51bGw7Sj0hIXQuc2FmYXJpfHwhKCFlfHwhKC9cXGIoaVBhZHxpUGhvbmV8aVBvZClcXGIvLnRlc3QoZSl8fGUubWF0Y2goXCJTYWZhcmlcIikmJiFlLm1hdGNoKFwiQ2hyb21lXCIpKSk7fXJldHVybiBKfWZ1bmN0aW9uIFkodCl7dHJ5e2NvbnN0IHI9ZVt0XTtyZXR1cm4gci5zZXRJdGVtKFwiX21hcGJveF90ZXN0X1wiLDEpLHIucmVtb3ZlSXRlbShcIl9tYXBib3hfdGVzdF9cIiksITB9Y2F0Y2godCl7cmV0dXJuICExfX1mdW5jdGlvbiBXKHQsZSl7cmV0dXJuIFt0WzQqZV0sdFs0KmUrMV0sdFs0KmUrMl0sdFs0KmUrM11dfWNvbnN0IFE9XCJtYXBib3gtdGlsZXNcIjtsZXQgdHQ9NTAwLGV0PTUwO2xldCBydCxudDtmdW5jdGlvbiBpdCgpe3RyeXtyZXR1cm4gZS5jYWNoZXN9Y2F0Y2godCl7fX1mdW5jdGlvbiBzdCgpe2l0KCkmJiFydCYmKHJ0PWUuY2FjaGVzLm9wZW4oUSkpO31mdW5jdGlvbiBhdCh0KXtjb25zdCBlPXQuaW5kZXhPZihcIj9cIik7aWYoZTwwKXJldHVybiB0O2NvbnN0IHI9ZnVuY3Rpb24odCl7Y29uc3QgZT10LmluZGV4T2YoXCI/XCIpO3JldHVybiBlPjA/dC5zbGljZShlKzEpLnNwbGl0KFwiJlwiKTpbXX0odCksbj1yLmZpbHRlcigodD0+e2NvbnN0IGU9dC5zcGxpdChcIj1cIik7cmV0dXJuIFwibGFuZ3VhZ2VcIj09PWVbMF18fFwid29ybGR2aWV3XCI9PT1lWzBdfSkpO3JldHVybiBuLmxlbmd0aD9gJHt0LnNsaWNlKDAsZSl9PyR7bi5qb2luKFwiJlwiKX1gOnQuc2xpY2UoMCxlKX1sZXQgb3Q9MS8wO2NvbnN0IGx0PXtVbmtub3duOlwiVW5rbm93blwiLFN0eWxlOlwiU3R5bGVcIixTb3VyY2U6XCJTb3VyY2VcIixUaWxlOlwiVGlsZVwiLEdseXBoczpcIkdseXBoc1wiLFNwcml0ZUltYWdlOlwiU3ByaXRlSW1hZ2VcIixTcHJpdGVKU09OOlwiU3ByaXRlSlNPTlwiLEltYWdlOlwiSW1hZ2VcIn07XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmZyZWV6ZSYmT2JqZWN0LmZyZWV6ZShsdCk7Y2xhc3MgdXQgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LGUscil7NDAxPT09ZSYmYnQocikmJih0Kz1cIjogeW91IG1heSBoYXZlIHByb3ZpZGVkIGFuIGludmFsaWQgTWFwYm94IGFjY2VzcyB0b2tlbi4gU2VlIGh0dHBzOi8vZG9jcy5tYXBib3guY29tL2FwaS9vdmVydmlldy8jYWNjZXNzLXRva2Vucy1hbmQtdG9rZW4tc2NvcGVzXCIpLHN1cGVyKHQpLHRoaXMuc3RhdHVzPWUsdGhpcy51cmw9cjt9dG9TdHJpbmcoKXtyZXR1cm4gYCR7dGhpcy5uYW1lfTogJHt0aGlzLm1lc3NhZ2V9ICgke3RoaXMuc3RhdHVzfSk6ICR7dGhpcy51cmx9YH19Y29uc3QgY3Q9SygpPygpPT5zZWxmLndvcmtlciYmc2VsZi53b3JrZXIucmVmZXJyZXI6KCk9PihcImJsb2I6XCI9PT1lLmxvY2F0aW9uLnByb3RvY29sP2UucGFyZW50OmUpLmxvY2F0aW9uLmhyZWY7Y29uc3QgaHQ9ZnVuY3Rpb24odCxyKXtpZighKC9eZmlsZTovLnRlc3Qobj10LnVybCl8fC9eZmlsZTovLnRlc3QoY3QoKSkmJiEvXlxcdys6Ly50ZXN0KG4pKSl7aWYoZS5mZXRjaCYmZS5SZXF1ZXN0JiZlLkFib3J0Q29udHJvbGxlciYmZS5SZXF1ZXN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eShcInNpZ25hbFwiKSlyZXR1cm4gZnVuY3Rpb24odCxyKXtjb25zdCBuPW5ldyBlLkFib3J0Q29udHJvbGxlcixpPW5ldyBlLlJlcXVlc3QodC51cmwse21ldGhvZDp0Lm1ldGhvZHx8XCJHRVRcIixib2R5OnQuYm9keSxjcmVkZW50aWFsczp0LmNyZWRlbnRpYWxzLGhlYWRlcnM6dC5oZWFkZXJzLHJlZmVycmVyOmN0KCkscmVmZXJyZXJQb2xpY3k6dC5yZWZlcnJlclBvbGljeSxzaWduYWw6bi5zaWduYWx9KTtsZXQgcz0hMSxhPSExO2NvbnN0IG89KGw9aS51cmwpLmluZGV4T2YoXCJza3U9XCIpPjAmJmJ0KGwpO3ZhciBsO1wianNvblwiPT09dC50eXBlJiZpLmhlYWRlcnMuc2V0KFwiQWNjZXB0XCIsXCJhcHBsaWNhdGlvbi9qc29uXCIpO2NvbnN0IHU9KG4scyxsKT0+e2lmKGEpcmV0dXJuO2lmKG4mJlwiU2VjdXJpdHlFcnJvclwiIT09bi5tZXNzYWdlJiZOKG4udG9TdHJpbmcoKSkscyYmbClyZXR1cm4gYyhzKTtjb25zdCB1PURhdGUubm93KCk7ZS5mZXRjaChpKS50aGVuKChlPT57aWYoZS5vayl7Y29uc3QgdD1vP2UuY2xvbmUoKTpudWxsO3JldHVybiBjKGUsdCx1KX1yZXR1cm4gcihuZXcgdXQoZS5zdGF0dXNUZXh0LGUuc3RhdHVzLHQudXJsKSl9KSkuY2F0Y2goKGU9PntcIkFib3J0RXJyb3JcIiE9PWUubmFtZSYmcihuZXcgRXJyb3IoYCR7ZS5tZXNzYWdlfSAke3QudXJsfWApKTt9KSk7fSxjPShuLG8sbCk9PnsoXCJhcnJheUJ1ZmZlclwiPT09dC50eXBlP24uYXJyYXlCdWZmZXIoKTpcImpzb25cIj09PXQudHlwZT9uLmpzb24oKTpuLnRleHQoKSkudGhlbigodD0+e2F8fChvJiZsJiZmdW5jdGlvbih0LHIsbil7aWYoc3QoKSwhcnQpcmV0dXJuO2NvbnN0IGk9e3N0YXR1czpyLnN0YXR1cyxzdGF0dXNUZXh0OnIuc3RhdHVzVGV4dCxoZWFkZXJzOm5ldyBlLkhlYWRlcnN9O3IuaGVhZGVycy5mb3JFYWNoKCgodCxlKT0+aS5oZWFkZXJzLnNldChlLHQpKSk7Y29uc3Qgcz1YKHIuaGVhZGVycy5nZXQoXCJDYWNoZS1Db250cm9sXCIpfHxcIlwiKTtpZihzW1wibm8tc3RvcmVcIl0pcmV0dXJuO3NbXCJtYXgtYWdlXCJdJiZpLmhlYWRlcnMuc2V0KFwiRXhwaXJlc1wiLG5ldyBEYXRlKG4rMWUzKnNbXCJtYXgtYWdlXCJdKS50b1VUQ1N0cmluZygpKTtjb25zdCBhPWkuaGVhZGVycy5nZXQoXCJFeHBpcmVzXCIpO2EmJihuZXcgRGF0ZShhKS5nZXRUaW1lKCktbjw0MmU0fHxmdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PW50KXRyeXtuZXcgUmVzcG9uc2UobmV3IFJlYWRhYmxlU3RyZWFtKSxudD0hMDt9Y2F0Y2godCl7bnQ9ITE7fW50P2UodC5ib2R5KTp0LmJsb2IoKS50aGVuKGUpO30ociwocj0+e2NvbnN0IG49bmV3IGUuUmVzcG9uc2UocixpKTtzdCgpLHJ0JiZydC50aGVuKChlPT5lLnB1dChhdCh0LnVybCksbikpKS5jYXRjaCgodD0+Tih0Lm1lc3NhZ2UpKSk7fSkpKTt9KGksbyxsKSxzPSEwLHIobnVsbCx0LG4uaGVhZGVycy5nZXQoXCJDYWNoZS1Db250cm9sXCIpLG4uaGVhZGVycy5nZXQoXCJFeHBpcmVzXCIpKSk7fSkpLmNhdGNoKCh0PT57YXx8cihuZXcgRXJyb3IodC5tZXNzYWdlKSk7fSkpO307cmV0dXJuIG8/ZnVuY3Rpb24odCxlKXtpZihzdCgpLCFydClyZXR1cm4gZShudWxsKTtjb25zdCByPWF0KHQudXJsKTtydC50aGVuKCh0PT57dC5tYXRjaChyKS50aGVuKChuPT57Y29uc3QgaT1mdW5jdGlvbih0KXtpZighdClyZXR1cm4gITE7Y29uc3QgZT1uZXcgRGF0ZSh0LmhlYWRlcnMuZ2V0KFwiRXhwaXJlc1wiKXx8MCkscj1YKHQuaGVhZGVycy5nZXQoXCJDYWNoZS1Db250cm9sXCIpfHxcIlwiKTtyZXR1cm4gZT5EYXRlLm5vdygpJiYhcltcIm5vLWNhY2hlXCJdfShuKTt0LmRlbGV0ZShyKSxpJiZ0LnB1dChyLG4uY2xvbmUoKSksZShudWxsLG4saSk7fSkpLmNhdGNoKGUpO30pKS5jYXRjaChlKTt9KGksdSk6dShudWxsLG51bGwpLHtjYW5jZWw6KCk9PnthPSEwLHN8fG4uYWJvcnQoKTt9fX0odCxyKTtpZihLKCkmJnNlbGYud29ya2VyJiZzZWxmLndvcmtlci5hY3RvcilyZXR1cm4gc2VsZi53b3JrZXIuYWN0b3Iuc2VuZChcImdldFJlc291cmNlXCIsdCxyLHZvaWQgMCwhMCl9dmFyIG47cmV0dXJuIGZ1bmN0aW9uKHQscil7Y29uc3Qgbj1uZXcgZS5YTUxIdHRwUmVxdWVzdDtuLm9wZW4odC5tZXRob2R8fFwiR0VUXCIsdC51cmwsITApLFwiYXJyYXlCdWZmZXJcIj09PXQudHlwZSYmKG4ucmVzcG9uc2VUeXBlPVwiYXJyYXlidWZmZXJcIik7Zm9yKGNvbnN0IGUgaW4gdC5oZWFkZXJzKW4uc2V0UmVxdWVzdEhlYWRlcihlLHQuaGVhZGVyc1tlXSk7cmV0dXJuIFwianNvblwiPT09dC50eXBlJiYobi5yZXNwb25zZVR5cGU9XCJ0ZXh0XCIsbi5zZXRSZXF1ZXN0SGVhZGVyKFwiQWNjZXB0XCIsXCJhcHBsaWNhdGlvbi9qc29uXCIpKSxuLndpdGhDcmVkZW50aWFscz1cImluY2x1ZGVcIj09PXQuY3JlZGVudGlhbHMsbi5vbmVycm9yPSgpPT57cihuZXcgRXJyb3Iobi5zdGF0dXNUZXh0KSk7fSxuLm9ubG9hZD0oKT0+e2lmKChuLnN0YXR1cz49MjAwJiZuLnN0YXR1czwzMDB8fDA9PT1uLnN0YXR1cykmJm51bGwhPT1uLnJlc3BvbnNlKXtsZXQgZT1uLnJlc3BvbnNlO2lmKFwianNvblwiPT09dC50eXBlKXRyeXtlPUpTT04ucGFyc2Uobi5yZXNwb25zZSk7fWNhdGNoKHQpe3JldHVybiByKHQpfXIobnVsbCxlLG4uZ2V0UmVzcG9uc2VIZWFkZXIoXCJDYWNoZS1Db250cm9sXCIpLG4uZ2V0UmVzcG9uc2VIZWFkZXIoXCJFeHBpcmVzXCIpKTt9ZWxzZSByKG5ldyB1dChuLnN0YXR1c1RleHQsbi5zdGF0dXMsdC51cmwpKTt9LG4uc2VuZCh0LmJvZHkpLHtjYW5jZWw6KCk9Pm4uYWJvcnQoKX19KHQscil9LHB0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGh0KEModCx7dHlwZTpcImFycmF5QnVmZmVyXCJ9KSxlKX07ZnVuY3Rpb24gZHQodCl7Y29uc3Qgcj1lLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO3JldHVybiByLmhyZWY9dCxyLnByb3RvY29sPT09ZS5kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCYmci5ob3N0PT09ZS5kb2N1bWVudC5sb2NhdGlvbi5ob3N0fWNvbnN0IGZ0PVwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBRUFBQUFCQ0FZQUFBQWZGY1NKQUFBQUMwbEVRVlFZVjJOZ0FBSUFBQVVBQWFyVnlGRUFBQUFBU1VWT1JLNUNZSUk9XCI7bGV0IHl0LG10O3l0PVtdLG10PTA7Y29uc3QgZ3Q9ZnVuY3Rpb24odCxyKXtpZihzLnN1cHBvcnRlZCYmKHQuaGVhZGVyc3x8KHQuaGVhZGVycz17fSksdC5oZWFkZXJzLmFjY2VwdD1cImltYWdlL3dlYnAsKi8qXCIpLG10Pj1pLk1BWF9QQVJBTExFTF9JTUFHRV9SRVFVRVNUUyl7Y29uc3QgZT17cmVxdWVzdFBhcmFtZXRlcnM6dCxjYWxsYmFjazpyLGNhbmNlbGxlZDohMSxjYW5jZWwoKXt0aGlzLmNhbmNlbGxlZD0hMDt9fTtyZXR1cm4geXQucHVzaChlKSxlfW10Kys7bGV0IG49ITE7Y29uc3QgYT0oKT0+e2lmKCFuKWZvcihuPSEwLG10LS07eXQubGVuZ3RoJiZtdDxpLk1BWF9QQVJBTExFTF9JTUFHRV9SRVFVRVNUUzspe2NvbnN0IHQ9eXQuc2hpZnQoKSx7cmVxdWVzdFBhcmFtZXRlcnM6ZSxjYWxsYmFjazpyLGNhbmNlbGxlZDpufT10O258fCh0LmNhbmNlbD1ndChlLHIpLmNhbmNlbCk7fX0sbz1wdCh0LCgodCxuLGkscyk9PnthKCksdD9yKHQpOm4mJihlLmNyZWF0ZUltYWdlQml0bWFwP2Z1bmN0aW9uKHQscil7Y29uc3Qgbj1uZXcgZS5CbG9iKFtuZXcgVWludDhBcnJheSh0KV0se3R5cGU6XCJpbWFnZS9wbmdcIn0pO2UuY3JlYXRlSW1hZ2VCaXRtYXAobikudGhlbigodD0+e3IobnVsbCx0KTt9KSkuY2F0Y2goKHQ9PntyKG5ldyBFcnJvcihgQ291bGQgbm90IGxvYWQgaW1hZ2UgYmVjYXVzZSBvZiAke3QubWVzc2FnZX0uIFBsZWFzZSBtYWtlIHN1cmUgdG8gdXNlIGEgc3VwcG9ydGVkIGltYWdlIHR5cGUgc3VjaCBhcyBQTkcgb3IgSlBFRy4gTm90ZSB0aGF0IFNWR3MgYXJlIG5vdCBzdXBwb3J0ZWQuYCkpO30pKTt9KG4sKCh0LGUpPT5yKHQsZSxpLHMpKSk6ZnVuY3Rpb24odCxyKXtjb25zdCBuPW5ldyBlLkltYWdlLGk9ZS5VUkw7bi5vbmxvYWQ9KCk9PntyKG51bGwsbiksaS5yZXZva2VPYmplY3RVUkwobi5zcmMpLG4ub25sb2FkPW51bGwsZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57bi5zcmM9ZnQ7fSkpO30sbi5vbmVycm9yPSgpPT5yKG5ldyBFcnJvcihcIkNvdWxkIG5vdCBsb2FkIGltYWdlLiBQbGVhc2UgbWFrZSBzdXJlIHRvIHVzZSBhIHN1cHBvcnRlZCBpbWFnZSB0eXBlIHN1Y2ggYXMgUE5HIG9yIEpQRUcuIE5vdGUgdGhhdCBTVkdzIGFyZSBub3Qgc3VwcG9ydGVkLlwiKSk7Y29uc3Qgcz1uZXcgZS5CbG9iKFtuZXcgVWludDhBcnJheSh0KV0se3R5cGU6XCJpbWFnZS9wbmdcIn0pO24uc3JjPXQuYnl0ZUxlbmd0aD9pLmNyZWF0ZU9iamVjdFVSTChzKTpmdDt9KG4sKCh0LGUpPT5yKHQsZSxpLHMpKSkpO30pKTtyZXR1cm4ge2NhbmNlbDooKT0+e28uY2FuY2VsKCksYSgpO319fSx4dD1cIk5PX0FDQ0VTU19UT0tFTlwiO2Z1bmN0aW9uIHZ0KHQpe3JldHVybiAwPT09dC5pbmRleE9mKFwibWFwYm94OlwiKX1mdW5jdGlvbiBidCh0KXtyZXR1cm4gaS5BUElfVVJMX1JFR0VYLnRlc3QodCl9ZnVuY3Rpb24gd3QodCl7cmV0dXJuIGkuQVBJX0NETl9VUkxfUkVHRVgudGVzdCh0KX1mdW5jdGlvbiBfdCh0KXtyZXR1cm4gaS5BUElfU1RZTEVfUkVHRVgudGVzdCh0KSYmIUF0KHQpfWZ1bmN0aW9uIEF0KHQpe3JldHVybiBpLkFQSV9TUFJJVEVfUkVHRVgudGVzdCh0KX1jb25zdCBTdD0vXihcXHcrKTpcXC9cXC8oW14vP10qKShcXC9bXj9dKyk/XFw/PyguKyk/LztmdW5jdGlvbiBrdCh0KXtjb25zdCBlPXQubWF0Y2goU3QpO2lmKCFlKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBwYXJzZSBVUkwgb2JqZWN0XCIpO3JldHVybiB7cHJvdG9jb2w6ZVsxXSxhdXRob3JpdHk6ZVsyXSxwYXRoOmVbM118fFwiL1wiLHBhcmFtczplWzRdP2VbNF0uc3BsaXQoXCImXCIpOltdfX1mdW5jdGlvbiBJdCh0KXtjb25zdCBlPXQucGFyYW1zLmxlbmd0aD9gPyR7dC5wYXJhbXMuam9pbihcIiZcIil9YDpcIlwiO3JldHVybiBgJHt0LnByb3RvY29sfTovLyR7dC5hdXRob3JpdHl9JHt0LnBhdGh9JHtlfWB9Y29uc3QgTXQ9XCJtYXBib3guZXZlbnREYXRhXCI7ZnVuY3Rpb24gVHQodCl7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3Qgcj10LnNwbGl0KFwiLlwiKTtpZighcnx8MyE9PXIubGVuZ3RoKXJldHVybiBudWxsO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQoZS5hdG9iKHJbMV0pLnNwbGl0KFwiXCIpLm1hcCgodD0+XCIlXCIrKFwiMDBcIit0LmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikpKS5qb2luKFwiXCIpKSl9Y2F0Y2godCl7cmV0dXJuIG51bGx9fWNsYXNzIHp0e2NvbnN0cnVjdG9yKHQpe3RoaXMudHlwZT10LHRoaXMuYW5vbklkPW51bGwsdGhpcy5ldmVudERhdGE9e30sdGhpcy5xdWV1ZT1bXSx0aGlzLnBlbmRpbmdSZXF1ZXN0PW51bGw7fWdldFN0b3JhZ2VLZXkodCl7Y29uc3Qgcj1UdChpLkFDQ0VTU19UT0tFTik7bGV0IG49XCJcIjtyZXR1cm4gbj1yJiZyLnU/ZS5idG9hKGVuY29kZVVSSUNvbXBvbmVudChyLnUpLnJlcGxhY2UoLyUoWzAtOUEtRl17Mn0pL2csKCh0LGUpPT5TdHJpbmcuZnJvbUNoYXJDb2RlKE51bWJlcihcIjB4XCIrZSkpKSkpOmkuQUNDRVNTX1RPS0VOfHxcIlwiLHQ/YCR7TXR9LiR7dH06JHtufWA6YCR7TXR9OiR7bn1gfWZldGNoRXZlbnREYXRhKCl7Y29uc3QgdD1ZKFwibG9jYWxTdG9yYWdlXCIpLHI9dGhpcy5nZXRTdG9yYWdlS2V5KCksbj10aGlzLmdldFN0b3JhZ2VLZXkoXCJ1dWlkXCIpO2lmKHQpdHJ5e2NvbnN0IHQ9ZS5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShyKTt0JiYodGhpcy5ldmVudERhdGE9SlNPTi5wYXJzZSh0KSk7Y29uc3QgaT1lLmxvY2FsU3RvcmFnZS5nZXRJdGVtKG4pO2kmJih0aGlzLmFub25JZD1pKTt9Y2F0Y2godCl7TihcIlVuYWJsZSB0byByZWFkIGZyb20gTG9jYWxTdG9yYWdlXCIpO319c2F2ZUV2ZW50RGF0YSgpe2NvbnN0IHQ9WShcImxvY2FsU3RvcmFnZVwiKSxyPXRoaXMuZ2V0U3RvcmFnZUtleSgpLG49dGhpcy5nZXRTdG9yYWdlS2V5KFwidXVpZFwiKTtpZih0KXRyeXtlLmxvY2FsU3RvcmFnZS5zZXRJdGVtKG4sdGhpcy5hbm9uSWQpLE9iamVjdC5rZXlzKHRoaXMuZXZlbnREYXRhKS5sZW5ndGg+PTEmJmUubG9jYWxTdG9yYWdlLnNldEl0ZW0ocixKU09OLnN0cmluZ2lmeSh0aGlzLmV2ZW50RGF0YSkpO31jYXRjaCh0KXtOKFwiVW5hYmxlIHRvIHdyaXRlIHRvIExvY2FsU3RvcmFnZVwiKTt9fXByb2Nlc3NSZXF1ZXN0cyh0KXt9cG9zdEV2ZW50KHQsZSxyLG4pe2lmKCFpLkVWRU5UU19VUkwpcmV0dXJuO2NvbnN0IHM9a3QoaS5FVkVOVFNfVVJMKTtzLnBhcmFtcy5wdXNoKGBhY2Nlc3NfdG9rZW49JHtufHxpLkFDQ0VTU19UT0tFTnx8XCJcIn1gKTtjb25zdCBhPXtldmVudDp0aGlzLnR5cGUsY3JlYXRlZDpuZXcgRGF0ZSh0KS50b0lTT1N0cmluZygpfSxvPWU/QyhhLGUpOmEsbD17dXJsOkl0KHMpLGhlYWRlcnM6e1wiQ29udGVudC1UeXBlXCI6XCJ0ZXh0L3BsYWluXCJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoW29dKX07dGhpcy5wZW5kaW5nUmVxdWVzdD1mdW5jdGlvbih0LGUpe3JldHVybiBodChDKHQse21ldGhvZDpcIlBPU1RcIn0pLGUpfShsLCh0PT57dGhpcy5wZW5kaW5nUmVxdWVzdD1udWxsLHIodCksdGhpcy5zYXZlRXZlbnREYXRhKCksdGhpcy5wcm9jZXNzUmVxdWVzdHMobik7fSkpO31xdWV1ZVJlcXVlc3QodCxlKXt0aGlzLnF1ZXVlLnB1c2godCksdGhpcy5wcm9jZXNzUmVxdWVzdHMoZSk7fX1jb25zdCBCdD1uZXcgY2xhc3MgZXh0ZW5kcyB6dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcihcImFwcFVzZXJUdXJuc3RpbGVcIiksdGhpcy5fY3VzdG9tQWNjZXNzVG9rZW49dDt9cG9zdFR1cm5zdGlsZUV2ZW50KHQsZSl7aS5FVkVOVFNfVVJMJiZpLkFDQ0VTU19UT0tFTiYmQXJyYXkuaXNBcnJheSh0KSYmdC5zb21lKCh0PT52dCh0KXx8YnQodCkpKSYmdGhpcy5xdWV1ZVJlcXVlc3QoRGF0ZS5ub3coKSxlKTt9cHJvY2Vzc1JlcXVlc3RzKHQpe2lmKHRoaXMucGVuZGluZ1JlcXVlc3R8fDA9PT10aGlzLnF1ZXVlLmxlbmd0aClyZXR1cm47dGhpcy5hbm9uSWQmJnRoaXMuZXZlbnREYXRhLmxhc3RTdWNjZXNzJiZ0aGlzLmV2ZW50RGF0YS50b2tlblV8fHRoaXMuZmV0Y2hFdmVudERhdGEoKTtjb25zdCBlPVR0KGkuQUNDRVNTX1RPS0VOKSxuPWU/ZS51OmkuQUNDRVNTX1RPS0VOO2xldCBzPW4hPT10aGlzLmV2ZW50RGF0YS50b2tlblU7Rih0aGlzLmFub25JZCl8fCh0aGlzLmFub25JZD1WKCkscz0hMCk7Y29uc3QgYT10aGlzLnF1ZXVlLnNoaWZ0KCk7aWYodGhpcy5ldmVudERhdGEubGFzdFN1Y2Nlc3Mpe2NvbnN0IHQ9bmV3IERhdGUodGhpcy5ldmVudERhdGEubGFzdFN1Y2Nlc3MpLGU9bmV3IERhdGUoYSkscj0oYS10aGlzLmV2ZW50RGF0YS5sYXN0U3VjY2VzcykvODY0ZTU7cz1zfHxyPj0xfHxyPC0xfHx0LmdldERhdGUoKSE9PWUuZ2V0RGF0ZSgpO31lbHNlIHM9ITA7cz90aGlzLnBvc3RFdmVudChhLHtzZGtJZGVudGlmaWVyOlwibWFwYm94LWdsLWpzXCIsc2RrVmVyc2lvbjpyLHNrdUlkOmgsXCJlbmFibGVkLnRlbGVtZXRyeVwiOiExLHVzZXJJZDp0aGlzLmFub25JZH0sKHQ9Pnt0fHwodGhpcy5ldmVudERhdGEubGFzdFN1Y2Nlc3M9YSx0aGlzLmV2ZW50RGF0YS50b2tlblU9bik7fSksdCk6dGhpcy5wcm9jZXNzUmVxdWVzdHMoKTt9fSxFdD1CdC5wb3N0VHVybnN0aWxlRXZlbnQuYmluZChCdCksQ3Q9bmV3IGNsYXNzIGV4dGVuZHMgenR7Y29uc3RydWN0b3IoKXtzdXBlcihcIm1hcC5sb2FkXCIpLHRoaXMuc3VjY2Vzcz17fSx0aGlzLnNrdVRva2VuPVwiXCI7fXBvc3RNYXBMb2FkRXZlbnQodCxlLHIsbil7dGhpcy5za3VUb2tlbj1lLHRoaXMuZXJyb3JDYj1uLGkuRVZFTlRTX1VSTCYmKHJ8fGkuQUNDRVNTX1RPS0VOP3RoaXMucXVldWVSZXF1ZXN0KHtpZDp0LHRpbWVzdGFtcDpEYXRlLm5vdygpfSxyKTp0aGlzLmVycm9yQ2IobmV3IEVycm9yKHh0KSkpO31wcm9jZXNzUmVxdWVzdHModCl7aWYodGhpcy5wZW5kaW5nUmVxdWVzdHx8MD09PXRoaXMucXVldWUubGVuZ3RoKXJldHVybjtjb25zdHtpZDplLHRpbWVzdGFtcDpufT10aGlzLnF1ZXVlLnNoaWZ0KCk7ZSYmdGhpcy5zdWNjZXNzW2VdfHwodGhpcy5hbm9uSWR8fHRoaXMuZmV0Y2hFdmVudERhdGEoKSxGKHRoaXMuYW5vbklkKXx8KHRoaXMuYW5vbklkPVYoKSksdGhpcy5wb3N0RXZlbnQobix7c2RrSWRlbnRpZmllcjpcIm1hcGJveC1nbC1qc1wiLHNka1ZlcnNpb246cixza3VJZDpoLHNrdVRva2VuOnRoaXMuc2t1VG9rZW4sdXNlcklkOnRoaXMuYW5vbklkfSwodD0+e3Q/dGhpcy5lcnJvckNiKHQpOmUmJih0aGlzLnN1Y2Nlc3NbZV09ITApO30pLHQpKTt9fSxQdD1DdC5wb3N0TWFwTG9hZEV2ZW50LmJpbmQoQ3QpLER0PW5ldyBjbGFzcyBleHRlbmRzIHp0e2NvbnN0cnVjdG9yKCl7c3VwZXIoXCJnbGpzLnBlcmZvcm1hbmNlXCIpO31wb3N0UGVyZm9ybWFuY2VFdmVudCh0LGUpe2kuRVZFTlRTX1VSTCYmKHR8fGkuQUNDRVNTX1RPS0VOKSYmdGhpcy5xdWV1ZVJlcXVlc3Qoe3RpbWVzdGFtcDpEYXRlLm5vdygpLHBlcmZvcm1hbmNlRGF0YTplfSx0KTt9cHJvY2Vzc1JlcXVlc3RzKHQpe2lmKHRoaXMucGVuZGluZ1JlcXVlc3R8fDA9PT10aGlzLnF1ZXVlLmxlbmd0aClyZXR1cm47Y29uc3R7dGltZXN0YW1wOm4scGVyZm9ybWFuY2VEYXRhOml9PXRoaXMucXVldWUuc2hpZnQoKSxzPWZ1bmN0aW9uKHQpe2NvbnN0IG49ZS5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKFwicmVzb3VyY2VcIiksaT1lLnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoXCJtYXJrXCIpLHM9ZnVuY3Rpb24odCl7Y29uc3QgZT17fTtpZih0KWZvcihjb25zdCByIGluIHQpaWYoXCJvdGhlclwiIT09cilmb3IoY29uc3QgbiBvZiB0W3JdKXtjb25zdCB0PWAke3J9UmVzb2x2ZVJhbmdlTWluYCxpPWAke3J9UmVzb2x2ZVJhbmdlTWF4YCxzPWAke3J9UmVxdWVzdENvdW50YCxhPWAke3J9UmVxdWVzdENhY2hlZENvdW50YDtlW3RdPU1hdGgubWluKGVbdF18fDEvMCxuLnN0YXJ0VGltZSksZVtpXT1NYXRoLm1heChlW2ldfHwtMS8wLG4ucmVzcG9uc2VFbmQpO2NvbnN0IG89dD0+e3ZvaWQgMD09PWVbdF0mJihlW3RdPTApLCsrZVt0XTt9O3ZvaWQgMCE9PW4udHJhbnNmZXJTaXplJiYwPT09bi50cmFuc2ZlclNpemUmJm8oYSksbyhzKTt9cmV0dXJuIGV9KGZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj17fTtpZih0KWZvcihjb25zdCBuIG9mIHQpe2NvbnN0IHQ9ZShuKTt2b2lkIDA9PT1yW3RdJiYoclt0XT1bXSksclt0XS5wdXNoKG4pO31yZXR1cm4gcn0obixqdCkpLGE9ZS5kZXZpY2VQaXhlbFJhdGlvLG89ZS5uYXZpZ2F0b3IuY29ubmVjdGlvbnx8ZS5uYXZpZ2F0b3IubW96Q29ubmVjdGlvbnx8ZS5uYXZpZ2F0b3Iud2Via2l0Q29ubmVjdGlvbixsPXtjb3VudGVyczpbXSxtZXRhZGF0YTpbXSxhdHRyaWJ1dGVzOltdfSx1PSh0LGUscik9PntudWxsIT1yJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpyLnRvU3RyaW5nKCl9KTt9O2Zvcihjb25zdCB0IGluIHMpdShsLmNvdW50ZXJzLHQsc1t0XSk7aWYodC5pbnRlcmFjdGlvblJhbmdlWzBdIT09MS8wJiZ0LmludGVyYWN0aW9uUmFuZ2VbMV0hPT0tMS8wJiYodShsLmNvdW50ZXJzLFwiaW50ZXJhY3Rpb25SYW5nZU1pblwiLHQuaW50ZXJhY3Rpb25SYW5nZVswXSksdShsLmNvdW50ZXJzLFwiaW50ZXJhY3Rpb25SYW5nZU1heFwiLHQuaW50ZXJhY3Rpb25SYW5nZVsxXSkpLGkpZm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoVXQpKXtjb25zdCBlPVV0W3RdLHI9aS5maW5kKCh0PT50Lm5hbWU9PT1lKSk7ciYmdShsLmNvdW50ZXJzLGUsci5zdGFydFRpbWUpO31yZXR1cm4gdShsLmNvdW50ZXJzLFwidmlzaWJpbGl0eUhpZGRlblwiLHQudmlzaWJpbGl0eUhpZGRlbiksdShsLmF0dHJpYnV0ZXMsXCJzdHlsZVwiLGZ1bmN0aW9uKHQpe2lmKHQpZm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1lLm5hbWUuc3BsaXQoXCI/XCIpWzBdO2lmKF90KHQpKXtjb25zdCBlPXQuc3BsaXQoXCIvXCIpLnNsaWNlKC0yKTtpZigyPT09ZS5sZW5ndGgpcmV0dXJuIGBtYXBib3g6Ly9zdHlsZXMvJHtlWzBdfS8ke2VbMV19YH19fShuKSksdShsLmF0dHJpYnV0ZXMsXCJ0ZXJyYWluRW5hYmxlZFwiLHQudGVycmFpbkVuYWJsZWQ/XCJ0cnVlXCI6XCJmYWxzZVwiKSx1KGwuYXR0cmlidXRlcyxcImZvZ0VuYWJsZWRcIix0LmZvZ0VuYWJsZWQ/XCJ0cnVlXCI6XCJmYWxzZVwiKSx1KGwuYXR0cmlidXRlcyxcInByb2plY3Rpb25cIix0LnByb2plY3Rpb24pLHUobC5hdHRyaWJ1dGVzLFwiem9vbVwiLHQuem9vbSksdShsLm1ldGFkYXRhLFwiZGV2aWNlUGl4ZWxSYXRpb1wiLGEpLHUobC5tZXRhZGF0YSxcImNvbm5lY3Rpb25FZmZlY3RpdmVUeXBlXCIsbz9vLmVmZmVjdGl2ZVR5cGU6dm9pZCAwKSx1KGwubWV0YWRhdGEsXCJuYXZpZ2F0b3JVc2VyQWdlbnRcIixlLm5hdmlnYXRvci51c2VyQWdlbnQpLHUobC5tZXRhZGF0YSxcInNjcmVlbldpZHRoXCIsZS5zY3JlZW4ud2lkdGgpLHUobC5tZXRhZGF0YSxcInNjcmVlbkhlaWdodFwiLGUuc2NyZWVuLmhlaWdodCksdShsLm1ldGFkYXRhLFwid2luZG93V2lkdGhcIixlLmlubmVyV2lkdGgpLHUobC5tZXRhZGF0YSxcIndpbmRvd0hlaWdodFwiLGUuaW5uZXJIZWlnaHQpLHUobC5tZXRhZGF0YSxcIm1hcFdpZHRoXCIsdC53aWR0aC9hKSx1KGwubWV0YWRhdGEsXCJtYXBIZWlnaHRcIix0LmhlaWdodC9hKSx1KGwubWV0YWRhdGEsXCJ3ZWJnbFJlbmRlcmVyXCIsdC5yZW5kZXJlciksdShsLm1ldGFkYXRhLFwid2ViZ2xWZW5kb3JcIix0LnZlbmRvciksdShsLm1ldGFkYXRhLFwic2RrVmVyc2lvblwiLHIpLHUobC5tZXRhZGF0YSxcInNka0lkZW50aWZpZXJcIixcIm1hcGJveC1nbC1qc1wiKSxsfShpKTtmb3IoY29uc3QgdCBvZiBzLm1ldGFkYXRhKTtmb3IoY29uc3QgdCBvZiBzLmNvdW50ZXJzKTtmb3IoY29uc3QgdCBvZiBzLmF0dHJpYnV0ZXMpO3RoaXMucG9zdEV2ZW50KG4scywoKCk9Pnt9KSx0KTt9fSxWdD1EdC5wb3N0UGVyZm9ybWFuY2VFdmVudC5iaW5kKER0KSxMdD1uZXcgY2xhc3MgZXh0ZW5kcyB6dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKFwibWFwLmF1dGhcIiksdGhpcy5zdWNjZXNzPXt9LHRoaXMuc2t1VG9rZW49XCJcIjt9Z2V0U2Vzc2lvbih0LGUscixuKXtpZighaS5BUElfVVJMfHwhaS5TRVNTSU9OX1BBVEgpcmV0dXJuO2NvbnN0IHM9a3QoaS5BUElfVVJMK2kuU0VTU0lPTl9QQVRIKTtzLnBhcmFtcy5wdXNoKGBza3U9JHtlfHxcIlwifWApLHMucGFyYW1zLnB1c2goYGFjY2Vzc190b2tlbj0ke258fGkuQUNDRVNTX1RPS0VOfHxcIlwifWApO2NvbnN0IGE9e3VybDpJdChzKSxoZWFkZXJzOntcIkNvbnRlbnQtVHlwZVwiOlwidGV4dC9wbGFpblwifX07dGhpcy5wZW5kaW5nUmVxdWVzdD1mdW5jdGlvbih0LGUpe3JldHVybiBodChDKHQse21ldGhvZDpcIkdFVFwifSksZSl9KGEsKHQ9Pnt0aGlzLnBlbmRpbmdSZXF1ZXN0PW51bGwscih0KSx0aGlzLnNhdmVFdmVudERhdGEoKSx0aGlzLnByb2Nlc3NSZXF1ZXN0cyhuKTt9KSk7fWdldFNlc3Npb25BUEkodCxlLHIsbil7dGhpcy5za3VUb2tlbj1lLHRoaXMuZXJyb3JDYj1uLGkuU0VTU0lPTl9QQVRIJiZpLkFQSV9VUkwmJihyfHxpLkFDQ0VTU19UT0tFTj90aGlzLnF1ZXVlUmVxdWVzdCh7aWQ6dCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0scik6dGhpcy5lcnJvckNiKG5ldyBFcnJvcih4dCkpKTt9cHJvY2Vzc1JlcXVlc3RzKHQpe2lmKHRoaXMucGVuZGluZ1JlcXVlc3R8fDA9PT10aGlzLnF1ZXVlLmxlbmd0aClyZXR1cm47Y29uc3R7aWQ6ZSx0aW1lc3RhbXA6cn09dGhpcy5xdWV1ZS5zaGlmdCgpO2UmJnRoaXMuc3VjY2Vzc1tlXXx8dGhpcy5nZXRTZXNzaW9uKHIsdGhpcy5za3VUb2tlbiwodD0+e3Q/dGhpcy5lcnJvckNiKHQpOmUmJih0aGlzLnN1Y2Nlc3NbZV09ITApO30pLHQpO319LEZ0PUx0LmdldFNlc3Npb25BUEkuYmluZChMdCksUnQ9bmV3IFNldCxVdD17Y3JlYXRlOlwiY3JlYXRlXCIsbG9hZDpcImxvYWRcIixmdWxsTG9hZDpcImZ1bGxMb2FkXCJ9LCR0PXttYXJrKHQpe2UucGVyZm9ybWFuY2UubWFyayh0KTt9LG1lYXN1cmUodCxyLG4pe2UucGVyZm9ybWFuY2UubWVhc3VyZSh0LHIsbik7fX07ZnVuY3Rpb24ganQodCl7Y29uc3QgZT10Lm5hbWUuc3BsaXQoXCI/XCIpWzBdO3JldHVybiB3dChlKSYmZS5pbmNsdWRlcyhcIm1hcGJveC1nbC5qc1wiKT9cImphdmFzY3JpcHRcIjp3dChlKSYmZS5pbmNsdWRlcyhcIm1hcGJveC1nbC5jc3NcIik/XCJjc3NcIjpmdW5jdGlvbih0KXtyZXR1cm4gaS5BUElfRk9OVFNfUkVHRVgudGVzdCh0KX0oZSk/XCJmb250UmFuZ2VcIjpBdChlKT9cInNwcml0ZVwiOl90KGUpP1wic3R5bGVcIjpmdW5jdGlvbih0KXtyZXR1cm4gaS5BUElfVElMRUpTT05fUkVHRVgudGVzdCh0KX0oZSk/XCJ0aWxlanNvblwiOlwib3RoZXJcIn1jb25zdCBPdD1lLnBlcmZvcm1hbmNlO2Z1bmN0aW9uIHF0KHQpe2NvbnN0IGU9dD90LnVybC50b1N0cmluZygpOnZvaWQgMDtyZXR1cm4gT3QuZ2V0RW50cmllc0J5TmFtZShlKX1sZXQgTnQsR3QsWnQsS3Q7Y29uc3QgWHQ9e25vdzooKT0+dm9pZCAwIT09WnQ/WnQ6ZS5wZXJmb3JtYW5jZS5ub3coKSxzZXROb3codCl7WnQ9dDt9LHJlc3RvcmVOb3coKXtadD12b2lkIDA7fSxmcmFtZSh0KXtjb25zdCByPWUucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpO3JldHVybiB7Y2FuY2VsOigpPT5lLmNhbmNlbEFuaW1hdGlvbkZyYW1lKHIpfX0sZ2V0SW1hZ2VEYXRhKHQscj0wKXtjb25zdHt3aWR0aDpuLGhlaWdodDppfT10O0t0fHwoS3Q9ZS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpKTtjb25zdCBzPUt0LmdldENvbnRleHQoXCIyZFwiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KTtpZighcyl0aHJvdyBuZXcgRXJyb3IoXCJmYWlsZWQgdG8gY3JlYXRlIGNhbnZhcyAyZCBjb250ZXh0XCIpO3JldHVybiAobj5LdC53aWR0aHx8aT5LdC5oZWlnaHQpJiYoS3Qud2lkdGg9bixLdC5oZWlnaHQ9aSkscy5jbGVhclJlY3QoLXIsLXIsbisyKnIsaSsyKnIpLHMuZHJhd0ltYWdlKHQsMCwwLG4saSkscy5nZXRJbWFnZURhdGEoLXIsLXIsbisyKnIsaSsyKnIpfSxyZXNvbHZlVVJMOnQ9PihOdHx8KE50PWUuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIikpLE50LmhyZWY9dCxOdC5ocmVmKSxnZXQgZGV2aWNlUGl4ZWxSYXRpbygpe3JldHVybiBlLmRldmljZVBpeGVsUmF0aW99LGdldCBwcmVmZXJzUmVkdWNlZE1vdGlvbigpe3JldHVybiAhIWUubWF0Y2hNZWRpYSYmKG51bGw9PUd0JiYoR3Q9ZS5tYXRjaE1lZGlhKFwiKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSlcIikpLEd0Lm1hdGNoZXMpfX07ZnVuY3Rpb24gSnQodCxlLHIpe3JbdF0mJi0xIT09clt0XS5pbmRleE9mKGUpfHwoclt0XT1yW3RdfHxbXSxyW3RdLnB1c2goZSkpO31mdW5jdGlvbiBIdCh0LGUscil7aWYociYmclt0XSl7Y29uc3Qgbj1yW3RdLmluZGV4T2YoZSk7LTEhPT1uJiZyW3RdLnNwbGljZShuLDEpO319Y2xhc3MgWXR7Y29uc3RydWN0b3IodCxlPXt9KXtDKHRoaXMsZSksdGhpcy50eXBlPXQ7fX1jbGFzcyBXdCBleHRlbmRzIFl0e2NvbnN0cnVjdG9yKHQsZT17fSl7c3VwZXIoXCJlcnJvclwiLEMoe2Vycm9yOnR9LGUpKTt9fWNsYXNzIFF0e29uKHQsZSl7cmV0dXJuIHRoaXMuX2xpc3RlbmVycz10aGlzLl9saXN0ZW5lcnN8fHt9LEp0KHQsZSx0aGlzLl9saXN0ZW5lcnMpLHRoaXN9b2ZmKHQsZSl7cmV0dXJuIEh0KHQsZSx0aGlzLl9saXN0ZW5lcnMpLEh0KHQsZSx0aGlzLl9vbmVUaW1lTGlzdGVuZXJzKSx0aGlzfW9uY2UodCxlKXtyZXR1cm4gZT8odGhpcy5fb25lVGltZUxpc3RlbmVycz10aGlzLl9vbmVUaW1lTGlzdGVuZXJzfHx7fSxKdCh0LGUsdGhpcy5fb25lVGltZUxpc3RlbmVycyksdGhpcyk6bmV3IFByb21pc2UoKGU9PnRoaXMub25jZSh0LGUpKSl9ZmlyZSh0LGUpe1wic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1uZXcgWXQodCxlfHx7fSkpO2NvbnN0IHI9dC50eXBlO2lmKHRoaXMubGlzdGVucyhyKSl7dC50YXJnZXQ9dGhpcztjb25zdCBlPXRoaXMuX2xpc3RlbmVycyYmdGhpcy5fbGlzdGVuZXJzW3JdP3RoaXMuX2xpc3RlbmVyc1tyXS5zbGljZSgpOltdO2Zvcihjb25zdCByIG9mIGUpci5jYWxsKHRoaXMsdCk7Y29uc3Qgbj10aGlzLl9vbmVUaW1lTGlzdGVuZXJzJiZ0aGlzLl9vbmVUaW1lTGlzdGVuZXJzW3JdP3RoaXMuX29uZVRpbWVMaXN0ZW5lcnNbcl0uc2xpY2UoKTpbXTtmb3IoY29uc3QgZSBvZiBuKUh0KHIsZSx0aGlzLl9vbmVUaW1lTGlzdGVuZXJzKSxlLmNhbGwodGhpcyx0KTtjb25zdCBpPXRoaXMuX2V2ZW50ZWRQYXJlbnQ7aSYmKEModCxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLl9ldmVudGVkUGFyZW50RGF0YT90aGlzLl9ldmVudGVkUGFyZW50RGF0YSgpOnRoaXMuX2V2ZW50ZWRQYXJlbnREYXRhKSxpLmZpcmUodCkpO31lbHNlIHQgaW5zdGFuY2VvZiBXdCYmY29uc29sZS5lcnJvcih0LmVycm9yKTtyZXR1cm4gdGhpc31saXN0ZW5zKHQpe3JldHVybiAhISh0aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVyc1t0XSYmdGhpcy5fbGlzdGVuZXJzW3RdLmxlbmd0aD4wfHx0aGlzLl9vbmVUaW1lTGlzdGVuZXJzJiZ0aGlzLl9vbmVUaW1lTGlzdGVuZXJzW3RdJiZ0aGlzLl9vbmVUaW1lTGlzdGVuZXJzW3RdLmxlbmd0aD4wfHx0aGlzLl9ldmVudGVkUGFyZW50JiZ0aGlzLl9ldmVudGVkUGFyZW50Lmxpc3RlbnModCkpfXNldEV2ZW50ZWRQYXJlbnQodCxlKXtyZXR1cm4gdGhpcy5fZXZlbnRlZFBhcmVudD10LHRoaXMuX2V2ZW50ZWRQYXJlbnREYXRhPWUsdGhpc319dmFyIHRlPUpTT04ucGFyc2UoJ3tcIiR2ZXJzaW9uXCI6OCxcIiRyb290XCI6e1widmVyc2lvblwiOntcInJlcXVpcmVkXCI6dHJ1ZSxcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOls4XX0sXCJuYW1lXCI6e1widHlwZVwiOlwic3RyaW5nXCJ9LFwibWV0YWRhdGFcIjp7XCJ0eXBlXCI6XCIqXCJ9LFwiY2VudGVyXCI6e1widHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJudW1iZXJcIn0sXCJ6b29tXCI6e1widHlwZVwiOlwibnVtYmVyXCJ9LFwiYmVhcmluZ1wiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJwZXJpb2RcIjozNjAsXCJ1bml0c1wiOlwiZGVncmVlc1wifSxcInBpdGNoXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MCxcInVuaXRzXCI6XCJkZWdyZWVzXCJ9LFwibGlnaHRcIjp7XCJ0eXBlXCI6XCJsaWdodFwifSxcInRlcnJhaW5cIjp7XCJ0eXBlXCI6XCJ0ZXJyYWluXCJ9LFwiZm9nXCI6e1widHlwZVwiOlwiZm9nXCJ9LFwic291cmNlc1wiOntcInJlcXVpcmVkXCI6dHJ1ZSxcInR5cGVcIjpcInNvdXJjZXNcIn0sXCJzcHJpdGVcIjp7XCJ0eXBlXCI6XCJzdHJpbmdcIn0sXCJnbHlwaHNcIjp7XCJ0eXBlXCI6XCJzdHJpbmdcIn0sXCJ0cmFuc2l0aW9uXCI6e1widHlwZVwiOlwidHJhbnNpdGlvblwifSxcInByb2plY3Rpb25cIjp7XCJ0eXBlXCI6XCJwcm9qZWN0aW9uXCJ9LFwibGF5ZXJzXCI6e1wicmVxdWlyZWRcIjp0cnVlLFwidHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJsYXllclwifX0sXCJzb3VyY2VzXCI6e1wiKlwiOntcInR5cGVcIjpcInNvdXJjZVwifX0sXCJzb3VyY2VcIjpbXCJzb3VyY2VfdmVjdG9yXCIsXCJzb3VyY2VfcmFzdGVyXCIsXCJzb3VyY2VfcmFzdGVyX2RlbVwiLFwic291cmNlX2dlb2pzb25cIixcInNvdXJjZV92aWRlb1wiLFwic291cmNlX2ltYWdlXCJdLFwic291cmNlX3ZlY3RvclwiOntcInR5cGVcIjp7XCJyZXF1aXJlZFwiOnRydWUsXCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJ2ZWN0b3JcIjp7fX19LFwidXJsXCI6e1widHlwZVwiOlwic3RyaW5nXCJ9LFwidGlsZXNcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwidmFsdWVcIjpcInN0cmluZ1wifSxcImJvdW5kc1wiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJsZW5ndGhcIjo0LFwiZGVmYXVsdFwiOlstMTgwLC04NS4wNTExMjksMTgwLDg1LjA1MTEyOV19LFwic2NoZW1lXCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wieHl6XCI6e30sXCJ0bXNcIjp7fX0sXCJkZWZhdWx0XCI6XCJ4eXpcIn0sXCJtaW56b29tXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MH0sXCJtYXh6b29tXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MjJ9LFwiYXR0cmlidXRpb25cIjp7XCJ0eXBlXCI6XCJzdHJpbmdcIn0sXCJwcm9tb3RlSWRcIjp7XCJ0eXBlXCI6XCJwcm9tb3RlSWRcIn0sXCJ2b2xhdGlsZVwiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImRlZmF1bHRcIjpmYWxzZX0sXCIqXCI6e1widHlwZVwiOlwiKlwifX0sXCJzb3VyY2VfcmFzdGVyXCI6e1widHlwZVwiOntcInJlcXVpcmVkXCI6dHJ1ZSxcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcInJhc3RlclwiOnt9fX0sXCJ1cmxcIjp7XCJ0eXBlXCI6XCJzdHJpbmdcIn0sXCJ0aWxlc1wiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwic3RyaW5nXCJ9LFwiYm91bmRzXCI6e1widHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJudW1iZXJcIixcImxlbmd0aFwiOjQsXCJkZWZhdWx0XCI6Wy0xODAsLTg1LjA1MTEyOSwxODAsODUuMDUxMTI5XX0sXCJtaW56b29tXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MH0sXCJtYXh6b29tXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MjJ9LFwidGlsZVNpemVcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjo1MTIsXCJ1bml0c1wiOlwicGl4ZWxzXCJ9LFwic2NoZW1lXCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wieHl6XCI6e30sXCJ0bXNcIjp7fX0sXCJkZWZhdWx0XCI6XCJ4eXpcIn0sXCJhdHRyaWJ1dGlvblwiOntcInR5cGVcIjpcInN0cmluZ1wifSxcInZvbGF0aWxlXCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZGVmYXVsdFwiOmZhbHNlfSxcIipcIjp7XCJ0eXBlXCI6XCIqXCJ9fSxcInNvdXJjZV9yYXN0ZXJfZGVtXCI6e1widHlwZVwiOntcInJlcXVpcmVkXCI6dHJ1ZSxcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcInJhc3Rlci1kZW1cIjp7fX19LFwidXJsXCI6e1widHlwZVwiOlwic3RyaW5nXCJ9LFwidGlsZXNcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwidmFsdWVcIjpcInN0cmluZ1wifSxcImJvdW5kc1wiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJsZW5ndGhcIjo0LFwiZGVmYXVsdFwiOlstMTgwLC04NS4wNTExMjksMTgwLDg1LjA1MTEyOV19LFwibWluem9vbVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjB9LFwibWF4em9vbVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjIyfSxcInRpbGVTaXplXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6NTEyLFwidW5pdHNcIjpcInBpeGVsc1wifSxcImF0dHJpYnV0aW9uXCI6e1widHlwZVwiOlwic3RyaW5nXCJ9LFwiZW5jb2RpbmdcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJ0ZXJyYXJpdW1cIjp7fSxcIm1hcGJveFwiOnt9fSxcImRlZmF1bHRcIjpcIm1hcGJveFwifSxcInZvbGF0aWxlXCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZGVmYXVsdFwiOmZhbHNlfSxcIipcIjp7XCJ0eXBlXCI6XCIqXCJ9fSxcInNvdXJjZV9nZW9qc29uXCI6e1widHlwZVwiOntcInJlcXVpcmVkXCI6dHJ1ZSxcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcImdlb2pzb25cIjp7fX19LFwiZGF0YVwiOntcInR5cGVcIjpcIipcIn0sXCJtYXh6b29tXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MTh9LFwiYXR0cmlidXRpb25cIjp7XCJ0eXBlXCI6XCJzdHJpbmdcIn0sXCJidWZmZXJcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxMjgsXCJtYXhpbXVtXCI6NTEyLFwibWluaW11bVwiOjB9LFwiZmlsdGVyXCI6e1widHlwZVwiOlwiKlwifSxcInRvbGVyYW5jZVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAuMzc1fSxcImNsdXN0ZXJcIjp7XCJ0eXBlXCI6XCJib29sZWFuXCIsXCJkZWZhdWx0XCI6ZmFsc2V9LFwiY2x1c3RlclJhZGl1c1wiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjUwLFwibWluaW11bVwiOjB9LFwiY2x1c3Rlck1heFpvb21cIjp7XCJ0eXBlXCI6XCJudW1iZXJcIn0sXCJjbHVzdGVyTWluUG9pbnRzXCI6e1widHlwZVwiOlwibnVtYmVyXCJ9LFwiY2x1c3RlclByb3BlcnRpZXNcIjp7XCJ0eXBlXCI6XCIqXCJ9LFwibGluZU1ldHJpY3NcIjp7XCJ0eXBlXCI6XCJib29sZWFuXCIsXCJkZWZhdWx0XCI6ZmFsc2V9LFwiZ2VuZXJhdGVJZFwiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImRlZmF1bHRcIjpmYWxzZX0sXCJwcm9tb3RlSWRcIjp7XCJ0eXBlXCI6XCJwcm9tb3RlSWRcIn19LFwic291cmNlX3ZpZGVvXCI6e1widHlwZVwiOntcInJlcXVpcmVkXCI6dHJ1ZSxcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcInZpZGVvXCI6e319fSxcInVybHNcIjp7XCJyZXF1aXJlZFwiOnRydWUsXCJ0eXBlXCI6XCJhcnJheVwiLFwidmFsdWVcIjpcInN0cmluZ1wifSxcImNvb3JkaW5hdGVzXCI6e1wicmVxdWlyZWRcIjp0cnVlLFwidHlwZVwiOlwiYXJyYXlcIixcImxlbmd0aFwiOjQsXCJ2YWx1ZVwiOntcInR5cGVcIjpcImFycmF5XCIsXCJsZW5ndGhcIjoyLFwidmFsdWVcIjpcIm51bWJlclwifX19LFwic291cmNlX2ltYWdlXCI6e1widHlwZVwiOntcInJlcXVpcmVkXCI6dHJ1ZSxcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcImltYWdlXCI6e319fSxcInVybFwiOntcInJlcXVpcmVkXCI6dHJ1ZSxcInR5cGVcIjpcInN0cmluZ1wifSxcImNvb3JkaW5hdGVzXCI6e1wicmVxdWlyZWRcIjp0cnVlLFwidHlwZVwiOlwiYXJyYXlcIixcImxlbmd0aFwiOjQsXCJ2YWx1ZVwiOntcInR5cGVcIjpcImFycmF5XCIsXCJsZW5ndGhcIjoyLFwidmFsdWVcIjpcIm51bWJlclwifX19LFwibGF5ZXJcIjp7XCJpZFwiOntcInR5cGVcIjpcInN0cmluZ1wiLFwicmVxdWlyZWRcIjp0cnVlfSxcInR5cGVcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJmaWxsXCI6e30sXCJsaW5lXCI6e30sXCJzeW1ib2xcIjp7fSxcImNpcmNsZVwiOnt9LFwiaGVhdG1hcFwiOnt9LFwiZmlsbC1leHRydXNpb25cIjp7fSxcInJhc3RlclwiOnt9LFwiaGlsbHNoYWRlXCI6e30sXCJiYWNrZ3JvdW5kXCI6e30sXCJza3lcIjp7fX0sXCJyZXF1aXJlZFwiOnRydWV9LFwibWV0YWRhdGFcIjp7XCJ0eXBlXCI6XCIqXCJ9LFwic291cmNlXCI6e1widHlwZVwiOlwic3RyaW5nXCJ9LFwic291cmNlLWxheWVyXCI6e1widHlwZVwiOlwic3RyaW5nXCJ9LFwibWluem9vbVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MjR9LFwibWF4em9vbVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MjR9LFwiZmlsdGVyXCI6e1widHlwZVwiOlwiZmlsdGVyXCJ9LFwibGF5b3V0XCI6e1widHlwZVwiOlwibGF5b3V0XCJ9LFwicGFpbnRcIjp7XCJ0eXBlXCI6XCJwYWludFwifX0sXCJsYXlvdXRcIjpbXCJsYXlvdXRfZmlsbFwiLFwibGF5b3V0X2xpbmVcIixcImxheW91dF9jaXJjbGVcIixcImxheW91dF9oZWF0bWFwXCIsXCJsYXlvdXRfZmlsbC1leHRydXNpb25cIixcImxheW91dF9zeW1ib2xcIixcImxheW91dF9yYXN0ZXJcIixcImxheW91dF9oaWxsc2hhZGVcIixcImxheW91dF9iYWNrZ3JvdW5kXCIsXCJsYXlvdXRfc2t5XCJdLFwibGF5b3V0X2JhY2tncm91bmRcIjp7XCJ2aXNpYmlsaXR5XCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1widmlzaWJsZVwiOnt9LFwibm9uZVwiOnt9fSxcImRlZmF1bHRcIjpcInZpc2libGVcIixcInByb3BlcnR5LXR5cGVcIjpcImNvbnN0YW50XCJ9fSxcImxheW91dF9za3lcIjp7XCJ2aXNpYmlsaXR5XCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1widmlzaWJsZVwiOnt9LFwibm9uZVwiOnt9fSxcImRlZmF1bHRcIjpcInZpc2libGVcIixcInByb3BlcnR5LXR5cGVcIjpcImNvbnN0YW50XCJ9fSxcImxheW91dF9maWxsXCI6e1wiZmlsbC1zb3J0LWtleVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJ2aXNpYmlsaXR5XCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1widmlzaWJsZVwiOnt9LFwibm9uZVwiOnt9fSxcImRlZmF1bHRcIjpcInZpc2libGVcIixcInByb3BlcnR5LXR5cGVcIjpcImNvbnN0YW50XCJ9fSxcImxheW91dF9jaXJjbGVcIjp7XCJjaXJjbGUtc29ydC1rZXlcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwidmlzaWJpbGl0eVwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcInZpc2libGVcIjp7fSxcIm5vbmVcIjp7fX0sXCJkZWZhdWx0XCI6XCJ2aXNpYmxlXCIsXCJwcm9wZXJ0eS10eXBlXCI6XCJjb25zdGFudFwifX0sXCJsYXlvdXRfaGVhdG1hcFwiOntcInZpc2liaWxpdHlcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJ2aXNpYmxlXCI6e30sXCJub25lXCI6e319LFwiZGVmYXVsdFwiOlwidmlzaWJsZVwiLFwicHJvcGVydHktdHlwZVwiOlwiY29uc3RhbnRcIn19LFwibGF5b3V0X2ZpbGwtZXh0cnVzaW9uXCI6e1widmlzaWJpbGl0eVwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcInZpc2libGVcIjp7fSxcIm5vbmVcIjp7fX0sXCJkZWZhdWx0XCI6XCJ2aXNpYmxlXCIsXCJwcm9wZXJ0eS10eXBlXCI6XCJjb25zdGFudFwifSxcImZpbGwtZXh0cnVzaW9uLWVkZ2UtcmFkaXVzXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJwcml2YXRlXCI6dHJ1ZSxcImRlZmF1bHRcIjowLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcInByb3BlcnR5LXR5cGVcIjpcImNvbnN0YW50XCJ9fSxcImxheW91dF9saW5lXCI6e1wibGluZS1jYXBcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJidXR0XCI6e30sXCJyb3VuZFwiOnt9LFwic3F1YXJlXCI6e319LFwiZGVmYXVsdFwiOlwiYnV0dFwiLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJsaW5lLWpvaW5cIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJiZXZlbFwiOnt9LFwicm91bmRcIjp7fSxcIm1pdGVyXCI6e319LFwiZGVmYXVsdFwiOlwibWl0ZXJcIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwibGluZS1taXRlci1saW1pdFwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjIsXCJyZXF1aXJlc1wiOlt7XCJsaW5lLWpvaW5cIjpcIm1pdGVyXCJ9XSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcImxpbmUtcm91bmQtbGltaXRcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxLjA1LFwicmVxdWlyZXNcIjpbe1wibGluZS1qb2luXCI6XCJyb3VuZFwifV0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJsaW5lLXNvcnQta2V5XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcInZpc2liaWxpdHlcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJ2aXNpYmxlXCI6e30sXCJub25lXCI6e319LFwiZGVmYXVsdFwiOlwidmlzaWJsZVwiLFwicHJvcGVydHktdHlwZVwiOlwiY29uc3RhbnRcIn19LFwibGF5b3V0X3N5bWJvbFwiOntcInN5bWJvbC1wbGFjZW1lbnRcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJwb2ludFwiOnt9LFwibGluZVwiOnt9LFwibGluZS1jZW50ZXJcIjp7fX0sXCJkZWZhdWx0XCI6XCJwb2ludFwiLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcInN5bWJvbC1zcGFjaW5nXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MjUwLFwibWluaW11bVwiOjEsXCJ1bml0c1wiOlwicGl4ZWxzXCIsXCJyZXF1aXJlc1wiOlt7XCJzeW1ib2wtcGxhY2VtZW50XCI6XCJsaW5lXCJ9XSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcInN5bWJvbC1hdm9pZC1lZGdlc1wiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImRlZmF1bHRcIjpmYWxzZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJzeW1ib2wtc29ydC1rZXlcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwic3ltYm9sLXotb3JkZXJcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJhdXRvXCI6e30sXCJ2aWV3cG9ydC15XCI6e30sXCJzb3VyY2VcIjp7fX0sXCJkZWZhdWx0XCI6XCJhdXRvXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwiaWNvbi1hbGxvdy1vdmVybGFwXCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZGVmYXVsdFwiOmZhbHNlLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcImljb24taWdub3JlLXBsYWNlbWVudFwiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImRlZmF1bHRcIjpmYWxzZSxcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJpY29uLW9wdGlvbmFsXCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZGVmYXVsdFwiOmZhbHNlLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCIsXCJ0ZXh0LWZpZWxkXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcImljb24tcm90YXRpb24tYWxpZ25tZW50XCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wibWFwXCI6e30sXCJ2aWV3cG9ydFwiOnt9LFwiYXV0b1wiOnt9fSxcImRlZmF1bHRcIjpcImF1dG9cIixcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJpY29uLXNpemVcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxLFwibWluaW11bVwiOjAsXCJ1bml0c1wiOlwiZmFjdG9yIG9mIHRoZSBvcmlnaW5hbCBpY29uIHNpemVcIixcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJpY29uLXRleHQtZml0XCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wibm9uZVwiOnt9LFwid2lkdGhcIjp7fSxcImhlaWdodFwiOnt9LFwiYm90aFwiOnt9fSxcImRlZmF1bHRcIjpcIm5vbmVcIixcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiLFwidGV4dC1maWVsZFwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJpY29uLXRleHQtZml0LXBhZGRpbmdcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwidmFsdWVcIjpcIm51bWJlclwiLFwibGVuZ3RoXCI6NCxcImRlZmF1bHRcIjpbMCwwLDAsMF0sXCJ1bml0c1wiOlwicGl4ZWxzXCIsXCJyZXF1aXJlc1wiOltcImljb24taW1hZ2VcIixcInRleHQtZmllbGRcIix7XCJpY29uLXRleHQtZml0XCI6W1wiYm90aFwiLFwid2lkdGhcIixcImhlaWdodFwiXX1dLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwiaWNvbi1pbWFnZVwiOntcInR5cGVcIjpcInJlc29sdmVkSW1hZ2VcIixcInRva2Vuc1wiOnRydWUsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcImljb24tcm90YXRlXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MCxcInBlcmlvZFwiOjM2MCxcInVuaXRzXCI6XCJkZWdyZWVzXCIsXCJyZXF1aXJlc1wiOltcImljb24taW1hZ2VcIl0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwiaWNvbi1wYWRkaW5nXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MixcIm1pbmltdW1cIjowLFwidW5pdHNcIjpcInBpeGVsc1wiLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwiaWNvbi1rZWVwLXVwcmlnaHRcIjp7XCJ0eXBlXCI6XCJib29sZWFuXCIsXCJkZWZhdWx0XCI6ZmFsc2UsXCJyZXF1aXJlc1wiOltcImljb24taW1hZ2VcIix7XCJpY29uLXJvdGF0aW9uLWFsaWdubWVudFwiOlwibWFwXCJ9LHtcInN5bWJvbC1wbGFjZW1lbnRcIjpbXCJsaW5lXCIsXCJsaW5lLWNlbnRlclwiXX1dLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcImljb24tb2Zmc2V0XCI6e1widHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJudW1iZXJcIixcImxlbmd0aFwiOjIsXCJkZWZhdWx0XCI6WzAsMF0sXCJyZXF1aXJlc1wiOltcImljb24taW1hZ2VcIl0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwiaWNvbi1hbmNob3JcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJjZW50ZXJcIjp7fSxcImxlZnRcIjp7fSxcInJpZ2h0XCI6e30sXCJ0b3BcIjp7fSxcImJvdHRvbVwiOnt9LFwidG9wLWxlZnRcIjp7fSxcInRvcC1yaWdodFwiOnt9LFwiYm90dG9tLWxlZnRcIjp7fSxcImJvdHRvbS1yaWdodFwiOnt9fSxcImRlZmF1bHRcIjpcImNlbnRlclwiLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJpY29uLXBpdGNoLWFsaWdubWVudFwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcIm1hcFwiOnt9LFwidmlld3BvcnRcIjp7fSxcImF1dG9cIjp7fX0sXCJkZWZhdWx0XCI6XCJhdXRvXCIsXCJyZXF1aXJlc1wiOltcImljb24taW1hZ2VcIl0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwidGV4dC1waXRjaC1hbGlnbm1lbnRcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJtYXBcIjp7fSxcInZpZXdwb3J0XCI6e30sXCJhdXRvXCI6e319LFwiZGVmYXVsdFwiOlwiYXV0b1wiLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcInRleHQtcm90YXRpb24tYWxpZ25tZW50XCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wibWFwXCI6e30sXCJ2aWV3cG9ydFwiOnt9LFwiYXV0b1wiOnt9fSxcImRlZmF1bHRcIjpcImF1dG9cIixcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJ0ZXh0LWZpZWxkXCI6e1widHlwZVwiOlwiZm9ybWF0dGVkXCIsXCJkZWZhdWx0XCI6XCJcIixcInRva2Vuc1wiOnRydWUsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcInRleHQtZm9udFwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwic3RyaW5nXCIsXCJkZWZhdWx0XCI6W1wiT3BlbiBTYW5zIFJlZ3VsYXJcIixcIkFyaWFsIFVuaWNvZGUgTVMgUmVndWxhclwiXSxcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwidGV4dC1zaXplXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MTYsXCJtaW5pbXVtXCI6MCxcInVuaXRzXCI6XCJwaXhlbHNcIixcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJ0ZXh0LW1heC13aWR0aFwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEwLFwibWluaW11bVwiOjAsXCJ1bml0c1wiOlwiZW1zXCIsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIix7XCJzeW1ib2wtcGxhY2VtZW50XCI6W1wicG9pbnRcIl19XSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJ0ZXh0LWxpbmUtaGVpZ2h0XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MS4yLFwidW5pdHNcIjpcImVtc1wiLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcInRleHQtbGV0dGVyLXNwYWNpbmdcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwidW5pdHNcIjpcImVtc1wiLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcInRleHQtanVzdGlmeVwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcImF1dG9cIjp7fSxcImxlZnRcIjp7fSxcImNlbnRlclwiOnt9LFwicmlnaHRcIjp7fX0sXCJkZWZhdWx0XCI6XCJjZW50ZXJcIixcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwidGV4dC1yYWRpYWwtb2Zmc2V0XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJ1bml0c1wiOlwiZW1zXCIsXCJkZWZhdWx0XCI6MCxcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfX0sXCJ0ZXh0LXZhcmlhYmxlLWFuY2hvclwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wiY2VudGVyXCI6e30sXCJsZWZ0XCI6e30sXCJyaWdodFwiOnt9LFwidG9wXCI6e30sXCJib3R0b21cIjp7fSxcInRvcC1sZWZ0XCI6e30sXCJ0b3AtcmlnaHRcIjp7fSxcImJvdHRvbS1sZWZ0XCI6e30sXCJib3R0b20tcmlnaHRcIjp7fX0sXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIix7XCJzeW1ib2wtcGxhY2VtZW50XCI6W1wicG9pbnRcIl19XSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJ0ZXh0LWFuY2hvclwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcImNlbnRlclwiOnt9LFwibGVmdFwiOnt9LFwicmlnaHRcIjp7fSxcInRvcFwiOnt9LFwiYm90dG9tXCI6e30sXCJ0b3AtbGVmdFwiOnt9LFwidG9wLXJpZ2h0XCI6e30sXCJib3R0b20tbGVmdFwiOnt9LFwiYm90dG9tLXJpZ2h0XCI6e319LFwiZGVmYXVsdFwiOlwiY2VudGVyXCIsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIix7XCIhXCI6XCJ0ZXh0LXZhcmlhYmxlLWFuY2hvclwifV0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcInRleHQtbWF4LWFuZ2xlXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6NDUsXCJ1bml0c1wiOlwiZGVncmVlc1wiLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCIse1wic3ltYm9sLXBsYWNlbWVudFwiOltcImxpbmVcIixcImxpbmUtY2VudGVyXCJdfV0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJ0ZXh0LXdyaXRpbmctbW9kZVwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wiaG9yaXpvbnRhbFwiOnt9LFwidmVydGljYWxcIjp7fX0sXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwidGV4dC1yb3RhdGVcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwicGVyaW9kXCI6MzYwLFwidW5pdHNcIjpcImRlZ3JlZXNcIixcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJ0ZXh0LXBhZGRpbmdcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoyLFwibWluaW11bVwiOjAsXCJ1bml0c1wiOlwicGl4ZWxzXCIsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJ0ZXh0LWtlZXAtdXByaWdodFwiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImRlZmF1bHRcIjp0cnVlLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCIse1widGV4dC1yb3RhdGlvbi1hbGlnbm1lbnRcIjpcIm1hcFwifSx7XCJzeW1ib2wtcGxhY2VtZW50XCI6W1wibGluZVwiLFwibGluZS1jZW50ZXJcIl19XSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJ0ZXh0LXRyYW5zZm9ybVwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcIm5vbmVcIjp7fSxcInVwcGVyY2FzZVwiOnt9LFwibG93ZXJjYXNlXCI6e319LFwiZGVmYXVsdFwiOlwibm9uZVwiLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJ0ZXh0LW9mZnNldFwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJ1bml0c1wiOlwiZW1zXCIsXCJsZW5ndGhcIjoyLFwiZGVmYXVsdFwiOlswLDBdLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCIse1wiIVwiOlwidGV4dC1yYWRpYWwtb2Zmc2V0XCJ9XSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJ0ZXh0LWFsbG93LW92ZXJsYXBcIjp7XCJ0eXBlXCI6XCJib29sZWFuXCIsXCJkZWZhdWx0XCI6ZmFsc2UsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIl0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwidGV4dC1pZ25vcmUtcGxhY2VtZW50XCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZGVmYXVsdFwiOmZhbHNlLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcInRleHQtb3B0aW9uYWxcIjp7XCJ0eXBlXCI6XCJib29sZWFuXCIsXCJkZWZhdWx0XCI6ZmFsc2UsXCJyZXF1aXJlc1wiOltcInRleHQtZmllbGRcIixcImljb24taW1hZ2VcIl0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwidmlzaWJpbGl0eVwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcInZpc2libGVcIjp7fSxcIm5vbmVcIjp7fX0sXCJkZWZhdWx0XCI6XCJ2aXNpYmxlXCIsXCJwcm9wZXJ0eS10eXBlXCI6XCJjb25zdGFudFwifX0sXCJsYXlvdXRfcmFzdGVyXCI6e1widmlzaWJpbGl0eVwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcInZpc2libGVcIjp7fSxcIm5vbmVcIjp7fX0sXCJkZWZhdWx0XCI6XCJ2aXNpYmxlXCIsXCJwcm9wZXJ0eS10eXBlXCI6XCJjb25zdGFudFwifX0sXCJsYXlvdXRfaGlsbHNoYWRlXCI6e1widmlzaWJpbGl0eVwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcInZpc2libGVcIjp7fSxcIm5vbmVcIjp7fX0sXCJkZWZhdWx0XCI6XCJ2aXNpYmxlXCIsXCJwcm9wZXJ0eS10eXBlXCI6XCJjb25zdGFudFwifX0sXCJmaWx0ZXJcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwidmFsdWVcIjpcIipcIn0sXCJmaWx0ZXJfc3ltYm9sXCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZGVmYXVsdFwiOmZhbHNlLFwidHJhbnNpdGlvblwiOmZhbHNlLFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCIsXCJwaXRjaFwiLFwiZGlzdGFuY2UtZnJvbS1jZW50ZXJcIl19fSxcImZpbHRlcl9maWxsXCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZGVmYXVsdFwiOmZhbHNlLFwidHJhbnNpdGlvblwiOmZhbHNlLFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfX0sXCJmaWx0ZXJfbGluZVwiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImRlZmF1bHRcIjpmYWxzZSxcInRyYW5zaXRpb25cIjpmYWxzZSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiXX19LFwiZmlsdGVyX2NpcmNsZVwiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImRlZmF1bHRcIjpmYWxzZSxcInRyYW5zaXRpb25cIjpmYWxzZSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiXX19LFwiZmlsdGVyX2ZpbGwtZXh0cnVzaW9uXCI6e1widHlwZVwiOlwiYm9vbGVhblwiLFwiZGVmYXVsdFwiOmZhbHNlLFwidHJhbnNpdGlvblwiOmZhbHNlLFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfX0sXCJmaWx0ZXJfaGVhdG1hcFwiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImRlZmF1bHRcIjpmYWxzZSxcInRyYW5zaXRpb25cIjpmYWxzZSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiXX19LFwiZmlsdGVyX29wZXJhdG9yXCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wiPT1cIjp7fSxcIiE9XCI6e30sXCI+XCI6e30sXCI+PVwiOnt9LFwiPFwiOnt9LFwiPD1cIjp7fSxcImluXCI6e30sXCIhaW5cIjp7fSxcImFsbFwiOnt9LFwiYW55XCI6e30sXCJub25lXCI6e30sXCJoYXNcIjp7fSxcIiFoYXNcIjp7fSxcIndpdGhpblwiOnt9fX0sXCJnZW9tZXRyeV90eXBlXCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wiUG9pbnRcIjp7fSxcIkxpbmVTdHJpbmdcIjp7fSxcIlBvbHlnb25cIjp7fX19LFwiZnVuY3Rpb25cIjp7XCJleHByZXNzaW9uXCI6e1widHlwZVwiOlwiZXhwcmVzc2lvblwifSxcInN0b3BzXCI6e1widHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJmdW5jdGlvbl9zdG9wXCJ9LFwiYmFzZVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MH0sXCJwcm9wZXJ0eVwiOntcInR5cGVcIjpcInN0cmluZ1wiLFwiZGVmYXVsdFwiOlwiJHpvb21cIn0sXCJ0eXBlXCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wiaWRlbnRpdHlcIjp7fSxcImV4cG9uZW50aWFsXCI6e30sXCJpbnRlcnZhbFwiOnt9LFwiY2F0ZWdvcmljYWxcIjp7fX0sXCJkZWZhdWx0XCI6XCJleHBvbmVudGlhbFwifSxcImNvbG9yU3BhY2VcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJyZ2JcIjp7fSxcImxhYlwiOnt9LFwiaGNsXCI6e319LFwiZGVmYXVsdFwiOlwicmdiXCJ9LFwiZGVmYXVsdFwiOntcInR5cGVcIjpcIipcIixcInJlcXVpcmVkXCI6ZmFsc2V9fSxcImZ1bmN0aW9uX3N0b3BcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MjQsXCJ2YWx1ZVwiOltcIm51bWJlclwiLFwiY29sb3JcIl0sXCJsZW5ndGhcIjoyfSxcImV4cHJlc3Npb25cIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwidmFsdWVcIjpcIipcIixcIm1pbmltdW1cIjoxfSxcImZvZ1wiOntcInJhbmdlXCI6e1widHlwZVwiOlwiYXJyYXlcIixcImRlZmF1bHRcIjpbMC41LDEwXSxcIm1pbmltdW1cIjotMjAsXCJtYXhpbXVtXCI6MjAsXCJsZW5ndGhcIjoyLFwidmFsdWVcIjpcIm51bWJlclwiLFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwiLFwidHJhbnNpdGlvblwiOnRydWUsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfX0sXCJjb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCIsXCJkZWZhdWx0XCI6XCIjZmZmZmZmXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInRyYW5zaXRpb25cIjp0cnVlfSxcImhpZ2gtY29sb3JcIjp7XCJ0eXBlXCI6XCJjb2xvclwiLFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwiLFwiZGVmYXVsdFwiOlwiIzI0NWNkZlwiLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJ0cmFuc2l0aW9uXCI6dHJ1ZX0sXCJzcGFjZS1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCIsXCJkZWZhdWx0XCI6W1wiaW50ZXJwb2xhdGVcIixbXCJsaW5lYXJcIl0sW1wiem9vbVwiXSw0LFwiIzAxMGIxOVwiLDcsXCIjMzY3YWI5XCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJ0cmFuc2l0aW9uXCI6dHJ1ZX0sXCJob3Jpem9uLWJsZW5kXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCIsXCJkZWZhdWx0XCI6W1wiaW50ZXJwb2xhdGVcIixbXCJsaW5lYXJcIl0sW1wiem9vbVwiXSw0LDAuMiw3LDAuMV0sXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJ0cmFuc2l0aW9uXCI6dHJ1ZX0sXCJzdGFyLWludGVuc2l0eVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwiLFwiZGVmYXVsdFwiOltcImludGVycG9sYXRlXCIsW1wibGluZWFyXCJdLFtcInpvb21cIl0sNSwwLjM1LDYsMF0sXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJ0cmFuc2l0aW9uXCI6dHJ1ZX19LFwibGlnaHRcIjp7XCJhbmNob3JcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJkZWZhdWx0XCI6XCJ2aWV3cG9ydFwiLFwidmFsdWVzXCI6e1wibWFwXCI6e30sXCJ2aWV3cG9ydFwiOnt9fSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIixcInRyYW5zaXRpb25cIjpmYWxzZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfX0sXCJwb3NpdGlvblwiOntcInR5cGVcIjpcImFycmF5XCIsXCJkZWZhdWx0XCI6WzEuMTUsMjEwLDMwXSxcImxlbmd0aFwiOjMsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCIsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19fSxcImNvbG9yXCI6e1widHlwZVwiOlwiY29sb3JcIixcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIixcImRlZmF1bHRcIjpcIiNmZmZmZmZcIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwidHJhbnNpdGlvblwiOnRydWV9LFwiaW50ZW5zaXR5XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCIsXCJkZWZhdWx0XCI6MC41LFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwidHJhbnNpdGlvblwiOnRydWV9fSxcInByb2plY3Rpb25cIjp7XCJuYW1lXCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wiYWxiZXJzXCI6e30sXCJlcXVhbEVhcnRoXCI6e30sXCJlcXVpcmVjdGFuZ3VsYXJcIjp7fSxcImxhbWJlcnRDb25mb3JtYWxDb25pY1wiOnt9LFwibWVyY2F0b3JcIjp7fSxcIm5hdHVyYWxFYXJ0aFwiOnt9LFwid2lua2VsVHJpcGVsXCI6e30sXCJnbG9iZVwiOnt9fSxcImRlZmF1bHRcIjpcIm1lcmNhdG9yXCIsXCJyZXF1aXJlZFwiOnRydWV9LFwiY2VudGVyXCI6e1widHlwZVwiOlwiYXJyYXlcIixcImxlbmd0aFwiOjIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCIsXCJtaW5pbXVtXCI6Wy0xODAsLTkwXSxcIm1heGltdW1cIjpbMTgwLDkwXSxcInRyYW5zaXRpb25cIjpmYWxzZSxcInJlcXVpcmVzXCI6W3tcIm5hbWVcIjpbXCJhbGJlcnNcIixcImxhbWJlcnRDb25mb3JtYWxDb25pY1wiXX1dfSxcInBhcmFsbGVsc1wiOntcInR5cGVcIjpcImFycmF5XCIsXCJsZW5ndGhcIjoyLFwidmFsdWVcIjpcIm51bWJlclwiLFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwiLFwibWluaW11bVwiOlstOTAsLTkwXSxcIm1heGltdW1cIjpbOTAsOTBdLFwidHJhbnNpdGlvblwiOmZhbHNlLFwicmVxdWlyZXNcIjpbe1wibmFtZVwiOltcImFsYmVyc1wiLFwibGFtYmVydENvbmZvcm1hbENvbmljXCJdfV19fSxcInRlcnJhaW5cIjp7XCJzb3VyY2VcIjp7XCJ0eXBlXCI6XCJzdHJpbmdcIixcInJlcXVpcmVkXCI6dHJ1ZX0sXCJleGFnZ2VyYXRpb25cIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIixcImRlZmF1bHRcIjoxLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MTAwMCxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwidHJhbnNpdGlvblwiOnRydWUsXCJyZXF1aXJlc1wiOltcInNvdXJjZVwiXX19LFwicGFpbnRcIjpbXCJwYWludF9maWxsXCIsXCJwYWludF9saW5lXCIsXCJwYWludF9jaXJjbGVcIixcInBhaW50X2hlYXRtYXBcIixcInBhaW50X2ZpbGwtZXh0cnVzaW9uXCIsXCJwYWludF9zeW1ib2xcIixcInBhaW50X3Jhc3RlclwiLFwicGFpbnRfaGlsbHNoYWRlXCIsXCJwYWludF9iYWNrZ3JvdW5kXCIsXCJwYWludF9za3lcIl0sXCJwYWludF9maWxsXCI6e1wiZmlsbC1hbnRpYWxpYXNcIjp7XCJ0eXBlXCI6XCJib29sZWFuXCIsXCJkZWZhdWx0XCI6dHJ1ZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJmaWxsLW9wYWNpdHlcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcInRyYW5zaXRpb25cIjp0cnVlLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiLFwiZmVhdHVyZS1zdGF0ZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcImZpbGwtY29sb3JcIjp7XCJ0eXBlXCI6XCJjb2xvclwiLFwiZGVmYXVsdFwiOlwiIzAwMDAwMFwiLFwidHJhbnNpdGlvblwiOnRydWUsXCJyZXF1aXJlc1wiOlt7XCIhXCI6XCJmaWxsLXBhdHRlcm5cIn1dLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiLFwiZmVhdHVyZS1zdGF0ZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcImZpbGwtb3V0bGluZS1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W3tcIiFcIjpcImZpbGwtcGF0dGVyblwifSx7XCJmaWxsLWFudGlhbGlhc1wiOnRydWV9XSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJmaWxsLXRyYW5zbGF0ZVwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJsZW5ndGhcIjoyLFwiZGVmYXVsdFwiOlswLDBdLFwidHJhbnNpdGlvblwiOnRydWUsXCJ1bml0c1wiOlwicGl4ZWxzXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJmaWxsLXRyYW5zbGF0ZS1hbmNob3JcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJtYXBcIjp7fSxcInZpZXdwb3J0XCI6e319LFwiZGVmYXVsdFwiOlwibWFwXCIsXCJyZXF1aXJlc1wiOltcImZpbGwtdHJhbnNsYXRlXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcImZpbGwtcGF0dGVyblwiOntcInR5cGVcIjpcInJlc29sdmVkSW1hZ2VcIixcInRyYW5zaXRpb25cIjpmYWxzZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9fSxcInBhaW50X2ZpbGwtZXh0cnVzaW9uXCI6e1wiZmlsbC1leHRydXNpb24tb3BhY2l0eVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxLFwidHJhbnNpdGlvblwiOnRydWUsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJmaWxsLWV4dHJ1c2lvbi1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCIjMDAwMDAwXCIsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W3tcIiFcIjpcImZpbGwtZXh0cnVzaW9uLXBhdHRlcm5cIn1dLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiLFwiZmVhdHVyZS1zdGF0ZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZVwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJsZW5ndGhcIjoyLFwiZGVmYXVsdFwiOlswLDBdLFwidHJhbnNpdGlvblwiOnRydWUsXCJ1bml0c1wiOlwicGl4ZWxzXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGUtYW5jaG9yXCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wibWFwXCI6e30sXCJ2aWV3cG9ydFwiOnt9fSxcImRlZmF1bHRcIjpcIm1hcFwiLFwicmVxdWlyZXNcIjpbXCJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGVcIl0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwiZmlsbC1leHRydXNpb24tcGF0dGVyblwiOntcInR5cGVcIjpcInJlc29sdmVkSW1hZ2VcIixcInRyYW5zaXRpb25cIjpmYWxzZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwiZmlsbC1leHRydXNpb24taGVpZ2h0XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MCxcIm1pbmltdW1cIjowLFwidW5pdHNcIjpcIm1ldGVyc1wiLFwidHJhbnNpdGlvblwiOnRydWUsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCIsXCJmZWF0dXJlLXN0YXRlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwiZmlsbC1leHRydXNpb24tYmFzZVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJtaW5pbXVtXCI6MCxcInVuaXRzXCI6XCJtZXRlcnNcIixcInRyYW5zaXRpb25cIjp0cnVlLFwicmVxdWlyZXNcIjpbXCJmaWxsLWV4dHJ1c2lvbi1oZWlnaHRcIl0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCIsXCJmZWF0dXJlLXN0YXRlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwiZmlsbC1leHRydXNpb24tdmVydGljYWwtZ3JhZGllbnRcIjp7XCJ0eXBlXCI6XCJib29sZWFuXCIsXCJkZWZhdWx0XCI6dHJ1ZSxcInRyYW5zaXRpb25cIjpmYWxzZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJmaWxsLWV4dHJ1c2lvbi1hbWJpZW50LW9jY2x1c2lvbi1pbnRlbnNpdHlcIjp7XCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCIsXCJ0eXBlXCI6XCJudW1iZXJcIixcInByaXZhdGVcIjp0cnVlLFwiZGVmYXVsdFwiOjAsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJ0cmFuc2l0aW9uXCI6dHJ1ZX0sXCJmaWxsLWV4dHJ1c2lvbi1hbWJpZW50LW9jY2x1c2lvbi1yYWRpdXNcIjp7XCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCIsXCJ0eXBlXCI6XCJudW1iZXJcIixcInByaXZhdGVcIjp0cnVlLFwiZGVmYXVsdFwiOjMsXCJtaW5pbXVtXCI6MCxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwidHJhbnNpdGlvblwiOnRydWUsXCJyZXF1aXJlc1wiOltcImZpbGwtZXh0cnVzaW9uLWVkZ2UtcmFkaXVzXCJdfSxcImZpbGwtZXh0cnVzaW9uLXJvdW5kZWQtcm9vZlwiOntcInR5cGVcIjpcImJvb2xlYW5cIixcImRlZmF1bHRcIjp0cnVlLFwicmVxdWlyZXNcIjpbXCJmaWxsLWV4dHJ1c2lvbi1lZGdlLXJhZGl1c1wiXSxcInRyYW5zaXRpb25cIjpmYWxzZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn19LFwicGFpbnRfbGluZVwiOntcImxpbmUtb3BhY2l0eVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxLFwidHJhbnNpdGlvblwiOnRydWUsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCIsXCJmZWF0dXJlLXN0YXRlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwibGluZS1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCIjMDAwMDAwXCIsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W3tcIiFcIjpcImxpbmUtcGF0dGVyblwifV0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCIsXCJmZWF0dXJlLXN0YXRlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwibGluZS10cmFuc2xhdGVcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwidmFsdWVcIjpcIm51bWJlclwiLFwibGVuZ3RoXCI6MixcImRlZmF1bHRcIjpbMCwwXSxcInRyYW5zaXRpb25cIjp0cnVlLFwidW5pdHNcIjpcInBpeGVsc1wiLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwibGluZS10cmFuc2xhdGUtYW5jaG9yXCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wibWFwXCI6e30sXCJ2aWV3cG9ydFwiOnt9fSxcImRlZmF1bHRcIjpcIm1hcFwiLFwicmVxdWlyZXNcIjpbXCJsaW5lLXRyYW5zbGF0ZVwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJsaW5lLXdpZHRoXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MSxcIm1pbmltdW1cIjowLFwidHJhbnNpdGlvblwiOnRydWUsXCJ1bml0c1wiOlwicGl4ZWxzXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCIsXCJmZWF0dXJlLXN0YXRlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwibGluZS1nYXAtd2lkdGhcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwibWluaW11bVwiOjAsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJsaW5lLW9mZnNldFwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJsaW5lLWJsdXJcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwibWluaW11bVwiOjAsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJsaW5lLWRhc2hhcnJheVwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJtaW5pbXVtXCI6MCxcInRyYW5zaXRpb25cIjpmYWxzZSxcInVuaXRzXCI6XCJsaW5lIHdpZHRoc1wiLFwicmVxdWlyZXNcIjpbe1wiIVwiOlwibGluZS1wYXR0ZXJuXCJ9XSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwibGluZS1wYXR0ZXJuXCI6e1widHlwZVwiOlwicmVzb2x2ZWRJbWFnZVwiLFwidHJhbnNpdGlvblwiOmZhbHNlLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJsaW5lLWdyYWRpZW50XCI6e1widHlwZVwiOlwiY29sb3JcIixcInRyYW5zaXRpb25cIjpmYWxzZSxcInJlcXVpcmVzXCI6W3tcIiFcIjpcImxpbmUtcGF0dGVyblwifSx7XCJzb3VyY2VcIjpcImdlb2pzb25cIixcImhhc1wiOntcImxpbmVNZXRyaWNzXCI6dHJ1ZX19XSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcImxpbmUtcHJvZ3Jlc3NcIl19LFwicHJvcGVydHktdHlwZVwiOlwiY29sb3ItcmFtcFwifSxcImxpbmUtdHJpbS1vZmZzZXRcIjp7XCJ0eXBlXCI6XCJhcnJheVwiLFwidmFsdWVcIjpcIm51bWJlclwiLFwibGVuZ3RoXCI6MixcImRlZmF1bHRcIjpbMCwwXSxcIm1pbmltdW1cIjpbMCwwXSxcIm1heGltdW1cIjpbMSwxXSxcInRyYW5zaXRpb25cIjpmYWxzZSxcInJlcXVpcmVzXCI6W3tcInNvdXJjZVwiOlwiZ2VvanNvblwiLFwiaGFzXCI6e1wibGluZU1ldHJpY3NcIjp0cnVlfX1dLFwicHJvcGVydHktdHlwZVwiOlwiY29uc3RhbnRcIn19LFwicGFpbnRfY2lyY2xlXCI6e1wiY2lyY2xlLXJhZGl1c1wiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjUsXCJtaW5pbXVtXCI6MCxcInRyYW5zaXRpb25cIjp0cnVlLFwidW5pdHNcIjpcInBpeGVsc1wiLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiLFwiZmVhdHVyZS1zdGF0ZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcImNpcmNsZS1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCIjMDAwMDAwXCIsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJjaXJjbGUtYmx1clwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJjaXJjbGUtb3BhY2l0eVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxLFwidHJhbnNpdGlvblwiOnRydWUsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCIsXCJmZWF0dXJlLXN0YXRlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9LFwiY2lyY2xlLXRyYW5zbGF0ZVwiOntcInR5cGVcIjpcImFycmF5XCIsXCJ2YWx1ZVwiOlwibnVtYmVyXCIsXCJsZW5ndGhcIjoyLFwiZGVmYXVsdFwiOlswLDBdLFwidHJhbnNpdGlvblwiOnRydWUsXCJ1bml0c1wiOlwicGl4ZWxzXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJjaXJjbGUtdHJhbnNsYXRlLWFuY2hvclwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcIm1hcFwiOnt9LFwidmlld3BvcnRcIjp7fX0sXCJkZWZhdWx0XCI6XCJtYXBcIixcInJlcXVpcmVzXCI6W1wiY2lyY2xlLXRyYW5zbGF0ZVwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJjaXJjbGUtcGl0Y2gtc2NhbGVcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJtYXBcIjp7fSxcInZpZXdwb3J0XCI6e319LFwiZGVmYXVsdFwiOlwibWFwXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwiY2lyY2xlLXBpdGNoLWFsaWdubWVudFwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcIm1hcFwiOnt9LFwidmlld3BvcnRcIjp7fX0sXCJkZWZhdWx0XCI6XCJ2aWV3cG9ydFwiLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcImNpcmNsZS1zdHJva2Utd2lkdGhcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwibWluaW11bVwiOjAsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJjaXJjbGUtc3Ryb2tlLWNvbG9yXCI6e1widHlwZVwiOlwiY29sb3JcIixcImRlZmF1bHRcIjpcIiMwMDAwMDBcIixcInRyYW5zaXRpb25cIjp0cnVlLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiLFwiZmVhdHVyZS1zdGF0ZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcImNpcmNsZS1zdHJva2Utb3BhY2l0eVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxLFwidHJhbnNpdGlvblwiOnRydWUsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCIsXCJmZWF0dXJlXCIsXCJmZWF0dXJlLXN0YXRlXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtZHJpdmVuXCJ9fSxcInBhaW50X2hlYXRtYXBcIjp7XCJoZWF0bWFwLXJhZGl1c1wiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjMwLFwibWluaW11bVwiOjEsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJoZWF0bWFwLXdlaWdodFwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MCxcInRyYW5zaXRpb25cIjpmYWxzZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJoZWF0bWFwLWludGVuc2l0eVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MCxcInRyYW5zaXRpb25cIjp0cnVlLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwiaGVhdG1hcC1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6W1wiaW50ZXJwb2xhdGVcIixbXCJsaW5lYXJcIl0sW1wiaGVhdG1hcC1kZW5zaXR5XCJdLDAsXCJyZ2JhKDAsIDAsIDI1NSwgMClcIiwwLjEsXCJyb3lhbGJsdWVcIiwwLjMsXCJjeWFuXCIsMC41LFwibGltZVwiLDAuNyxcInllbGxvd1wiLDEsXCJyZWRcIl0sXCJ0cmFuc2l0aW9uXCI6ZmFsc2UsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJoZWF0bWFwLWRlbnNpdHlcIl19LFwicHJvcGVydHktdHlwZVwiOlwiY29sb3ItcmFtcFwifSxcImhlYXRtYXAtb3BhY2l0eVwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjEsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxLFwidHJhbnNpdGlvblwiOnRydWUsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn19LFwicGFpbnRfc3ltYm9sXCI6e1wiaWNvbi1vcGFjaXR5XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MSxcIm1pbmltdW1cIjowLFwibWF4aW11bVwiOjEsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJpY29uLWNvbG9yXCI6e1widHlwZVwiOlwiY29sb3JcIixcImRlZmF1bHRcIjpcIiMwMDAwMDBcIixcInRyYW5zaXRpb25cIjp0cnVlLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiLFwiZmVhdHVyZS1zdGF0ZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcImljb24taGFsby1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCJyZ2JhKDAsIDAsIDAsIDApXCIsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJpY29uLWhhbG8td2lkdGhcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwibWluaW11bVwiOjAsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIixcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJpY29uLWhhbG8tYmx1clwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJtaW5pbXVtXCI6MCxcInRyYW5zaXRpb25cIjp0cnVlLFwidW5pdHNcIjpcInBpeGVsc1wiLFwicmVxdWlyZXNcIjpbXCJpY29uLWltYWdlXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiLFwiZmVhdHVyZS1zdGF0ZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcImljb24tdHJhbnNsYXRlXCI6e1widHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJudW1iZXJcIixcImxlbmd0aFwiOjIsXCJkZWZhdWx0XCI6WzAsMF0sXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIixcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcImljb24tdHJhbnNsYXRlLWFuY2hvclwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcIm1hcFwiOnt9LFwidmlld3BvcnRcIjp7fX0sXCJkZWZhdWx0XCI6XCJtYXBcIixcInJlcXVpcmVzXCI6W1wiaWNvbi1pbWFnZVwiLFwiaWNvbi10cmFuc2xhdGVcIl0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwidGV4dC1vcGFjaXR5XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MSxcIm1pbmltdW1cIjowLFwibWF4aW11bVwiOjEsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJ0ZXh0LWNvbG9yXCI6e1widHlwZVwiOlwiY29sb3JcIixcImRlZmF1bHRcIjpcIiMwMDAwMDBcIixcInRyYW5zaXRpb25cIjp0cnVlLFwib3ZlcnJpZGFibGVcIjp0cnVlLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiLFwiZmVhdHVyZS1zdGF0ZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcInRleHQtaGFsby1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCJyZ2JhKDAsIDAsIDAsIDApXCIsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJ0ZXh0LWhhbG8td2lkdGhcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwibWluaW11bVwiOjAsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIixcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIixcImZlYXR1cmVcIixcImZlYXR1cmUtc3RhdGVcIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1kcml2ZW5cIn0sXCJ0ZXh0LWhhbG8tYmx1clwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJtaW5pbXVtXCI6MCxcInRyYW5zaXRpb25cIjp0cnVlLFwidW5pdHNcIjpcInBpeGVsc1wiLFwicmVxdWlyZXNcIjpbXCJ0ZXh0LWZpZWxkXCJdLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiLFwiZmVhdHVyZVwiLFwiZmVhdHVyZS1zdGF0ZVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwifSxcInRleHQtdHJhbnNsYXRlXCI6e1widHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJudW1iZXJcIixcImxlbmd0aFwiOjIsXCJkZWZhdWx0XCI6WzAsMF0sXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcInVuaXRzXCI6XCJwaXhlbHNcIixcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiXSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcInRleHQtdHJhbnNsYXRlLWFuY2hvclwiOntcInR5cGVcIjpcImVudW1cIixcInZhbHVlc1wiOntcIm1hcFwiOnt9LFwidmlld3BvcnRcIjp7fX0sXCJkZWZhdWx0XCI6XCJtYXBcIixcInJlcXVpcmVzXCI6W1widGV4dC1maWVsZFwiLFwidGV4dC10cmFuc2xhdGVcIl0sXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9fSxcInBhaW50X3Jhc3RlclwiOntcInJhc3Rlci1vcGFjaXR5XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MSxcIm1pbmltdW1cIjowLFwibWF4aW11bVwiOjEsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcInJhc3Rlci1odWUtcm90YXRlXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MCxcInBlcmlvZFwiOjM2MCxcInRyYW5zaXRpb25cIjp0cnVlLFwidW5pdHNcIjpcImRlZ3JlZXNcIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcInJhc3Rlci1icmlnaHRuZXNzLW1pblwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxLFwidHJhbnNpdGlvblwiOnRydWUsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJyYXN0ZXItYnJpZ2h0bmVzcy1tYXhcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcInRyYW5zaXRpb25cIjp0cnVlLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwicmFzdGVyLXNhdHVyYXRpb25cIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjowLFwibWluaW11bVwiOi0xLFwibWF4aW11bVwiOjEsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcInJhc3Rlci1jb250cmFzdFwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjAsXCJtaW5pbXVtXCI6LTEsXCJtYXhpbXVtXCI6MSxcInRyYW5zaXRpb25cIjp0cnVlLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwicmFzdGVyLXJlc2FtcGxpbmdcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJsaW5lYXJcIjp7fSxcIm5lYXJlc3RcIjp7fX0sXCJkZWZhdWx0XCI6XCJsaW5lYXJcIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJyYXN0ZXItZmFkZS1kdXJhdGlvblwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjMwMCxcIm1pbmltdW1cIjowLFwidHJhbnNpdGlvblwiOmZhbHNlLFwidW5pdHNcIjpcIm1pbGxpc2Vjb25kc1wiLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9fSxcInBhaW50X2hpbGxzaGFkZVwiOntcImhpbGxzaGFkZS1pbGx1bWluYXRpb24tZGlyZWN0aW9uXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MzM1LFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MzU5LFwidHJhbnNpdGlvblwiOmZhbHNlLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwiaGlsbHNoYWRlLWlsbHVtaW5hdGlvbi1hbmNob3JcIjp7XCJ0eXBlXCI6XCJlbnVtXCIsXCJ2YWx1ZXNcIjp7XCJtYXBcIjp7fSxcInZpZXdwb3J0XCI6e319LFwiZGVmYXVsdFwiOlwidmlld3BvcnRcIixcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJoaWxsc2hhZGUtZXhhZ2dlcmF0aW9uXCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MC41LFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcInRyYW5zaXRpb25cIjp0cnVlLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwiaGlsbHNoYWRlLXNoYWRvdy1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCIjMDAwMDAwXCIsXCJ0cmFuc2l0aW9uXCI6dHJ1ZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcImhpbGxzaGFkZS1oaWdobGlnaHQtY29sb3JcIjp7XCJ0eXBlXCI6XCJjb2xvclwiLFwiZGVmYXVsdFwiOlwiI0ZGRkZGRlwiLFwidHJhbnNpdGlvblwiOnRydWUsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6dHJ1ZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJoaWxsc2hhZGUtYWNjZW50LWNvbG9yXCI6e1widHlwZVwiOlwiY29sb3JcIixcImRlZmF1bHRcIjpcIiMwMDAwMDBcIixcInRyYW5zaXRpb25cIjp0cnVlLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9fSxcInBhaW50X2JhY2tncm91bmRcIjp7XCJiYWNrZ3JvdW5kLWNvbG9yXCI6e1widHlwZVwiOlwiY29sb3JcIixcImRlZmF1bHRcIjpcIiMwMDAwMDBcIixcInRyYW5zaXRpb25cIjp0cnVlLFwicmVxdWlyZXNcIjpbe1wiIVwiOlwiYmFja2dyb3VuZC1wYXR0ZXJuXCJ9XSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjp0cnVlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcImJhY2tncm91bmQtcGF0dGVyblwiOntcInR5cGVcIjpcInJlc29sdmVkSW1hZ2VcIixcInRyYW5zaXRpb25cIjpmYWxzZSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJiYWNrZ3JvdW5kLW9wYWNpdHlcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcInRyYW5zaXRpb25cIjp0cnVlLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9fSxcInBhaW50X3NreVwiOntcInNreS10eXBlXCI6e1widHlwZVwiOlwiZW51bVwiLFwidmFsdWVzXCI6e1wiZ3JhZGllbnRcIjp7fSxcImF0bW9zcGhlcmVcIjp7fX0sXCJkZWZhdWx0XCI6XCJhdG1vc3BoZXJlXCIsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwic2t5LWF0bW9zcGhlcmUtc3VuXCI6e1widHlwZVwiOlwiYXJyYXlcIixcInZhbHVlXCI6XCJudW1iZXJcIixcImxlbmd0aFwiOjIsXCJ1bml0c1wiOlwiZGVncmVlc1wiLFwibWluaW11bVwiOlswLDBdLFwibWF4aW11bVwiOlszNjAsMTgwXSxcInRyYW5zaXRpb25cIjpmYWxzZSxcInJlcXVpcmVzXCI6W3tcInNreS10eXBlXCI6XCJhdG1vc3BoZXJlXCJ9XSxcImV4cHJlc3Npb25cIjp7XCJpbnRlcnBvbGF0ZWRcIjpmYWxzZSxcInBhcmFtZXRlcnNcIjpbXCJ6b29tXCJdfSxcInByb3BlcnR5LXR5cGVcIjpcImRhdGEtY29uc3RhbnRcIn0sXCJza3ktYXRtb3NwaGVyZS1zdW4taW50ZW5zaXR5XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJyZXF1aXJlc1wiOlt7XCJza3ktdHlwZVwiOlwiYXRtb3NwaGVyZVwifV0sXCJkZWZhdWx0XCI6MTAsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxMDAsXCJ0cmFuc2l0aW9uXCI6ZmFsc2UsXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwic2t5LWdyYWRpZW50LWNlbnRlclwiOntcInR5cGVcIjpcImFycmF5XCIsXCJyZXF1aXJlc1wiOlt7XCJza3ktdHlwZVwiOlwiZ3JhZGllbnRcIn1dLFwidmFsdWVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOlswLDBdLFwibGVuZ3RoXCI6MixcInVuaXRzXCI6XCJkZWdyZWVzXCIsXCJtaW5pbXVtXCI6WzAsMF0sXCJtYXhpbXVtXCI6WzM2MCwxODBdLFwidHJhbnNpdGlvblwiOmZhbHNlLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOmZhbHNlLFwicGFyYW1ldGVyc1wiOltcInpvb21cIl19LFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcInNreS1ncmFkaWVudC1yYWRpdXNcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcInJlcXVpcmVzXCI6W3tcInNreS10eXBlXCI6XCJncmFkaWVudFwifV0sXCJkZWZhdWx0XCI6OTAsXCJtaW5pbXVtXCI6MCxcIm1heGltdW1cIjoxODAsXCJ0cmFuc2l0aW9uXCI6ZmFsc2UsXCJleHByZXNzaW9uXCI6e1wiaW50ZXJwb2xhdGVkXCI6ZmFsc2UsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwic2t5LWdyYWRpZW50XCI6e1widHlwZVwiOlwiY29sb3JcIixcImRlZmF1bHRcIjpbXCJpbnRlcnBvbGF0ZVwiLFtcImxpbmVhclwiXSxbXCJza3ktcmFkaWFsLXByb2dyZXNzXCJdLDAuOCxcIiM4N2NlZWJcIiwxLFwid2hpdGVcIl0sXCJ0cmFuc2l0aW9uXCI6ZmFsc2UsXCJyZXF1aXJlc1wiOlt7XCJza3ktdHlwZVwiOlwiZ3JhZGllbnRcIn1dLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wic2t5LXJhZGlhbC1wcm9ncmVzc1wiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJjb2xvci1yYW1wXCJ9LFwic2t5LWF0bW9zcGhlcmUtaGFsby1jb2xvclwiOntcInR5cGVcIjpcImNvbG9yXCIsXCJkZWZhdWx0XCI6XCJ3aGl0ZVwiLFwidHJhbnNpdGlvblwiOmZhbHNlLFwicmVxdWlyZXNcIjpbe1wic2t5LXR5cGVcIjpcImF0bW9zcGhlcmVcIn1dLFwicHJvcGVydHktdHlwZVwiOlwiZGF0YS1jb25zdGFudFwifSxcInNreS1hdG1vc3BoZXJlLWNvbG9yXCI6e1widHlwZVwiOlwiY29sb3JcIixcImRlZmF1bHRcIjpcIndoaXRlXCIsXCJ0cmFuc2l0aW9uXCI6ZmFsc2UsXCJyZXF1aXJlc1wiOlt7XCJza3ktdHlwZVwiOlwiYXRtb3NwaGVyZVwifV0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9LFwic2t5LW9wYWNpdHlcIjp7XCJ0eXBlXCI6XCJudW1iZXJcIixcImRlZmF1bHRcIjoxLFwibWluaW11bVwiOjAsXCJtYXhpbXVtXCI6MSxcInRyYW5zaXRpb25cIjp0cnVlLFwiZXhwcmVzc2lvblwiOntcImludGVycG9sYXRlZFwiOnRydWUsXCJwYXJhbWV0ZXJzXCI6W1wiem9vbVwiXX0sXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWNvbnN0YW50XCJ9fSxcInRyYW5zaXRpb25cIjp7XCJkdXJhdGlvblwiOntcInR5cGVcIjpcIm51bWJlclwiLFwiZGVmYXVsdFwiOjMwMCxcIm1pbmltdW1cIjowLFwidW5pdHNcIjpcIm1pbGxpc2Vjb25kc1wifSxcImRlbGF5XCI6e1widHlwZVwiOlwibnVtYmVyXCIsXCJkZWZhdWx0XCI6MCxcIm1pbmltdW1cIjowLFwidW5pdHNcIjpcIm1pbGxpc2Vjb25kc1wifX0sXCJwcm9wZXJ0eS10eXBlXCI6e1wiZGF0YS1kcml2ZW5cIjp7XCJ0eXBlXCI6XCJwcm9wZXJ0eS10eXBlXCJ9LFwiY29sb3ItcmFtcFwiOntcInR5cGVcIjpcInByb3BlcnR5LXR5cGVcIn0sXCJkYXRhLWNvbnN0YW50XCI6e1widHlwZVwiOlwicHJvcGVydHktdHlwZVwifSxcImNvbnN0YW50XCI6e1widHlwZVwiOlwicHJvcGVydHktdHlwZVwifX0sXCJwcm9tb3RlSWRcIjp7XCIqXCI6e1widHlwZVwiOlwic3RyaW5nXCJ9fX0nKTtmdW5jdGlvbiBlZSh0LC4uLmUpe2Zvcihjb25zdCByIG9mIGUpZm9yKGNvbnN0IGUgaW4gcil0W2VdPXJbZV07cmV0dXJuIHR9ZnVuY3Rpb24gcmUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBOdW1iZXJ8fHQgaW5zdGFuY2VvZiBTdHJpbmd8fHQgaW5zdGFuY2VvZiBCb29sZWFuP3QudmFsdWVPZigpOnR9ZnVuY3Rpb24gbmUodCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5tYXAobmUpO2lmKHQgaW5zdGFuY2VvZiBPYmplY3QmJiEodCBpbnN0YW5jZW9mIE51bWJlcnx8dCBpbnN0YW5jZW9mIFN0cmluZ3x8dCBpbnN0YW5jZW9mIEJvb2xlYW4pKXtjb25zdCBlPXt9O2Zvcihjb25zdCByIGluIHQpZVtyXT1uZSh0W3JdKTtyZXR1cm4gZX1yZXR1cm4gcmUodCl9Y2xhc3MgaWUgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKGUpLHRoaXMubWVzc2FnZT1lLHRoaXMua2V5PXQ7fX12YXIgc2U9aWU7Y2xhc3MgYWV7Y29uc3RydWN0b3IodCxlPVtdKXt0aGlzLnBhcmVudD10LHRoaXMuYmluZGluZ3M9e307Zm9yKGNvbnN0W3Qscl1vZiBlKXRoaXMuYmluZGluZ3NbdF09cjt9Y29uY2F0KHQpe3JldHVybiBuZXcgYWUodGhpcyx0KX1nZXQodCl7aWYodGhpcy5iaW5kaW5nc1t0XSlyZXR1cm4gdGhpcy5iaW5kaW5nc1t0XTtpZih0aGlzLnBhcmVudClyZXR1cm4gdGhpcy5wYXJlbnQuZ2V0KHQpO3Rocm93IG5ldyBFcnJvcihgJHt0fSBub3QgZm91bmQgaW4gc2NvcGUuYCl9aGFzKHQpe3JldHVybiAhIXRoaXMuYmluZGluZ3NbdF18fCEhdGhpcy5wYXJlbnQmJnRoaXMucGFyZW50Lmhhcyh0KX19dmFyIG9lPWFlO2NvbnN0IGxlPXtraW5kOlwibnVsbFwifSx1ZT17a2luZDpcIm51bWJlclwifSxjZT17a2luZDpcInN0cmluZ1wifSxoZT17a2luZDpcImJvb2xlYW5cIn0scGU9e2tpbmQ6XCJjb2xvclwifSxkZT17a2luZDpcIm9iamVjdFwifSxmZT17a2luZDpcInZhbHVlXCJ9LHllPXtraW5kOlwiY29sbGF0b3JcIn0sbWU9e2tpbmQ6XCJmb3JtYXR0ZWRcIn0sZ2U9e2tpbmQ6XCJyZXNvbHZlZEltYWdlXCJ9O2Z1bmN0aW9uIHhlKHQsZSl7cmV0dXJuIHtraW5kOlwiYXJyYXlcIixpdGVtVHlwZTp0LE46ZX19ZnVuY3Rpb24gdmUodCl7aWYoXCJhcnJheVwiPT09dC5raW5kKXtjb25zdCBlPXZlKHQuaXRlbVR5cGUpO3JldHVybiBcIm51bWJlclwiPT10eXBlb2YgdC5OP2BhcnJheTwke2V9LCAke3QuTn0+YDpcInZhbHVlXCI9PT10Lml0ZW1UeXBlLmtpbmQ/XCJhcnJheVwiOmBhcnJheTwke2V9PmB9cmV0dXJuIHQua2luZH1jb25zdCBiZT1bbGUsdWUsY2UsaGUscGUsbWUsZGUseGUoZmUpLGdlXTtmdW5jdGlvbiB3ZSh0LGUpe2lmKFwiZXJyb3JcIj09PWUua2luZClyZXR1cm4gbnVsbDtpZihcImFycmF5XCI9PT10LmtpbmQpe2lmKFwiYXJyYXlcIj09PWUua2luZCYmKDA9PT1lLk4mJlwidmFsdWVcIj09PWUuaXRlbVR5cGUua2luZHx8IXdlKHQuaXRlbVR5cGUsZS5pdGVtVHlwZSkpJiYoXCJudW1iZXJcIiE9dHlwZW9mIHQuTnx8dC5OPT09ZS5OKSlyZXR1cm4gbnVsbH1lbHNlIHtpZih0LmtpbmQ9PT1lLmtpbmQpcmV0dXJuIG51bGw7aWYoXCJ2YWx1ZVwiPT09dC5raW5kKWZvcihjb25zdCB0IG9mIGJlKWlmKCF3ZSh0LGUpKXJldHVybiBudWxsfXJldHVybiBgRXhwZWN0ZWQgJHt2ZSh0KX0gYnV0IGZvdW5kICR7dmUoZSl9IGluc3RlYWQuYH1mdW5jdGlvbiBfZSh0LGUpe3JldHVybiBlLnNvbWUoKGU9PmUua2luZD09PXQua2luZCkpfWZ1bmN0aW9uIEFlKHQsZSl7cmV0dXJuIGUuc29tZSgoZT0+XCJudWxsXCI9PT1lP251bGw9PT10OlwiYXJyYXlcIj09PWU/QXJyYXkuaXNBcnJheSh0KTpcIm9iamVjdFwiPT09ZT90JiYhQXJyYXkuaXNBcnJheSh0KSYmXCJvYmplY3RcIj09dHlwZW9mIHQ6ZT09PXR5cGVvZiB0KSl9dmFyIFNlLGtlPXt0cmFuc3BhcmVudDpbMCwwLDAsMF0sYWxpY2VibHVlOlsyNDAsMjQ4LDI1NSwxXSxhbnRpcXVld2hpdGU6WzI1MCwyMzUsMjE1LDFdLGFxdWE6WzAsMjU1LDI1NSwxXSxhcXVhbWFyaW5lOlsxMjcsMjU1LDIxMiwxXSxhenVyZTpbMjQwLDI1NSwyNTUsMV0sYmVpZ2U6WzI0NSwyNDUsMjIwLDFdLGJpc3F1ZTpbMjU1LDIyOCwxOTYsMV0sYmxhY2s6WzAsMCwwLDFdLGJsYW5jaGVkYWxtb25kOlsyNTUsMjM1LDIwNSwxXSxibHVlOlswLDAsMjU1LDFdLGJsdWV2aW9sZXQ6WzEzOCw0MywyMjYsMV0sYnJvd246WzE2NSw0Miw0MiwxXSxidXJseXdvb2Q6WzIyMiwxODQsMTM1LDFdLGNhZGV0Ymx1ZTpbOTUsMTU4LDE2MCwxXSxjaGFydHJldXNlOlsxMjcsMjU1LDAsMV0sY2hvY29sYXRlOlsyMTAsMTA1LDMwLDFdLGNvcmFsOlsyNTUsMTI3LDgwLDFdLGNvcm5mbG93ZXJibHVlOlsxMDAsMTQ5LDIzNywxXSxjb3Juc2lsazpbMjU1LDI0OCwyMjAsMV0sY3JpbXNvbjpbMjIwLDIwLDYwLDFdLGN5YW46WzAsMjU1LDI1NSwxXSxkYXJrYmx1ZTpbMCwwLDEzOSwxXSxkYXJrY3lhbjpbMCwxMzksMTM5LDFdLGRhcmtnb2xkZW5yb2Q6WzE4NCwxMzQsMTEsMV0sZGFya2dyYXk6WzE2OSwxNjksMTY5LDFdLGRhcmtncmVlbjpbMCwxMDAsMCwxXSxkYXJrZ3JleTpbMTY5LDE2OSwxNjksMV0sZGFya2toYWtpOlsxODksMTgzLDEwNywxXSxkYXJrbWFnZW50YTpbMTM5LDAsMTM5LDFdLGRhcmtvbGl2ZWdyZWVuOls4NSwxMDcsNDcsMV0sZGFya29yYW5nZTpbMjU1LDE0MCwwLDFdLGRhcmtvcmNoaWQ6WzE1Myw1MCwyMDQsMV0sZGFya3JlZDpbMTM5LDAsMCwxXSxkYXJrc2FsbW9uOlsyMzMsMTUwLDEyMiwxXSxkYXJrc2VhZ3JlZW46WzE0MywxODgsMTQzLDFdLGRhcmtzbGF0ZWJsdWU6WzcyLDYxLDEzOSwxXSxkYXJrc2xhdGVncmF5Ols0Nyw3OSw3OSwxXSxkYXJrc2xhdGVncmV5Ols0Nyw3OSw3OSwxXSxkYXJrdHVycXVvaXNlOlswLDIwNiwyMDksMV0sZGFya3Zpb2xldDpbMTQ4LDAsMjExLDFdLGRlZXBwaW5rOlsyNTUsMjAsMTQ3LDFdLGRlZXBza3libHVlOlswLDE5MSwyNTUsMV0sZGltZ3JheTpbMTA1LDEwNSwxMDUsMV0sZGltZ3JleTpbMTA1LDEwNSwxMDUsMV0sZG9kZ2VyYmx1ZTpbMzAsMTQ0LDI1NSwxXSxmaXJlYnJpY2s6WzE3OCwzNCwzNCwxXSxmbG9yYWx3aGl0ZTpbMjU1LDI1MCwyNDAsMV0sZm9yZXN0Z3JlZW46WzM0LDEzOSwzNCwxXSxmdWNoc2lhOlsyNTUsMCwyNTUsMV0sZ2FpbnNib3JvOlsyMjAsMjIwLDIyMCwxXSxnaG9zdHdoaXRlOlsyNDgsMjQ4LDI1NSwxXSxnb2xkOlsyNTUsMjE1LDAsMV0sZ29sZGVucm9kOlsyMTgsMTY1LDMyLDFdLGdyYXk6WzEyOCwxMjgsMTI4LDFdLGdyZWVuOlswLDEyOCwwLDFdLGdyZWVueWVsbG93OlsxNzMsMjU1LDQ3LDFdLGdyZXk6WzEyOCwxMjgsMTI4LDFdLGhvbmV5ZGV3OlsyNDAsMjU1LDI0MCwxXSxob3RwaW5rOlsyNTUsMTA1LDE4MCwxXSxpbmRpYW5yZWQ6WzIwNSw5Miw5MiwxXSxpbmRpZ286Wzc1LDAsMTMwLDFdLGl2b3J5OlsyNTUsMjU1LDI0MCwxXSxraGFraTpbMjQwLDIzMCwxNDAsMV0sbGF2ZW5kZXI6WzIzMCwyMzAsMjUwLDFdLGxhdmVuZGVyYmx1c2g6WzI1NSwyNDAsMjQ1LDFdLGxhd25ncmVlbjpbMTI0LDI1MiwwLDFdLGxlbW9uY2hpZmZvbjpbMjU1LDI1MCwyMDUsMV0sbGlnaHRibHVlOlsxNzMsMjE2LDIzMCwxXSxsaWdodGNvcmFsOlsyNDAsMTI4LDEyOCwxXSxsaWdodGN5YW46WzIyNCwyNTUsMjU1LDFdLGxpZ2h0Z29sZGVucm9keWVsbG93OlsyNTAsMjUwLDIxMCwxXSxsaWdodGdyYXk6WzIxMSwyMTEsMjExLDFdLGxpZ2h0Z3JlZW46WzE0NCwyMzgsMTQ0LDFdLGxpZ2h0Z3JleTpbMjExLDIxMSwyMTEsMV0sbGlnaHRwaW5rOlsyNTUsMTgyLDE5MywxXSxsaWdodHNhbG1vbjpbMjU1LDE2MCwxMjIsMV0sbGlnaHRzZWFncmVlbjpbMzIsMTc4LDE3MCwxXSxsaWdodHNreWJsdWU6WzEzNSwyMDYsMjUwLDFdLGxpZ2h0c2xhdGVncmF5OlsxMTksMTM2LDE1MywxXSxsaWdodHNsYXRlZ3JleTpbMTE5LDEzNiwxNTMsMV0sbGlnaHRzdGVlbGJsdWU6WzE3NiwxOTYsMjIyLDFdLGxpZ2h0eWVsbG93OlsyNTUsMjU1LDIyNCwxXSxsaW1lOlswLDI1NSwwLDFdLGxpbWVncmVlbjpbNTAsMjA1LDUwLDFdLGxpbmVuOlsyNTAsMjQwLDIzMCwxXSxtYWdlbnRhOlsyNTUsMCwyNTUsMV0sbWFyb29uOlsxMjgsMCwwLDFdLG1lZGl1bWFxdWFtYXJpbmU6WzEwMiwyMDUsMTcwLDFdLG1lZGl1bWJsdWU6WzAsMCwyMDUsMV0sbWVkaXVtb3JjaGlkOlsxODYsODUsMjExLDFdLG1lZGl1bXB1cnBsZTpbMTQ3LDExMiwyMTksMV0sbWVkaXVtc2VhZ3JlZW46WzYwLDE3OSwxMTMsMV0sbWVkaXVtc2xhdGVibHVlOlsxMjMsMTA0LDIzOCwxXSxtZWRpdW1zcHJpbmdncmVlbjpbMCwyNTAsMTU0LDFdLG1lZGl1bXR1cnF1b2lzZTpbNzIsMjA5LDIwNCwxXSxtZWRpdW12aW9sZXRyZWQ6WzE5OSwyMSwxMzMsMV0sbWlkbmlnaHRibHVlOlsyNSwyNSwxMTIsMV0sbWludGNyZWFtOlsyNDUsMjU1LDI1MCwxXSxtaXN0eXJvc2U6WzI1NSwyMjgsMjI1LDFdLG1vY2Nhc2luOlsyNTUsMjI4LDE4MSwxXSxuYXZham93aGl0ZTpbMjU1LDIyMiwxNzMsMV0sbmF2eTpbMCwwLDEyOCwxXSxvbGRsYWNlOlsyNTMsMjQ1LDIzMCwxXSxvbGl2ZTpbMTI4LDEyOCwwLDFdLG9saXZlZHJhYjpbMTA3LDE0MiwzNSwxXSxvcmFuZ2U6WzI1NSwxNjUsMCwxXSxvcmFuZ2VyZWQ6WzI1NSw2OSwwLDFdLG9yY2hpZDpbMjE4LDExMiwyMTQsMV0scGFsZWdvbGRlbnJvZDpbMjM4LDIzMiwxNzAsMV0scGFsZWdyZWVuOlsxNTIsMjUxLDE1MiwxXSxwYWxldHVycXVvaXNlOlsxNzUsMjM4LDIzOCwxXSxwYWxldmlvbGV0cmVkOlsyMTksMTEyLDE0NywxXSxwYXBheWF3aGlwOlsyNTUsMjM5LDIxMywxXSxwZWFjaHB1ZmY6WzI1NSwyMTgsMTg1LDFdLHBlcnU6WzIwNSwxMzMsNjMsMV0scGluazpbMjU1LDE5MiwyMDMsMV0scGx1bTpbMjIxLDE2MCwyMjEsMV0scG93ZGVyYmx1ZTpbMTc2LDIyNCwyMzAsMV0scHVycGxlOlsxMjgsMCwxMjgsMV0scmViZWNjYXB1cnBsZTpbMTAyLDUxLDE1MywxXSxyZWQ6WzI1NSwwLDAsMV0scm9zeWJyb3duOlsxODgsMTQzLDE0MywxXSxyb3lhbGJsdWU6WzY1LDEwNSwyMjUsMV0sc2FkZGxlYnJvd246WzEzOSw2OSwxOSwxXSxzYWxtb246WzI1MCwxMjgsMTE0LDFdLHNhbmR5YnJvd246WzI0NCwxNjQsOTYsMV0sc2VhZ3JlZW46WzQ2LDEzOSw4NywxXSxzZWFzaGVsbDpbMjU1LDI0NSwyMzgsMV0sc2llbm5hOlsxNjAsODIsNDUsMV0sc2lsdmVyOlsxOTIsMTkyLDE5MiwxXSxza3libHVlOlsxMzUsMjA2LDIzNSwxXSxzbGF0ZWJsdWU6WzEwNiw5MCwyMDUsMV0sc2xhdGVncmF5OlsxMTIsMTI4LDE0NCwxXSxzbGF0ZWdyZXk6WzExMiwxMjgsMTQ0LDFdLHNub3c6WzI1NSwyNTAsMjUwLDFdLHNwcmluZ2dyZWVuOlswLDI1NSwxMjcsMV0sc3RlZWxibHVlOls3MCwxMzAsMTgwLDFdLHRhbjpbMjEwLDE4MCwxNDAsMV0sdGVhbDpbMCwxMjgsMTI4LDFdLHRoaXN0bGU6WzIxNiwxOTEsMjE2LDFdLHRvbWF0bzpbMjU1LDk5LDcxLDFdLHR1cnF1b2lzZTpbNjQsMjI0LDIwOCwxXSx2aW9sZXQ6WzIzOCwxMzAsMjM4LDFdLHdoZWF0OlsyNDUsMjIyLDE3OSwxXSx3aGl0ZTpbMjU1LDI1NSwyNTUsMV0sd2hpdGVzbW9rZTpbMjQ1LDI0NSwyNDUsMV0seWVsbG93OlsyNTUsMjU1LDAsMV0seWVsbG93Z3JlZW46WzE1NCwyMDUsNTAsMV19O2Z1bmN0aW9uIEllKHQpe3JldHVybiAodD1NYXRoLnJvdW5kKHQpKTwwPzA6dD4yNTU/MjU1OnR9ZnVuY3Rpb24gTWUodCl7cmV0dXJuIEllKFwiJVwiPT09dFt0Lmxlbmd0aC0xXT9wYXJzZUZsb2F0KHQpLzEwMCoyNTU6cGFyc2VJbnQodCkpfWZ1bmN0aW9uIFRlKHQpe3JldHVybiAoZT1cIiVcIj09PXRbdC5sZW5ndGgtMV0/cGFyc2VGbG9hdCh0KS8xMDA6cGFyc2VGbG9hdCh0KSk8MD8wOmU+MT8xOmU7dmFyIGU7fWZ1bmN0aW9uIHplKHQsZSxyKXtyZXR1cm4gcjwwP3IrPTE6cj4xJiYoci09MSksNipyPDE/dCsoZS10KSpyKjY6MipyPDE/ZTozKnI8Mj90KyhlLXQpKigyLzMtcikqNjp0fXRyeXtTZT17fS5wYXJzZUNTU0NvbG9yPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dC5yZXBsYWNlKC8gL2csXCJcIikudG9Mb3dlckNhc2UoKTtpZihyIGluIGtlKXJldHVybiBrZVtyXS5zbGljZSgpO2lmKFwiI1wiPT09clswXSlyZXR1cm4gND09PXIubGVuZ3RoPyhlPXBhcnNlSW50KHIuc3Vic3RyKDEpLDE2KSk+PTAmJmU8PTQwOTU/WygzODQwJmUpPj40fCgzODQwJmUpPj44LDI0MCZlfCgyNDAmZSk+PjQsMTUmZXwoMTUmZSk8PDQsMV06bnVsbDo3PT09ci5sZW5ndGgmJihlPXBhcnNlSW50KHIuc3Vic3RyKDEpLDE2KSk+PTAmJmU8PTE2Nzc3MjE1P1soMTY3MTE2ODAmZSk+PjE2LCg2NTI4MCZlKT4+OCwyNTUmZSwxXTpudWxsO3ZhciBuPXIuaW5kZXhPZihcIihcIiksaT1yLmluZGV4T2YoXCIpXCIpO2lmKC0xIT09biYmaSsxPT09ci5sZW5ndGgpe3ZhciBzPXIuc3Vic3RyKDAsbiksYT1yLnN1YnN0cihuKzEsaS0obisxKSkuc3BsaXQoXCIsXCIpLG89MTtzd2l0Y2gocyl7Y2FzZVwicmdiYVwiOmlmKDQhPT1hLmxlbmd0aClyZXR1cm4gbnVsbDtvPVRlKGEucG9wKCkpO2Nhc2VcInJnYlwiOnJldHVybiAzIT09YS5sZW5ndGg/bnVsbDpbTWUoYVswXSksTWUoYVsxXSksTWUoYVsyXSksb107Y2FzZVwiaHNsYVwiOmlmKDQhPT1hLmxlbmd0aClyZXR1cm4gbnVsbDtvPVRlKGEucG9wKCkpO2Nhc2VcImhzbFwiOmlmKDMhPT1hLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgbD0ocGFyc2VGbG9hdChhWzBdKSUzNjArMzYwKSUzNjAvMzYwLHU9VGUoYVsxXSksYz1UZShhWzJdKSxoPWM8PS41P2MqKHUrMSk6Yyt1LWMqdSxwPTIqYy1oO3JldHVybiBbSWUoMjU1KnplKHAsaCxsKzEvMykpLEllKDI1NSp6ZShwLGgsbCkpLEllKDI1NSp6ZShwLGgsbC0xLzMpKSxvXTtkZWZhdWx0OnJldHVybiBudWxsfX1yZXR1cm4gbnVsbH07fWNhdGNoKHQpe31jbGFzcyBCZXtjb25zdHJ1Y3Rvcih0LGUscixuPTEpe3RoaXMucj10LHRoaXMuZz1lLHRoaXMuYj1yLHRoaXMuYT1uO31zdGF0aWMgcGFyc2UodCl7aWYoIXQpcmV0dXJuO2lmKHQgaW5zdGFuY2VvZiBCZSlyZXR1cm4gdDtpZihcInN0cmluZ1wiIT10eXBlb2YgdClyZXR1cm47Y29uc3QgZT1TZSh0KTtyZXR1cm4gZT9uZXcgQmUoZVswXS8yNTUqZVszXSxlWzFdLzI1NSplWzNdLGVbMl0vMjU1KmVbM10sZVszXSk6dm9pZCAwfXRvU3RyaW5nKCl7Y29uc3RbdCxlLHIsbl09dGhpcy50b0FycmF5KCk7cmV0dXJuIGByZ2JhKCR7TWF0aC5yb3VuZCh0KX0sJHtNYXRoLnJvdW5kKGUpfSwke01hdGgucm91bmQocil9LCR7bn0pYH10b0FycmF5KCl7Y29uc3R7cjp0LGc6ZSxiOnIsYTpufT10aGlzO3JldHVybiAwPT09bj9bMCwwLDAsMF06WzI1NSp0L24sMjU1KmUvbiwyNTUqci9uLG5dfXRvQXJyYXkwMSgpe2NvbnN0e3I6dCxnOmUsYjpyLGE6bn09dGhpcztyZXR1cm4gMD09PW4/WzAsMCwwLDBdOlt0L24sZS9uLHIvbixuXX10b0FycmF5MDFQcmVtdWx0aXBsaWVkQWxwaGEoKXtjb25zdHtyOnQsZzplLGI6cixhOm59PXRoaXM7cmV0dXJuIFt0LGUscixuXX19QmUuYmxhY2s9bmV3IEJlKDAsMCwwLDEpLEJlLndoaXRlPW5ldyBCZSgxLDEsMSwxKSxCZS50cmFuc3BhcmVudD1uZXcgQmUoMCwwLDAsMCksQmUucmVkPW5ldyBCZSgxLDAsMCwxKSxCZS5ibHVlPW5ldyBCZSgwLDAsMSwxKTt2YXIgRWU9QmU7Y2xhc3MgQ2V7Y29uc3RydWN0b3IodCxlLHIpe3RoaXMuc2Vuc2l0aXZpdHk9dD9lP1widmFyaWFudFwiOlwiY2FzZVwiOmU/XCJhY2NlbnRcIjpcImJhc2VcIix0aGlzLmxvY2FsZT1yLHRoaXMuY29sbGF0b3I9bmV3IEludGwuQ29sbGF0b3IodGhpcy5sb2NhbGU/dGhpcy5sb2NhbGU6W10se3NlbnNpdGl2aXR5OnRoaXMuc2Vuc2l0aXZpdHksdXNhZ2U6XCJzZWFyY2hcIn0pO31jb21wYXJlKHQsZSl7cmV0dXJuIHRoaXMuY29sbGF0b3IuY29tcGFyZSh0LGUpfXJlc29sdmVkTG9jYWxlKCl7cmV0dXJuIG5ldyBJbnRsLkNvbGxhdG9yKHRoaXMubG9jYWxlP3RoaXMubG9jYWxlOltdKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGV9fWNsYXNzIFBle2NvbnN0cnVjdG9yKHQsZSxyLG4saSl7dGhpcy50ZXh0PXQubm9ybWFsaXplP3Qubm9ybWFsaXplKCk6dCx0aGlzLmltYWdlPWUsdGhpcy5zY2FsZT1yLHRoaXMuZm9udFN0YWNrPW4sdGhpcy50ZXh0Q29sb3I9aTt9fWNsYXNzIERle2NvbnN0cnVjdG9yKHQpe3RoaXMuc2VjdGlvbnM9dDt9c3RhdGljIGZyb21TdHJpbmcodCl7cmV0dXJuIG5ldyBEZShbbmV3IFBlKHQsbnVsbCxudWxsLG51bGwsbnVsbCldKX1pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLnNlY3Rpb25zLmxlbmd0aHx8IXRoaXMuc2VjdGlvbnMuc29tZSgodD0+MCE9PXQudGV4dC5sZW5ndGh8fHQuaW1hZ2UmJjAhPT10LmltYWdlLm5hbWUubGVuZ3RoKSl9c3RhdGljIGZhY3RvcnkodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEZT90OkRlLmZyb21TdHJpbmcodCl9dG9TdHJpbmcoKXtyZXR1cm4gMD09PXRoaXMuc2VjdGlvbnMubGVuZ3RoP1wiXCI6dGhpcy5zZWN0aW9ucy5tYXAoKHQ9PnQudGV4dCkpLmpvaW4oXCJcIil9c2VyaWFsaXplKCl7Y29uc3QgdD1bXCJmb3JtYXRcIl07Zm9yKGNvbnN0IGUgb2YgdGhpcy5zZWN0aW9ucyl7aWYoZS5pbWFnZSl7dC5wdXNoKFtcImltYWdlXCIsZS5pbWFnZS5uYW1lXSk7Y29udGludWV9dC5wdXNoKGUudGV4dCk7Y29uc3Qgcj17fTtlLmZvbnRTdGFjayYmKHJbXCJ0ZXh0LWZvbnRcIl09W1wibGl0ZXJhbFwiLGUuZm9udFN0YWNrLnNwbGl0KFwiLFwiKV0pLGUuc2NhbGUmJihyW1wiZm9udC1zY2FsZVwiXT1lLnNjYWxlKSxlLnRleHRDb2xvciYmKHJbXCJ0ZXh0LWNvbG9yXCJdPVtcInJnYmFcIl0uY29uY2F0KGUudGV4dENvbG9yLnRvQXJyYXkoKSkpLHQucHVzaChyKTt9cmV0dXJuIHR9fWNsYXNzIFZle2NvbnN0cnVjdG9yKHQpe3RoaXMubmFtZT10Lm5hbWUsdGhpcy5hdmFpbGFibGU9dC5hdmFpbGFibGU7fXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMubmFtZX1zdGF0aWMgZnJvbVN0cmluZyh0KXtyZXR1cm4gdD9uZXcgVmUoe25hbWU6dCxhdmFpbGFibGU6ITF9KTpudWxsfXNlcmlhbGl6ZSgpe3JldHVybiBbXCJpbWFnZVwiLHRoaXMubmFtZV19fWZ1bmN0aW9uIExlKHQsZSxyLG4pe3JldHVybiBcIm51bWJlclwiPT10eXBlb2YgdCYmdD49MCYmdDw9MjU1JiZcIm51bWJlclwiPT10eXBlb2YgZSYmZT49MCYmZTw9MjU1JiZcIm51bWJlclwiPT10eXBlb2YgciYmcj49MCYmcjw9MjU1P3ZvaWQgMD09PW58fFwibnVtYmVyXCI9PXR5cGVvZiBuJiZuPj0wJiZuPD0xP251bGw6YEludmFsaWQgcmdiYSB2YWx1ZSBbJHtbdCxlLHIsbl0uam9pbihcIiwgXCIpfV06ICdhJyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMS5gOmBJbnZhbGlkIHJnYmEgdmFsdWUgWyR7KFwibnVtYmVyXCI9PXR5cGVvZiBuP1t0LGUscixuXTpbdCxlLHJdKS5qb2luKFwiLCBcIil9XTogJ3InLCAnZycsIGFuZCAnYicgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI1NS5gfWZ1bmN0aW9uIEZlKHQpe2lmKG51bGw9PT10KXJldHVybiAhMDtpZihcInN0cmluZ1wiPT10eXBlb2YgdClyZXR1cm4gITA7aWYoXCJib29sZWFuXCI9PXR5cGVvZiB0KXJldHVybiAhMDtpZihcIm51bWJlclwiPT10eXBlb2YgdClyZXR1cm4gITA7aWYodCBpbnN0YW5jZW9mIEVlKXJldHVybiAhMDtpZih0IGluc3RhbmNlb2YgQ2UpcmV0dXJuICEwO2lmKHQgaW5zdGFuY2VvZiBEZSlyZXR1cm4gITA7aWYodCBpbnN0YW5jZW9mIFZlKXJldHVybiAhMDtpZihBcnJheS5pc0FycmF5KHQpKXtmb3IoY29uc3QgZSBvZiB0KWlmKCFGZShlKSlyZXR1cm4gITE7cmV0dXJuICEwfWlmKFwib2JqZWN0XCI9PXR5cGVvZiB0KXtmb3IoY29uc3QgZSBpbiB0KWlmKCFGZSh0W2VdKSlyZXR1cm4gITE7cmV0dXJuICEwfXJldHVybiAhMX1mdW5jdGlvbiBSZSh0KXtpZihudWxsPT09dClyZXR1cm4gbGU7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIGNlO2lmKFwiYm9vbGVhblwiPT10eXBlb2YgdClyZXR1cm4gaGU7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQpcmV0dXJuIHVlO2lmKHQgaW5zdGFuY2VvZiBFZSlyZXR1cm4gcGU7aWYodCBpbnN0YW5jZW9mIENlKXJldHVybiB5ZTtpZih0IGluc3RhbmNlb2YgRGUpcmV0dXJuIG1lO2lmKHQgaW5zdGFuY2VvZiBWZSlyZXR1cm4gZ2U7aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgZT10Lmxlbmd0aDtsZXQgcjtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PVJlKGUpO2lmKHIpe2lmKHI9PT10KWNvbnRpbnVlO3I9ZmU7YnJlYWt9cj10O31yZXR1cm4geGUocnx8ZmUsZSl9cmV0dXJuIGRlfWZ1bmN0aW9uIFVlKHQpe2NvbnN0IGU9dHlwZW9mIHQ7cmV0dXJuIG51bGw9PT10P1wiXCI6XCJzdHJpbmdcIj09PWV8fFwibnVtYmVyXCI9PT1lfHxcImJvb2xlYW5cIj09PWU/U3RyaW5nKHQpOnQgaW5zdGFuY2VvZiBFZXx8dCBpbnN0YW5jZW9mIERlfHx0IGluc3RhbmNlb2YgVmU/dC50b1N0cmluZygpOkpTT04uc3RyaW5naWZ5KHQpfWNsYXNzICRle2NvbnN0cnVjdG9yKHQsZSl7dGhpcy50eXBlPXQsdGhpcy52YWx1ZT1lO31zdGF0aWMgcGFyc2UodCxlKXtpZigyIT09dC5sZW5ndGgpcmV0dXJuIGUuZXJyb3IoYCdsaXRlcmFsJyBleHByZXNzaW9uIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBidXQgZm91bmQgJHt0Lmxlbmd0aC0xfSBpbnN0ZWFkLmApO2lmKCFGZSh0WzFdKSlyZXR1cm4gZS5lcnJvcihcImludmFsaWQgdmFsdWVcIik7Y29uc3Qgcj10WzFdO2xldCBuPVJlKHIpO2NvbnN0IGk9ZS5leHBlY3RlZFR5cGU7cmV0dXJuIFwiYXJyYXlcIiE9PW4ua2luZHx8MCE9PW4uTnx8IWl8fFwiYXJyYXlcIiE9PWkua2luZHx8XCJudW1iZXJcIj09dHlwZW9mIGkuTiYmMCE9PWkuTnx8KG49aSksbmV3ICRlKG4scil9ZXZhbHVhdGUoKXtyZXR1cm4gdGhpcy52YWx1ZX1lYWNoQ2hpbGQoKXt9b3V0cHV0RGVmaW5lZCgpe3JldHVybiAhMH1zZXJpYWxpemUoKXtyZXR1cm4gXCJhcnJheVwiPT09dGhpcy50eXBlLmtpbmR8fFwib2JqZWN0XCI9PT10aGlzLnR5cGUua2luZD9bXCJsaXRlcmFsXCIsdGhpcy52YWx1ZV06dGhpcy52YWx1ZSBpbnN0YW5jZW9mIEVlP1tcInJnYmFcIl0uY29uY2F0KHRoaXMudmFsdWUudG9BcnJheSgpKTp0aGlzLnZhbHVlIGluc3RhbmNlb2YgRGU/dGhpcy52YWx1ZS5zZXJpYWxpemUoKTp0aGlzLnZhbHVlfX12YXIgamU9JGUsT2U9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5uYW1lPVwiRXhwcmVzc2lvbkV2YWx1YXRpb25FcnJvclwiLHRoaXMubWVzc2FnZT10O310b0pTT04oKXtyZXR1cm4gdGhpcy5tZXNzYWdlfX07Y29uc3QgcWU9e3N0cmluZzpjZSxudW1iZXI6dWUsYm9vbGVhbjpoZSxvYmplY3Q6ZGV9O2NsYXNzIE5le2NvbnN0cnVjdG9yKHQsZSl7dGhpcy50eXBlPXQsdGhpcy5hcmdzPWU7fXN0YXRpYyBwYXJzZSh0LGUpe2lmKHQubGVuZ3RoPDIpcmV0dXJuIGUuZXJyb3IoXCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuXCIpO2xldCByLG49MTtjb25zdCBpPXRbMF07aWYoXCJhcnJheVwiPT09aSl7bGV0IGkscztpZih0Lmxlbmd0aD4yKXtjb25zdCByPXRbMV07aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHJ8fCEociBpbiBxZSl8fFwib2JqZWN0XCI9PT1yKXJldHVybiBlLmVycm9yKCdUaGUgaXRlbSB0eXBlIGFyZ3VtZW50IG9mIFwiYXJyYXlcIiBtdXN0IGJlIG9uZSBvZiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbicsMSk7aT1xZVtyXSxuKys7fWVsc2UgaT1mZTtpZih0Lmxlbmd0aD4zKXtpZihudWxsIT09dFsyXSYmKFwibnVtYmVyXCIhPXR5cGVvZiB0WzJdfHx0WzJdPDB8fHRbMl0hPT1NYXRoLmZsb29yKHRbMl0pKSlyZXR1cm4gZS5lcnJvcignVGhlIGxlbmd0aCBhcmd1bWVudCB0byBcImFycmF5XCIgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgbGl0ZXJhbCcsMik7cz10WzJdLG4rKzt9cj14ZShpLHMpO31lbHNlIHI9cWVbaV07Y29uc3Qgcz1bXTtmb3IoO248dC5sZW5ndGg7bisrKXtjb25zdCByPWUucGFyc2UodFtuXSxuLGZlKTtpZighcilyZXR1cm4gbnVsbDtzLnB1c2gocik7fXJldHVybiBuZXcgTmUocixzKX1ldmFsdWF0ZSh0KXtmb3IobGV0IGU9MDtlPHRoaXMuYXJncy5sZW5ndGg7ZSsrKXtjb25zdCByPXRoaXMuYXJnc1tlXS5ldmFsdWF0ZSh0KTtpZighd2UodGhpcy50eXBlLFJlKHIpKSlyZXR1cm4gcjtpZihlPT09dGhpcy5hcmdzLmxlbmd0aC0xKXRocm93IG5ldyBPZShgRXhwZWN0ZWQgdmFsdWUgdG8gYmUgb2YgdHlwZSAke3ZlKHRoaXMudHlwZSl9LCBidXQgZm91bmQgJHt2ZShSZShyKSl9IGluc3RlYWQuYCl9cmV0dXJuIG51bGx9ZWFjaENoaWxkKHQpe3RoaXMuYXJncy5mb3JFYWNoKHQpO31vdXRwdXREZWZpbmVkKCl7cmV0dXJuIHRoaXMuYXJncy5ldmVyeSgodD0+dC5vdXRwdXREZWZpbmVkKCkpKX1zZXJpYWxpemUoKXtjb25zdCB0PXRoaXMudHlwZSxlPVt0LmtpbmRdO2lmKFwiYXJyYXlcIj09PXQua2luZCl7Y29uc3Qgcj10Lml0ZW1UeXBlO2lmKFwic3RyaW5nXCI9PT1yLmtpbmR8fFwibnVtYmVyXCI9PT1yLmtpbmR8fFwiYm9vbGVhblwiPT09ci5raW5kKXtlLnB1c2goci5raW5kKTtjb25zdCBuPXQuTjsoXCJudW1iZXJcIj09dHlwZW9mIG58fHRoaXMuYXJncy5sZW5ndGg+MSkmJmUucHVzaChuKTt9fXJldHVybiBlLmNvbmNhdCh0aGlzLmFyZ3MubWFwKCh0PT50LnNlcmlhbGl6ZSgpKSkpfX12YXIgR2U9TmU7Y2xhc3MgWmV7Y29uc3RydWN0b3IodCl7dGhpcy50eXBlPW1lLHRoaXMuc2VjdGlvbnM9dDt9c3RhdGljIHBhcnNlKHQsZSl7aWYodC5sZW5ndGg8MilyZXR1cm4gZS5lcnJvcihcIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC5cIik7Y29uc3Qgcj10WzFdO2lmKCFBcnJheS5pc0FycmF5KHIpJiZcIm9iamVjdFwiPT10eXBlb2YgcilyZXR1cm4gZS5lcnJvcihcIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYW4gaW1hZ2Ugb3IgdGV4dCBzZWN0aW9uLlwiKTtjb25zdCBuPVtdO2xldCBpPSExO2ZvcihsZXQgcj0xO3I8PXQubGVuZ3RoLTE7KytyKXtjb25zdCBzPXRbcl07aWYoaSYmXCJvYmplY3RcIj09dHlwZW9mIHMmJiFBcnJheS5pc0FycmF5KHMpKXtpPSExO2xldCB0PW51bGw7aWYoc1tcImZvbnQtc2NhbGVcIl0mJih0PWUucGFyc2Uoc1tcImZvbnQtc2NhbGVcIl0sMSx1ZSksIXQpKXJldHVybiBudWxsO2xldCByPW51bGw7aWYoc1tcInRleHQtZm9udFwiXSYmKHI9ZS5wYXJzZShzW1widGV4dC1mb250XCJdLDEseGUoY2UpKSwhcikpcmV0dXJuIG51bGw7bGV0IGE9bnVsbDtpZihzW1widGV4dC1jb2xvclwiXSYmKGE9ZS5wYXJzZShzW1widGV4dC1jb2xvclwiXSwxLHBlKSwhYSkpcmV0dXJuIG51bGw7Y29uc3Qgbz1uW24ubGVuZ3RoLTFdO28uc2NhbGU9dCxvLmZvbnQ9cixvLnRleHRDb2xvcj1hO31lbHNlIHtjb25zdCBzPWUucGFyc2UodFtyXSwxLGZlKTtpZighcylyZXR1cm4gbnVsbDtjb25zdCBhPXMudHlwZS5raW5kO2lmKFwic3RyaW5nXCIhPT1hJiZcInZhbHVlXCIhPT1hJiZcIm51bGxcIiE9PWEmJlwicmVzb2x2ZWRJbWFnZVwiIT09YSlyZXR1cm4gZS5lcnJvcihcIkZvcm1hdHRlZCB0ZXh0IHR5cGUgbXVzdCBiZSAnc3RyaW5nJywgJ3ZhbHVlJywgJ2ltYWdlJyBvciAnbnVsbCcuXCIpO2k9ITAsbi5wdXNoKHtjb250ZW50OnMsc2NhbGU6bnVsbCxmb250Om51bGwsdGV4dENvbG9yOm51bGx9KTt9fXJldHVybiBuZXcgWmUobil9ZXZhbHVhdGUodCl7cmV0dXJuIG5ldyBEZSh0aGlzLnNlY3Rpb25zLm1hcCgoZT0+e2NvbnN0IHI9ZS5jb250ZW50LmV2YWx1YXRlKHQpO3JldHVybiBSZShyKT09PWdlP25ldyBQZShcIlwiLHIsbnVsbCxudWxsLG51bGwpOm5ldyBQZShVZShyKSxudWxsLGUuc2NhbGU/ZS5zY2FsZS5ldmFsdWF0ZSh0KTpudWxsLGUuZm9udD9lLmZvbnQuZXZhbHVhdGUodCkuam9pbihcIixcIik6bnVsbCxlLnRleHRDb2xvcj9lLnRleHRDb2xvci5ldmFsdWF0ZSh0KTpudWxsKX0pKSl9ZWFjaENoaWxkKHQpe2Zvcihjb25zdCBlIG9mIHRoaXMuc2VjdGlvbnMpdChlLmNvbnRlbnQpLGUuc2NhbGUmJnQoZS5zY2FsZSksZS5mb250JiZ0KGUuZm9udCksZS50ZXh0Q29sb3ImJnQoZS50ZXh0Q29sb3IpO31vdXRwdXREZWZpbmVkKCl7cmV0dXJuICExfXNlcmlhbGl6ZSgpe2NvbnN0IHQ9W1wiZm9ybWF0XCJdO2Zvcihjb25zdCBlIG9mIHRoaXMuc2VjdGlvbnMpe3QucHVzaChlLmNvbnRlbnQuc2VyaWFsaXplKCkpO2NvbnN0IHI9e307ZS5zY2FsZSYmKHJbXCJmb250LXNjYWxlXCJdPWUuc2NhbGUuc2VyaWFsaXplKCkpLGUuZm9udCYmKHJbXCJ0ZXh0LWZvbnRcIl09ZS5mb250LnNlcmlhbGl6ZSgpKSxlLnRleHRDb2xvciYmKHJbXCJ0ZXh0LWNvbG9yXCJdPWUudGV4dENvbG9yLnNlcmlhbGl6ZSgpKSx0LnB1c2gocik7fXJldHVybiB0fX1jbGFzcyBLZXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnR5cGU9Z2UsdGhpcy5pbnB1dD10O31zdGF0aWMgcGFyc2UodCxlKXtpZigyIT09dC5sZW5ndGgpcmV0dXJuIGUuZXJyb3IoXCJFeHBlY3RlZCB0d28gYXJndW1lbnRzLlwiKTtjb25zdCByPWUucGFyc2UodFsxXSwxLGNlKTtyZXR1cm4gcj9uZXcgS2Uocik6ZS5lcnJvcihcIk5vIGltYWdlIG5hbWUgcHJvdmlkZWQuXCIpfWV2YWx1YXRlKHQpe2NvbnN0IGU9dGhpcy5pbnB1dC5ldmFsdWF0ZSh0KSxyPVZlLmZyb21TdHJpbmcoZSk7cmV0dXJuIHImJnQuYXZhaWxhYmxlSW1hZ2VzJiYoci5hdmFpbGFibGU9dC5hdmFpbGFibGVJbWFnZXMuaW5kZXhPZihlKT4tMSkscn1lYWNoQ2hpbGQodCl7dCh0aGlzLmlucHV0KTt9b3V0cHV0RGVmaW5lZCgpe3JldHVybiAhMX1zZXJpYWxpemUoKXtyZXR1cm4gW1wiaW1hZ2VcIix0aGlzLmlucHV0LnNlcmlhbGl6ZSgpXX19Y29uc3QgWGU9e1widG8tYm9vbGVhblwiOmhlLFwidG8tY29sb3JcIjpwZSxcInRvLW51bWJlclwiOnVlLFwidG8tc3RyaW5nXCI6Y2V9O2NsYXNzIEple2NvbnN0cnVjdG9yKHQsZSl7dGhpcy50eXBlPXQsdGhpcy5hcmdzPWU7fXN0YXRpYyBwYXJzZSh0LGUpe2lmKHQubGVuZ3RoPDIpcmV0dXJuIGUuZXJyb3IoXCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuXCIpO2NvbnN0IHI9dFswXTtpZigoXCJ0by1ib29sZWFuXCI9PT1yfHxcInRvLXN0cmluZ1wiPT09cikmJjIhPT10Lmxlbmd0aClyZXR1cm4gZS5lcnJvcihcIkV4cGVjdGVkIG9uZSBhcmd1bWVudC5cIik7Y29uc3Qgbj1YZVtyXSxpPVtdO2ZvcihsZXQgcj0xO3I8dC5sZW5ndGg7cisrKXtjb25zdCBuPWUucGFyc2UodFtyXSxyLGZlKTtpZighbilyZXR1cm4gbnVsbDtpLnB1c2gobik7fXJldHVybiBuZXcgSmUobixpKX1ldmFsdWF0ZSh0KXtpZihcImJvb2xlYW5cIj09PXRoaXMudHlwZS5raW5kKXJldHVybiBCb29sZWFuKHRoaXMuYXJnc1swXS5ldmFsdWF0ZSh0KSk7aWYoXCJjb2xvclwiPT09dGhpcy50eXBlLmtpbmQpe2xldCBlLHI7Zm9yKGNvbnN0IG4gb2YgdGhpcy5hcmdzKXtpZihlPW4uZXZhbHVhdGUodCkscj1udWxsLGUgaW5zdGFuY2VvZiBFZSlyZXR1cm4gZTtpZihcInN0cmluZ1wiPT10eXBlb2YgZSl7Y29uc3Qgcj10LnBhcnNlQ29sb3IoZSk7aWYocilyZXR1cm4gcn1lbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkmJihyPWUubGVuZ3RoPDN8fGUubGVuZ3RoPjQ/YEludmFsaWQgcmJnYSB2YWx1ZSAke0pTT04uc3RyaW5naWZ5KGUpfTogZXhwZWN0ZWQgYW4gYXJyYXkgY29udGFpbmluZyBlaXRoZXIgdGhyZWUgb3IgZm91ciBudW1lcmljIHZhbHVlcy5gOkxlKGVbMF0sZVsxXSxlWzJdLGVbM10pLCFyKSlyZXR1cm4gbmV3IEVlKGVbMF0vMjU1LGVbMV0vMjU1LGVbMl0vMjU1LGVbM10pfXRocm93IG5ldyBPZShyfHxgQ291bGQgbm90IHBhcnNlIGNvbG9yIGZyb20gdmFsdWUgJyR7XCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpTdHJpbmcoSlNPTi5zdHJpbmdpZnkoZSkpfSdgKX1pZihcIm51bWJlclwiPT09dGhpcy50eXBlLmtpbmQpe2xldCBlPW51bGw7Zm9yKGNvbnN0IHIgb2YgdGhpcy5hcmdzKXtpZihlPXIuZXZhbHVhdGUodCksbnVsbD09PWUpcmV0dXJuIDA7Y29uc3Qgbj1OdW1iZXIoZSk7aWYoIWlzTmFOKG4pKXJldHVybiBufXRocm93IG5ldyBPZShgQ291bGQgbm90IGNvbnZlcnQgJHtKU09OLnN0cmluZ2lmeShlKX0gdG8gbnVtYmVyLmApfXJldHVybiBcImZvcm1hdHRlZFwiPT09dGhpcy50eXBlLmtpbmQ/RGUuZnJvbVN0cmluZyhVZSh0aGlzLmFyZ3NbMF0uZXZhbHVhdGUodCkpKTpcInJlc29sdmVkSW1hZ2VcIj09PXRoaXMudHlwZS5raW5kP1ZlLmZyb21TdHJpbmcoVWUodGhpcy5hcmdzWzBdLmV2YWx1YXRlKHQpKSk6VWUodGhpcy5hcmdzWzBdLmV2YWx1YXRlKHQpKX1lYWNoQ2hpbGQodCl7dGhpcy5hcmdzLmZvckVhY2godCk7fW91dHB1dERlZmluZWQoKXtyZXR1cm4gdGhpcy5hcmdzLmV2ZXJ5KCh0PT50Lm91dHB1dERlZmluZWQoKSkpfXNlcmlhbGl6ZSgpe2lmKFwiZm9ybWF0dGVkXCI9PT10aGlzLnR5cGUua2luZClyZXR1cm4gbmV3IFplKFt7Y29udGVudDp0aGlzLmFyZ3NbMF0sc2NhbGU6bnVsbCxmb250Om51bGwsdGV4dENvbG9yOm51bGx9XSkuc2VyaWFsaXplKCk7aWYoXCJyZXNvbHZlZEltYWdlXCI9PT10aGlzLnR5cGUua2luZClyZXR1cm4gbmV3IEtlKHRoaXMuYXJnc1swXSkuc2VyaWFsaXplKCk7Y29uc3QgdD1bYHRvLSR7dGhpcy50eXBlLmtpbmR9YF07cmV0dXJuIHRoaXMuZWFjaENoaWxkKChlPT57dC5wdXNoKGUuc2VyaWFsaXplKCkpO30pKSx0fX12YXIgSGU9SmU7Y29uc3QgWWU9W1wiVW5rbm93blwiLFwiUG9pbnRcIixcIkxpbmVTdHJpbmdcIixcIlBvbHlnb25cIl07dmFyIFdlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5nbG9iYWxzPW51bGwsdGhpcy5mZWF0dXJlPW51bGwsdGhpcy5mZWF0dXJlU3RhdGU9bnVsbCx0aGlzLmZvcm1hdHRlZFNlY3Rpb249bnVsbCx0aGlzLl9wYXJzZUNvbG9yQ2FjaGU9e30sdGhpcy5hdmFpbGFibGVJbWFnZXM9bnVsbCx0aGlzLmNhbm9uaWNhbD1udWxsLHRoaXMuZmVhdHVyZVRpbGVDb29yZD1udWxsLHRoaXMuZmVhdHVyZURpc3RhbmNlRGF0YT1udWxsO31pZCgpe3JldHVybiB0aGlzLmZlYXR1cmUmJnZvaWQgMCE9PXRoaXMuZmVhdHVyZS5pZD90aGlzLmZlYXR1cmUuaWQ6bnVsbH1nZW9tZXRyeVR5cGUoKXtyZXR1cm4gdGhpcy5mZWF0dXJlP1wibnVtYmVyXCI9PXR5cGVvZiB0aGlzLmZlYXR1cmUudHlwZT9ZZVt0aGlzLmZlYXR1cmUudHlwZV06dGhpcy5mZWF0dXJlLnR5cGU6bnVsbH1nZW9tZXRyeSgpe3JldHVybiB0aGlzLmZlYXR1cmUmJlwiZ2VvbWV0cnlcImluIHRoaXMuZmVhdHVyZT90aGlzLmZlYXR1cmUuZ2VvbWV0cnk6bnVsbH1jYW5vbmljYWxJRCgpe3JldHVybiB0aGlzLmNhbm9uaWNhbH1wcm9wZXJ0aWVzKCl7cmV0dXJuIHRoaXMuZmVhdHVyZSYmdGhpcy5mZWF0dXJlLnByb3BlcnRpZXN8fHt9fWRpc3RhbmNlRnJvbUNlbnRlcigpe2lmKHRoaXMuZmVhdHVyZVRpbGVDb29yZCYmdGhpcy5mZWF0dXJlRGlzdGFuY2VEYXRhKXtjb25zdCB0PXRoaXMuZmVhdHVyZURpc3RhbmNlRGF0YS5jZW50ZXIsZT10aGlzLmZlYXR1cmVEaXN0YW5jZURhdGEuc2NhbGUse3g6cix5Om59PXRoaXMuZmVhdHVyZVRpbGVDb29yZDtyZXR1cm4gdGhpcy5mZWF0dXJlRGlzdGFuY2VEYXRhLmJlYXJpbmdbMF0qKHIqZS10WzBdKSt0aGlzLmZlYXR1cmVEaXN0YW5jZURhdGEuYmVhcmluZ1sxXSoobiplLXRbMV0pfXJldHVybiAwfXBhcnNlQ29sb3IodCl7bGV0IGU9dGhpcy5fcGFyc2VDb2xvckNhY2hlW3RdO3JldHVybiBlfHwoZT10aGlzLl9wYXJzZUNvbG9yQ2FjaGVbdF09RWUucGFyc2UodCkpLGV9fTtjbGFzcyBRZXtjb25zdHJ1Y3Rvcih0LGUscixuKXt0aGlzLm5hbWU9dCx0aGlzLnR5cGU9ZSx0aGlzLl9ldmFsdWF0ZT1yLHRoaXMuYXJncz1uO31ldmFsdWF0ZSh0KXtyZXR1cm4gdGhpcy5fZXZhbHVhdGUodCx0aGlzLmFyZ3MpfWVhY2hDaGlsZCh0KXt0aGlzLmFyZ3MuZm9yRWFjaCh0KTt9b3V0cHV0RGVmaW5lZCgpe3JldHVybiAhMX1zZXJpYWxpemUoKXtyZXR1cm4gW3RoaXMubmFtZV0uY29uY2F0KHRoaXMuYXJncy5tYXAoKHQ9PnQuc2VyaWFsaXplKCkpKSl9c3RhdGljIHBhcnNlKHQsZSl7Y29uc3Qgcj10WzBdLG49UWUuZGVmaW5pdGlvbnNbcl07aWYoIW4pcmV0dXJuIGUuZXJyb3IoYFVua25vd24gZXhwcmVzc2lvbiBcIiR7cn1cIi4gSWYgeW91IHdhbnRlZCBhIGxpdGVyYWwgYXJyYXksIHVzZSBbXCJsaXRlcmFsXCIsIFsuLi5dXS5gLDApO2NvbnN0IGk9QXJyYXkuaXNBcnJheShuKT9uWzBdOm4udHlwZSxzPUFycmF5LmlzQXJyYXkobik/W1tuWzFdLG5bMl1dXTpuLm92ZXJsb2FkcyxhPXMuZmlsdGVyKCgoW2VdKT0+IUFycmF5LmlzQXJyYXkoZSl8fGUubGVuZ3RoPT09dC5sZW5ndGgtMSkpO2xldCBvPW51bGw7Zm9yKGNvbnN0W24sc11vZiBhKXtvPW5ldyBJcihlLnJlZ2lzdHJ5LGUucGF0aCxudWxsLGUuc2NvcGUpO2NvbnN0IGE9W107bGV0IGw9ITE7Zm9yKGxldCBlPTE7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IHI9dFtlXSxpPUFycmF5LmlzQXJyYXkobik/bltlLTFdOm4udHlwZSxzPW8ucGFyc2UociwxK2EubGVuZ3RoLGkpO2lmKCFzKXtsPSEwO2JyZWFrfWEucHVzaChzKTt9aWYoIWwpaWYoQXJyYXkuaXNBcnJheShuKSYmbi5sZW5ndGghPT1hLmxlbmd0aClvLmVycm9yKGBFeHBlY3RlZCAke24ubGVuZ3RofSBhcmd1bWVudHMsIGJ1dCBmb3VuZCAke2EubGVuZ3RofSBpbnN0ZWFkLmApO2Vsc2Uge2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCsrKXtjb25zdCBlPUFycmF5LmlzQXJyYXkobik/blt0XTpuLnR5cGUscj1hW3RdO28uY29uY2F0KHQrMSkuY2hlY2tTdWJ0eXBlKGUsci50eXBlKTt9aWYoMD09PW8uZXJyb3JzLmxlbmd0aClyZXR1cm4gbmV3IFFlKHIsaSxzLGEpfX1pZigxPT09YS5sZW5ndGgpZS5lcnJvcnMucHVzaCguLi5vLmVycm9ycyk7ZWxzZSB7Y29uc3Qgcj0oYS5sZW5ndGg/YTpzKS5tYXAoKChbdF0pPT57cmV0dXJuIGU9dCxBcnJheS5pc0FycmF5KGUpP2AoJHtlLm1hcCh2ZSkuam9pbihcIiwgXCIpfSlgOmAoJHt2ZShlLnR5cGUpfS4uLilgO3ZhciBlO30pKS5qb2luKFwiIHwgXCIpLG49W107Zm9yKGxldCByPTE7cjx0Lmxlbmd0aDtyKyspe2NvbnN0IGk9ZS5wYXJzZSh0W3JdLDErbi5sZW5ndGgpO2lmKCFpKXJldHVybiBudWxsO24ucHVzaCh2ZShpLnR5cGUpKTt9ZS5lcnJvcihgRXhwZWN0ZWQgYXJndW1lbnRzIG9mIHR5cGUgJHtyfSwgYnV0IGZvdW5kICgke24uam9pbihcIiwgXCIpfSkgaW5zdGVhZC5gKTt9cmV0dXJuIG51bGx9c3RhdGljIHJlZ2lzdGVyKHQsZSl7UWUuZGVmaW5pdGlvbnM9ZTtmb3IoY29uc3QgciBpbiBlKXRbcl09UWU7fX12YXIgdHI9UWU7Y2xhc3MgZXJ7Y29uc3RydWN0b3IodCxlLHIpe3RoaXMudHlwZT15ZSx0aGlzLmxvY2FsZT1yLHRoaXMuY2FzZVNlbnNpdGl2ZT10LHRoaXMuZGlhY3JpdGljU2Vuc2l0aXZlPWU7fXN0YXRpYyBwYXJzZSh0LGUpe2lmKDIhPT10Lmxlbmd0aClyZXR1cm4gZS5lcnJvcihcIkV4cGVjdGVkIG9uZSBhcmd1bWVudC5cIik7Y29uc3Qgcj10WzFdO2lmKFwib2JqZWN0XCIhPXR5cGVvZiByfHxBcnJheS5pc0FycmF5KHIpKXJldHVybiBlLmVycm9yKFwiQ29sbGF0b3Igb3B0aW9ucyBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdC5cIik7Y29uc3Qgbj1lLnBhcnNlKHZvaWQgMCE9PXJbXCJjYXNlLXNlbnNpdGl2ZVwiXSYmcltcImNhc2Utc2Vuc2l0aXZlXCJdLDEsaGUpO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IGk9ZS5wYXJzZSh2b2lkIDAhPT1yW1wiZGlhY3JpdGljLXNlbnNpdGl2ZVwiXSYmcltcImRpYWNyaXRpYy1zZW5zaXRpdmVcIl0sMSxoZSk7aWYoIWkpcmV0dXJuIG51bGw7bGV0IHM9bnVsbDtyZXR1cm4gci5sb2NhbGUmJihzPWUucGFyc2Uoci5sb2NhbGUsMSxjZSksIXMpP251bGw6bmV3IGVyKG4saSxzKX1ldmFsdWF0ZSh0KXtyZXR1cm4gbmV3IENlKHRoaXMuY2FzZVNlbnNpdGl2ZS5ldmFsdWF0ZSh0KSx0aGlzLmRpYWNyaXRpY1NlbnNpdGl2ZS5ldmFsdWF0ZSh0KSx0aGlzLmxvY2FsZT90aGlzLmxvY2FsZS5ldmFsdWF0ZSh0KTpudWxsKX1lYWNoQ2hpbGQodCl7dCh0aGlzLmNhc2VTZW5zaXRpdmUpLHQodGhpcy5kaWFjcml0aWNTZW5zaXRpdmUpLHRoaXMubG9jYWxlJiZ0KHRoaXMubG9jYWxlKTt9b3V0cHV0RGVmaW5lZCgpe3JldHVybiAhMX1zZXJpYWxpemUoKXtjb25zdCB0PXt9O3JldHVybiB0W1wiY2FzZS1zZW5zaXRpdmVcIl09dGhpcy5jYXNlU2Vuc2l0aXZlLnNlcmlhbGl6ZSgpLHRbXCJkaWFjcml0aWMtc2Vuc2l0aXZlXCJdPXRoaXMuZGlhY3JpdGljU2Vuc2l0aXZlLnNlcmlhbGl6ZSgpLHRoaXMubG9jYWxlJiYodC5sb2NhbGU9dGhpcy5sb2NhbGUuc2VyaWFsaXplKCkpLFtcImNvbGxhdG9yXCIsdF19fWNvbnN0IHJyPTgxOTI7ZnVuY3Rpb24gbnIodCxlKXt0WzBdPU1hdGgubWluKHRbMF0sZVswXSksdFsxXT1NYXRoLm1pbih0WzFdLGVbMV0pLHRbMl09TWF0aC5tYXgodFsyXSxlWzBdKSx0WzNdPU1hdGgubWF4KHRbM10sZVsxXSk7fWZ1bmN0aW9uIGlyKHQsZSl7cmV0dXJuICEodFswXTw9ZVswXXx8dFsyXT49ZVsyXXx8dFsxXTw9ZVsxXXx8dFszXT49ZVszXSl9ZnVuY3Rpb24gc3IodCxlKXtjb25zdCByPSgxODArdFswXSkvMzYwLG49KDE4MC0xODAvTWF0aC5QSSpNYXRoLmxvZyhNYXRoLnRhbihNYXRoLlBJLzQrdFsxXSpNYXRoLlBJLzM2MCkpKS8zNjAsaT1NYXRoLnBvdygyLGUueik7cmV0dXJuIFtNYXRoLnJvdW5kKHIqaSpyciksTWF0aC5yb3VuZChuKmkqcnIpXX1mdW5jdGlvbiBhcih0LGUscil7Y29uc3Qgbj10WzBdLWVbMF0saT10WzFdLWVbMV0scz10WzBdLXJbMF0sYT10WzFdLXJbMV07cmV0dXJuIG4qYS1zKmk9PTAmJm4qczw9MCYmaSphPD0wfWZ1bmN0aW9uIG9yKHQsZSl7bGV0IHI9ITE7Zm9yKGxldCBhPTAsbz1lLmxlbmd0aDthPG87YSsrKXtjb25zdCBvPWVbYV07Zm9yKGxldCBlPTAsYT1vLmxlbmd0aDtlPGEtMTtlKyspe2lmKGFyKHQsb1tlXSxvW2UrMV0pKXJldHVybiAhMTsoaT1vW2VdKVsxXT4obj10KVsxXSE9KHM9b1tlKzFdKVsxXT5uWzFdJiZuWzBdPChzWzBdLWlbMF0pKihuWzFdLWlbMV0pLyhzWzFdLWlbMV0pK2lbMF0mJihyPSFyKTt9fXZhciBuLGkscztyZXR1cm4gcn1mdW5jdGlvbiBscih0LGUpe2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKG9yKHQsZVtyXSkpcmV0dXJuICEwO3JldHVybiAhMX1mdW5jdGlvbiB1cih0LGUscixuKXtjb25zdCBpPW5bMF0tclswXSxzPW5bMV0tclsxXSxhPSh0WzBdLXJbMF0pKnMtaSoodFsxXS1yWzFdKSxvPShlWzBdLXJbMF0pKnMtaSooZVsxXS1yWzFdKTtyZXR1cm4gYT4wJiZvPDB8fGE8MCYmbz4wfWZ1bmN0aW9uIGNyKHQsZSxyKXtmb3IoY29uc3QgdSBvZiByKWZvcihsZXQgcj0wO3I8dS5sZW5ndGgtMTsrK3IpaWYoMCE9KG89WyhhPXVbcisxXSlbMF0tKHM9dVtyXSlbMF0sYVsxXS1zWzFdXSlbMF0qKGw9WyhpPWUpWzBdLShuPXQpWzBdLGlbMV0tblsxXV0pWzFdLW9bMV0qbFswXSYmdXIobixpLHMsYSkmJnVyKHMsYSxuLGkpKXJldHVybiAhMDt2YXIgbixpLHMsYSxvLGw7cmV0dXJuICExfWZ1bmN0aW9uIGhyKHQsZSl7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDsrK3IpaWYoIW9yKHRbcl0sZSkpcmV0dXJuICExO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGgtMTsrK3IpaWYoY3IodFtyXSx0W3IrMV0sZSkpcmV0dXJuICExO3JldHVybiAhMH1mdW5jdGlvbiBwcih0LGUpe2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKGhyKHQsZVtyXSkpcmV0dXJuICEwO3JldHVybiAhMX1mdW5jdGlvbiBkcih0LGUscil7Y29uc3Qgbj1bXTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7Y29uc3Qgcz1bXTtmb3IobGV0IG49MDtuPHRbaV0ubGVuZ3RoO24rKyl7Y29uc3QgYT1zcih0W2ldW25dLHIpO25yKGUsYSkscy5wdXNoKGEpO31uLnB1c2gocyk7fXJldHVybiBufWZ1bmN0aW9uIGZyKHQsZSxyKXtjb25zdCBuPVtdO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKXtjb25zdCBzPWRyKHRbaV0sZSxyKTtuLnB1c2gocyk7fXJldHVybiBufWZ1bmN0aW9uIHlyKHQsZSxyLG4pe2lmKHRbMF08clswXXx8dFswXT5yWzJdKXtjb25zdCBlPS41Km47bGV0IGk9dFswXS1yWzBdPmU/LW46clswXS10WzBdPmU/bjowOzA9PT1pJiYoaT10WzBdLXJbMl0+ZT8tbjpyWzJdLXRbMF0+ZT9uOjApLHRbMF0rPWk7fW5yKGUsdCk7fWZ1bmN0aW9uIG1yKHQsZSxyLG4pe2NvbnN0IGk9TWF0aC5wb3coMixuLnopKnJyLHM9W24ueCpycixuLnkqcnJdLGE9W107aWYoIXQpcmV0dXJuIGE7Zm9yKGNvbnN0IG4gb2YgdClmb3IoY29uc3QgdCBvZiBuKXtjb25zdCBuPVt0Lngrc1swXSx0Lnkrc1sxXV07eXIobixlLHIsaSksYS5wdXNoKG4pO31yZXR1cm4gYX1mdW5jdGlvbiBncih0LGUscixuKXtjb25zdCBpPU1hdGgucG93KDIsbi56KSpycixzPVtuLngqcnIsbi55KnJyXSxhPVtdO2lmKCF0KXJldHVybiBhO2Zvcihjb25zdCByIG9mIHQpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2Ygcil7Y29uc3Qgcj1bbi54K3NbMF0sbi55K3NbMV1dO25yKGUsciksdC5wdXNoKHIpO31hLnB1c2godCk7fWlmKGVbMl0tZVswXTw9aS8yKXsobz1lKVswXT1vWzFdPTEvMCxvWzJdPW9bM109LTEvMDtmb3IoY29uc3QgdCBvZiBhKWZvcihjb25zdCBuIG9mIHQpeXIobixlLHIsaSk7fXZhciBvO3JldHVybiBhfWNsYXNzIHhye2NvbnN0cnVjdG9yKHQsZSl7dGhpcy50eXBlPWhlLHRoaXMuZ2VvanNvbj10LHRoaXMuZ2VvbWV0cmllcz1lO31zdGF0aWMgcGFyc2UodCxlKXtpZigyIT09dC5sZW5ndGgpcmV0dXJuIGUuZXJyb3IoYCd3aXRoaW4nIGV4cHJlc3Npb24gcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIGJ1dCBmb3VuZCAke3QubGVuZ3RoLTF9IGluc3RlYWQuYCk7aWYoRmUodFsxXSkpe2NvbnN0IGU9dFsxXTtpZihcIkZlYXR1cmVDb2xsZWN0aW9uXCI9PT1lLnR5cGUpZm9yKGxldCB0PTA7dDxlLmZlYXR1cmVzLmxlbmd0aDsrK3Qpe2NvbnN0IHI9ZS5mZWF0dXJlc1t0XS5nZW9tZXRyeS50eXBlO2lmKFwiUG9seWdvblwiPT09cnx8XCJNdWx0aVBvbHlnb25cIj09PXIpcmV0dXJuIG5ldyB4cihlLGUuZmVhdHVyZXNbdF0uZ2VvbWV0cnkpfWVsc2UgaWYoXCJGZWF0dXJlXCI9PT1lLnR5cGUpe2NvbnN0IHQ9ZS5nZW9tZXRyeS50eXBlO2lmKFwiUG9seWdvblwiPT09dHx8XCJNdWx0aVBvbHlnb25cIj09PXQpcmV0dXJuIG5ldyB4cihlLGUuZ2VvbWV0cnkpfWVsc2UgaWYoXCJQb2x5Z29uXCI9PT1lLnR5cGV8fFwiTXVsdGlQb2x5Z29uXCI9PT1lLnR5cGUpcmV0dXJuIG5ldyB4cihlLGUpfXJldHVybiBlLmVycm9yKFwiJ3dpdGhpbicgZXhwcmVzc2lvbiByZXF1aXJlcyB2YWxpZCBnZW9qc29uIG9iamVjdCB0aGF0IGNvbnRhaW5zIHBvbHlnb24gZ2VvbWV0cnkgdHlwZS5cIil9ZXZhbHVhdGUodCl7aWYobnVsbCE9dC5nZW9tZXRyeSgpJiZudWxsIT10LmNhbm9uaWNhbElEKCkpe2lmKFwiUG9pbnRcIj09PXQuZ2VvbWV0cnlUeXBlKCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj1bMS8wLDEvMCwtMS8wLC0xLzBdLG49WzEvMCwxLzAsLTEvMCwtMS8wXSxpPXQuY2Fub25pY2FsSUQoKTtpZighaSlyZXR1cm4gITE7aWYoXCJQb2x5Z29uXCI9PT1lLnR5cGUpe2NvbnN0IHM9ZHIoZS5jb29yZGluYXRlcyxuLGkpLGE9bXIodC5nZW9tZXRyeSgpLHIsbixpKTtpZighaXIocixuKSlyZXR1cm4gITE7Zm9yKGNvbnN0IHQgb2YgYSlpZighb3IodCxzKSlyZXR1cm4gITF9aWYoXCJNdWx0aVBvbHlnb25cIj09PWUudHlwZSl7Y29uc3Qgcz1mcihlLmNvb3JkaW5hdGVzLG4saSksYT1tcih0Lmdlb21ldHJ5KCkscixuLGkpO2lmKCFpcihyLG4pKXJldHVybiAhMTtmb3IoY29uc3QgdCBvZiBhKWlmKCFscih0LHMpKXJldHVybiAhMX1yZXR1cm4gITB9KHQsdGhpcy5nZW9tZXRyaWVzKTtpZihcIkxpbmVTdHJpbmdcIj09PXQuZ2VvbWV0cnlUeXBlKCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj1bMS8wLDEvMCwtMS8wLC0xLzBdLG49WzEvMCwxLzAsLTEvMCwtMS8wXSxpPXQuY2Fub25pY2FsSUQoKTtpZighaSlyZXR1cm4gITE7aWYoXCJQb2x5Z29uXCI9PT1lLnR5cGUpe2NvbnN0IHM9ZHIoZS5jb29yZGluYXRlcyxuLGkpLGE9Z3IodC5nZW9tZXRyeSgpLHIsbixpKTtpZighaXIocixuKSlyZXR1cm4gITE7Zm9yKGNvbnN0IHQgb2YgYSlpZighaHIodCxzKSlyZXR1cm4gITF9aWYoXCJNdWx0aVBvbHlnb25cIj09PWUudHlwZSl7Y29uc3Qgcz1mcihlLmNvb3JkaW5hdGVzLG4saSksYT1ncih0Lmdlb21ldHJ5KCkscixuLGkpO2lmKCFpcihyLG4pKXJldHVybiAhMTtmb3IoY29uc3QgdCBvZiBhKWlmKCFwcih0LHMpKXJldHVybiAhMX1yZXR1cm4gITB9KHQsdGhpcy5nZW9tZXRyaWVzKX1yZXR1cm4gITF9ZWFjaENoaWxkKCl7fW91dHB1dERlZmluZWQoKXtyZXR1cm4gITB9c2VyaWFsaXplKCl7cmV0dXJuIFtcIndpdGhpblwiLHRoaXMuZ2VvanNvbl19fXZhciB2cj14cjtmdW5jdGlvbiBicih0KXtpZih0IGluc3RhbmNlb2YgdHIpe2lmKFwiZ2V0XCI9PT10Lm5hbWUmJjE9PT10LmFyZ3MubGVuZ3RoKXJldHVybiAhMTtpZihcImZlYXR1cmUtc3RhdGVcIj09PXQubmFtZSlyZXR1cm4gITE7aWYoXCJoYXNcIj09PXQubmFtZSYmMT09PXQuYXJncy5sZW5ndGgpcmV0dXJuICExO2lmKFwicHJvcGVydGllc1wiPT09dC5uYW1lfHxcImdlb21ldHJ5LXR5cGVcIj09PXQubmFtZXx8XCJpZFwiPT09dC5uYW1lKXJldHVybiAhMTtpZigvXmZpbHRlci0vLnRlc3QodC5uYW1lKSlyZXR1cm4gITF9aWYodCBpbnN0YW5jZW9mIHZyKXJldHVybiAhMTtsZXQgZT0hMDtyZXR1cm4gdC5lYWNoQ2hpbGQoKHQ9PntlJiYhYnIodCkmJihlPSExKTt9KSksZX1mdW5jdGlvbiB3cih0KXtpZih0IGluc3RhbmNlb2YgdHImJlwiZmVhdHVyZS1zdGF0ZVwiPT09dC5uYW1lKXJldHVybiAhMTtsZXQgZT0hMDtyZXR1cm4gdC5lYWNoQ2hpbGQoKHQ9PntlJiYhd3IodCkmJihlPSExKTt9KSksZX1mdW5jdGlvbiBfcih0LGUpe2lmKHQgaW5zdGFuY2VvZiB0ciYmZS5pbmRleE9mKHQubmFtZSk+PTApcmV0dXJuICExO2xldCByPSEwO3JldHVybiB0LmVhY2hDaGlsZCgodD0+e3ImJiFfcih0LGUpJiYocj0hMSk7fSkpLHJ9Y2xhc3MgQXJ7Y29uc3RydWN0b3IodCxlKXt0aGlzLnR5cGU9ZS50eXBlLHRoaXMubmFtZT10LHRoaXMuYm91bmRFeHByZXNzaW9uPWU7fXN0YXRpYyBwYXJzZSh0LGUpe2lmKDIhPT10Lmxlbmd0aHx8XCJzdHJpbmdcIiE9dHlwZW9mIHRbMV0pcmV0dXJuIGUuZXJyb3IoXCIndmFyJyBleHByZXNzaW9uIHJlcXVpcmVzIGV4YWN0bHkgb25lIHN0cmluZyBsaXRlcmFsIGFyZ3VtZW50LlwiKTtjb25zdCByPXRbMV07cmV0dXJuIGUuc2NvcGUuaGFzKHIpP25ldyBBcihyLGUuc2NvcGUuZ2V0KHIpKTplLmVycm9yKGBVbmtub3duIHZhcmlhYmxlIFwiJHtyfVwiLiBNYWtlIHN1cmUgXCIke3J9XCIgaGFzIGJlZW4gYm91bmQgaW4gYW4gZW5jbG9zaW5nIFwibGV0XCIgZXhwcmVzc2lvbiBiZWZvcmUgdXNpbmcgaXQuYCwxKX1ldmFsdWF0ZSh0KXtyZXR1cm4gdGhpcy5ib3VuZEV4cHJlc3Npb24uZXZhbHVhdGUodCl9ZWFjaENoaWxkKCl7fW91dHB1dERlZmluZWQoKXtyZXR1cm4gITF9c2VyaWFsaXplKCl7cmV0dXJuIFtcInZhclwiLHRoaXMubmFtZV19fXZhciBTcj1BcjtjbGFzcyBrcntjb25zdHJ1Y3Rvcih0LGU9W10scixuPW5ldyBvZSxpPVtdKXt0aGlzLnJlZ2lzdHJ5PXQsdGhpcy5wYXRoPWUsdGhpcy5rZXk9ZS5tYXAoKHQ9PmBbJHt0fV1gKSkuam9pbihcIlwiKSx0aGlzLnNjb3BlPW4sdGhpcy5lcnJvcnM9aSx0aGlzLmV4cGVjdGVkVHlwZT1yO31wYXJzZSh0LGUscixuLGk9e30pe3JldHVybiBlP3RoaXMuY29uY2F0KGUscixuKS5fcGFyc2UodCxpKTp0aGlzLl9wYXJzZSh0LGkpfV9wYXJzZSh0LGUpe2Z1bmN0aW9uIHIodCxlLHIpe3JldHVybiBcImFzc2VydFwiPT09cj9uZXcgR2UoZSxbdF0pOlwiY29lcmNlXCI9PT1yP25ldyBIZShlLFt0XSk6dH1pZihudWxsIT09dCYmXCJzdHJpbmdcIiE9dHlwZW9mIHQmJlwiYm9vbGVhblwiIT10eXBlb2YgdCYmXCJudW1iZXJcIiE9dHlwZW9mIHR8fCh0PVtcImxpdGVyYWxcIix0XSksQXJyYXkuaXNBcnJheSh0KSl7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmVycm9yKCdFeHBlY3RlZCBhbiBhcnJheSB3aXRoIGF0IGxlYXN0IG9uZSBlbGVtZW50LiBJZiB5b3Ugd2FudGVkIGEgbGl0ZXJhbCBhcnJheSwgdXNlIFtcImxpdGVyYWxcIiwgW11dLicpO2NvbnN0IG49dFswXTtpZihcInN0cmluZ1wiIT10eXBlb2YgbilyZXR1cm4gdGhpcy5lcnJvcihgRXhwcmVzc2lvbiBuYW1lIG11c3QgYmUgYSBzdHJpbmcsIGJ1dCBmb3VuZCAke3R5cGVvZiBufSBpbnN0ZWFkLiBJZiB5b3Ugd2FudGVkIGEgbGl0ZXJhbCBhcnJheSwgdXNlIFtcImxpdGVyYWxcIiwgWy4uLl1dLmAsMCksbnVsbDtjb25zdCBpPXRoaXMucmVnaXN0cnlbbl07aWYoaSl7bGV0IG49aS5wYXJzZSh0LHRoaXMpO2lmKCFuKXJldHVybiBudWxsO2lmKHRoaXMuZXhwZWN0ZWRUeXBlKXtjb25zdCB0PXRoaXMuZXhwZWN0ZWRUeXBlLGk9bi50eXBlO2lmKFwic3RyaW5nXCIhPT10LmtpbmQmJlwibnVtYmVyXCIhPT10LmtpbmQmJlwiYm9vbGVhblwiIT09dC5raW5kJiZcIm9iamVjdFwiIT09dC5raW5kJiZcImFycmF5XCIhPT10LmtpbmR8fFwidmFsdWVcIiE9PWkua2luZClpZihcImNvbG9yXCIhPT10LmtpbmQmJlwiZm9ybWF0dGVkXCIhPT10LmtpbmQmJlwicmVzb2x2ZWRJbWFnZVwiIT09dC5raW5kfHxcInZhbHVlXCIhPT1pLmtpbmQmJlwic3RyaW5nXCIhPT1pLmtpbmQpe2lmKHRoaXMuY2hlY2tTdWJ0eXBlKHQsaSkpcmV0dXJuIG51bGx9ZWxzZSBuPXIobix0LGUudHlwZUFubm90YXRpb258fFwiY29lcmNlXCIpO2Vsc2Ugbj1yKG4sdCxlLnR5cGVBbm5vdGF0aW9ufHxcImFzc2VydFwiKTt9aWYoIShuIGluc3RhbmNlb2YgamUpJiZcInJlc29sdmVkSW1hZ2VcIiE9PW4udHlwZS5raW5kJiZNcihuKSl7Y29uc3QgdD1uZXcgV2U7dHJ5e249bmV3IGplKG4udHlwZSxuLmV2YWx1YXRlKHQpKTt9Y2F0Y2godCl7cmV0dXJuIHRoaXMuZXJyb3IodC5tZXNzYWdlKSxudWxsfX1yZXR1cm4gbn1yZXR1cm4gdGhpcy5lcnJvcihgVW5rbm93biBleHByZXNzaW9uIFwiJHtufVwiLiBJZiB5b3Ugd2FudGVkIGEgbGl0ZXJhbCBhcnJheSwgdXNlIFtcImxpdGVyYWxcIiwgWy4uLl1dLmAsMCl9cmV0dXJuIHRoaXMuZXJyb3Iodm9pZCAwPT09dD9cIid1bmRlZmluZWQnIHZhbHVlIGludmFsaWQuIFVzZSBudWxsIGluc3RlYWQuXCI6XCJvYmplY3RcIj09dHlwZW9mIHQ/J0JhcmUgb2JqZWN0cyBpbnZhbGlkLiBVc2UgW1wibGl0ZXJhbFwiLCB7Li4ufV0gaW5zdGVhZC4nOmBFeHBlY3RlZCBhbiBhcnJheSwgYnV0IGZvdW5kICR7dHlwZW9mIHR9IGluc3RlYWQuYCl9Y29uY2F0KHQsZSxyKXtjb25zdCBuPVwibnVtYmVyXCI9PXR5cGVvZiB0P3RoaXMucGF0aC5jb25jYXQodCk6dGhpcy5wYXRoLGk9cj90aGlzLnNjb3BlLmNvbmNhdChyKTp0aGlzLnNjb3BlO3JldHVybiBuZXcga3IodGhpcy5yZWdpc3RyeSxuLGV8fG51bGwsaSx0aGlzLmVycm9ycyl9ZXJyb3IodCwuLi5lKXtjb25zdCByPWAke3RoaXMua2V5fSR7ZS5tYXAoKHQ9PmBbJHt0fV1gKSkuam9pbihcIlwiKX1gO3RoaXMuZXJyb3JzLnB1c2gobmV3IHNlKHIsdCkpO31jaGVja1N1YnR5cGUodCxlKXtjb25zdCByPXdlKHQsZSk7cmV0dXJuIHImJnRoaXMuZXJyb3Iocikscn19dmFyIElyPWtyO2Z1bmN0aW9uIE1yKHQpe2lmKHQgaW5zdGFuY2VvZiBTcilyZXR1cm4gTXIodC5ib3VuZEV4cHJlc3Npb24pO2lmKHQgaW5zdGFuY2VvZiB0ciYmXCJlcnJvclwiPT09dC5uYW1lKXJldHVybiAhMTtpZih0IGluc3RhbmNlb2YgZXIpcmV0dXJuICExO2lmKHQgaW5zdGFuY2VvZiB2cilyZXR1cm4gITE7Y29uc3QgZT10IGluc3RhbmNlb2YgSGV8fHQgaW5zdGFuY2VvZiBHZTtsZXQgcj0hMDtyZXR1cm4gdC5lYWNoQ2hpbGQoKHQ9PntyPWU/ciYmTXIodCk6ciYmdCBpbnN0YW5jZW9mIGplO30pKSwhIXImJmJyKHQpJiZfcih0LFtcInpvb21cIixcImhlYXRtYXAtZGVuc2l0eVwiLFwibGluZS1wcm9ncmVzc1wiLFwic2t5LXJhZGlhbC1wcm9ncmVzc1wiLFwiYWNjdW11bGF0ZWRcIixcImlzLXN1cHBvcnRlZC1zY3JpcHRcIixcInBpdGNoXCIsXCJkaXN0YW5jZS1mcm9tLWNlbnRlclwiXSl9ZnVuY3Rpb24gVHIodCxlKXtjb25zdCByPXQubGVuZ3RoLTE7bGV0IG4saSxzPTAsYT1yLG89MDtmb3IoO3M8PWE7KWlmKG89TWF0aC5mbG9vcigocythKS8yKSxuPXRbb10saT10W28rMV0sbjw9ZSl7aWYobz09PXJ8fGU8aSlyZXR1cm4gbztzPW8rMTt9ZWxzZSB7aWYoIShuPmUpKXRocm93IG5ldyBPZShcIklucHV0IGlzIG5vdCBhIG51bWJlci5cIik7YT1vLTE7fXJldHVybiAwfWNsYXNzIHpye2NvbnN0cnVjdG9yKHQsZSxyKXt0aGlzLnR5cGU9dCx0aGlzLmlucHV0PWUsdGhpcy5sYWJlbHM9W10sdGhpcy5vdXRwdXRzPVtdO2Zvcihjb25zdFt0LGVdb2Ygcil0aGlzLmxhYmVscy5wdXNoKHQpLHRoaXMub3V0cHV0cy5wdXNoKGUpO31zdGF0aWMgcGFyc2UodCxlKXtpZih0Lmxlbmd0aC0xPDQpcmV0dXJuIGUuZXJyb3IoYEV4cGVjdGVkIGF0IGxlYXN0IDQgYXJndW1lbnRzLCBidXQgZm91bmQgb25seSAke3QubGVuZ3RoLTF9LmApO2lmKCh0Lmxlbmd0aC0xKSUyIT0wKXJldHVybiBlLmVycm9yKFwiRXhwZWN0ZWQgYW4gZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzLlwiKTtjb25zdCByPWUucGFyc2UodFsxXSwxLHVlKTtpZighcilyZXR1cm4gbnVsbDtjb25zdCBuPVtdO2xldCBpPW51bGw7ZS5leHBlY3RlZFR5cGUmJlwidmFsdWVcIiE9PWUuZXhwZWN0ZWRUeXBlLmtpbmQmJihpPWUuZXhwZWN0ZWRUeXBlKTtmb3IobGV0IHI9MTtyPHQubGVuZ3RoO3IrPTIpe2NvbnN0IHM9MT09PXI/LTEvMDp0W3JdLGE9dFtyKzFdLG89cixsPXIrMTtpZihcIm51bWJlclwiIT10eXBlb2YgcylyZXR1cm4gZS5lcnJvcignSW5wdXQvb3V0cHV0IHBhaXJzIGZvciBcInN0ZXBcIiBleHByZXNzaW9ucyBtdXN0IGJlIGRlZmluZWQgdXNpbmcgbGl0ZXJhbCBudW1lcmljIHZhbHVlcyAobm90IGNvbXB1dGVkIGV4cHJlc3Npb25zKSBmb3IgdGhlIGlucHV0IHZhbHVlcy4nLG8pO2lmKG4ubGVuZ3RoJiZuW24ubGVuZ3RoLTFdWzBdPj1zKXJldHVybiBlLmVycm9yKCdJbnB1dC9vdXRwdXQgcGFpcnMgZm9yIFwic3RlcFwiIGV4cHJlc3Npb25zIG11c3QgYmUgYXJyYW5nZWQgd2l0aCBpbnB1dCB2YWx1ZXMgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLicsbyk7Y29uc3QgdT1lLnBhcnNlKGEsbCxpKTtpZighdSlyZXR1cm4gbnVsbDtpPWl8fHUudHlwZSxuLnB1c2goW3MsdV0pO31yZXR1cm4gbmV3IHpyKGkscixuKX1ldmFsdWF0ZSh0KXtjb25zdCBlPXRoaXMubGFiZWxzLHI9dGhpcy5vdXRwdXRzO2lmKDE9PT1lLmxlbmd0aClyZXR1cm4gclswXS5ldmFsdWF0ZSh0KTtjb25zdCBuPXRoaXMuaW5wdXQuZXZhbHVhdGUodCk7aWYobjw9ZVswXSlyZXR1cm4gclswXS5ldmFsdWF0ZSh0KTtjb25zdCBpPWUubGVuZ3RoO3JldHVybiBuPj1lW2ktMV0/cltpLTFdLmV2YWx1YXRlKHQpOnJbVHIoZSxuKV0uZXZhbHVhdGUodCl9ZWFjaENoaWxkKHQpe3QodGhpcy5pbnB1dCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5vdXRwdXRzKXQoZSk7fW91dHB1dERlZmluZWQoKXtyZXR1cm4gdGhpcy5vdXRwdXRzLmV2ZXJ5KCh0PT50Lm91dHB1dERlZmluZWQoKSkpfXNlcmlhbGl6ZSgpe2NvbnN0IHQ9W1wic3RlcFwiLHRoaXMuaW5wdXQuc2VyaWFsaXplKCldO2ZvcihsZXQgZT0wO2U8dGhpcy5sYWJlbHMubGVuZ3RoO2UrKyllPjAmJnQucHVzaCh0aGlzLmxhYmVsc1tlXSksdC5wdXNoKHRoaXMub3V0cHV0c1tlXS5zZXJpYWxpemUoKSk7cmV0dXJuIHR9fXZhciBCcj16cjtmdW5jdGlvbiBFcih0LGUscil7cmV0dXJuIHQqKDEtcikrZSpyfXZhciBDcj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxhcnJheTpmdW5jdGlvbih0LGUscil7cmV0dXJuIHQubWFwKCgodCxuKT0+RXIodCxlW25dLHIpKSl9LGNvbG9yOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbmV3IEVlKEVyKHQucixlLnIsciksRXIodC5nLGUuZyxyKSxFcih0LmIsZS5iLHIpLEVyKHQuYSxlLmEscikpfSxudW1iZXI6RXJ9KTtjb25zdCBQcj0uOTUwNDcsRHI9MS4wODg4MyxWcj00LzI5LExyPTYvMjksRnI9MypMcipMcixScj1McipMcipMcixVcj1NYXRoLlBJLzE4MCwkcj0xODAvTWF0aC5QSTtmdW5jdGlvbiBqcih0KXtyZXR1cm4gdD5Scj9NYXRoLnBvdyh0LDEvMyk6dC9GcitWcn1mdW5jdGlvbiBPcih0KXtyZXR1cm4gdD5Mcj90KnQqdDpGcioodC1Wcil9ZnVuY3Rpb24gcXIodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBOcih0KXtyZXR1cm4gKHQvPTI1NSk8PS4wNDA0NT90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gR3IodCl7Y29uc3QgZT1Ocih0LnIpLHI9TnIodC5nKSxuPU5yKHQuYiksaT1qcigoLjQxMjQ1NjQqZSsuMzU3NTc2MSpyKy4xODA0Mzc1Km4pL1ByKSxzPWpyKCguMjEyNjcyOSplKy43MTUxNTIyKnIrLjA3MjE3NSpuKS8xKTtyZXR1cm4ge2w6MTE2KnMtMTYsYTo1MDAqKGktcyksYjoyMDAqKHMtanIoKC4wMTkzMzM5KmUrLjExOTE5MipyKy45NTAzMDQxKm4pL0RyKSksYWxwaGE6dC5hfX1mdW5jdGlvbiBacih0KXtsZXQgZT0odC5sKzE2KS8xMTYscj1pc05hTih0LmEpP2U6ZSt0LmEvNTAwLG49aXNOYU4odC5iKT9lOmUtdC5iLzIwMDtyZXR1cm4gZT0xKk9yKGUpLHI9UHIqT3Iociksbj1EcipPcihuKSxuZXcgRWUocXIoMy4yNDA0NTQyKnItMS41MzcxMzg1KmUtLjQ5ODUzMTQqbikscXIoLS45NjkyNjYqcisxLjg3NjAxMDgqZSsuMDQxNTU2Km4pLHFyKC4wNTU2NDM0KnItLjIwNDAyNTkqZSsxLjA1NzIyNTIqbiksdC5hbHBoYSl9ZnVuY3Rpb24gS3IodCxlLHIpe2NvbnN0IG49ZS10O3JldHVybiB0K3IqKG4+MTgwfHxuPC0xODA/bi0zNjAqTWF0aC5yb3VuZChuLzM2MCk6bil9Y29uc3QgWHI9e2ZvcndhcmQ6R3IscmV2ZXJzZTpacixpbnRlcnBvbGF0ZTpmdW5jdGlvbih0LGUscil7cmV0dXJuIHtsOkVyKHQubCxlLmwsciksYTpFcih0LmEsZS5hLHIpLGI6RXIodC5iLGUuYixyKSxhbHBoYTpFcih0LmFscGhhLGUuYWxwaGEscil9fX0sSnI9e2ZvcndhcmQ6ZnVuY3Rpb24odCl7Y29uc3R7bDplLGE6cixiOm59PUdyKHQpLGk9TWF0aC5hdGFuMihuLHIpKiRyO3JldHVybiB7aDppPDA/aSszNjA6aSxjOk1hdGguc3FydChyKnIrbipuKSxsOmUsYWxwaGE6dC5hfX0scmV2ZXJzZTpmdW5jdGlvbih0KXtjb25zdCBlPXQuaCpVcixyPXQuYztyZXR1cm4gWnIoe2w6dC5sLGE6TWF0aC5jb3MoZSkqcixiOk1hdGguc2luKGUpKnIsYWxwaGE6dC5hbHBoYX0pfSxpbnRlcnBvbGF0ZTpmdW5jdGlvbih0LGUscil7cmV0dXJuIHtoOktyKHQuaCxlLmgsciksYzpFcih0LmMsZS5jLHIpLGw6RXIodC5sLGUubCxyKSxhbHBoYTpFcih0LmFscGhhLGUuYWxwaGEscil9fX07dmFyIEhyPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGhjbDpKcixsYWI6WHJ9KTtjbGFzcyBZcntjb25zdHJ1Y3Rvcih0LGUscixuLGkpe3RoaXMudHlwZT10LHRoaXMub3BlcmF0b3I9ZSx0aGlzLmludGVycG9sYXRpb249cix0aGlzLmlucHV0PW4sdGhpcy5sYWJlbHM9W10sdGhpcy5vdXRwdXRzPVtdO2Zvcihjb25zdFt0LGVdb2YgaSl0aGlzLmxhYmVscy5wdXNoKHQpLHRoaXMub3V0cHV0cy5wdXNoKGUpO31zdGF0aWMgaW50ZXJwb2xhdGlvbkZhY3Rvcih0LGUscixuKXtsZXQgaT0wO2lmKFwiZXhwb25lbnRpYWxcIj09PXQubmFtZSlpPVdyKGUsdC5iYXNlLHIsbik7ZWxzZSBpZihcImxpbmVhclwiPT09dC5uYW1lKWk9V3IoZSwxLHIsbik7ZWxzZSBpZihcImN1YmljLWJlemllclwiPT09dC5uYW1lKXtjb25zdCBzPXQuY29udHJvbFBvaW50cztpPW5ldyB5KHNbMF0sc1sxXSxzWzJdLHNbM10pLnNvbHZlKFdyKGUsMSxyLG4pKTt9cmV0dXJuIGl9c3RhdGljIHBhcnNlKHQsZSl7bGV0W3IsbixpLC4uLnNdPXQ7aWYoIUFycmF5LmlzQXJyYXkobil8fDA9PT1uLmxlbmd0aClyZXR1cm4gZS5lcnJvcihcIkV4cGVjdGVkIGFuIGludGVycG9sYXRpb24gdHlwZSBleHByZXNzaW9uLlwiLDEpO2lmKFwibGluZWFyXCI9PT1uWzBdKW49e25hbWU6XCJsaW5lYXJcIn07ZWxzZSBpZihcImV4cG9uZW50aWFsXCI9PT1uWzBdKXtjb25zdCB0PW5bMV07aWYoXCJudW1iZXJcIiE9dHlwZW9mIHQpcmV0dXJuIGUuZXJyb3IoXCJFeHBvbmVudGlhbCBpbnRlcnBvbGF0aW9uIHJlcXVpcmVzIGEgbnVtZXJpYyBiYXNlLlwiLDEsMSk7bj17bmFtZTpcImV4cG9uZW50aWFsXCIsYmFzZTp0fTt9ZWxzZSB7aWYoXCJjdWJpYy1iZXppZXJcIiE9PW5bMF0pcmV0dXJuIGUuZXJyb3IoYFVua25vd24gaW50ZXJwb2xhdGlvbiB0eXBlICR7U3RyaW5nKG5bMF0pfWAsMSwwKTt7Y29uc3QgdD1uLnNsaWNlKDEpO2lmKDQhPT10Lmxlbmd0aHx8dC5zb21lKCh0PT5cIm51bWJlclwiIT10eXBlb2YgdHx8dDwwfHx0PjEpKSlyZXR1cm4gZS5lcnJvcihcIkN1YmljIGJlemllciBpbnRlcnBvbGF0aW9uIHJlcXVpcmVzIGZvdXIgbnVtZXJpYyBhcmd1bWVudHMgd2l0aCB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAxLlwiLDEpO249e25hbWU6XCJjdWJpYy1iZXppZXJcIixjb250cm9sUG9pbnRzOnR9O319aWYodC5sZW5ndGgtMTw0KXJldHVybiBlLmVycm9yKGBFeHBlY3RlZCBhdCBsZWFzdCA0IGFyZ3VtZW50cywgYnV0IGZvdW5kIG9ubHkgJHt0Lmxlbmd0aC0xfS5gKTtpZigodC5sZW5ndGgtMSklMiE9MClyZXR1cm4gZS5lcnJvcihcIkV4cGVjdGVkIGFuIGV2ZW4gbnVtYmVyIG9mIGFyZ3VtZW50cy5cIik7aWYoaT1lLnBhcnNlKGksMix1ZSksIWkpcmV0dXJuIG51bGw7Y29uc3QgYT1bXTtsZXQgbz1udWxsO1wiaW50ZXJwb2xhdGUtaGNsXCI9PT1yfHxcImludGVycG9sYXRlLWxhYlwiPT09cj9vPXBlOmUuZXhwZWN0ZWRUeXBlJiZcInZhbHVlXCIhPT1lLmV4cGVjdGVkVHlwZS5raW5kJiYobz1lLmV4cGVjdGVkVHlwZSk7Zm9yKGxldCB0PTA7dDxzLmxlbmd0aDt0Kz0yKXtjb25zdCByPXNbdF0sbj1zW3QrMV0saT10KzMsbD10KzQ7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHIpcmV0dXJuIGUuZXJyb3IoJ0lucHV0L291dHB1dCBwYWlycyBmb3IgXCJpbnRlcnBvbGF0ZVwiIGV4cHJlc3Npb25zIG11c3QgYmUgZGVmaW5lZCB1c2luZyBsaXRlcmFsIG51bWVyaWMgdmFsdWVzIChub3QgY29tcHV0ZWQgZXhwcmVzc2lvbnMpIGZvciB0aGUgaW5wdXQgdmFsdWVzLicsaSk7aWYoYS5sZW5ndGgmJmFbYS5sZW5ndGgtMV1bMF0+PXIpcmV0dXJuIGUuZXJyb3IoJ0lucHV0L291dHB1dCBwYWlycyBmb3IgXCJpbnRlcnBvbGF0ZVwiIGV4cHJlc3Npb25zIG11c3QgYmUgYXJyYW5nZWQgd2l0aCBpbnB1dCB2YWx1ZXMgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLicsaSk7Y29uc3QgdT1lLnBhcnNlKG4sbCxvKTtpZighdSlyZXR1cm4gbnVsbDtvPW98fHUudHlwZSxhLnB1c2goW3IsdV0pO31yZXR1cm4gXCJudW1iZXJcIj09PW8ua2luZHx8XCJjb2xvclwiPT09by5raW5kfHxcImFycmF5XCI9PT1vLmtpbmQmJlwibnVtYmVyXCI9PT1vLml0ZW1UeXBlLmtpbmQmJlwibnVtYmVyXCI9PXR5cGVvZiBvLk4/bmV3IFlyKG8scixuLGksYSk6ZS5lcnJvcihgVHlwZSAke3ZlKG8pfSBpcyBub3QgaW50ZXJwb2xhdGFibGUuYCl9ZXZhbHVhdGUodCl7Y29uc3QgZT10aGlzLmxhYmVscyxyPXRoaXMub3V0cHV0cztpZigxPT09ZS5sZW5ndGgpcmV0dXJuIHJbMF0uZXZhbHVhdGUodCk7Y29uc3Qgbj10aGlzLmlucHV0LmV2YWx1YXRlKHQpO2lmKG48PWVbMF0pcmV0dXJuIHJbMF0uZXZhbHVhdGUodCk7Y29uc3QgaT1lLmxlbmd0aDtpZihuPj1lW2ktMV0pcmV0dXJuIHJbaS0xXS5ldmFsdWF0ZSh0KTtjb25zdCBzPVRyKGUsbiksYT1Zci5pbnRlcnBvbGF0aW9uRmFjdG9yKHRoaXMuaW50ZXJwb2xhdGlvbixuLGVbc10sZVtzKzFdKSxvPXJbc10uZXZhbHVhdGUodCksbD1yW3MrMV0uZXZhbHVhdGUodCk7cmV0dXJuIFwiaW50ZXJwb2xhdGVcIj09PXRoaXMub3BlcmF0b3I/Q3JbdGhpcy50eXBlLmtpbmQudG9Mb3dlckNhc2UoKV0obyxsLGEpOlwiaW50ZXJwb2xhdGUtaGNsXCI9PT10aGlzLm9wZXJhdG9yP0pyLnJldmVyc2UoSnIuaW50ZXJwb2xhdGUoSnIuZm9yd2FyZChvKSxKci5mb3J3YXJkKGwpLGEpKTpYci5yZXZlcnNlKFhyLmludGVycG9sYXRlKFhyLmZvcndhcmQobyksWHIuZm9yd2FyZChsKSxhKSl9ZWFjaENoaWxkKHQpe3QodGhpcy5pbnB1dCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5vdXRwdXRzKXQoZSk7fW91dHB1dERlZmluZWQoKXtyZXR1cm4gdGhpcy5vdXRwdXRzLmV2ZXJ5KCh0PT50Lm91dHB1dERlZmluZWQoKSkpfXNlcmlhbGl6ZSgpe2xldCB0O3Q9XCJsaW5lYXJcIj09PXRoaXMuaW50ZXJwb2xhdGlvbi5uYW1lP1tcImxpbmVhclwiXTpcImV4cG9uZW50aWFsXCI9PT10aGlzLmludGVycG9sYXRpb24ubmFtZT8xPT09dGhpcy5pbnRlcnBvbGF0aW9uLmJhc2U/W1wibGluZWFyXCJdOltcImV4cG9uZW50aWFsXCIsdGhpcy5pbnRlcnBvbGF0aW9uLmJhc2VdOltcImN1YmljLWJlemllclwiXS5jb25jYXQodGhpcy5pbnRlcnBvbGF0aW9uLmNvbnRyb2xQb2ludHMpO2NvbnN0IGU9W3RoaXMub3BlcmF0b3IsdCx0aGlzLmlucHV0LnNlcmlhbGl6ZSgpXTtmb3IobGV0IHQ9MDt0PHRoaXMubGFiZWxzLmxlbmd0aDt0KyspZS5wdXNoKHRoaXMubGFiZWxzW3RdLHRoaXMub3V0cHV0c1t0XS5zZXJpYWxpemUoKSk7cmV0dXJuIGV9fWZ1bmN0aW9uIFdyKHQsZSxyLG4pe2NvbnN0IGk9bi1yLHM9dC1yO3JldHVybiAwPT09aT8wOjE9PT1lP3MvaTooTWF0aC5wb3coZSxzKS0xKS8oTWF0aC5wb3coZSxpKS0xKX12YXIgUXI9WXI7Y2xhc3MgdG57Y29uc3RydWN0b3IodCxlKXt0aGlzLnR5cGU9dCx0aGlzLmFyZ3M9ZTt9c3RhdGljIHBhcnNlKHQsZSl7aWYodC5sZW5ndGg8MilyZXR1cm4gZS5lcnJvcihcIkV4cGVjdGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC5cIik7bGV0IHI9bnVsbDtjb25zdCBuPWUuZXhwZWN0ZWRUeXBlO24mJlwidmFsdWVcIiE9PW4ua2luZCYmKHI9bik7Y29uc3QgaT1bXTtmb3IoY29uc3QgbiBvZiB0LnNsaWNlKDEpKXtjb25zdCB0PWUucGFyc2UobiwxK2kubGVuZ3RoLHIsdm9pZCAwLHt0eXBlQW5ub3RhdGlvbjpcIm9taXRcIn0pO2lmKCF0KXJldHVybiBudWxsO3I9cnx8dC50eXBlLGkucHVzaCh0KTt9Y29uc3Qgcz1uJiZpLnNvbWUoKHQ9PndlKG4sdC50eXBlKSkpO3JldHVybiBuZXcgdG4ocz9mZTpyLGkpfWV2YWx1YXRlKHQpe2xldCBlLHI9bnVsbCxuPTA7Zm9yKGNvbnN0IGkgb2YgdGhpcy5hcmdzKXtpZihuKysscj1pLmV2YWx1YXRlKHQpLHImJnIgaW5zdGFuY2VvZiBWZSYmIXIuYXZhaWxhYmxlJiYoZXx8KGU9cikscj1udWxsLG49PT10aGlzLmFyZ3MubGVuZ3RoKSlyZXR1cm4gZTtpZihudWxsIT09cilicmVha31yZXR1cm4gcn1lYWNoQ2hpbGQodCl7dGhpcy5hcmdzLmZvckVhY2godCk7fW91dHB1dERlZmluZWQoKXtyZXR1cm4gdGhpcy5hcmdzLmV2ZXJ5KCh0PT50Lm91dHB1dERlZmluZWQoKSkpfXNlcmlhbGl6ZSgpe2NvbnN0IHQ9W1wiY29hbGVzY2VcIl07cmV0dXJuIHRoaXMuZWFjaENoaWxkKChlPT57dC5wdXNoKGUuc2VyaWFsaXplKCkpO30pKSx0fX12YXIgZW49dG47Y2xhc3Mgcm57Y29uc3RydWN0b3IodCxlKXt0aGlzLnR5cGU9ZS50eXBlLHRoaXMuYmluZGluZ3M9W10uY29uY2F0KHQpLHRoaXMucmVzdWx0PWU7fWV2YWx1YXRlKHQpe3JldHVybiB0aGlzLnJlc3VsdC5ldmFsdWF0ZSh0KX1lYWNoQ2hpbGQodCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5iaW5kaW5ncyl0KGVbMV0pO3QodGhpcy5yZXN1bHQpO31zdGF0aWMgcGFyc2UodCxlKXtpZih0Lmxlbmd0aDw0KXJldHVybiBlLmVycm9yKGBFeHBlY3RlZCBhdCBsZWFzdCAzIGFyZ3VtZW50cywgYnV0IGZvdW5kICR7dC5sZW5ndGgtMX0gaW5zdGVhZC5gKTtjb25zdCByPVtdO2ZvcihsZXQgbj0xO248dC5sZW5ndGgtMTtuKz0yKXtjb25zdCBpPXRbbl07aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGkpcmV0dXJuIGUuZXJyb3IoYEV4cGVjdGVkIHN0cmluZywgYnV0IGZvdW5kICR7dHlwZW9mIGl9IGluc3RlYWQuYCxuKTtpZigvW15hLXpBLVowLTlfXS8udGVzdChpKSlyZXR1cm4gZS5lcnJvcihcIlZhcmlhYmxlIG5hbWVzIG11c3QgY29udGFpbiBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yICdfJy5cIixuKTtjb25zdCBzPWUucGFyc2UodFtuKzFdLG4rMSk7aWYoIXMpcmV0dXJuIG51bGw7ci5wdXNoKFtpLHNdKTt9Y29uc3Qgbj1lLnBhcnNlKHRbdC5sZW5ndGgtMV0sdC5sZW5ndGgtMSxlLmV4cGVjdGVkVHlwZSxyKTtyZXR1cm4gbj9uZXcgcm4ocixuKTpudWxsfW91dHB1dERlZmluZWQoKXtyZXR1cm4gdGhpcy5yZXN1bHQub3V0cHV0RGVmaW5lZCgpfXNlcmlhbGl6ZSgpe2NvbnN0IHQ9W1wibGV0XCJdO2Zvcihjb25zdFtlLHJdb2YgdGhpcy5iaW5kaW5ncyl0LnB1c2goZSxyLnNlcmlhbGl6ZSgpKTtyZXR1cm4gdC5wdXNoKHRoaXMucmVzdWx0LnNlcmlhbGl6ZSgpKSx0fX12YXIgbm49cm47Y2xhc3Mgc257Y29uc3RydWN0b3IodCxlLHIpe3RoaXMudHlwZT10LHRoaXMuaW5kZXg9ZSx0aGlzLmlucHV0PXI7fXN0YXRpYyBwYXJzZSh0LGUpe2lmKDMhPT10Lmxlbmd0aClyZXR1cm4gZS5lcnJvcihgRXhwZWN0ZWQgMiBhcmd1bWVudHMsIGJ1dCBmb3VuZCAke3QubGVuZ3RoLTF9IGluc3RlYWQuYCk7Y29uc3Qgcj1lLnBhcnNlKHRbMV0sMSx1ZSksbj1lLnBhcnNlKHRbMl0sMix4ZShlLmV4cGVjdGVkVHlwZXx8ZmUpKTtyZXR1cm4gciYmbj9uZXcgc24obi50eXBlLml0ZW1UeXBlLHIsbik6bnVsbH1ldmFsdWF0ZSh0KXtjb25zdCBlPXRoaXMuaW5kZXguZXZhbHVhdGUodCkscj10aGlzLmlucHV0LmV2YWx1YXRlKHQpO2lmKGU8MCl0aHJvdyBuZXcgT2UoYEFycmF5IGluZGV4IG91dCBvZiBib3VuZHM6ICR7ZX0gPCAwLmApO2lmKGU+PXIubGVuZ3RoKXRocm93IG5ldyBPZShgQXJyYXkgaW5kZXggb3V0IG9mIGJvdW5kczogJHtlfSA+ICR7ci5sZW5ndGgtMX0uYCk7aWYoZSE9PU1hdGguZmxvb3IoZSkpdGhyb3cgbmV3IE9lKGBBcnJheSBpbmRleCBtdXN0IGJlIGFuIGludGVnZXIsIGJ1dCBmb3VuZCAke2V9IGluc3RlYWQuYCk7cmV0dXJuIHJbZV19ZWFjaENoaWxkKHQpe3QodGhpcy5pbmRleCksdCh0aGlzLmlucHV0KTt9b3V0cHV0RGVmaW5lZCgpe3JldHVybiAhMX1zZXJpYWxpemUoKXtyZXR1cm4gW1wiYXRcIix0aGlzLmluZGV4LnNlcmlhbGl6ZSgpLHRoaXMuaW5wdXQuc2VyaWFsaXplKCldfX12YXIgYW49c247Y2xhc3Mgb257Y29uc3RydWN0b3IodCxlKXt0aGlzLnR5cGU9aGUsdGhpcy5uZWVkbGU9dCx0aGlzLmhheXN0YWNrPWU7fXN0YXRpYyBwYXJzZSh0LGUpe2lmKDMhPT10Lmxlbmd0aClyZXR1cm4gZS5lcnJvcihgRXhwZWN0ZWQgMiBhcmd1bWVudHMsIGJ1dCBmb3VuZCAke3QubGVuZ3RoLTF9IGluc3RlYWQuYCk7Y29uc3Qgcj1lLnBhcnNlKHRbMV0sMSxmZSksbj1lLnBhcnNlKHRbMl0sMixmZSk7cmV0dXJuIHImJm4/X2Uoci50eXBlLFtoZSxjZSx1ZSxsZSxmZV0pP25ldyBvbihyLG4pOmUuZXJyb3IoYEV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJlIG9mIHR5cGUgYm9vbGVhbiwgc3RyaW5nLCBudW1iZXIgb3IgbnVsbCwgYnV0IGZvdW5kICR7dmUoci50eXBlKX0gaW5zdGVhZGApOm51bGx9ZXZhbHVhdGUodCl7Y29uc3QgZT10aGlzLm5lZWRsZS5ldmFsdWF0ZSh0KSxyPXRoaXMuaGF5c3RhY2suZXZhbHVhdGUodCk7aWYobnVsbD09cilyZXR1cm4gITE7aWYoIUFlKGUsW1wiYm9vbGVhblwiLFwic3RyaW5nXCIsXCJudW1iZXJcIixcIm51bGxcIl0pKXRocm93IG5ldyBPZShgRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgb2YgdHlwZSBib29sZWFuLCBzdHJpbmcsIG51bWJlciBvciBudWxsLCBidXQgZm91bmQgJHt2ZShSZShlKSl9IGluc3RlYWQuYCk7aWYoIUFlKHIsW1wic3RyaW5nXCIsXCJhcnJheVwiXSkpdGhyb3cgbmV3IE9lKGBFeHBlY3RlZCBzZWNvbmQgYXJndW1lbnQgdG8gYmUgb2YgdHlwZSBhcnJheSBvciBzdHJpbmcsIGJ1dCBmb3VuZCAke3ZlKFJlKHIpKX0gaW5zdGVhZC5gKTtyZXR1cm4gci5pbmRleE9mKGUpPj0wfWVhY2hDaGlsZCh0KXt0KHRoaXMubmVlZGxlKSx0KHRoaXMuaGF5c3RhY2spO31vdXRwdXREZWZpbmVkKCl7cmV0dXJuICEwfXNlcmlhbGl6ZSgpe3JldHVybiBbXCJpblwiLHRoaXMubmVlZGxlLnNlcmlhbGl6ZSgpLHRoaXMuaGF5c3RhY2suc2VyaWFsaXplKCldfX12YXIgbG49b247Y2xhc3MgdW57Y29uc3RydWN0b3IodCxlLHIpe3RoaXMudHlwZT11ZSx0aGlzLm5lZWRsZT10LHRoaXMuaGF5c3RhY2s9ZSx0aGlzLmZyb21JbmRleD1yO31zdGF0aWMgcGFyc2UodCxlKXtpZih0Lmxlbmd0aDw9Mnx8dC5sZW5ndGg+PTUpcmV0dXJuIGUuZXJyb3IoYEV4cGVjdGVkIDMgb3IgNCBhcmd1bWVudHMsIGJ1dCBmb3VuZCAke3QubGVuZ3RoLTF9IGluc3RlYWQuYCk7Y29uc3Qgcj1lLnBhcnNlKHRbMV0sMSxmZSksbj1lLnBhcnNlKHRbMl0sMixmZSk7aWYoIXJ8fCFuKXJldHVybiBudWxsO2lmKCFfZShyLnR5cGUsW2hlLGNlLHVlLGxlLGZlXSkpcmV0dXJuIGUuZXJyb3IoYEV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJlIG9mIHR5cGUgYm9vbGVhbiwgc3RyaW5nLCBudW1iZXIgb3IgbnVsbCwgYnV0IGZvdW5kICR7dmUoci50eXBlKX0gaW5zdGVhZGApO2lmKDQ9PT10Lmxlbmd0aCl7Y29uc3QgaT1lLnBhcnNlKHRbM10sMyx1ZSk7cmV0dXJuIGk/bmV3IHVuKHIsbixpKTpudWxsfXJldHVybiBuZXcgdW4ocixuKX1ldmFsdWF0ZSh0KXtjb25zdCBlPXRoaXMubmVlZGxlLmV2YWx1YXRlKHQpLHI9dGhpcy5oYXlzdGFjay5ldmFsdWF0ZSh0KTtpZighQWUoZSxbXCJib29sZWFuXCIsXCJzdHJpbmdcIixcIm51bWJlclwiLFwibnVsbFwiXSkpdGhyb3cgbmV3IE9lKGBFeHBlY3RlZCBmaXJzdCBhcmd1bWVudCB0byBiZSBvZiB0eXBlIGJvb2xlYW4sIHN0cmluZywgbnVtYmVyIG9yIG51bGwsIGJ1dCBmb3VuZCAke3ZlKFJlKGUpKX0gaW5zdGVhZC5gKTtpZighQWUocixbXCJzdHJpbmdcIixcImFycmF5XCJdKSl0aHJvdyBuZXcgT2UoYEV4cGVjdGVkIHNlY29uZCBhcmd1bWVudCB0byBiZSBvZiB0eXBlIGFycmF5IG9yIHN0cmluZywgYnV0IGZvdW5kICR7dmUoUmUocikpfSBpbnN0ZWFkLmApO2lmKHRoaXMuZnJvbUluZGV4KXtjb25zdCBuPXRoaXMuZnJvbUluZGV4LmV2YWx1YXRlKHQpO3JldHVybiByLmluZGV4T2YoZSxuKX1yZXR1cm4gci5pbmRleE9mKGUpfWVhY2hDaGlsZCh0KXt0KHRoaXMubmVlZGxlKSx0KHRoaXMuaGF5c3RhY2spLHRoaXMuZnJvbUluZGV4JiZ0KHRoaXMuZnJvbUluZGV4KTt9b3V0cHV0RGVmaW5lZCgpe3JldHVybiAhMX1zZXJpYWxpemUoKXtpZihudWxsIT10aGlzLmZyb21JbmRleCYmdm9pZCAwIT09dGhpcy5mcm9tSW5kZXgpe2NvbnN0IHQ9dGhpcy5mcm9tSW5kZXguc2VyaWFsaXplKCk7cmV0dXJuIFtcImluZGV4LW9mXCIsdGhpcy5uZWVkbGUuc2VyaWFsaXplKCksdGhpcy5oYXlzdGFjay5zZXJpYWxpemUoKSx0XX1yZXR1cm4gW1wiaW5kZXgtb2ZcIix0aGlzLm5lZWRsZS5zZXJpYWxpemUoKSx0aGlzLmhheXN0YWNrLnNlcmlhbGl6ZSgpXX19dmFyIGNuPXVuO2NsYXNzIGhue2NvbnN0cnVjdG9yKHQsZSxyLG4saSxzKXt0aGlzLmlucHV0VHlwZT10LHRoaXMudHlwZT1lLHRoaXMuaW5wdXQ9cix0aGlzLmNhc2VzPW4sdGhpcy5vdXRwdXRzPWksdGhpcy5vdGhlcndpc2U9czt9c3RhdGljIHBhcnNlKHQsZSl7aWYodC5sZW5ndGg8NSlyZXR1cm4gZS5lcnJvcihgRXhwZWN0ZWQgYXQgbGVhc3QgNCBhcmd1bWVudHMsIGJ1dCBmb3VuZCBvbmx5ICR7dC5sZW5ndGgtMX0uYCk7aWYodC5sZW5ndGglMiE9MSlyZXR1cm4gZS5lcnJvcihcIkV4cGVjdGVkIGFuIGV2ZW4gbnVtYmVyIG9mIGFyZ3VtZW50cy5cIik7bGV0IHIsbjtlLmV4cGVjdGVkVHlwZSYmXCJ2YWx1ZVwiIT09ZS5leHBlY3RlZFR5cGUua2luZCYmKG49ZS5leHBlY3RlZFR5cGUpO2NvbnN0IGk9e30scz1bXTtmb3IobGV0IGE9MjthPHQubGVuZ3RoLTE7YSs9Mil7bGV0IG89dFthXTtjb25zdCBsPXRbYSsxXTtBcnJheS5pc0FycmF5KG8pfHwobz1bb10pO2NvbnN0IHU9ZS5jb25jYXQoYSk7aWYoMD09PW8ubGVuZ3RoKXJldHVybiB1LmVycm9yKFwiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGJyYW5jaCBsYWJlbC5cIik7Zm9yKGNvbnN0IHQgb2Ygbyl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHQmJlwic3RyaW5nXCIhPXR5cGVvZiB0KXJldHVybiB1LmVycm9yKFwiQnJhbmNoIGxhYmVscyBtdXN0IGJlIG51bWJlcnMgb3Igc3RyaW5ncy5cIik7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQmJk1hdGguYWJzKHQpPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKXJldHVybiB1LmVycm9yKGBCcmFuY2ggbGFiZWxzIG11c3QgYmUgaW50ZWdlcnMgbm8gbGFyZ2VyIHRoYW4gJHtOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn0uYCk7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQmJk1hdGguZmxvb3IodCkhPT10KXJldHVybiB1LmVycm9yKFwiTnVtZXJpYyBicmFuY2ggbGFiZWxzIG11c3QgYmUgaW50ZWdlciB2YWx1ZXMuXCIpO2lmKHIpe2lmKHUuY2hlY2tTdWJ0eXBlKHIsUmUodCkpKXJldHVybiBudWxsfWVsc2Ugcj1SZSh0KTtpZih2b2lkIDAhPT1pW1N0cmluZyh0KV0pcmV0dXJuIHUuZXJyb3IoXCJCcmFuY2ggbGFiZWxzIG11c3QgYmUgdW5pcXVlLlwiKTtpW1N0cmluZyh0KV09cy5sZW5ndGg7fWNvbnN0IGM9ZS5wYXJzZShsLGEsbik7aWYoIWMpcmV0dXJuIG51bGw7bj1ufHxjLnR5cGUscy5wdXNoKGMpO31jb25zdCBhPWUucGFyc2UodFsxXSwxLGZlKTtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBvPWUucGFyc2UodFt0Lmxlbmd0aC0xXSx0Lmxlbmd0aC0xLG4pO3JldHVybiBvP1widmFsdWVcIiE9PWEudHlwZS5raW5kJiZlLmNvbmNhdCgxKS5jaGVja1N1YnR5cGUocixhLnR5cGUpP251bGw6bmV3IGhuKHIsbixhLGkscyxvKTpudWxsfWV2YWx1YXRlKHQpe2NvbnN0IGU9dGhpcy5pbnB1dC5ldmFsdWF0ZSh0KTtyZXR1cm4gKFJlKGUpPT09dGhpcy5pbnB1dFR5cGUmJnRoaXMub3V0cHV0c1t0aGlzLmNhc2VzW2VdXXx8dGhpcy5vdGhlcndpc2UpLmV2YWx1YXRlKHQpfWVhY2hDaGlsZCh0KXt0KHRoaXMuaW5wdXQpLHRoaXMub3V0cHV0cy5mb3JFYWNoKHQpLHQodGhpcy5vdGhlcndpc2UpO31vdXRwdXREZWZpbmVkKCl7cmV0dXJuIHRoaXMub3V0cHV0cy5ldmVyeSgodD0+dC5vdXRwdXREZWZpbmVkKCkpKSYmdGhpcy5vdGhlcndpc2Uub3V0cHV0RGVmaW5lZCgpfXNlcmlhbGl6ZSgpe2NvbnN0IHQ9W1wibWF0Y2hcIix0aGlzLmlucHV0LnNlcmlhbGl6ZSgpXSxlPU9iamVjdC5rZXlzKHRoaXMuY2FzZXMpLnNvcnQoKSxyPVtdLG49e307Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1uW3RoaXMuY2FzZXNbdF1dO3ZvaWQgMD09PWU/KG5bdGhpcy5jYXNlc1t0XV09ci5sZW5ndGgsci5wdXNoKFt0aGlzLmNhc2VzW3RdLFt0XV0pKTpyW2VdWzFdLnB1c2godCk7fWNvbnN0IGk9dD0+XCJudW1iZXJcIj09PXRoaXMuaW5wdXRUeXBlLmtpbmQ/TnVtYmVyKHQpOnQ7Zm9yKGNvbnN0W2Usbl1vZiByKXQucHVzaCgxPT09bi5sZW5ndGg/aShuWzBdKTpuLm1hcChpKSksdC5wdXNoKHRoaXMub3V0cHV0c1tlXS5zZXJpYWxpemUoKSk7cmV0dXJuIHQucHVzaCh0aGlzLm90aGVyd2lzZS5zZXJpYWxpemUoKSksdH19dmFyIHBuPWhuO2NsYXNzIGRue2NvbnN0cnVjdG9yKHQsZSxyKXt0aGlzLnR5cGU9dCx0aGlzLmJyYW5jaGVzPWUsdGhpcy5vdGhlcndpc2U9cjt9c3RhdGljIHBhcnNlKHQsZSl7aWYodC5sZW5ndGg8NClyZXR1cm4gZS5lcnJvcihgRXhwZWN0ZWQgYXQgbGVhc3QgMyBhcmd1bWVudHMsIGJ1dCBmb3VuZCBvbmx5ICR7dC5sZW5ndGgtMX0uYCk7aWYodC5sZW5ndGglMiE9MClyZXR1cm4gZS5lcnJvcihcIkV4cGVjdGVkIGFuIG9kZCBudW1iZXIgb2YgYXJndW1lbnRzLlwiKTtsZXQgcjtlLmV4cGVjdGVkVHlwZSYmXCJ2YWx1ZVwiIT09ZS5leHBlY3RlZFR5cGUua2luZCYmKHI9ZS5leHBlY3RlZFR5cGUpO2NvbnN0IG49W107Zm9yKGxldCBpPTE7aTx0Lmxlbmd0aC0xO2krPTIpe2NvbnN0IHM9ZS5wYXJzZSh0W2ldLGksaGUpO2lmKCFzKXJldHVybiBudWxsO2NvbnN0IGE9ZS5wYXJzZSh0W2krMV0saSsxLHIpO2lmKCFhKXJldHVybiBudWxsO24ucHVzaChbcyxhXSkscj1yfHxhLnR5cGU7fWNvbnN0IGk9ZS5wYXJzZSh0W3QubGVuZ3RoLTFdLHQubGVuZ3RoLTEscik7cmV0dXJuIGk/bmV3IGRuKHIsbixpKTpudWxsfWV2YWx1YXRlKHQpe2Zvcihjb25zdFtlLHJdb2YgdGhpcy5icmFuY2hlcylpZihlLmV2YWx1YXRlKHQpKXJldHVybiByLmV2YWx1YXRlKHQpO3JldHVybiB0aGlzLm90aGVyd2lzZS5ldmFsdWF0ZSh0KX1lYWNoQ2hpbGQodCl7Zm9yKGNvbnN0W2Uscl1vZiB0aGlzLmJyYW5jaGVzKXQoZSksdChyKTt0KHRoaXMub3RoZXJ3aXNlKTt9b3V0cHV0RGVmaW5lZCgpe3JldHVybiB0aGlzLmJyYW5jaGVzLmV2ZXJ5KCgoW3QsZV0pPT5lLm91dHB1dERlZmluZWQoKSkpJiZ0aGlzLm90aGVyd2lzZS5vdXRwdXREZWZpbmVkKCl9c2VyaWFsaXplKCl7Y29uc3QgdD1bXCJjYXNlXCJdO3JldHVybiB0aGlzLmVhY2hDaGlsZCgoZT0+e3QucHVzaChlLnNlcmlhbGl6ZSgpKTt9KSksdH19dmFyIGZuPWRuO2NsYXNzIHlue2NvbnN0cnVjdG9yKHQsZSxyLG4pe3RoaXMudHlwZT10LHRoaXMuaW5wdXQ9ZSx0aGlzLmJlZ2luSW5kZXg9cix0aGlzLmVuZEluZGV4PW47fXN0YXRpYyBwYXJzZSh0LGUpe2lmKHQubGVuZ3RoPD0yfHx0Lmxlbmd0aD49NSlyZXR1cm4gZS5lcnJvcihgRXhwZWN0ZWQgMyBvciA0IGFyZ3VtZW50cywgYnV0IGZvdW5kICR7dC5sZW5ndGgtMX0gaW5zdGVhZC5gKTtjb25zdCByPWUucGFyc2UodFsxXSwxLGZlKSxuPWUucGFyc2UodFsyXSwyLHVlKTtpZighcnx8IW4pcmV0dXJuIG51bGw7aWYoIV9lKHIudHlwZSxbeGUoZmUpLGNlLGZlXSkpcmV0dXJuIGUuZXJyb3IoYEV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJlIG9mIHR5cGUgYXJyYXkgb3Igc3RyaW5nLCBidXQgZm91bmQgJHt2ZShyLnR5cGUpfSBpbnN0ZWFkYCk7aWYoND09PXQubGVuZ3RoKXtjb25zdCBpPWUucGFyc2UodFszXSwzLHVlKTtyZXR1cm4gaT9uZXcgeW4oci50eXBlLHIsbixpKTpudWxsfXJldHVybiBuZXcgeW4oci50eXBlLHIsbil9ZXZhbHVhdGUodCl7Y29uc3QgZT10aGlzLmlucHV0LmV2YWx1YXRlKHQpLHI9dGhpcy5iZWdpbkluZGV4LmV2YWx1YXRlKHQpO2lmKCFBZShlLFtcInN0cmluZ1wiLFwiYXJyYXlcIl0pKXRocm93IG5ldyBPZShgRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgb2YgdHlwZSBhcnJheSBvciBzdHJpbmcsIGJ1dCBmb3VuZCAke3ZlKFJlKGUpKX0gaW5zdGVhZC5gKTtpZih0aGlzLmVuZEluZGV4KXtjb25zdCBuPXRoaXMuZW5kSW5kZXguZXZhbHVhdGUodCk7cmV0dXJuIGUuc2xpY2UocixuKX1yZXR1cm4gZS5zbGljZShyKX1lYWNoQ2hpbGQodCl7dCh0aGlzLmlucHV0KSx0KHRoaXMuYmVnaW5JbmRleCksdGhpcy5lbmRJbmRleCYmdCh0aGlzLmVuZEluZGV4KTt9b3V0cHV0RGVmaW5lZCgpe3JldHVybiAhMX1zZXJpYWxpemUoKXtpZihudWxsIT10aGlzLmVuZEluZGV4JiZ2b2lkIDAhPT10aGlzLmVuZEluZGV4KXtjb25zdCB0PXRoaXMuZW5kSW5kZXguc2VyaWFsaXplKCk7cmV0dXJuIFtcInNsaWNlXCIsdGhpcy5pbnB1dC5zZXJpYWxpemUoKSx0aGlzLmJlZ2luSW5kZXguc2VyaWFsaXplKCksdF19cmV0dXJuIFtcInNsaWNlXCIsdGhpcy5pbnB1dC5zZXJpYWxpemUoKSx0aGlzLmJlZ2luSW5kZXguc2VyaWFsaXplKCldfX12YXIgbW49eW47ZnVuY3Rpb24gZ24odCxlKXtyZXR1cm4gXCI9PVwiPT09dHx8XCIhPVwiPT09dD9cImJvb2xlYW5cIj09PWUua2luZHx8XCJzdHJpbmdcIj09PWUua2luZHx8XCJudW1iZXJcIj09PWUua2luZHx8XCJudWxsXCI9PT1lLmtpbmR8fFwidmFsdWVcIj09PWUua2luZDpcInN0cmluZ1wiPT09ZS5raW5kfHxcIm51bWJlclwiPT09ZS5raW5kfHxcInZhbHVlXCI9PT1lLmtpbmR9ZnVuY3Rpb24geG4odCxlLHIsbil7cmV0dXJuIDA9PT1uLmNvbXBhcmUoZSxyKX1mdW5jdGlvbiB2bih0LGUscil7Y29uc3Qgbj1cIj09XCIhPT10JiZcIiE9XCIhPT10O3JldHVybiBjbGFzcyBpe2NvbnN0cnVjdG9yKHQsZSxyKXt0aGlzLnR5cGU9aGUsdGhpcy5saHM9dCx0aGlzLnJocz1lLHRoaXMuY29sbGF0b3I9cix0aGlzLmhhc1VudHlwZWRBcmd1bWVudD1cInZhbHVlXCI9PT10LnR5cGUua2luZHx8XCJ2YWx1ZVwiPT09ZS50eXBlLmtpbmQ7fXN0YXRpYyBwYXJzZSh0LGUpe2lmKDMhPT10Lmxlbmd0aCYmNCE9PXQubGVuZ3RoKXJldHVybiBlLmVycm9yKFwiRXhwZWN0ZWQgdHdvIG9yIHRocmVlIGFyZ3VtZW50cy5cIik7Y29uc3Qgcj10WzBdO2xldCBzPWUucGFyc2UodFsxXSwxLGZlKTtpZighcylyZXR1cm4gbnVsbDtpZighZ24ocixzLnR5cGUpKXJldHVybiBlLmNvbmNhdCgxKS5lcnJvcihgXCIke3J9XCIgY29tcGFyaXNvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIHR5cGUgJyR7dmUocy50eXBlKX0nLmApO2xldCBhPWUucGFyc2UodFsyXSwyLGZlKTtpZighYSlyZXR1cm4gbnVsbDtpZighZ24ocixhLnR5cGUpKXJldHVybiBlLmNvbmNhdCgyKS5lcnJvcihgXCIke3J9XCIgY29tcGFyaXNvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIHR5cGUgJyR7dmUoYS50eXBlKX0nLmApO2lmKHMudHlwZS5raW5kIT09YS50eXBlLmtpbmQmJlwidmFsdWVcIiE9PXMudHlwZS5raW5kJiZcInZhbHVlXCIhPT1hLnR5cGUua2luZClyZXR1cm4gZS5lcnJvcihgQ2Fubm90IGNvbXBhcmUgdHlwZXMgJyR7dmUocy50eXBlKX0nIGFuZCAnJHt2ZShhLnR5cGUpfScuYCk7biYmKFwidmFsdWVcIj09PXMudHlwZS5raW5kJiZcInZhbHVlXCIhPT1hLnR5cGUua2luZD9zPW5ldyBHZShhLnR5cGUsW3NdKTpcInZhbHVlXCIhPT1zLnR5cGUua2luZCYmXCJ2YWx1ZVwiPT09YS50eXBlLmtpbmQmJihhPW5ldyBHZShzLnR5cGUsW2FdKSkpO2xldCBvPW51bGw7aWYoND09PXQubGVuZ3RoKXtpZihcInN0cmluZ1wiIT09cy50eXBlLmtpbmQmJlwic3RyaW5nXCIhPT1hLnR5cGUua2luZCYmXCJ2YWx1ZVwiIT09cy50eXBlLmtpbmQmJlwidmFsdWVcIiE9PWEudHlwZS5raW5kKXJldHVybiBlLmVycm9yKFwiQ2Fubm90IHVzZSBjb2xsYXRvciB0byBjb21wYXJlIG5vbi1zdHJpbmcgdHlwZXMuXCIpO2lmKG89ZS5wYXJzZSh0WzNdLDMseWUpLCFvKXJldHVybiBudWxsfXJldHVybiBuZXcgaShzLGEsbyl9ZXZhbHVhdGUoaSl7Y29uc3Qgcz10aGlzLmxocy5ldmFsdWF0ZShpKSxhPXRoaXMucmhzLmV2YWx1YXRlKGkpO2lmKG4mJnRoaXMuaGFzVW50eXBlZEFyZ3VtZW50KXtjb25zdCBlPVJlKHMpLHI9UmUoYSk7aWYoZS5raW5kIT09ci5raW5kfHxcInN0cmluZ1wiIT09ZS5raW5kJiZcIm51bWJlclwiIT09ZS5raW5kKXRocm93IG5ldyBPZShgRXhwZWN0ZWQgYXJndW1lbnRzIGZvciBcIiR7dH1cIiB0byBiZSAoc3RyaW5nLCBzdHJpbmcpIG9yIChudW1iZXIsIG51bWJlciksIGJ1dCBmb3VuZCAoJHtlLmtpbmR9LCAke3Iua2luZH0pIGluc3RlYWQuYCl9aWYodGhpcy5jb2xsYXRvciYmIW4mJnRoaXMuaGFzVW50eXBlZEFyZ3VtZW50KXtjb25zdCB0PVJlKHMpLHI9UmUoYSk7aWYoXCJzdHJpbmdcIiE9PXQua2luZHx8XCJzdHJpbmdcIiE9PXIua2luZClyZXR1cm4gZShpLHMsYSl9cmV0dXJuIHRoaXMuY29sbGF0b3I/cihpLHMsYSx0aGlzLmNvbGxhdG9yLmV2YWx1YXRlKGkpKTplKGkscyxhKX1lYWNoQ2hpbGQodCl7dCh0aGlzLmxocyksdCh0aGlzLnJocyksdGhpcy5jb2xsYXRvciYmdCh0aGlzLmNvbGxhdG9yKTt9b3V0cHV0RGVmaW5lZCgpe3JldHVybiAhMH1zZXJpYWxpemUoKXtjb25zdCBlPVt0XTtyZXR1cm4gdGhpcy5lYWNoQ2hpbGQoKHQ9PntlLnB1c2godC5zZXJpYWxpemUoKSk7fSkpLGV9fX1jb25zdCBibj12bihcIj09XCIsKGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZT09PXJ9KSx4biksd249dm4oXCIhPVwiLChmdW5jdGlvbih0LGUscil7cmV0dXJuIGUhPT1yfSksKGZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiAheG4oMCxlLHIsbil9KSksX249dm4oXCI8XCIsKGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZTxyfSksKGZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiBuLmNvbXBhcmUoZSxyKTwwfSkpLEFuPXZuKFwiPlwiLChmdW5jdGlvbih0LGUscil7cmV0dXJuIGU+cn0pLChmdW5jdGlvbih0LGUscixuKXtyZXR1cm4gbi5jb21wYXJlKGUscik+MH0pKSxTbj12bihcIjw9XCIsKGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZTw9cn0pLChmdW5jdGlvbih0LGUscixuKXtyZXR1cm4gbi5jb21wYXJlKGUscik8PTB9KSksa249dm4oXCI+PVwiLChmdW5jdGlvbih0LGUscil7cmV0dXJuIGU+PXJ9KSwoZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIG4uY29tcGFyZShlLHIpPj0wfSkpO2NsYXNzIElue2NvbnN0cnVjdG9yKHQsZSxyLG4saSxzKXt0aGlzLnR5cGU9Y2UsdGhpcy5udW1iZXI9dCx0aGlzLmxvY2FsZT1lLHRoaXMuY3VycmVuY3k9cix0aGlzLnVuaXQ9bix0aGlzLm1pbkZyYWN0aW9uRGlnaXRzPWksdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cz1zO31zdGF0aWMgcGFyc2UodCxlKXtpZigzIT09dC5sZW5ndGgpcmV0dXJuIGUuZXJyb3IoXCJFeHBlY3RlZCB0d28gYXJndW1lbnRzLlwiKTtjb25zdCByPWUucGFyc2UodFsxXSwxLHVlKTtpZighcilyZXR1cm4gbnVsbDtjb25zdCBuPXRbMl07aWYoXCJvYmplY3RcIiE9dHlwZW9mIG58fEFycmF5LmlzQXJyYXkobikpcmV0dXJuIGUuZXJyb3IoXCJOdW1iZXJGb3JtYXQgb3B0aW9ucyBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdC5cIik7bGV0IGk9bnVsbDtpZihuLmxvY2FsZSYmKGk9ZS5wYXJzZShuLmxvY2FsZSwxLGNlKSwhaSkpcmV0dXJuIG51bGw7bGV0IHM9bnVsbDtpZihuLmN1cnJlbmN5JiYocz1lLnBhcnNlKG4uY3VycmVuY3ksMSxjZSksIXMpKXJldHVybiBudWxsO2xldCBhPW51bGw7aWYobi51bml0JiYoYT1lLnBhcnNlKG4udW5pdCwxLGNlKSwhYSkpcmV0dXJuIG51bGw7bGV0IG89bnVsbDtpZihuW1wibWluLWZyYWN0aW9uLWRpZ2l0c1wiXSYmKG89ZS5wYXJzZShuW1wibWluLWZyYWN0aW9uLWRpZ2l0c1wiXSwxLHVlKSwhbykpcmV0dXJuIG51bGw7bGV0IGw9bnVsbDtyZXR1cm4gbltcIm1heC1mcmFjdGlvbi1kaWdpdHNcIl0mJihsPWUucGFyc2UobltcIm1heC1mcmFjdGlvbi1kaWdpdHNcIl0sMSx1ZSksIWwpP251bGw6bmV3IEluKHIsaSxzLGEsbyxsKX1ldmFsdWF0ZSh0KXtyZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlP3RoaXMubG9jYWxlLmV2YWx1YXRlKHQpOltdLHtzdHlsZToodGhpcy5jdXJyZW5jeT9cImN1cnJlbmN5XCI6dGhpcy51bml0JiZcInVuaXRcIil8fFwiZGVjaW1hbFwiLGN1cnJlbmN5OnRoaXMuY3VycmVuY3k/dGhpcy5jdXJyZW5jeS5ldmFsdWF0ZSh0KTp2b2lkIDAsdW5pdDp0aGlzLnVuaXQ/dGhpcy51bml0LmV2YWx1YXRlKHQpOnZvaWQgMCxtaW5pbXVtRnJhY3Rpb25EaWdpdHM6dGhpcy5taW5GcmFjdGlvbkRpZ2l0cz90aGlzLm1pbkZyYWN0aW9uRGlnaXRzLmV2YWx1YXRlKHQpOnZvaWQgMCxtYXhpbXVtRnJhY3Rpb25EaWdpdHM6dGhpcy5tYXhGcmFjdGlvbkRpZ2l0cz90aGlzLm1heEZyYWN0aW9uRGlnaXRzLmV2YWx1YXRlKHQpOnZvaWQgMH0pLmZvcm1hdCh0aGlzLm51bWJlci5ldmFsdWF0ZSh0KSl9ZWFjaENoaWxkKHQpe3QodGhpcy5udW1iZXIpLHRoaXMubG9jYWxlJiZ0KHRoaXMubG9jYWxlKSx0aGlzLmN1cnJlbmN5JiZ0KHRoaXMuY3VycmVuY3kpLHRoaXMudW5pdCYmdCh0aGlzLnVuaXQpLHRoaXMubWluRnJhY3Rpb25EaWdpdHMmJnQodGhpcy5taW5GcmFjdGlvbkRpZ2l0cyksdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cyYmdCh0aGlzLm1heEZyYWN0aW9uRGlnaXRzKTt9b3V0cHV0RGVmaW5lZCgpe3JldHVybiAhMX1zZXJpYWxpemUoKXtjb25zdCB0PXt9O3JldHVybiB0aGlzLmxvY2FsZSYmKHQubG9jYWxlPXRoaXMubG9jYWxlLnNlcmlhbGl6ZSgpKSx0aGlzLmN1cnJlbmN5JiYodC5jdXJyZW5jeT10aGlzLmN1cnJlbmN5LnNlcmlhbGl6ZSgpKSx0aGlzLnVuaXQmJih0LnVuaXQ9dGhpcy51bml0LnNlcmlhbGl6ZSgpKSx0aGlzLm1pbkZyYWN0aW9uRGlnaXRzJiYodFtcIm1pbi1mcmFjdGlvbi1kaWdpdHNcIl09dGhpcy5taW5GcmFjdGlvbkRpZ2l0cy5zZXJpYWxpemUoKSksdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cyYmKHRbXCJtYXgtZnJhY3Rpb24tZGlnaXRzXCJdPXRoaXMubWF4RnJhY3Rpb25EaWdpdHMuc2VyaWFsaXplKCkpLFtcIm51bWJlci1mb3JtYXRcIix0aGlzLm51bWJlci5zZXJpYWxpemUoKSx0XX19Y2xhc3MgTW57Y29uc3RydWN0b3IodCl7dGhpcy50eXBlPXVlLHRoaXMuaW5wdXQ9dDt9c3RhdGljIHBhcnNlKHQsZSl7aWYoMiE9PXQubGVuZ3RoKXJldHVybiBlLmVycm9yKGBFeHBlY3RlZCAxIGFyZ3VtZW50LCBidXQgZm91bmQgJHt0Lmxlbmd0aC0xfSBpbnN0ZWFkLmApO2NvbnN0IHI9ZS5wYXJzZSh0WzFdLDEpO3JldHVybiByP1wiYXJyYXlcIiE9PXIudHlwZS5raW5kJiZcInN0cmluZ1wiIT09ci50eXBlLmtpbmQmJlwidmFsdWVcIiE9PXIudHlwZS5raW5kP2UuZXJyb3IoYEV4cGVjdGVkIGFyZ3VtZW50IG9mIHR5cGUgc3RyaW5nIG9yIGFycmF5LCBidXQgZm91bmQgJHt2ZShyLnR5cGUpfSBpbnN0ZWFkLmApOm5ldyBNbihyKTpudWxsfWV2YWx1YXRlKHQpe2NvbnN0IGU9dGhpcy5pbnB1dC5ldmFsdWF0ZSh0KTtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gZS5sZW5ndGg7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS5sZW5ndGg7dGhyb3cgbmV3IE9lKGBFeHBlY3RlZCB2YWx1ZSB0byBiZSBvZiB0eXBlIHN0cmluZyBvciBhcnJheSwgYnV0IGZvdW5kICR7dmUoUmUoZSkpfSBpbnN0ZWFkLmApfWVhY2hDaGlsZCh0KXt0KHRoaXMuaW5wdXQpO31vdXRwdXREZWZpbmVkKCl7cmV0dXJuICExfXNlcmlhbGl6ZSgpe2NvbnN0IHQ9W1wibGVuZ3RoXCJdO3JldHVybiB0aGlzLmVhY2hDaGlsZCgoZT0+e3QucHVzaChlLnNlcmlhbGl6ZSgpKTt9KSksdH19Y29uc3QgVG49e1wiPT1cIjpibixcIiE9XCI6d24sXCI+XCI6QW4sXCI8XCI6X24sXCI+PVwiOmtuLFwiPD1cIjpTbixhcnJheTpHZSxhdDphbixib29sZWFuOkdlLGNhc2U6Zm4sY29hbGVzY2U6ZW4sY29sbGF0b3I6ZXIsZm9ybWF0OlplLGltYWdlOktlLGluOmxuLFwiaW5kZXgtb2ZcIjpjbixpbnRlcnBvbGF0ZTpRcixcImludGVycG9sYXRlLWhjbFwiOlFyLFwiaW50ZXJwb2xhdGUtbGFiXCI6UXIsbGVuZ3RoOk1uLGxldDpubixsaXRlcmFsOmplLG1hdGNoOnBuLG51bWJlcjpHZSxcIm51bWJlci1mb3JtYXRcIjpJbixvYmplY3Q6R2Usc2xpY2U6bW4sc3RlcDpCcixzdHJpbmc6R2UsXCJ0by1ib29sZWFuXCI6SGUsXCJ0by1jb2xvclwiOkhlLFwidG8tbnVtYmVyXCI6SGUsXCJ0by1zdHJpbmdcIjpIZSx2YXI6U3Isd2l0aGluOnZyfTtmdW5jdGlvbiB6bih0LFtlLHIsbixpXSl7ZT1lLmV2YWx1YXRlKHQpLHI9ci5ldmFsdWF0ZSh0KSxuPW4uZXZhbHVhdGUodCk7Y29uc3Qgcz1pP2kuZXZhbHVhdGUodCk6MSxhPUxlKGUscixuLHMpO2lmKGEpdGhyb3cgbmV3IE9lKGEpO3JldHVybiBuZXcgRWUoZS8yNTUqcyxyLzI1NSpzLG4vMjU1KnMscyl9ZnVuY3Rpb24gQm4odCxlKXtyZXR1cm4gdCBpbiBlfWZ1bmN0aW9uIEVuKHQsZSl7Y29uc3Qgcj1lW3RdO3JldHVybiB2b2lkIDA9PT1yP251bGw6cn1mdW5jdGlvbiBDbih0KXtyZXR1cm4ge3R5cGU6dH19dHIucmVnaXN0ZXIoVG4se2Vycm9yOlt7a2luZDpcImVycm9yXCJ9LFtjZV0sKHQsW2VdKT0+e3Rocm93IG5ldyBPZShlLmV2YWx1YXRlKHQpKX1dLHR5cGVvZjpbY2UsW2ZlXSwodCxbZV0pPT52ZShSZShlLmV2YWx1YXRlKHQpKSldLFwidG8tcmdiYVwiOlt4ZSh1ZSw0KSxbcGVdLCh0LFtlXSk9PmUuZXZhbHVhdGUodCkudG9BcnJheSgpXSxyZ2I6W3BlLFt1ZSx1ZSx1ZV0sem5dLHJnYmE6W3BlLFt1ZSx1ZSx1ZSx1ZV0sem5dLGhhczp7dHlwZTpoZSxvdmVybG9hZHM6W1tbY2VdLCh0LFtlXSk9PkJuKGUuZXZhbHVhdGUodCksdC5wcm9wZXJ0aWVzKCkpXSxbW2NlLGRlXSwodCxbZSxyXSk9PkJuKGUuZXZhbHVhdGUodCksci5ldmFsdWF0ZSh0KSldXX0sZ2V0Ont0eXBlOmZlLG92ZXJsb2FkczpbW1tjZV0sKHQsW2VdKT0+RW4oZS5ldmFsdWF0ZSh0KSx0LnByb3BlcnRpZXMoKSldLFtbY2UsZGVdLCh0LFtlLHJdKT0+RW4oZS5ldmFsdWF0ZSh0KSxyLmV2YWx1YXRlKHQpKV1dfSxcImZlYXR1cmUtc3RhdGVcIjpbZmUsW2NlXSwodCxbZV0pPT5FbihlLmV2YWx1YXRlKHQpLHQuZmVhdHVyZVN0YXRlfHx7fSldLHByb3BlcnRpZXM6W2RlLFtdLHQ9PnQucHJvcGVydGllcygpXSxcImdlb21ldHJ5LXR5cGVcIjpbY2UsW10sdD0+dC5nZW9tZXRyeVR5cGUoKV0saWQ6W2ZlLFtdLHQ9PnQuaWQoKV0sem9vbTpbdWUsW10sdD0+dC5nbG9iYWxzLnpvb21dLHBpdGNoOlt1ZSxbXSx0PT50Lmdsb2JhbHMucGl0Y2h8fDBdLFwiZGlzdGFuY2UtZnJvbS1jZW50ZXJcIjpbdWUsW10sdD0+dC5kaXN0YW5jZUZyb21DZW50ZXIoKV0sXCJoZWF0bWFwLWRlbnNpdHlcIjpbdWUsW10sdD0+dC5nbG9iYWxzLmhlYXRtYXBEZW5zaXR5fHwwXSxcImxpbmUtcHJvZ3Jlc3NcIjpbdWUsW10sdD0+dC5nbG9iYWxzLmxpbmVQcm9ncmVzc3x8MF0sXCJza3ktcmFkaWFsLXByb2dyZXNzXCI6W3VlLFtdLHQ9PnQuZ2xvYmFscy5za3lSYWRpYWxQcm9ncmVzc3x8MF0sYWNjdW11bGF0ZWQ6W2ZlLFtdLHQ9PnZvaWQgMD09PXQuZ2xvYmFscy5hY2N1bXVsYXRlZD9udWxsOnQuZ2xvYmFscy5hY2N1bXVsYXRlZF0sXCIrXCI6W3VlLENuKHVlKSwodCxlKT0+e2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgZSlyKz1uLmV2YWx1YXRlKHQpO3JldHVybiByfV0sXCIqXCI6W3VlLENuKHVlKSwodCxlKT0+e2xldCByPTE7Zm9yKGNvbnN0IG4gb2YgZSlyKj1uLmV2YWx1YXRlKHQpO3JldHVybiByfV0sXCItXCI6e3R5cGU6dWUsb3ZlcmxvYWRzOltbW3VlLHVlXSwodCxbZSxyXSk9PmUuZXZhbHVhdGUodCktci5ldmFsdWF0ZSh0KV0sW1t1ZV0sKHQsW2VdKT0+LWUuZXZhbHVhdGUodCldXX0sXCIvXCI6W3VlLFt1ZSx1ZV0sKHQsW2Uscl0pPT5lLmV2YWx1YXRlKHQpL3IuZXZhbHVhdGUodCldLFwiJVwiOlt1ZSxbdWUsdWVdLCh0LFtlLHJdKT0+ZS5ldmFsdWF0ZSh0KSVyLmV2YWx1YXRlKHQpXSxsbjI6W3VlLFtdLCgpPT5NYXRoLkxOMl0scGk6W3VlLFtdLCgpPT5NYXRoLlBJXSxlOlt1ZSxbXSwoKT0+TWF0aC5FXSxcIl5cIjpbdWUsW3VlLHVlXSwodCxbZSxyXSk9Pk1hdGgucG93KGUuZXZhbHVhdGUodCksci5ldmFsdWF0ZSh0KSldLHNxcnQ6W3VlLFt1ZV0sKHQsW2VdKT0+TWF0aC5zcXJ0KGUuZXZhbHVhdGUodCkpXSxsb2cxMDpbdWUsW3VlXSwodCxbZV0pPT5NYXRoLmxvZyhlLmV2YWx1YXRlKHQpKS9NYXRoLkxOMTBdLGxuOlt1ZSxbdWVdLCh0LFtlXSk9Pk1hdGgubG9nKGUuZXZhbHVhdGUodCkpXSxsb2cyOlt1ZSxbdWVdLCh0LFtlXSk9Pk1hdGgubG9nKGUuZXZhbHVhdGUodCkpL01hdGguTE4yXSxzaW46W3VlLFt1ZV0sKHQsW2VdKT0+TWF0aC5zaW4oZS5ldmFsdWF0ZSh0KSldLGNvczpbdWUsW3VlXSwodCxbZV0pPT5NYXRoLmNvcyhlLmV2YWx1YXRlKHQpKV0sdGFuOlt1ZSxbdWVdLCh0LFtlXSk9Pk1hdGgudGFuKGUuZXZhbHVhdGUodCkpXSxhc2luOlt1ZSxbdWVdLCh0LFtlXSk9Pk1hdGguYXNpbihlLmV2YWx1YXRlKHQpKV0sYWNvczpbdWUsW3VlXSwodCxbZV0pPT5NYXRoLmFjb3MoZS5ldmFsdWF0ZSh0KSldLGF0YW46W3VlLFt1ZV0sKHQsW2VdKT0+TWF0aC5hdGFuKGUuZXZhbHVhdGUodCkpXSxtaW46W3VlLENuKHVlKSwodCxlKT0+TWF0aC5taW4oLi4uZS5tYXAoKGU9PmUuZXZhbHVhdGUodCkpKSldLG1heDpbdWUsQ24odWUpLCh0LGUpPT5NYXRoLm1heCguLi5lLm1hcCgoZT0+ZS5ldmFsdWF0ZSh0KSkpKV0sYWJzOlt1ZSxbdWVdLCh0LFtlXSk9Pk1hdGguYWJzKGUuZXZhbHVhdGUodCkpXSxyb3VuZDpbdWUsW3VlXSwodCxbZV0pPT57Y29uc3Qgcj1lLmV2YWx1YXRlKHQpO3JldHVybiByPDA/LU1hdGgucm91bmQoLXIpOk1hdGgucm91bmQocil9XSxmbG9vcjpbdWUsW3VlXSwodCxbZV0pPT5NYXRoLmZsb29yKGUuZXZhbHVhdGUodCkpXSxjZWlsOlt1ZSxbdWVdLCh0LFtlXSk9Pk1hdGguY2VpbChlLmV2YWx1YXRlKHQpKV0sXCJmaWx0ZXItPT1cIjpbaGUsW2NlLGZlXSwodCxbZSxyXSk9PnQucHJvcGVydGllcygpW2UudmFsdWVdPT09ci52YWx1ZV0sXCJmaWx0ZXItaWQtPT1cIjpbaGUsW2ZlXSwodCxbZV0pPT50LmlkKCk9PT1lLnZhbHVlXSxcImZpbHRlci10eXBlLT09XCI6W2hlLFtjZV0sKHQsW2VdKT0+dC5nZW9tZXRyeVR5cGUoKT09PWUudmFsdWVdLFwiZmlsdGVyLTxcIjpbaGUsW2NlLGZlXSwodCxbZSxyXSk9Pntjb25zdCBuPXQucHJvcGVydGllcygpW2UudmFsdWVdLGk9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIG49PXR5cGVvZiBpJiZuPGl9XSxcImZpbHRlci1pZC08XCI6W2hlLFtmZV0sKHQsW2VdKT0+e2NvbnN0IHI9dC5pZCgpLG49ZS52YWx1ZTtyZXR1cm4gdHlwZW9mIHI9PXR5cGVvZiBuJiZyPG59XSxcImZpbHRlci0+XCI6W2hlLFtjZSxmZV0sKHQsW2Uscl0pPT57Y29uc3Qgbj10LnByb3BlcnRpZXMoKVtlLnZhbHVlXSxpPXIudmFsdWU7cmV0dXJuIHR5cGVvZiBuPT10eXBlb2YgaSYmbj5pfV0sXCJmaWx0ZXItaWQtPlwiOltoZSxbZmVdLCh0LFtlXSk9Pntjb25zdCByPXQuaWQoKSxuPWUudmFsdWU7cmV0dXJuIHR5cGVvZiByPT10eXBlb2YgbiYmcj5ufV0sXCJmaWx0ZXItPD1cIjpbaGUsW2NlLGZlXSwodCxbZSxyXSk9Pntjb25zdCBuPXQucHJvcGVydGllcygpW2UudmFsdWVdLGk9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIG49PXR5cGVvZiBpJiZuPD1pfV0sXCJmaWx0ZXItaWQtPD1cIjpbaGUsW2ZlXSwodCxbZV0pPT57Y29uc3Qgcj10LmlkKCksbj1lLnZhbHVlO3JldHVybiB0eXBlb2Ygcj09dHlwZW9mIG4mJnI8PW59XSxcImZpbHRlci0+PVwiOltoZSxbY2UsZmVdLCh0LFtlLHJdKT0+e2NvbnN0IG49dC5wcm9wZXJ0aWVzKClbZS52YWx1ZV0saT1yLnZhbHVlO3JldHVybiB0eXBlb2Ygbj09dHlwZW9mIGkmJm4+PWl9XSxcImZpbHRlci1pZC0+PVwiOltoZSxbZmVdLCh0LFtlXSk9Pntjb25zdCByPXQuaWQoKSxuPWUudmFsdWU7cmV0dXJuIHR5cGVvZiByPT10eXBlb2YgbiYmcj49bn1dLFwiZmlsdGVyLWhhc1wiOltoZSxbZmVdLCh0LFtlXSk9PmUudmFsdWUgaW4gdC5wcm9wZXJ0aWVzKCldLFwiZmlsdGVyLWhhcy1pZFwiOltoZSxbXSx0PT5udWxsIT09dC5pZCgpJiZ2b2lkIDAhPT10LmlkKCldLFwiZmlsdGVyLXR5cGUtaW5cIjpbaGUsW3hlKGNlKV0sKHQsW2VdKT0+ZS52YWx1ZS5pbmRleE9mKHQuZ2VvbWV0cnlUeXBlKCkpPj0wXSxcImZpbHRlci1pZC1pblwiOltoZSxbeGUoZmUpXSwodCxbZV0pPT5lLnZhbHVlLmluZGV4T2YodC5pZCgpKT49MF0sXCJmaWx0ZXItaW4tc21hbGxcIjpbaGUsW2NlLHhlKGZlKV0sKHQsW2Uscl0pPT5yLnZhbHVlLmluZGV4T2YodC5wcm9wZXJ0aWVzKClbZS52YWx1ZV0pPj0wXSxcImZpbHRlci1pbi1sYXJnZVwiOltoZSxbY2UseGUoZmUpXSwodCxbZSxyXSk9PmZ1bmN0aW9uKHQsZSxyLG4pe2Zvcig7cjw9bjspe2NvbnN0IGk9cituPj4xO2lmKGVbaV09PT10KXJldHVybiAhMDtlW2ldPnQ/bj1pLTE6cj1pKzE7fXJldHVybiAhMX0odC5wcm9wZXJ0aWVzKClbZS52YWx1ZV0sci52YWx1ZSwwLHIudmFsdWUubGVuZ3RoLTEpXSxhbGw6e3R5cGU6aGUsb3ZlcmxvYWRzOltbW2hlLGhlXSwodCxbZSxyXSk9PmUuZXZhbHVhdGUodCkmJnIuZXZhbHVhdGUodCldLFtDbihoZSksKHQsZSk9Pntmb3IoY29uc3QgciBvZiBlKWlmKCFyLmV2YWx1YXRlKHQpKXJldHVybiAhMTtyZXR1cm4gITB9XV19LGFueTp7dHlwZTpoZSxvdmVybG9hZHM6W1tbaGUsaGVdLCh0LFtlLHJdKT0+ZS5ldmFsdWF0ZSh0KXx8ci5ldmFsdWF0ZSh0KV0sW0NuKGhlKSwodCxlKT0+e2Zvcihjb25zdCByIG9mIGUpaWYoci5ldmFsdWF0ZSh0KSlyZXR1cm4gITA7cmV0dXJuICExfV1dfSxcIiFcIjpbaGUsW2hlXSwodCxbZV0pPT4hZS5ldmFsdWF0ZSh0KV0sXCJpcy1zdXBwb3J0ZWQtc2NyaXB0XCI6W2hlLFtjZV0sKHQsW2VdKT0+e2NvbnN0IHI9dC5nbG9iYWxzJiZ0Lmdsb2JhbHMuaXNTdXBwb3J0ZWRTY3JpcHQ7cmV0dXJuICFyfHxyKGUuZXZhbHVhdGUodCkpfV0sdXBjYXNlOltjZSxbY2VdLCh0LFtlXSk9PmUuZXZhbHVhdGUodCkudG9VcHBlckNhc2UoKV0sZG93bmNhc2U6W2NlLFtjZV0sKHQsW2VdKT0+ZS5ldmFsdWF0ZSh0KS50b0xvd2VyQ2FzZSgpXSxjb25jYXQ6W2NlLENuKGZlKSwodCxlKT0+ZS5tYXAoKGU9PlVlKGUuZXZhbHVhdGUodCkpKSkuam9pbihcIlwiKV0sXCJyZXNvbHZlZC1sb2NhbGVcIjpbY2UsW3llXSwodCxbZV0pPT5lLmV2YWx1YXRlKHQpLnJlc29sdmVkTG9jYWxlKCldfSk7dmFyIFBuPVRuO2Z1bmN0aW9uIERuKHQpe3JldHVybiB7cmVzdWx0Olwic3VjY2Vzc1wiLHZhbHVlOnR9fWZ1bmN0aW9uIFZuKHQpe3JldHVybiB7cmVzdWx0OlwiZXJyb3JcIix2YWx1ZTp0fX1mdW5jdGlvbiBMbih0KXtyZXR1cm4gXCJkYXRhLWRyaXZlblwiPT09dFtcInByb3BlcnR5LXR5cGVcIl19ZnVuY3Rpb24gRm4odCl7cmV0dXJuICEhdC5leHByZXNzaW9uJiZ0LmV4cHJlc3Npb24ucGFyYW1ldGVycy5pbmRleE9mKFwiem9vbVwiKT4tMX1mdW5jdGlvbiBSbih0KXtyZXR1cm4gISF0LmV4cHJlc3Npb24mJnQuZXhwcmVzc2lvbi5pbnRlcnBvbGF0ZWR9ZnVuY3Rpb24gVW4odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBOdW1iZXI/XCJudW1iZXJcIjp0IGluc3RhbmNlb2YgU3RyaW5nP1wic3RyaW5nXCI6dCBpbnN0YW5jZW9mIEJvb2xlYW4/XCJib29sZWFuXCI6QXJyYXkuaXNBcnJheSh0KT9cImFycmF5XCI6bnVsbD09PXQ/XCJudWxsXCI6dHlwZW9mIHR9ZnVuY3Rpb24gJG4odCl7cmV0dXJuIFwib2JqZWN0XCI9PXR5cGVvZiB0JiZudWxsIT09dCYmIUFycmF5LmlzQXJyYXkodCl9ZnVuY3Rpb24gam4odCl7cmV0dXJuIHR9ZnVuY3Rpb24gT24odCxlKXtjb25zdCByPVwiY29sb3JcIj09PWUudHlwZSxuPXQuc3RvcHMmJlwib2JqZWN0XCI9PXR5cGVvZiB0LnN0b3BzWzBdWzBdLGk9bnx8IShufHx2b2lkIDAhPT10LnByb3BlcnR5KSxzPXQudHlwZXx8KFJuKGUpP1wiZXhwb25lbnRpYWxcIjpcImludGVydmFsXCIpO2lmKHImJigodD1lZSh7fSx0KSkuc3RvcHMmJih0LnN0b3BzPXQuc3RvcHMubWFwKCh0PT5bdFswXSxFZS5wYXJzZSh0WzFdKV0pKSksdC5kZWZhdWx0PUVlLnBhcnNlKHQuZGVmYXVsdD90LmRlZmF1bHQ6ZS5kZWZhdWx0KSksdC5jb2xvclNwYWNlJiZcInJnYlwiIT09dC5jb2xvclNwYWNlJiYhSHJbdC5jb2xvclNwYWNlXSl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29sb3Igc3BhY2U6ICR7dC5jb2xvclNwYWNlfWApO2xldCBhLG8sbDtpZihcImV4cG9uZW50aWFsXCI9PT1zKWE9Wm47ZWxzZSBpZihcImludGVydmFsXCI9PT1zKWE9R247ZWxzZSBpZihcImNhdGVnb3JpY2FsXCI9PT1zKXthPU5uLG89T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgZSBvZiB0LnN0b3BzKW9bZVswXV09ZVsxXTtsPXR5cGVvZiB0LnN0b3BzWzBdWzBdO31lbHNlIHtpZihcImlkZW50aXR5XCIhPT1zKXRocm93IG5ldyBFcnJvcihgVW5rbm93biBmdW5jdGlvbiB0eXBlIFwiJHtzfVwiYCk7YT1Lbjt9aWYobil7Y29uc3Qgcj17fSxuPVtdO2ZvcihsZXQgZT0wO2U8dC5zdG9wcy5sZW5ndGg7ZSsrKXtjb25zdCBpPXQuc3RvcHNbZV0scz1pWzBdLnpvb207dm9pZCAwPT09cltzXSYmKHJbc109e3pvb206cyx0eXBlOnQudHlwZSxwcm9wZXJ0eTp0LnByb3BlcnR5LGRlZmF1bHQ6dC5kZWZhdWx0LHN0b3BzOltdfSxuLnB1c2gocykpLHJbc10uc3RvcHMucHVzaChbaVswXS52YWx1ZSxpWzFdXSk7fWNvbnN0IGk9W107Zm9yKGNvbnN0IHQgb2YgbilpLnB1c2goW3JbdF0uem9vbSxPbihyW3RdLGUpXSk7Y29uc3Qgcz17bmFtZTpcImxpbmVhclwifTtyZXR1cm4ge2tpbmQ6XCJjb21wb3NpdGVcIixpbnRlcnBvbGF0aW9uVHlwZTpzLGludGVycG9sYXRpb25GYWN0b3I6UXIuaW50ZXJwb2xhdGlvbkZhY3Rvci5iaW5kKHZvaWQgMCxzKSx6b29tU3RvcHM6aS5tYXAoKHQ9PnRbMF0pKSxldmFsdWF0ZTooe3pvb206cn0sbik9PlpuKHtzdG9wczppLGJhc2U6dC5iYXNlfSxlLHIpLmV2YWx1YXRlKHIsbil9fWlmKGkpe2NvbnN0IHI9XCJleHBvbmVudGlhbFwiPT09cz97bmFtZTpcImV4cG9uZW50aWFsXCIsYmFzZTp2b2lkIDAhPT10LmJhc2U/dC5iYXNlOjF9Om51bGw7cmV0dXJuIHtraW5kOlwiY2FtZXJhXCIsaW50ZXJwb2xhdGlvblR5cGU6cixpbnRlcnBvbGF0aW9uRmFjdG9yOlFyLmludGVycG9sYXRpb25GYWN0b3IuYmluZCh2b2lkIDAsciksem9vbVN0b3BzOnQuc3RvcHMubWFwKCh0PT50WzBdKSksZXZhbHVhdGU6KHt6b29tOnJ9KT0+YSh0LGUscixvLGwpfX1yZXR1cm4ge2tpbmQ6XCJzb3VyY2VcIixldmFsdWF0ZShyLG4pe2NvbnN0IGk9biYmbi5wcm9wZXJ0aWVzP24ucHJvcGVydGllc1t0LnByb3BlcnR5XTp2b2lkIDA7cmV0dXJuIHZvaWQgMD09PWk/cW4odC5kZWZhdWx0LGUuZGVmYXVsdCk6YSh0LGUsaSxvLGwpfX19ZnVuY3Rpb24gcW4odCxlLHIpe3JldHVybiB2b2lkIDAhPT10P3Q6dm9pZCAwIT09ZT9lOnZvaWQgMCE9PXI/cjp2b2lkIDB9ZnVuY3Rpb24gTm4odCxlLHIsbixpKXtyZXR1cm4gcW4odHlwZW9mIHI9PT1pP25bcl06dm9pZCAwLHQuZGVmYXVsdCxlLmRlZmF1bHQpfWZ1bmN0aW9uIEduKHQsZSxyKXtpZihcIm51bWJlclwiIT09VW4ocikpcmV0dXJuIHFuKHQuZGVmYXVsdCxlLmRlZmF1bHQpO2NvbnN0IG49dC5zdG9wcy5sZW5ndGg7aWYoMT09PW4pcmV0dXJuIHQuc3RvcHNbMF1bMV07aWYocjw9dC5zdG9wc1swXVswXSlyZXR1cm4gdC5zdG9wc1swXVsxXTtpZihyPj10LnN0b3BzW24tMV1bMF0pcmV0dXJuIHQuc3RvcHNbbi0xXVsxXTtjb25zdCBpPVRyKHQuc3RvcHMubWFwKCh0PT50WzBdKSkscik7cmV0dXJuIHQuc3RvcHNbaV1bMV19ZnVuY3Rpb24gWm4odCxlLHIpe2NvbnN0IG49dm9pZCAwIT09dC5iYXNlP3QuYmFzZToxO2lmKFwibnVtYmVyXCIhPT1VbihyKSlyZXR1cm4gcW4odC5kZWZhdWx0LGUuZGVmYXVsdCk7Y29uc3QgaT10LnN0b3BzLmxlbmd0aDtpZigxPT09aSlyZXR1cm4gdC5zdG9wc1swXVsxXTtpZihyPD10LnN0b3BzWzBdWzBdKXJldHVybiB0LnN0b3BzWzBdWzFdO2lmKHI+PXQuc3RvcHNbaS0xXVswXSlyZXR1cm4gdC5zdG9wc1tpLTFdWzFdO2NvbnN0IHM9VHIodC5zdG9wcy5tYXAoKHQ9PnRbMF0pKSxyKSxhPWZ1bmN0aW9uKHQsZSxyLG4pe2NvbnN0IGk9bi1yLHM9dC1yO3JldHVybiAwPT09aT8wOjE9PT1lP3MvaTooTWF0aC5wb3coZSxzKS0xKS8oTWF0aC5wb3coZSxpKS0xKX0ocixuLHQuc3RvcHNbc11bMF0sdC5zdG9wc1tzKzFdWzBdKSxvPXQuc3RvcHNbc11bMV0sbD10LnN0b3BzW3MrMV1bMV07bGV0IHU9Q3JbZS50eXBlXXx8am47aWYodC5jb2xvclNwYWNlJiZcInJnYlwiIT09dC5jb2xvclNwYWNlKXtjb25zdCBlPUhyW3QuY29sb3JTcGFjZV07dT0odCxyKT0+ZS5yZXZlcnNlKGUuaW50ZXJwb2xhdGUoZS5mb3J3YXJkKHQpLGUuZm9yd2FyZChyKSxhKSk7fXJldHVybiBcImZ1bmN0aW9uXCI9PXR5cGVvZiBvLmV2YWx1YXRlP3tldmFsdWF0ZSguLi50KXtjb25zdCBlPW8uZXZhbHVhdGUuYXBwbHkodm9pZCAwLHQpLHI9bC5ldmFsdWF0ZS5hcHBseSh2b2lkIDAsdCk7aWYodm9pZCAwIT09ZSYmdm9pZCAwIT09cilyZXR1cm4gdShlLHIsYSl9fTp1KG8sbCxhKX1mdW5jdGlvbiBLbih0LGUscil7cmV0dXJuIFwiY29sb3JcIj09PWUudHlwZT9yPUVlLnBhcnNlKHIpOlwiZm9ybWF0dGVkXCI9PT1lLnR5cGU/cj1EZS5mcm9tU3RyaW5nKHIudG9TdHJpbmcoKSk6XCJyZXNvbHZlZEltYWdlXCI9PT1lLnR5cGU/cj1WZS5mcm9tU3RyaW5nKHIudG9TdHJpbmcoKSk6VW4ocik9PT1lLnR5cGV8fFwiZW51bVwiPT09ZS50eXBlJiZlLnZhbHVlc1tyXXx8KHI9dm9pZCAwKSxxbihyLHQuZGVmYXVsdCxlLmRlZmF1bHQpfWNsYXNzIFhue2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5leHByZXNzaW9uPXQsdGhpcy5fd2FybmluZ0hpc3Rvcnk9e30sdGhpcy5fZXZhbHVhdG9yPW5ldyBXZSx0aGlzLl9kZWZhdWx0VmFsdWU9ZT9mdW5jdGlvbih0KXtyZXR1cm4gXCJjb2xvclwiPT09dC50eXBlJiYoJG4odC5kZWZhdWx0KXx8QXJyYXkuaXNBcnJheSh0LmRlZmF1bHQpKT9uZXcgRWUoMCwwLDAsMCk6XCJjb2xvclwiPT09dC50eXBlP0VlLnBhcnNlKHQuZGVmYXVsdCl8fG51bGw6dm9pZCAwPT09dC5kZWZhdWx0P251bGw6dC5kZWZhdWx0fShlKTpudWxsLHRoaXMuX2VudW1WYWx1ZXM9ZSYmXCJlbnVtXCI9PT1lLnR5cGU/ZS52YWx1ZXM6bnVsbDt9ZXZhbHVhdGVXaXRob3V0RXJyb3JIYW5kbGluZyh0LGUscixuLGkscyxhLG8pe3JldHVybiB0aGlzLl9ldmFsdWF0b3IuZ2xvYmFscz10LHRoaXMuX2V2YWx1YXRvci5mZWF0dXJlPWUsdGhpcy5fZXZhbHVhdG9yLmZlYXR1cmVTdGF0ZT1yLHRoaXMuX2V2YWx1YXRvci5jYW5vbmljYWw9bnx8bnVsbCx0aGlzLl9ldmFsdWF0b3IuYXZhaWxhYmxlSW1hZ2VzPWl8fG51bGwsdGhpcy5fZXZhbHVhdG9yLmZvcm1hdHRlZFNlY3Rpb249cyx0aGlzLl9ldmFsdWF0b3IuZmVhdHVyZVRpbGVDb29yZD1hfHxudWxsLHRoaXMuX2V2YWx1YXRvci5mZWF0dXJlRGlzdGFuY2VEYXRhPW98fG51bGwsdGhpcy5leHByZXNzaW9uLmV2YWx1YXRlKHRoaXMuX2V2YWx1YXRvcil9ZXZhbHVhdGUodCxlLHIsbixpLHMsYSxvKXt0aGlzLl9ldmFsdWF0b3IuZ2xvYmFscz10LHRoaXMuX2V2YWx1YXRvci5mZWF0dXJlPWV8fG51bGwsdGhpcy5fZXZhbHVhdG9yLmZlYXR1cmVTdGF0ZT1yfHxudWxsLHRoaXMuX2V2YWx1YXRvci5jYW5vbmljYWw9bnx8bnVsbCx0aGlzLl9ldmFsdWF0b3IuYXZhaWxhYmxlSW1hZ2VzPWl8fG51bGwsdGhpcy5fZXZhbHVhdG9yLmZvcm1hdHRlZFNlY3Rpb249c3x8bnVsbCx0aGlzLl9ldmFsdWF0b3IuZmVhdHVyZVRpbGVDb29yZD1hfHxudWxsLHRoaXMuX2V2YWx1YXRvci5mZWF0dXJlRGlzdGFuY2VEYXRhPW98fG51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5leHByZXNzaW9uLmV2YWx1YXRlKHRoaXMuX2V2YWx1YXRvcik7aWYobnVsbD09dHx8XCJudW1iZXJcIj09dHlwZW9mIHQmJnQhPXQpcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZTtpZih0aGlzLl9lbnVtVmFsdWVzJiYhKHQgaW4gdGhpcy5fZW51bVZhbHVlcykpdGhyb3cgbmV3IE9lKGBFeHBlY3RlZCB2YWx1ZSB0byBiZSBvbmUgb2YgJHtPYmplY3Qua2V5cyh0aGlzLl9lbnVtVmFsdWVzKS5tYXAoKHQ9PkpTT04uc3RyaW5naWZ5KHQpKSkuam9pbihcIiwgXCIpfSwgYnV0IGZvdW5kICR7SlNPTi5zdHJpbmdpZnkodCl9IGluc3RlYWQuYCk7cmV0dXJuIHR9Y2F0Y2godCl7cmV0dXJuIHRoaXMuX3dhcm5pbmdIaXN0b3J5W3QubWVzc2FnZV18fCh0aGlzLl93YXJuaW5nSGlzdG9yeVt0Lm1lc3NhZ2VdPSEwLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlLndhcm4odC5tZXNzYWdlKSksdGhpcy5fZGVmYXVsdFZhbHVlfX19ZnVuY3Rpb24gSm4odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPjAmJlwic3RyaW5nXCI9PXR5cGVvZiB0WzBdJiZ0WzBdaW4gUG59ZnVuY3Rpb24gSG4odCxlKXtjb25zdCByPW5ldyBJcihQbixbXSxlP2Z1bmN0aW9uKHQpe2NvbnN0IGU9e2NvbG9yOnBlLHN0cmluZzpjZSxudW1iZXI6dWUsZW51bTpjZSxib29sZWFuOmhlLGZvcm1hdHRlZDptZSxyZXNvbHZlZEltYWdlOmdlfTtyZXR1cm4gXCJhcnJheVwiPT09dC50eXBlP3hlKGVbdC52YWx1ZV18fGZlLHQubGVuZ3RoKTplW3QudHlwZV19KGUpOnZvaWQgMCksbj1yLnBhcnNlKHQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsZSYmXCJzdHJpbmdcIj09PWUudHlwZT97dHlwZUFubm90YXRpb246XCJjb2VyY2VcIn06dm9pZCAwKTtyZXR1cm4gbj9EbihuZXcgWG4obixlKSk6Vm4oci5lcnJvcnMpfWNsYXNzIFlue2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5raW5kPXQsdGhpcy5fc3R5bGVFeHByZXNzaW9uPWUsdGhpcy5pc1N0YXRlRGVwZW5kZW50PVwiY29uc3RhbnRcIiE9PXQmJiF3cihlLmV4cHJlc3Npb24pO31ldmFsdWF0ZVdpdGhvdXRFcnJvckhhbmRsaW5nKHQsZSxyLG4saSxzKXtyZXR1cm4gdGhpcy5fc3R5bGVFeHByZXNzaW9uLmV2YWx1YXRlV2l0aG91dEVycm9ySGFuZGxpbmcodCxlLHIsbixpLHMpfWV2YWx1YXRlKHQsZSxyLG4saSxzKXtyZXR1cm4gdGhpcy5fc3R5bGVFeHByZXNzaW9uLmV2YWx1YXRlKHQsZSxyLG4saSxzKX19Y2xhc3MgV257Y29uc3RydWN0b3IodCxlLHIsbil7dGhpcy5raW5kPXQsdGhpcy56b29tU3RvcHM9cix0aGlzLl9zdHlsZUV4cHJlc3Npb249ZSx0aGlzLmlzU3RhdGVEZXBlbmRlbnQ9XCJjYW1lcmFcIiE9PXQmJiF3cihlLmV4cHJlc3Npb24pLHRoaXMuaW50ZXJwb2xhdGlvblR5cGU9bjt9ZXZhbHVhdGVXaXRob3V0RXJyb3JIYW5kbGluZyh0LGUscixuLGkscyl7cmV0dXJuIHRoaXMuX3N0eWxlRXhwcmVzc2lvbi5ldmFsdWF0ZVdpdGhvdXRFcnJvckhhbmRsaW5nKHQsZSxyLG4saSxzKX1ldmFsdWF0ZSh0LGUscixuLGkscyl7cmV0dXJuIHRoaXMuX3N0eWxlRXhwcmVzc2lvbi5ldmFsdWF0ZSh0LGUscixuLGkscyl9aW50ZXJwb2xhdGlvbkZhY3Rvcih0LGUscil7cmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvblR5cGU/UXIuaW50ZXJwb2xhdGlvbkZhY3Rvcih0aGlzLmludGVycG9sYXRpb25UeXBlLHQsZSxyKTowfX1mdW5jdGlvbiBRbih0LGUpe2lmKFwiZXJyb3JcIj09PSh0PUhuKHQsZSkpLnJlc3VsdClyZXR1cm4gdDtjb25zdCByPXQudmFsdWUuZXhwcmVzc2lvbixuPWJyKHIpO2lmKCFuJiYhTG4oZSkpcmV0dXJuIFZuKFtuZXcgc2UoXCJcIixcImRhdGEgZXhwcmVzc2lvbnMgbm90IHN1cHBvcnRlZFwiKV0pO2NvbnN0IGk9X3IocixbXCJ6b29tXCIsXCJwaXRjaFwiLFwiZGlzdGFuY2UtZnJvbS1jZW50ZXJcIl0pO2lmKCFpJiYhRm4oZSkpcmV0dXJuIFZuKFtuZXcgc2UoXCJcIixcInpvb20gZXhwcmVzc2lvbnMgbm90IHN1cHBvcnRlZFwiKV0pO2NvbnN0IHM9ZWkocik7cmV0dXJuIHN8fGk/cyBpbnN0YW5jZW9mIHNlP1ZuKFtzXSk6cyBpbnN0YW5jZW9mIFFyJiYhUm4oZSk/Vm4oW25ldyBzZShcIlwiLCdcImludGVycG9sYXRlXCIgZXhwcmVzc2lvbnMgY2Fubm90IGJlIHVzZWQgd2l0aCB0aGlzIHByb3BlcnR5JyldKTpEbihzP25ldyBXbihuP1wiY2FtZXJhXCI6XCJjb21wb3NpdGVcIix0LnZhbHVlLHMubGFiZWxzLHMgaW5zdGFuY2VvZiBRcj9zLmludGVycG9sYXRpb246dm9pZCAwKTpuZXcgWW4obj9cImNvbnN0YW50XCI6XCJzb3VyY2VcIix0LnZhbHVlKSk6Vm4oW25ldyBzZShcIlwiLCdcInpvb21cIiBleHByZXNzaW9uIG1heSBvbmx5IGJlIHVzZWQgYXMgaW5wdXQgdG8gYSB0b3AtbGV2ZWwgXCJzdGVwXCIgb3IgXCJpbnRlcnBvbGF0ZVwiIGV4cHJlc3Npb24uJyldKX1jbGFzcyB0aXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BhcmFtZXRlcnM9dCx0aGlzLl9zcGVjaWZpY2F0aW9uPWUsZWUodGhpcyxPbih0aGlzLl9wYXJhbWV0ZXJzLHRoaXMuX3NwZWNpZmljYXRpb24pKTt9c3RhdGljIGRlc2VyaWFsaXplKHQpe3JldHVybiBuZXcgdGkodC5fcGFyYW1ldGVycyx0Ll9zcGVjaWZpY2F0aW9uKX1zdGF0aWMgc2VyaWFsaXplKHQpe3JldHVybiB7X3BhcmFtZXRlcnM6dC5fcGFyYW1ldGVycyxfc3BlY2lmaWNhdGlvbjp0Ll9zcGVjaWZpY2F0aW9ufX19ZnVuY3Rpb24gZWkodCl7bGV0IGU9bnVsbDtpZih0IGluc3RhbmNlb2Ygbm4pZT1laSh0LnJlc3VsdCk7ZWxzZSBpZih0IGluc3RhbmNlb2YgZW4pe2Zvcihjb25zdCByIG9mIHQuYXJncylpZihlPWVpKHIpLGUpYnJlYWt9ZWxzZSAodCBpbnN0YW5jZW9mIEJyfHx0IGluc3RhbmNlb2YgUXIpJiZ0LmlucHV0IGluc3RhbmNlb2YgdHImJlwiem9vbVwiPT09dC5pbnB1dC5uYW1lJiYoZT10KTtyZXR1cm4gZSBpbnN0YW5jZW9mIHNlfHx0LmVhY2hDaGlsZCgodD0+e2NvbnN0IHI9ZWkodCk7ciBpbnN0YW5jZW9mIHNlP2U9cjohZSYmcj9lPW5ldyBzZShcIlwiLCdcInpvb21cIiBleHByZXNzaW9uIG1heSBvbmx5IGJlIHVzZWQgYXMgaW5wdXQgdG8gYSB0b3AtbGV2ZWwgXCJzdGVwXCIgb3IgXCJpbnRlcnBvbGF0ZVwiIGV4cHJlc3Npb24uJyk6ZSYmciYmZSE9PXImJihlPW5ldyBzZShcIlwiLCdPbmx5IG9uZSB6b29tLWJhc2VkIFwic3RlcFwiIG9yIFwiaW50ZXJwb2xhdGVcIiBzdWJleHByZXNzaW9uIG1heSBiZSB1c2VkIGluIGFuIGV4cHJlc3Npb24uJykpO30pKSxlfWNsYXNzIHJpe2NvbnN0cnVjdG9yKHQsZSxyLG4pe3RoaXMubWVzc2FnZT0odD9gJHt0fTogYDpcIlwiKStyLG4mJih0aGlzLmlkZW50aWZpZXI9biksbnVsbCE9ZSYmZS5fX2xpbmVfXyYmKHRoaXMubGluZT1lLl9fbGluZV9fKTt9fWZ1bmN0aW9uIG5pKHQpe2NvbnN0IGU9dC5rZXkscj10LnZhbHVlLG49dC52YWx1ZVNwZWN8fHt9LGk9dC5vYmplY3RFbGVtZW50VmFsaWRhdG9yc3x8e30scz10LnN0eWxlLGE9dC5zdHlsZVNwZWM7bGV0IG89W107Y29uc3QgbD1VbihyKTtpZihcIm9iamVjdFwiIT09bClyZXR1cm4gW25ldyByaShlLHIsYG9iamVjdCBleHBlY3RlZCwgJHtsfSBmb3VuZGApXTtmb3IoY29uc3QgdCBpbiByKXtjb25zdCBsPXQuc3BsaXQoXCIuXCIpWzBdO2xldCB1O2lbbF0/dT1pW2xdOm5bbF0/dT1GaTppW1wiKlwiXT91PWlbXCIqXCJdOm5bXCIqXCJdJiYodT1GaSksdT9vPW8uY29uY2F0KHUoe2tleTooZT9gJHtlfS5gOmUpK3QsdmFsdWU6clt0XSx2YWx1ZVNwZWM6bltsXXx8bltcIipcIl0sc3R5bGU6cyxzdHlsZVNwZWM6YSxvYmplY3Q6cixvYmplY3RLZXk6dH0scikpOm8ucHVzaChuZXcgcmkoZSxyW3RdLGB1bmtub3duIHByb3BlcnR5IFwiJHt0fVwiYCkpO31mb3IoY29uc3QgdCBpbiBuKWlbdF18fG5bdF0ucmVxdWlyZWQmJnZvaWQgMD09PW5bdF0uZGVmYXVsdCYmdm9pZCAwPT09clt0XSYmby5wdXNoKG5ldyByaShlLHIsYG1pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkgXCIke3R9XCJgKSk7cmV0dXJuIG99ZnVuY3Rpb24gaWkodCl7Y29uc3QgZT10LnZhbHVlLHI9dC52YWx1ZVNwZWMsbj10LnN0eWxlLGk9dC5zdHlsZVNwZWMscz10LmtleSxhPXQuYXJyYXlFbGVtZW50VmFsaWRhdG9yfHxGaTtpZihcImFycmF5XCIhPT1VbihlKSlyZXR1cm4gW25ldyByaShzLGUsYGFycmF5IGV4cGVjdGVkLCAke1VuKGUpfSBmb3VuZGApXTtpZihyLmxlbmd0aCYmZS5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm4gW25ldyByaShzLGUsYGFycmF5IGxlbmd0aCAke3IubGVuZ3RofSBleHBlY3RlZCwgbGVuZ3RoICR7ZS5sZW5ndGh9IGZvdW5kYCldO2lmKHJbXCJtaW4tbGVuZ3RoXCJdJiZlLmxlbmd0aDxyW1wibWluLWxlbmd0aFwiXSlyZXR1cm4gW25ldyByaShzLGUsYGFycmF5IGxlbmd0aCBhdCBsZWFzdCAke3JbXCJtaW4tbGVuZ3RoXCJdfSBleHBlY3RlZCwgbGVuZ3RoICR7ZS5sZW5ndGh9IGZvdW5kYCldO2xldCBvPXt0eXBlOnIudmFsdWUsdmFsdWVzOnIudmFsdWVzLG1pbmltdW06ci5taW5pbXVtLG1heGltdW06ci5tYXhpbXVtLGZ1bmN0aW9uOnZvaWQgMH07aS4kdmVyc2lvbjw3JiYoby5mdW5jdGlvbj1yLmZ1bmN0aW9uKSxcIm9iamVjdFwiPT09VW4oci52YWx1ZSkmJihvPXIudmFsdWUpO2xldCBsPVtdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWw9bC5jb25jYXQoYSh7YXJyYXk6ZSxhcnJheUluZGV4OnQsdmFsdWU6ZVt0XSx2YWx1ZVNwZWM6byxzdHlsZTpuLHN0eWxlU3BlYzppLGtleTpgJHtzfVske3R9XWB9KSk7cmV0dXJuIGx9ZnVuY3Rpb24gc2kodCl7Y29uc3QgZT10LmtleSxyPXQudmFsdWUsbj10LnZhbHVlU3BlYztsZXQgaT1VbihyKTtpZihcIm51bWJlclwiPT09aSYmciE9ciYmKGk9XCJOYU5cIiksXCJudW1iZXJcIiE9PWkpcmV0dXJuIFtuZXcgcmkoZSxyLGBudW1iZXIgZXhwZWN0ZWQsICR7aX0gZm91bmRgKV07aWYoXCJtaW5pbXVtXCJpbiBuKXtsZXQgaT1uLm1pbmltdW07aWYoXCJhcnJheVwiPT09VW4obi5taW5pbXVtKSYmKGk9bi5taW5pbXVtW3QuYXJyYXlJbmRleF0pLHI8aSlyZXR1cm4gW25ldyByaShlLHIsYCR7cn0gaXMgbGVzcyB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlICR7aX1gKV19aWYoXCJtYXhpbXVtXCJpbiBuKXtsZXQgaT1uLm1heGltdW07aWYoXCJhcnJheVwiPT09VW4obi5tYXhpbXVtKSYmKGk9bi5tYXhpbXVtW3QuYXJyYXlJbmRleF0pLHI+aSlyZXR1cm4gW25ldyByaShlLHIsYCR7cn0gaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHZhbHVlICR7aX1gKV19cmV0dXJuIFtdfWZ1bmN0aW9uIGFpKHQpe2NvbnN0IGU9dC52YWx1ZVNwZWMscj1yZSh0LnZhbHVlLnR5cGUpO2xldCBuLGkscyxhPXt9O2NvbnN0IG89XCJjYXRlZ29yaWNhbFwiIT09ciYmdm9pZCAwPT09dC52YWx1ZS5wcm9wZXJ0eSxsPSFvLHU9XCJhcnJheVwiPT09VW4odC52YWx1ZS5zdG9wcykmJlwiYXJyYXlcIj09PVVuKHQudmFsdWUuc3RvcHNbMF0pJiZcIm9iamVjdFwiPT09VW4odC52YWx1ZS5zdG9wc1swXVswXSksYz1uaSh7a2V5OnQua2V5LHZhbHVlOnQudmFsdWUsdmFsdWVTcGVjOnQuc3R5bGVTcGVjLmZ1bmN0aW9uLHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVjLG9iamVjdEVsZW1lbnRWYWxpZGF0b3JzOntzdG9wczpmdW5jdGlvbih0KXtpZihcImlkZW50aXR5XCI9PT1yKXJldHVybiBbbmV3IHJpKHQua2V5LHQudmFsdWUsJ2lkZW50aXR5IGZ1bmN0aW9uIG1heSBub3QgaGF2ZSBhIFwic3RvcHNcIiBwcm9wZXJ0eScpXTtsZXQgZT1bXTtjb25zdCBuPXQudmFsdWU7cmV0dXJuIGU9ZS5jb25jYXQoaWkoe2tleTp0LmtleSx2YWx1ZTpuLHZhbHVlU3BlYzp0LnZhbHVlU3BlYyxzdHlsZTp0LnN0eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlYyxhcnJheUVsZW1lbnRWYWxpZGF0b3I6aH0pKSxcImFycmF5XCI9PT1VbihuKSYmMD09PW4ubGVuZ3RoJiZlLnB1c2gobmV3IHJpKHQua2V5LG4sXCJhcnJheSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHN0b3BcIikpLGV9LGRlZmF1bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIEZpKHtrZXk6dC5rZXksdmFsdWU6dC52YWx1ZSx2YWx1ZVNwZWM6ZSxzdHlsZTp0LnN0eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlY30pfX19KTtyZXR1cm4gXCJpZGVudGl0eVwiPT09ciYmbyYmYy5wdXNoKG5ldyByaSh0LmtleSx0LnZhbHVlLCdtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IFwicHJvcGVydHlcIicpKSxcImlkZW50aXR5XCI9PT1yfHx0LnZhbHVlLnN0b3BzfHxjLnB1c2gobmV3IHJpKHQua2V5LHQudmFsdWUsJ21pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkgXCJzdG9wc1wiJykpLFwiZXhwb25lbnRpYWxcIj09PXImJnQudmFsdWVTcGVjLmV4cHJlc3Npb24mJiFSbih0LnZhbHVlU3BlYykmJmMucHVzaChuZXcgcmkodC5rZXksdC52YWx1ZSxcImV4cG9uZW50aWFsIGZ1bmN0aW9ucyBub3Qgc3VwcG9ydGVkXCIpKSx0LnN0eWxlU3BlYy4kdmVyc2lvbj49OCYmKGwmJiFMbih0LnZhbHVlU3BlYyk/Yy5wdXNoKG5ldyByaSh0LmtleSx0LnZhbHVlLFwicHJvcGVydHkgZnVuY3Rpb25zIG5vdCBzdXBwb3J0ZWRcIikpOm8mJiFGbih0LnZhbHVlU3BlYykmJmMucHVzaChuZXcgcmkodC5rZXksdC52YWx1ZSxcInpvb20gZnVuY3Rpb25zIG5vdCBzdXBwb3J0ZWRcIikpKSxcImNhdGVnb3JpY2FsXCIhPT1yJiYhdXx8dm9pZCAwIT09dC52YWx1ZS5wcm9wZXJ0eXx8Yy5wdXNoKG5ldyByaSh0LmtleSx0LnZhbHVlLCdcInByb3BlcnR5XCIgcHJvcGVydHkgaXMgcmVxdWlyZWQnKSksYztmdW5jdGlvbiBoKHQpe2xldCByPVtdO2NvbnN0IG49dC52YWx1ZSxvPXQua2V5O2lmKFwiYXJyYXlcIiE9PVVuKG4pKXJldHVybiBbbmV3IHJpKG8sbixgYXJyYXkgZXhwZWN0ZWQsICR7VW4obil9IGZvdW5kYCldO2lmKDIhPT1uLmxlbmd0aClyZXR1cm4gW25ldyByaShvLG4sYGFycmF5IGxlbmd0aCAyIGV4cGVjdGVkLCBsZW5ndGggJHtuLmxlbmd0aH0gZm91bmRgKV07aWYodSl7aWYoXCJvYmplY3RcIiE9PVVuKG5bMF0pKXJldHVybiBbbmV3IHJpKG8sbixgb2JqZWN0IGV4cGVjdGVkLCAke1VuKG5bMF0pfSBmb3VuZGApXTtpZih2b2lkIDA9PT1uWzBdLnpvb20pcmV0dXJuIFtuZXcgcmkobyxuLFwib2JqZWN0IHN0b3Aga2V5IG11c3QgaGF2ZSB6b29tXCIpXTtpZih2b2lkIDA9PT1uWzBdLnZhbHVlKXJldHVybiBbbmV3IHJpKG8sbixcIm9iamVjdCBzdG9wIGtleSBtdXN0IGhhdmUgdmFsdWVcIildO2NvbnN0IGU9cmUoblswXS56b29tKTtpZihcIm51bWJlclwiIT10eXBlb2YgZSlyZXR1cm4gW25ldyByaShvLG5bMF0uem9vbSxcInN0b3Agem9vbSB2YWx1ZXMgbXVzdCBiZSBudW1iZXJzXCIpXTtpZihzJiZzPmUpcmV0dXJuIFtuZXcgcmkobyxuWzBdLnpvb20sXCJzdG9wIHpvb20gdmFsdWVzIG11c3QgYXBwZWFyIGluIGFzY2VuZGluZyBvcmRlclwiKV07ZSE9PXMmJihzPWUsaT12b2lkIDAsYT17fSkscj1yLmNvbmNhdChuaSh7a2V5OmAke299WzBdYCx2YWx1ZTpuWzBdLHZhbHVlU3BlYzp7em9vbTp7fX0sc3R5bGU6dC5zdHlsZSxzdHlsZVNwZWM6dC5zdHlsZVNwZWMsb2JqZWN0RWxlbWVudFZhbGlkYXRvcnM6e3pvb206c2ksdmFsdWU6cH19KSk7fWVsc2Ugcj1yLmNvbmNhdChwKHtrZXk6YCR7b31bMF1gLHZhbHVlOm5bMF0sdmFsdWVTcGVjOnt9LHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVjfSxuKSk7cmV0dXJuIEpuKG5lKG5bMV0pKT9yLmNvbmNhdChbbmV3IHJpKGAke299WzFdYCxuWzFdLFwiZXhwcmVzc2lvbnMgYXJlIG5vdCBhbGxvd2VkIGluIGZ1bmN0aW9uIHN0b3BzLlwiKV0pOnIuY29uY2F0KEZpKHtrZXk6YCR7b31bMV1gLHZhbHVlOm5bMV0sdmFsdWVTcGVjOmUsc3R5bGU6dC5zdHlsZSxzdHlsZVNwZWM6dC5zdHlsZVNwZWN9KSl9ZnVuY3Rpb24gcCh0LHMpe2NvbnN0IG89VW4odC52YWx1ZSksbD1yZSh0LnZhbHVlKSx1PW51bGwhPT10LnZhbHVlP3QudmFsdWU6cztpZihuKXtpZihvIT09bilyZXR1cm4gW25ldyByaSh0LmtleSx1LGAke299IHN0b3AgZG9tYWluIHR5cGUgbXVzdCBtYXRjaCBwcmV2aW91cyBzdG9wIGRvbWFpbiB0eXBlICR7bn1gKV19ZWxzZSBuPW87aWYoXCJudW1iZXJcIiE9PW8mJlwic3RyaW5nXCIhPT1vJiZcImJvb2xlYW5cIiE9PW8mJlwibnVtYmVyXCIhPXR5cGVvZiBsJiZcInN0cmluZ1wiIT10eXBlb2YgbCYmXCJib29sZWFuXCIhPXR5cGVvZiBsKXJldHVybiBbbmV3IHJpKHQua2V5LHUsXCJzdG9wIGRvbWFpbiB2YWx1ZSBtdXN0IGJlIGEgbnVtYmVyLCBzdHJpbmcsIG9yIGJvb2xlYW5cIildO2lmKFwibnVtYmVyXCIhPT1vJiZcImNhdGVnb3JpY2FsXCIhPT1yKXtsZXQgbj1gbnVtYmVyIGV4cGVjdGVkLCAke299IGZvdW5kYDtyZXR1cm4gTG4oZSkmJnZvaWQgMD09PXImJihuKz0nXFxuSWYgeW91IGludGVuZGVkIHRvIHVzZSBhIGNhdGVnb3JpY2FsIGZ1bmN0aW9uLCBzcGVjaWZ5IGBcInR5cGVcIjogXCJjYXRlZ29yaWNhbFwiYC4nKSxbbmV3IHJpKHQua2V5LHUsbildfXJldHVybiBcImNhdGVnb3JpY2FsXCIhPT1yfHxcIm51bWJlclwiIT09b3x8XCJudW1iZXJcIj09dHlwZW9mIGwmJmlzRmluaXRlKGwpJiZNYXRoLmZsb29yKGwpPT09bD9cImNhdGVnb3JpY2FsXCIhPT1yJiZcIm51bWJlclwiPT09byYmXCJudW1iZXJcIj09dHlwZW9mIGwmJlwibnVtYmVyXCI9PXR5cGVvZiBpJiZ2b2lkIDAhPT1pJiZsPGk/W25ldyByaSh0LmtleSx1LFwic3RvcCBkb21haW4gdmFsdWVzIG11c3QgYXBwZWFyIGluIGFzY2VuZGluZyBvcmRlclwiKV06KGk9bCxcImNhdGVnb3JpY2FsXCI9PT1yJiZsIGluIGE/W25ldyByaSh0LmtleSx1LFwic3RvcCBkb21haW4gdmFsdWVzIG11c3QgYmUgdW5pcXVlXCIpXTooYVtsXT0hMCxbXSkpOltuZXcgcmkodC5rZXksdSxgaW50ZWdlciBleHBlY3RlZCwgZm91bmQgJHtTdHJpbmcobCl9YCldfX1mdW5jdGlvbiBvaSh0KXtjb25zdCBlPShcInByb3BlcnR5XCI9PT10LmV4cHJlc3Npb25Db250ZXh0P1FuOkhuKShuZSh0LnZhbHVlKSx0LnZhbHVlU3BlYyk7aWYoXCJlcnJvclwiPT09ZS5yZXN1bHQpcmV0dXJuIGUudmFsdWUubWFwKChlPT5uZXcgcmkoYCR7dC5rZXl9JHtlLmtleX1gLHQudmFsdWUsZS5tZXNzYWdlKSkpO2NvbnN0IHI9ZS52YWx1ZS5leHByZXNzaW9ufHxlLnZhbHVlLl9zdHlsZUV4cHJlc3Npb24uZXhwcmVzc2lvbjtpZihcInByb3BlcnR5XCI9PT10LmV4cHJlc3Npb25Db250ZXh0JiZcInRleHQtZm9udFwiPT09dC5wcm9wZXJ0eUtleSYmIXIub3V0cHV0RGVmaW5lZCgpKXJldHVybiBbbmV3IHJpKHQua2V5LHQudmFsdWUsYEludmFsaWQgZGF0YSBleHByZXNzaW9uIGZvciBcIiR7dC5wcm9wZXJ0eUtleX1cIi4gT3V0cHV0IHZhbHVlcyBtdXN0IGJlIGNvbnRhaW5lZCBhcyBsaXRlcmFscyB3aXRoaW4gdGhlIGV4cHJlc3Npb24uYCldO2lmKFwicHJvcGVydHlcIj09PXQuZXhwcmVzc2lvbkNvbnRleHQmJlwibGF5b3V0XCI9PT10LnByb3BlcnR5VHlwZSYmIXdyKHIpKXJldHVybiBbbmV3IHJpKHQua2V5LHQudmFsdWUsJ1wiZmVhdHVyZS1zdGF0ZVwiIGRhdGEgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCBsYXlvdXQgcHJvcGVydGllcy4nKV07aWYoXCJmaWx0ZXJcIj09PXQuZXhwcmVzc2lvbkNvbnRleHQpcmV0dXJuIGxpKHIsdCk7aWYodC5leHByZXNzaW9uQ29udGV4dCYmMD09PXQuZXhwcmVzc2lvbkNvbnRleHQuaW5kZXhPZihcImNsdXN0ZXJcIikpe2lmKCFfcihyLFtcInpvb21cIixcImZlYXR1cmUtc3RhdGVcIl0pKXJldHVybiBbbmV3IHJpKHQua2V5LHQudmFsdWUsJ1wiem9vbVwiIGFuZCBcImZlYXR1cmUtc3RhdGVcIiBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZCB3aXRoIGNsdXN0ZXIgcHJvcGVydGllcy4nKV07aWYoXCJjbHVzdGVyLWluaXRpYWxcIj09PXQuZXhwcmVzc2lvbkNvbnRleHQmJiFicihyKSlyZXR1cm4gW25ldyByaSh0LmtleSx0LnZhbHVlLFwiRmVhdHVyZSBkYXRhIGV4cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggaW5pdGlhbCBleHByZXNzaW9uIHBhcnQgb2YgY2x1c3RlciBwcm9wZXJ0aWVzLlwiKV19cmV0dXJuIFtdfWZ1bmN0aW9uIGxpKHQsZSl7Y29uc3Qgcj1uZXcgU2V0KFtcInpvb21cIixcImZlYXR1cmUtc3RhdGVcIixcInBpdGNoXCIsXCJkaXN0YW5jZS1mcm9tLWNlbnRlclwiXSk7aWYoZS52YWx1ZVNwZWMmJmUudmFsdWVTcGVjLmV4cHJlc3Npb24pZm9yKGNvbnN0IHQgb2YgZS52YWx1ZVNwZWMuZXhwcmVzc2lvbi5wYXJhbWV0ZXJzKXIuZGVsZXRlKHQpO2lmKDA9PT1yLnNpemUpcmV0dXJuIFtdO2NvbnN0IG49W107cmV0dXJuIHQgaW5zdGFuY2VvZiB0ciYmci5oYXModC5uYW1lKT9bbmV3IHJpKGUua2V5LGUudmFsdWUsYFtcIiR7dC5uYW1lfVwiXSBleHByZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYSBmaWx0ZXIgZm9yIGEgJHtlLm9iamVjdC50eXBlfSBsYXllciB3aXRoIGlkOiAke2Uub2JqZWN0LmlkfWApXToodC5lYWNoQ2hpbGQoKHQ9PntuLnB1c2goLi4ubGkodCxlKSk7fSkpLG4pfWZ1bmN0aW9uIHVpKHQpe2NvbnN0IGU9dC5rZXkscj10LnZhbHVlLG49dC52YWx1ZVNwZWMsaT1bXTtyZXR1cm4gQXJyYXkuaXNBcnJheShuLnZhbHVlcyk/LTE9PT1uLnZhbHVlcy5pbmRleE9mKHJlKHIpKSYmaS5wdXNoKG5ldyByaShlLHIsYGV4cGVjdGVkIG9uZSBvZiBbJHtuLnZhbHVlcy5qb2luKFwiLCBcIil9XSwgJHtKU09OLnN0cmluZ2lmeShyKX0gZm91bmRgKSk6LTE9PT1PYmplY3Qua2V5cyhuLnZhbHVlcykuaW5kZXhPZihyZShyKSkmJmkucHVzaChuZXcgcmkoZSxyLGBleHBlY3RlZCBvbmUgb2YgWyR7T2JqZWN0LmtleXMobi52YWx1ZXMpLmpvaW4oXCIsIFwiKX1dLCAke0pTT04uc3RyaW5naWZ5KHIpfSBmb3VuZGApKSxpfWZ1bmN0aW9uIGNpKHQpe2lmKCEwPT09dHx8ITE9PT10KXJldHVybiAhMDtpZighQXJyYXkuaXNBcnJheSh0KXx8MD09PXQubGVuZ3RoKXJldHVybiAhMTtzd2l0Y2godFswXSl7Y2FzZVwiaGFzXCI6cmV0dXJuIHQubGVuZ3RoPj0yJiZcIiRpZFwiIT09dFsxXSYmXCIkdHlwZVwiIT09dFsxXTtjYXNlXCJpblwiOnJldHVybiB0Lmxlbmd0aD49MyYmKFwic3RyaW5nXCIhPXR5cGVvZiB0WzFdfHxBcnJheS5pc0FycmF5KHRbMl0pKTtjYXNlXCIhaW5cIjpjYXNlXCIhaGFzXCI6Y2FzZVwibm9uZVwiOnJldHVybiAhMTtjYXNlXCI9PVwiOmNhc2VcIiE9XCI6Y2FzZVwiPlwiOmNhc2VcIj49XCI6Y2FzZVwiPFwiOmNhc2VcIjw9XCI6cmV0dXJuIDMhPT10Lmxlbmd0aHx8QXJyYXkuaXNBcnJheSh0WzFdKXx8QXJyYXkuaXNBcnJheSh0WzJdKTtjYXNlXCJhbnlcIjpjYXNlXCJhbGxcIjpmb3IoY29uc3QgZSBvZiB0LnNsaWNlKDEpKWlmKCFjaShlKSYmXCJib29sZWFuXCIhPXR5cGVvZiBlKXJldHVybiAhMTtyZXR1cm4gITA7ZGVmYXVsdDpyZXR1cm4gITB9fWZ1bmN0aW9uIGhpKHQsZT1cImZpbGxcIil7aWYobnVsbD09dClyZXR1cm4ge2ZpbHRlcjooKT0+ITAsbmVlZEdlb21ldHJ5OiExLG5lZWRGZWF0dXJlOiExfTtjaSh0KXx8KHQ9eGkodCkpO2NvbnN0IHI9dDtsZXQgbj0hMDt0cnl7bj1mdW5jdGlvbih0KXtpZighZmkodCkpcmV0dXJuIHQ7bGV0IGU9bmUodCk7cmV0dXJuIGRpKGUpLGU9cGkoZSksZX0ocik7fWNhdGNoKHQpe2NvbnNvbGUud2FybihgRmFpbGVkIHRvIGV4dHJhY3Qgc3RhdGljIGZpbHRlci4gRmlsdGVyIHdpbGwgY29udGludWUgd29ya2luZywgYnV0IGF0IGhpZ2hlciBtZW1vcnkgdXNhZ2UgYW5kIHNsb3dlciBmcmFtZXJhdGUuXFxuVGhpcyBpcyBtb3N0IGxpa2VseSBhIGJ1ZywgcGxlYXNlIHJlcG9ydCB0aGlzIHZpYSBodHRwczovL2dpdGh1Yi5jb20vbWFwYm94L21hcGJveC1nbC1qcy9pc3N1ZXMvbmV3P2Fzc2lnbmVlcz0mbGFiZWxzPSZ0ZW1wbGF0ZT1CdWdfcmVwb3J0Lm1kXFxuYW5kIHBhc3RlIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UgaW4gdGhlIHJlcG9ydC5cXG5UaGFuayB5b3UhXFxuRmlsdGVyIEV4cHJlc3Npb246XFxuJHtKU09OLnN0cmluZ2lmeShyLG51bGwsMil9XFxuICAgICAgICBgKTt9Y29uc3QgaT10ZVtgZmlsdGVyXyR7ZX1gXSxzPUhuKG4saSk7bGV0IGE9bnVsbDtpZihcImVycm9yXCI9PT1zLnJlc3VsdCl0aHJvdyBuZXcgRXJyb3Iocy52YWx1ZS5tYXAoKHQ9PmAke3Qua2V5fTogJHt0Lm1lc3NhZ2V9YCkpLmpvaW4oXCIsIFwiKSk7YT0odCxlLHIpPT5zLnZhbHVlLmV2YWx1YXRlKHQsZSx7fSxyKTtsZXQgbz1udWxsLGw9bnVsbDtpZihuIT09cil7Y29uc3QgdD1IbihyLGkpO2lmKFwiZXJyb3JcIj09PXQucmVzdWx0KXRocm93IG5ldyBFcnJvcih0LnZhbHVlLm1hcCgodD0+YCR7dC5rZXl9OiAke3QubWVzc2FnZX1gKSkuam9pbihcIiwgXCIpKTtvPShlLHIsbixpLHMpPT50LnZhbHVlLmV2YWx1YXRlKGUscix7fSxuLHZvaWQgMCx2b2lkIDAsaSxzKSxsPSFicih0LnZhbHVlLmV4cHJlc3Npb24pO31yZXR1cm4ge2ZpbHRlcjphLGR5bmFtaWNGaWx0ZXI6b3x8dm9pZCAwLG5lZWRHZW9tZXRyeTpnaShuKSxuZWVkRmVhdHVyZTohIWx9fWZ1bmN0aW9uIHBpKHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiB0O2NvbnN0IGU9ZnVuY3Rpb24odCl7aWYoeWkuaGFzKHRbMF0pKWZvcihsZXQgZT0xO2U8dC5sZW5ndGg7ZSsrKWlmKGZpKHRbZV0pKXJldHVybiAhMDtyZXR1cm4gdH0odCk7cmV0dXJuICEwPT09ZT9lOmUubWFwKCh0PT5waSh0KSkpfWZ1bmN0aW9uIGRpKHQpe2xldCBlPSExO2NvbnN0IHI9W107aWYoXCJjYXNlXCI9PT10WzBdKXtmb3IobGV0IG49MTtuPHQubGVuZ3RoLTE7bis9MillPWV8fGZpKHRbbl0pLHIucHVzaCh0W24rMV0pO3IucHVzaCh0W3QubGVuZ3RoLTFdKTt9ZWxzZSBpZihcIm1hdGNoXCI9PT10WzBdKXtlPWV8fGZpKHRbMV0pO2ZvcihsZXQgZT0yO2U8dC5sZW5ndGgtMTtlKz0yKXIucHVzaCh0W2UrMV0pO3IucHVzaCh0W3QubGVuZ3RoLTFdKTt9ZWxzZSBpZihcInN0ZXBcIj09PXRbMF0pe2U9ZXx8ZmkodFsxXSk7Zm9yKGxldCBlPTE7ZTx0Lmxlbmd0aC0xO2UrPTIpci5wdXNoKHRbZSsxXSk7fWUmJih0Lmxlbmd0aD0wLHQucHVzaChcImFueVwiLC4uLnIpKTtmb3IobGV0IGU9MTtlPHQubGVuZ3RoO2UrKylkaSh0W2VdKTt9ZnVuY3Rpb24gZmkodCl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuICExO2lmKFwicGl0Y2hcIj09PShlPXRbMF0pfHxcImRpc3RhbmNlLWZyb20tY2VudGVyXCI9PT1lKXJldHVybiAhMDt2YXIgZTtmb3IobGV0IGU9MTtlPHQubGVuZ3RoO2UrKylpZihmaSh0W2VdKSlyZXR1cm4gITA7cmV0dXJuICExfWNvbnN0IHlpPW5ldyBTZXQoW1wiaW5cIixcIj09XCIsXCIhPVwiLFwiPlwiLFwiPj1cIixcIjxcIixcIjw9XCIsXCJ0by1ib29sZWFuXCJdKTtmdW5jdGlvbiBtaSh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6MH1mdW5jdGlvbiBnaSh0KXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gITE7aWYoXCJ3aXRoaW5cIj09PXRbMF0pcmV0dXJuICEwO2ZvcihsZXQgZT0xO2U8dC5sZW5ndGg7ZSsrKWlmKGdpKHRbZV0pKXJldHVybiAhMDtyZXR1cm4gITF9ZnVuY3Rpb24geGkodCl7aWYoIXQpcmV0dXJuICEwO2NvbnN0IGU9dFswXTtyZXR1cm4gdC5sZW5ndGg8PTE/XCJhbnlcIiE9PWU6XCI9PVwiPT09ZT92aSh0WzFdLHRbMl0sXCI9PVwiKTpcIiE9XCI9PT1lP19pKHZpKHRbMV0sdFsyXSxcIj09XCIpKTpcIjxcIj09PWV8fFwiPlwiPT09ZXx8XCI8PVwiPT09ZXx8XCI+PVwiPT09ZT92aSh0WzFdLHRbMl0sZSk6XCJhbnlcIj09PWU/KHI9dC5zbGljZSgxKSxbXCJhbnlcIl0uY29uY2F0KHIubWFwKHhpKSkpOlwiYWxsXCI9PT1lP1tcImFsbFwiXS5jb25jYXQodC5zbGljZSgxKS5tYXAoeGkpKTpcIm5vbmVcIj09PWU/W1wiYWxsXCJdLmNvbmNhdCh0LnNsaWNlKDEpLm1hcCh4aSkubWFwKF9pKSk6XCJpblwiPT09ZT9iaSh0WzFdLHQuc2xpY2UoMikpOlwiIWluXCI9PT1lP19pKGJpKHRbMV0sdC5zbGljZSgyKSkpOlwiaGFzXCI9PT1lP3dpKHRbMV0pOlwiIWhhc1wiPT09ZT9faSh3aSh0WzFdKSk6XCJ3aXRoaW5cIiE9PWV8fHQ7dmFyIHI7fWZ1bmN0aW9uIHZpKHQsZSxyKXtzd2l0Y2godCl7Y2FzZVwiJHR5cGVcIjpyZXR1cm4gW2BmaWx0ZXItdHlwZS0ke3J9YCxlXTtjYXNlXCIkaWRcIjpyZXR1cm4gW2BmaWx0ZXItaWQtJHtyfWAsZV07ZGVmYXVsdDpyZXR1cm4gW2BmaWx0ZXItJHtyfWAsdCxlXX19ZnVuY3Rpb24gYmkodCxlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuICExO3N3aXRjaCh0KXtjYXNlXCIkdHlwZVwiOnJldHVybiBbXCJmaWx0ZXItdHlwZS1pblwiLFtcImxpdGVyYWxcIixlXV07Y2FzZVwiJGlkXCI6cmV0dXJuIFtcImZpbHRlci1pZC1pblwiLFtcImxpdGVyYWxcIixlXV07ZGVmYXVsdDpyZXR1cm4gZS5sZW5ndGg+MjAwJiYhZS5zb21lKCh0PT50eXBlb2YgdCE9dHlwZW9mIGVbMF0pKT9bXCJmaWx0ZXItaW4tbGFyZ2VcIix0LFtcImxpdGVyYWxcIixlLnNvcnQobWkpXV06W1wiZmlsdGVyLWluLXNtYWxsXCIsdCxbXCJsaXRlcmFsXCIsZV1dfX1mdW5jdGlvbiB3aSh0KXtzd2l0Y2godCl7Y2FzZVwiJHR5cGVcIjpyZXR1cm4gITA7Y2FzZVwiJGlkXCI6cmV0dXJuIFtcImZpbHRlci1oYXMtaWRcIl07ZGVmYXVsdDpyZXR1cm4gW1wiZmlsdGVyLWhhc1wiLHRdfX1mdW5jdGlvbiBfaSh0KXtyZXR1cm4gW1wiIVwiLHRdfWZ1bmN0aW9uIEFpKHQpe3JldHVybiBjaShuZSh0LnZhbHVlKSk/b2koZWUoe30sdCx7ZXhwcmVzc2lvbkNvbnRleHQ6XCJmaWx0ZXJcIix2YWx1ZVNwZWM6dC5zdHlsZVNwZWNbYGZpbHRlcl8ke3QubGF5ZXJUeXBlfHxcImZpbGxcIn1gXX0pKTpTaSh0KX1mdW5jdGlvbiBTaSh0KXtjb25zdCBlPXQudmFsdWUscj10LmtleTtpZihcImFycmF5XCIhPT1VbihlKSlyZXR1cm4gW25ldyByaShyLGUsYGFycmF5IGV4cGVjdGVkLCAke1VuKGUpfSBmb3VuZGApXTtjb25zdCBuPXQuc3R5bGVTcGVjO2xldCBpLHM9W107aWYoZS5sZW5ndGg8MSlyZXR1cm4gW25ldyByaShyLGUsXCJmaWx0ZXIgYXJyYXkgbXVzdCBoYXZlIGF0IGxlYXN0IDEgZWxlbWVudFwiKV07c3dpdGNoKHM9cy5jb25jYXQodWkoe2tleTpgJHtyfVswXWAsdmFsdWU6ZVswXSx2YWx1ZVNwZWM6bi5maWx0ZXJfb3BlcmF0b3Isc3R5bGU6dC5zdHlsZSxzdHlsZVNwZWM6dC5zdHlsZVNwZWN9KSkscmUoZVswXSkpe2Nhc2VcIjxcIjpjYXNlXCI8PVwiOmNhc2VcIj5cIjpjYXNlXCI+PVwiOmUubGVuZ3RoPj0yJiZcIiR0eXBlXCI9PT1yZShlWzFdKSYmcy5wdXNoKG5ldyByaShyLGUsYFwiJHR5cGVcIiBjYW5ub3QgYmUgdXNlIHdpdGggb3BlcmF0b3IgXCIke2VbMF19XCJgKSk7Y2FzZVwiPT1cIjpjYXNlXCIhPVwiOjMhPT1lLmxlbmd0aCYmcy5wdXNoKG5ldyByaShyLGUsYGZpbHRlciBhcnJheSBmb3Igb3BlcmF0b3IgXCIke2VbMF19XCIgbXVzdCBoYXZlIDMgZWxlbWVudHNgKSk7Y2FzZVwiaW5cIjpjYXNlXCIhaW5cIjplLmxlbmd0aD49MiYmKGk9VW4oZVsxXSksXCJzdHJpbmdcIiE9PWkmJnMucHVzaChuZXcgcmkoYCR7cn1bMV1gLGVbMV0sYHN0cmluZyBleHBlY3RlZCwgJHtpfSBmb3VuZGApKSk7Zm9yKGxldCBhPTI7YTxlLmxlbmd0aDthKyspaT1VbihlW2FdKSxcIiR0eXBlXCI9PT1yZShlWzFdKT9zPXMuY29uY2F0KHVpKHtrZXk6YCR7cn1bJHthfV1gLHZhbHVlOmVbYV0sdmFsdWVTcGVjOm4uZ2VvbWV0cnlfdHlwZSxzdHlsZTp0LnN0eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlY30pKTpcInN0cmluZ1wiIT09aSYmXCJudW1iZXJcIiE9PWkmJlwiYm9vbGVhblwiIT09aSYmcy5wdXNoKG5ldyByaShgJHtyfVske2F9XWAsZVthXSxgc3RyaW5nLCBudW1iZXIsIG9yIGJvb2xlYW4gZXhwZWN0ZWQsICR7aX0gZm91bmRgKSk7YnJlYWs7Y2FzZVwiYW55XCI6Y2FzZVwiYWxsXCI6Y2FzZVwibm9uZVwiOmZvcihsZXQgbj0xO248ZS5sZW5ndGg7bisrKXM9cy5jb25jYXQoU2koe2tleTpgJHtyfVske259XWAsdmFsdWU6ZVtuXSxzdHlsZTp0LnN0eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlY30pKTticmVhaztjYXNlXCJoYXNcIjpjYXNlXCIhaGFzXCI6aT1VbihlWzFdKSwyIT09ZS5sZW5ndGg/cy5wdXNoKG5ldyByaShyLGUsYGZpbHRlciBhcnJheSBmb3IgXCIke2VbMF19XCIgb3BlcmF0b3IgbXVzdCBoYXZlIDIgZWxlbWVudHNgKSk6XCJzdHJpbmdcIiE9PWkmJnMucHVzaChuZXcgcmkoYCR7cn1bMV1gLGVbMV0sYHN0cmluZyBleHBlY3RlZCwgJHtpfSBmb3VuZGApKTticmVhaztjYXNlXCJ3aXRoaW5cIjppPVVuKGVbMV0pLDIhPT1lLmxlbmd0aD9zLnB1c2gobmV3IHJpKHIsZSxgZmlsdGVyIGFycmF5IGZvciBcIiR7ZVswXX1cIiBvcGVyYXRvciBtdXN0IGhhdmUgMiBlbGVtZW50c2ApKTpcIm9iamVjdFwiIT09aSYmcy5wdXNoKG5ldyByaShgJHtyfVsxXWAsZVsxXSxgb2JqZWN0IGV4cGVjdGVkLCAke2l9IGZvdW5kYCkpO31yZXR1cm4gc31mdW5jdGlvbiBraSh0LGUpe2NvbnN0IHI9dC5rZXksbj10LnN0eWxlLGk9dC5zdHlsZVNwZWMscz10LnZhbHVlLGE9dC5vYmplY3RLZXksbz1pW2Ake2V9XyR7dC5sYXllclR5cGV9YF07aWYoIW8pcmV0dXJuIFtdO2NvbnN0IGw9YS5tYXRjaCgvXiguKiktdHJhbnNpdGlvbiQvKTtpZihcInBhaW50XCI9PT1lJiZsJiZvW2xbMV1dJiZvW2xbMV1dLnRyYW5zaXRpb24pcmV0dXJuIEZpKHtrZXk6cix2YWx1ZTpzLHZhbHVlU3BlYzppLnRyYW5zaXRpb24sc3R5bGU6bixzdHlsZVNwZWM6aX0pO2NvbnN0IHU9dC52YWx1ZVNwZWN8fG9bYV07aWYoIXUpcmV0dXJuIFtuZXcgcmkocixzLGB1bmtub3duIHByb3BlcnR5IFwiJHthfVwiYCldO2xldCBjO2lmKFwic3RyaW5nXCI9PT1VbihzKSYmTG4odSkmJiF1LnRva2VucyYmKGM9L157KFtefV0rKX0kLy5leGVjKHMpKSl7Y29uc3QgdD1gXFxgeyBcInR5cGVcIjogXCJpZGVudGl0eVwiLCBcInByb3BlcnR5XCI6ICR7Yz9KU09OLnN0cmluZ2lmeShjWzFdKTonXCJfXCInfSB9XFxgYDtyZXR1cm4gW25ldyByaShyLHMsYFwiJHthfVwiIGRvZXMgbm90IHN1cHBvcnQgaW50ZXJwb2xhdGlvbiBzeW50YXhcXG5Vc2UgYW4gaWRlbnRpdHkgcHJvcGVydHkgZnVuY3Rpb24gaW5zdGVhZDogJHt0fS5gKV19Y29uc3QgaD1bXTtyZXR1cm4gXCJzeW1ib2xcIj09PXQubGF5ZXJUeXBlJiYoXCJ0ZXh0LWZpZWxkXCI9PT1hJiZuJiYhbi5nbHlwaHMmJmgucHVzaChuZXcgcmkocixzLCd1c2Ugb2YgXCJ0ZXh0LWZpZWxkXCIgcmVxdWlyZXMgYSBzdHlsZSBcImdseXBoc1wiIHByb3BlcnR5JykpLFwidGV4dC1mb250XCI9PT1hJiYkbihuZShzKSkmJlwiaWRlbnRpdHlcIj09PXJlKHMudHlwZSkmJmgucHVzaChuZXcgcmkocixzLCdcInRleHQtZm9udFwiIGRvZXMgbm90IHN1cHBvcnQgaWRlbnRpdHkgZnVuY3Rpb25zJykpKSxoLmNvbmNhdChGaSh7a2V5OnQua2V5LHZhbHVlOnMsdmFsdWVTcGVjOnUsc3R5bGU6bixzdHlsZVNwZWM6aSxleHByZXNzaW9uQ29udGV4dDpcInByb3BlcnR5XCIscHJvcGVydHlUeXBlOmUscHJvcGVydHlLZXk6YX0pKX1mdW5jdGlvbiBJaSh0KXtyZXR1cm4ga2kodCxcInBhaW50XCIpfWZ1bmN0aW9uIE1pKHQpe3JldHVybiBraSh0LFwibGF5b3V0XCIpfWZ1bmN0aW9uIFRpKHQpe2xldCBlPVtdO2NvbnN0IHI9dC52YWx1ZSxuPXQua2V5LGk9dC5zdHlsZSxzPXQuc3R5bGVTcGVjO3IudHlwZXx8ci5yZWZ8fGUucHVzaChuZXcgcmkobixyLCdlaXRoZXIgXCJ0eXBlXCIgb3IgXCJyZWZcIiBpcyByZXF1aXJlZCcpKTtsZXQgYT1yZShyLnR5cGUpO2NvbnN0IG89cmUoci5yZWYpO2lmKHIuaWQpe2NvbnN0IHM9cmUoci5pZCk7Zm9yKGxldCBhPTA7YTx0LmFycmF5SW5kZXg7YSsrKXtjb25zdCB0PWkubGF5ZXJzW2FdO3JlKHQuaWQpPT09cyYmZS5wdXNoKG5ldyByaShuLHIuaWQsYGR1cGxpY2F0ZSBsYXllciBpZCBcIiR7ci5pZH1cIiwgcHJldmlvdXNseSB1c2VkIGF0IGxpbmUgJHt0LmlkLl9fbGluZV9ffWApKTt9fWlmKFwicmVmXCJpbiByKXtsZXQgdDtbXCJ0eXBlXCIsXCJzb3VyY2VcIixcInNvdXJjZS1sYXllclwiLFwiZmlsdGVyXCIsXCJsYXlvdXRcIl0uZm9yRWFjaCgodD0+e3QgaW4gciYmZS5wdXNoKG5ldyByaShuLHJbdF0sYFwiJHt0fVwiIGlzIHByb2hpYml0ZWQgZm9yIHJlZiBsYXllcnNgKSk7fSkpLGkubGF5ZXJzLmZvckVhY2goKGU9PntyZShlLmlkKT09PW8mJih0PWUpO30pKSx0P3QucmVmP2UucHVzaChuZXcgcmkobixyLnJlZixcInJlZiBjYW5ub3QgcmVmZXJlbmNlIGFub3RoZXIgcmVmIGxheWVyXCIpKTphPXJlKHQudHlwZSk6XCJzdHJpbmdcIj09dHlwZW9mIG8mJmUucHVzaChuZXcgcmkobixyLnJlZixgcmVmIGxheWVyIFwiJHtvfVwiIG5vdCBmb3VuZGApKTt9ZWxzZSBpZihcImJhY2tncm91bmRcIiE9PWEmJlwic2t5XCIhPT1hKWlmKHIuc291cmNlKXtjb25zdCB0PWkuc291cmNlcyYmaS5zb3VyY2VzW3Iuc291cmNlXSxzPXQmJnJlKHQudHlwZSk7dD9cInZlY3RvclwiPT09cyYmXCJyYXN0ZXJcIj09PWE/ZS5wdXNoKG5ldyByaShuLHIuc291cmNlLGBsYXllciBcIiR7ci5pZH1cIiByZXF1aXJlcyBhIHJhc3RlciBzb3VyY2VgKSk6XCJyYXN0ZXJcIj09PXMmJlwicmFzdGVyXCIhPT1hP2UucHVzaChuZXcgcmkobixyLnNvdXJjZSxgbGF5ZXIgXCIke3IuaWR9XCIgcmVxdWlyZXMgYSB2ZWN0b3Igc291cmNlYCkpOlwidmVjdG9yXCIhPT1zfHxyW1wic291cmNlLWxheWVyXCJdP1wicmFzdGVyLWRlbVwiPT09cyYmXCJoaWxsc2hhZGVcIiE9PWE/ZS5wdXNoKG5ldyByaShuLHIuc291cmNlLFwicmFzdGVyLWRlbSBzb3VyY2UgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGxheWVyIHR5cGUgJ2hpbGxzaGFkZScuXCIpKTpcImxpbmVcIiE9PWF8fCFyLnBhaW50fHwhci5wYWludFtcImxpbmUtZ3JhZGllbnRcIl0mJiFyLnBhaW50W1wibGluZS10cmltLW9mZnNldFwiXXx8XCJnZW9qc29uXCI9PT1zJiZ0LmxpbmVNZXRyaWNzfHxlLnB1c2gobmV3IHJpKG4scixgbGF5ZXIgXCIke3IuaWR9XCIgc3BlY2lmaWVzIGEgbGluZS1ncmFkaWVudCwgd2hpY2ggcmVxdWlyZXMgYSBHZW9KU09OIHNvdXJjZSB3aXRoIFxcYGxpbmVNZXRyaWNzXFxgIGVuYWJsZWQuYCkpOmUucHVzaChuZXcgcmkobixyLGBsYXllciBcIiR7ci5pZH1cIiBtdXN0IHNwZWNpZnkgYSBcInNvdXJjZS1sYXllclwiYCkpOmUucHVzaChuZXcgcmkobixyLnNvdXJjZSxgc291cmNlIFwiJHtyLnNvdXJjZX1cIiBub3QgZm91bmRgKSk7fWVsc2UgZS5wdXNoKG5ldyByaShuLHIsJ21pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkgXCJzb3VyY2VcIicpKTtyZXR1cm4gZT1lLmNvbmNhdChuaSh7a2V5Om4sdmFsdWU6cix2YWx1ZVNwZWM6cy5sYXllcixzdHlsZTp0LnN0eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlYyxvYmplY3RFbGVtZW50VmFsaWRhdG9yczp7XCIqXCI6KCk9PltdLHR5cGU6KCk9PkZpKHtrZXk6YCR7bn0udHlwZWAsdmFsdWU6ci50eXBlLHZhbHVlU3BlYzpzLmxheWVyLnR5cGUsc3R5bGU6dC5zdHlsZSxzdHlsZVNwZWM6dC5zdHlsZVNwZWMsb2JqZWN0OnIsb2JqZWN0S2V5OlwidHlwZVwifSksZmlsdGVyOnQ9PkFpKGVlKHtsYXllclR5cGU6YX0sdCkpLGxheW91dDp0PT5uaSh7bGF5ZXI6cixrZXk6dC5rZXksdmFsdWU6dC52YWx1ZSx2YWx1ZVNwZWM6e30sc3R5bGU6dC5zdHlsZSxzdHlsZVNwZWM6dC5zdHlsZVNwZWMsb2JqZWN0RWxlbWVudFZhbGlkYXRvcnM6e1wiKlwiOnQ9Pk1pKGVlKHtsYXllclR5cGU6YX0sdCkpfX0pLHBhaW50OnQ9Pm5pKHtsYXllcjpyLGtleTp0LmtleSx2YWx1ZTp0LnZhbHVlLHZhbHVlU3BlYzp7fSxzdHlsZTp0LnN0eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlYyxvYmplY3RFbGVtZW50VmFsaWRhdG9yczp7XCIqXCI6dD0+SWkoZWUoe2xheWVyVHlwZTphfSx0KSl9fSl9fSkpLGV9ZnVuY3Rpb24gemkodCl7Y29uc3QgZT10LnZhbHVlLHI9dC5rZXksbj1VbihlKTtyZXR1cm4gXCJzdHJpbmdcIiE9PW4/W25ldyByaShyLGUsYHN0cmluZyBleHBlY3RlZCwgJHtufSBmb3VuZGApXTpbXX1jb25zdCBCaT17cHJvbW90ZUlkOmZ1bmN0aW9uKHtrZXk6dCx2YWx1ZTplfSl7aWYoXCJzdHJpbmdcIj09PVVuKGUpKXJldHVybiB6aSh7a2V5OnQsdmFsdWU6ZX0pO3tjb25zdCByPVtdO2Zvcihjb25zdCBuIGluIGUpci5wdXNoKC4uLnppKHtrZXk6YCR7dH0uJHtufWAsdmFsdWU6ZVtuXX0pKTtyZXR1cm4gcn19fTtmdW5jdGlvbiBFaSh0KXtjb25zdCBlPXQudmFsdWUscj10LmtleSxuPXQuc3R5bGVTcGVjLGk9dC5zdHlsZTtpZighZS50eXBlKXJldHVybiBbbmV3IHJpKHIsZSwnXCJ0eXBlXCIgaXMgcmVxdWlyZWQnKV07Y29uc3Qgcz1yZShlLnR5cGUpO2xldCBhO3N3aXRjaChzKXtjYXNlXCJ2ZWN0b3JcIjpjYXNlXCJyYXN0ZXJcIjpjYXNlXCJyYXN0ZXItZGVtXCI6cmV0dXJuIGE9bmkoe2tleTpyLHZhbHVlOmUsdmFsdWVTcGVjOm5bYHNvdXJjZV8ke3MucmVwbGFjZShcIi1cIixcIl9cIil9YF0sc3R5bGU6dC5zdHlsZSxzdHlsZVNwZWM6bixvYmplY3RFbGVtZW50VmFsaWRhdG9yczpCaX0pLGE7Y2FzZVwiZ2VvanNvblwiOmlmKGE9bmkoe2tleTpyLHZhbHVlOmUsdmFsdWVTcGVjOm4uc291cmNlX2dlb2pzb24sc3R5bGU6aSxzdHlsZVNwZWM6bixvYmplY3RFbGVtZW50VmFsaWRhdG9yczpCaX0pLGUuY2x1c3Rlcilmb3IoY29uc3QgdCBpbiBlLmNsdXN0ZXJQcm9wZXJ0aWVzKXtjb25zdFtuLGldPWUuY2x1c3RlclByb3BlcnRpZXNbdF0scz1cInN0cmluZ1wiPT10eXBlb2Ygbj9bbixbXCJhY2N1bXVsYXRlZFwiXSxbXCJnZXRcIix0XV06bjthLnB1c2goLi4ub2koe2tleTpgJHtyfS4ke3R9Lm1hcGAsdmFsdWU6aSxleHByZXNzaW9uQ29udGV4dDpcImNsdXN0ZXItbWFwXCJ9KSksYS5wdXNoKC4uLm9pKHtrZXk6YCR7cn0uJHt0fS5yZWR1Y2VgLHZhbHVlOnMsZXhwcmVzc2lvbkNvbnRleHQ6XCJjbHVzdGVyLXJlZHVjZVwifSkpO31yZXR1cm4gYTtjYXNlXCJ2aWRlb1wiOnJldHVybiBuaSh7a2V5OnIsdmFsdWU6ZSx2YWx1ZVNwZWM6bi5zb3VyY2VfdmlkZW8sc3R5bGU6aSxzdHlsZVNwZWM6bn0pO2Nhc2VcImltYWdlXCI6cmV0dXJuIG5pKHtrZXk6cix2YWx1ZTplLHZhbHVlU3BlYzpuLnNvdXJjZV9pbWFnZSxzdHlsZTppLHN0eWxlU3BlYzpufSk7Y2FzZVwiY2FudmFzXCI6cmV0dXJuIFtuZXcgcmkocixudWxsLFwiUGxlYXNlIHVzZSBydW50aW1lIEFQSXMgdG8gYWRkIGNhbnZhcyBzb3VyY2VzLCByYXRoZXIgdGhhbiBpbmNsdWRpbmcgdGhlbSBpbiBzdHlsZXNoZWV0cy5cIixcInNvdXJjZS5jYW52YXNcIildO2RlZmF1bHQ6cmV0dXJuIHVpKHtrZXk6YCR7cn0udHlwZWAsdmFsdWU6ZS50eXBlLHZhbHVlU3BlYzp7dmFsdWVzOkNpKG4pfSxzdHlsZTppLHN0eWxlU3BlYzpufSl9fWZ1bmN0aW9uIENpKHQpe3JldHVybiB0LnNvdXJjZS5yZWR1Y2UoKChlLHIpPT57Y29uc3Qgbj10W3JdO3JldHVybiBcImVudW1cIj09PW4udHlwZS50eXBlJiYoZT1lLmNvbmNhdChPYmplY3Qua2V5cyhuLnR5cGUudmFsdWVzKSkpLGV9KSxbXSl9ZnVuY3Rpb24gUGkodCl7Y29uc3QgZT10LnZhbHVlLHI9dC5zdHlsZVNwZWMsbj1yLmxpZ2h0LGk9dC5zdHlsZTtsZXQgcz1bXTtjb25zdCBhPVVuKGUpO2lmKHZvaWQgMD09PWUpcmV0dXJuIHM7aWYoXCJvYmplY3RcIiE9PWEpcmV0dXJuIHM9cy5jb25jYXQoW25ldyByaShcImxpZ2h0XCIsZSxgb2JqZWN0IGV4cGVjdGVkLCAke2F9IGZvdW5kYCldKSxzO2Zvcihjb25zdCB0IGluIGUpe2NvbnN0IGE9dC5tYXRjaCgvXiguKiktdHJhbnNpdGlvbiQvKTtzPXMuY29uY2F0KGEmJm5bYVsxXV0mJm5bYVsxXV0udHJhbnNpdGlvbj9GaSh7a2V5OnQsdmFsdWU6ZVt0XSx2YWx1ZVNwZWM6ci50cmFuc2l0aW9uLHN0eWxlOmksc3R5bGVTcGVjOnJ9KTpuW3RdP0ZpKHtrZXk6dCx2YWx1ZTplW3RdLHZhbHVlU3BlYzpuW3RdLHN0eWxlOmksc3R5bGVTcGVjOnJ9KTpbbmV3IHJpKHQsZVt0XSxgdW5rbm93biBwcm9wZXJ0eSBcIiR7dH1cImApXSk7fXJldHVybiBzfWZ1bmN0aW9uIERpKHQpe2NvbnN0IGU9dC52YWx1ZSxyPXQua2V5LG49dC5zdHlsZSxpPXQuc3R5bGVTcGVjLHM9aS50ZXJyYWluO2xldCBhPVtdO2NvbnN0IG89VW4oZSk7aWYodm9pZCAwPT09ZSlyZXR1cm4gYTtpZihcIm9iamVjdFwiIT09bylyZXR1cm4gYT1hLmNvbmNhdChbbmV3IHJpKFwidGVycmFpblwiLGUsYG9iamVjdCBleHBlY3RlZCwgJHtvfSBmb3VuZGApXSksYTtmb3IoY29uc3QgdCBpbiBlKXtjb25zdCByPXQubWF0Y2goL14oLiopLXRyYW5zaXRpb24kLyk7YT1hLmNvbmNhdChyJiZzW3JbMV1dJiZzW3JbMV1dLnRyYW5zaXRpb24/Rmkoe2tleTp0LHZhbHVlOmVbdF0sdmFsdWVTcGVjOmkudHJhbnNpdGlvbixzdHlsZTpuLHN0eWxlU3BlYzppfSk6c1t0XT9GaSh7a2V5OnQsdmFsdWU6ZVt0XSx2YWx1ZVNwZWM6c1t0XSxzdHlsZTpuLHN0eWxlU3BlYzppfSk6W25ldyByaSh0LGVbdF0sYHVua25vd24gcHJvcGVydHkgXCIke3R9XCJgKV0pO31pZihlLnNvdXJjZSl7Y29uc3QgdD1uLnNvdXJjZXMmJm4uc291cmNlc1tlLnNvdXJjZV0saT10JiZyZSh0LnR5cGUpO3Q/XCJyYXN0ZXItZGVtXCIhPT1pJiZhLnB1c2gobmV3IHJpKHIsZS5zb3VyY2UsYHRlcnJhaW4gY2Fubm90IGJlIHVzZWQgd2l0aCBhIHNvdXJjZSBvZiB0eXBlICR7U3RyaW5nKGkpfSwgaXQgb25seSBiZSB1c2VkIHdpdGggYSBcInJhc3Rlci1kZW1cIiBzb3VyY2UgdHlwZWApKTphLnB1c2gobmV3IHJpKHIsZS5zb3VyY2UsYHNvdXJjZSBcIiR7ZS5zb3VyY2V9XCIgbm90IGZvdW5kYCkpO31lbHNlIGEucHVzaChuZXcgcmkocixlLCd0ZXJyYWluIGlzIG1pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkgXCJzb3VyY2VcIicpKTtyZXR1cm4gYX1mdW5jdGlvbiBWaSh0KXtjb25zdCBlPXQudmFsdWUscj10LnN0eWxlLG49dC5zdHlsZVNwZWMsaT1uLmZvZztsZXQgcz1bXTtjb25zdCBhPVVuKGUpO2lmKHZvaWQgMD09PWUpcmV0dXJuIHM7aWYoXCJvYmplY3RcIiE9PWEpcmV0dXJuIHM9cy5jb25jYXQoW25ldyByaShcImZvZ1wiLGUsYG9iamVjdCBleHBlY3RlZCwgJHthfSBmb3VuZGApXSkscztmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBhPXQubWF0Y2goL14oLiopLXRyYW5zaXRpb24kLyk7cz1zLmNvbmNhdChhJiZpW2FbMV1dJiZpW2FbMV1dLnRyYW5zaXRpb24/Rmkoe2tleTp0LHZhbHVlOmVbdF0sdmFsdWVTcGVjOm4udHJhbnNpdGlvbixzdHlsZTpyLHN0eWxlU3BlYzpufSk6aVt0XT9GaSh7a2V5OnQsdmFsdWU6ZVt0XSx2YWx1ZVNwZWM6aVt0XSxzdHlsZTpyLHN0eWxlU3BlYzpufSk6W25ldyByaSh0LGVbdF0sYHVua25vd24gcHJvcGVydHkgXCIke3R9XCJgKV0pO31yZXR1cm4gc31jb25zdCBMaT17XCIqXCI6KCk9PltdLGFycmF5OmlpLGJvb2xlYW46ZnVuY3Rpb24odCl7Y29uc3QgZT10LnZhbHVlLHI9dC5rZXksbj1VbihlKTtyZXR1cm4gXCJib29sZWFuXCIhPT1uP1tuZXcgcmkocixlLGBib29sZWFuIGV4cGVjdGVkLCAke259IGZvdW5kYCldOltdfSxudW1iZXI6c2ksY29sb3I6ZnVuY3Rpb24odCl7Y29uc3QgZT10LmtleSxyPXQudmFsdWUsbj1VbihyKTtyZXR1cm4gXCJzdHJpbmdcIiE9PW4/W25ldyByaShlLHIsYGNvbG9yIGV4cGVjdGVkLCAke259IGZvdW5kYCldOm51bGw9PT1TZShyKT9bbmV3IHJpKGUscixgY29sb3IgZXhwZWN0ZWQsIFwiJHtyfVwiIGZvdW5kYCldOltdfSxlbnVtOnVpLGZpbHRlcjpBaSxmdW5jdGlvbjphaSxsYXllcjpUaSxvYmplY3Q6bmksc291cmNlOkVpLGxpZ2h0OlBpLHRlcnJhaW46RGksZm9nOlZpLHN0cmluZzp6aSxmb3JtYXR0ZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT16aSh0KS5sZW5ndGg/W106b2kodCl9LHJlc29sdmVkSW1hZ2U6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT16aSh0KS5sZW5ndGg/W106b2kodCl9LHByb2plY3Rpb246ZnVuY3Rpb24odCl7Y29uc3QgZT10LnZhbHVlLHI9dC5zdHlsZVNwZWMsbj1yLnByb2plY3Rpb24saT10LnN0eWxlO2xldCBzPVtdO2NvbnN0IGE9VW4oZSk7aWYoXCJvYmplY3RcIj09PWEpZm9yKGNvbnN0IHQgaW4gZSlzPXMuY29uY2F0KEZpKHtrZXk6dCx2YWx1ZTplW3RdLHZhbHVlU3BlYzpuW3RdLHN0eWxlOmksc3R5bGVTcGVjOnJ9KSk7ZWxzZSBcInN0cmluZ1wiIT09YSYmKHM9cy5jb25jYXQoW25ldyByaShcInByb2plY3Rpb25cIixlLGBvYmplY3Qgb3Igc3RyaW5nIGV4cGVjdGVkLCAke2F9IGZvdW5kYCldKSk7cmV0dXJuIHN9fTtmdW5jdGlvbiBGaSh0KXtjb25zdCBlPXQudmFsdWUscj10LnZhbHVlU3BlYyxuPXQuc3R5bGVTcGVjO3JldHVybiByLmV4cHJlc3Npb24mJiRuKHJlKGUpKT9haSh0KTpyLmV4cHJlc3Npb24mJkpuKG5lKGUpKT9vaSh0KTpyLnR5cGUmJkxpW3IudHlwZV0/TGlbci50eXBlXSh0KTpuaShlZSh7fSx0LHt2YWx1ZVNwZWM6ci50eXBlP25bci50eXBlXTpyfSkpfWZ1bmN0aW9uIFJpKHQpe2NvbnN0IGU9dC52YWx1ZSxyPXQua2V5LG49emkodCk7cmV0dXJuIG4ubGVuZ3RofHwoLTE9PT1lLmluZGV4T2YoXCJ7Zm9udHN0YWNrfVwiKSYmbi5wdXNoKG5ldyByaShyLGUsJ1wiZ2x5cGhzXCIgdXJsIG11c3QgaW5jbHVkZSBhIFwie2ZvbnRzdGFja31cIiB0b2tlbicpKSwtMT09PWUuaW5kZXhPZihcIntyYW5nZX1cIikmJm4ucHVzaChuZXcgcmkocixlLCdcImdseXBoc1wiIHVybCBtdXN0IGluY2x1ZGUgYSBcIntyYW5nZX1cIiB0b2tlbicpKSksbn1mdW5jdGlvbiBVaSh0LGU9dGUpe3JldHVybiBPaShGaSh7a2V5OlwiXCIsdmFsdWU6dCx2YWx1ZVNwZWM6ZS4kcm9vdCxzdHlsZVNwZWM6ZSxzdHlsZTp0LG9iamVjdEVsZW1lbnRWYWxpZGF0b3JzOntnbHlwaHM6UmksXCIqXCI6KCk9PltdfX0pKX1jb25zdCAkaT10PT5PaShJaSh0KSksamk9dD0+T2koTWkodCkpO2Z1bmN0aW9uIE9pKHQpe3JldHVybiB0LnNsaWNlKCkuc29ydCgoKHQsZSk9PnQubGluZSYmZS5saW5lP3QubGluZS1lLmxpbmU6MCkpfWZ1bmN0aW9uIHFpKHQsZSl7bGV0IHI9ITE7aWYoZSYmZS5sZW5ndGgpZm9yKGNvbnN0IG4gb2YgZSl0LmZpcmUobmV3IFd0KG5ldyBFcnJvcihuLm1lc3NhZ2UpKSkscj0hMDtyZXR1cm4gcn12YXIgTmk9WmksR2k9MztmdW5jdGlvbiBaaSh0LGUscil7dmFyIG49dGhpcy5jZWxscz1bXTtpZih0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3RoaXMuYXJyYXlCdWZmZXI9dDt2YXIgaT1uZXcgSW50MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt0PWlbMF0sdGhpcy5kPShlPWlbMV0pKzIqKHI9aVsyXSk7Zm9yKHZhciBzPTA7czx0aGlzLmQqdGhpcy5kO3MrKyl7dmFyIGE9aVtHaStzXSxvPWlbR2krcysxXTtuLnB1c2goYT09PW8/bnVsbDppLnN1YmFycmF5KGEsbykpO312YXIgbD1pW0dpK24ubGVuZ3RoKzFdO3RoaXMua2V5cz1pLnN1YmFycmF5KGlbR2krbi5sZW5ndGhdLGwpLHRoaXMuYmJveGVzPWkuc3ViYXJyYXkobCksdGhpcy5pbnNlcnQ9dGhpcy5faW5zZXJ0UmVhZG9ubHk7fWVsc2Uge3RoaXMuZD1lKzIqcjtmb3IodmFyIHU9MDt1PHRoaXMuZCp0aGlzLmQ7dSsrKW4ucHVzaChbXSk7dGhpcy5rZXlzPVtdLHRoaXMuYmJveGVzPVtdO310aGlzLm49ZSx0aGlzLmV4dGVudD10LHRoaXMucGFkZGluZz1yLHRoaXMuc2NhbGU9ZS90LHRoaXMudWlkPTA7dmFyIGM9ci9lKnQ7dGhpcy5taW49LWMsdGhpcy5tYXg9dCtjO31aaS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQsZSxyLG4saSl7dGhpcy5fZm9yRWFjaENlbGwoZSxyLG4saSx0aGlzLl9pbnNlcnRDZWxsLHRoaXMudWlkKyspLHRoaXMua2V5cy5wdXNoKHQpLHRoaXMuYmJveGVzLnB1c2goZSksdGhpcy5iYm94ZXMucHVzaChyKSx0aGlzLmJib3hlcy5wdXNoKG4pLHRoaXMuYmJveGVzLnB1c2goaSk7fSxaaS5wcm90b3R5cGUuX2luc2VydFJlYWRvbmx5PWZ1bmN0aW9uKCl7dGhyb3cgXCJDYW5ub3QgaW5zZXJ0IGludG8gYSBHcmlkSW5kZXggY3JlYXRlZCBmcm9tIGFuIEFycmF5QnVmZmVyLlwifSxaaS5wcm90b3R5cGUuX2luc2VydENlbGw9ZnVuY3Rpb24odCxlLHIsbixpLHMpe3RoaXMuY2VsbHNbaV0ucHVzaChzKTt9LFppLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBzPXRoaXMubWluLGE9dGhpcy5tYXg7aWYodDw9cyYmZTw9cyYmYTw9ciYmYTw9biYmIWkpcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMua2V5cyk7dmFyIG89W107cmV0dXJuIHRoaXMuX2ZvckVhY2hDZWxsKHQsZSxyLG4sdGhpcy5fcXVlcnlDZWxsLG8se30saSksb30sWmkucHJvdG90eXBlLl9xdWVyeUNlbGw9ZnVuY3Rpb24odCxlLHIsbixpLHMsYSxvKXt2YXIgbD10aGlzLmNlbGxzW2ldO2lmKG51bGwhPT1sKWZvcih2YXIgdT10aGlzLmtleXMsYz10aGlzLmJib3hlcyxoPTA7aDxsLmxlbmd0aDtoKyspe3ZhciBwPWxbaF07aWYodm9pZCAwPT09YVtwXSl7dmFyIGQ9NCpwOyhvP28oY1tkKzBdLGNbZCsxXSxjW2QrMl0sY1tkKzNdKTp0PD1jW2QrMl0mJmU8PWNbZCszXSYmcj49Y1tkKzBdJiZuPj1jW2QrMV0pPyhhW3BdPSEwLHMucHVzaCh1W3BdKSk6YVtwXT0hMTt9fX0sWmkucHJvdG90eXBlLl9mb3JFYWNoQ2VsbD1mdW5jdGlvbih0LGUscixuLGkscyxhLG8pe2Zvcih2YXIgbD10aGlzLl9jb252ZXJ0VG9DZWxsQ29vcmQodCksdT10aGlzLl9jb252ZXJ0VG9DZWxsQ29vcmQoZSksYz10aGlzLl9jb252ZXJ0VG9DZWxsQ29vcmQociksaD10aGlzLl9jb252ZXJ0VG9DZWxsQ29vcmQobikscD1sO3A8PWM7cCsrKWZvcih2YXIgZD11O2Q8PWg7ZCsrKXt2YXIgZj10aGlzLmQqZCtwO2lmKCghb3x8byh0aGlzLl9jb252ZXJ0RnJvbUNlbGxDb29yZChwKSx0aGlzLl9jb252ZXJ0RnJvbUNlbGxDb29yZChkKSx0aGlzLl9jb252ZXJ0RnJvbUNlbGxDb29yZChwKzEpLHRoaXMuX2NvbnZlcnRGcm9tQ2VsbENvb3JkKGQrMSkpKSYmaS5jYWxsKHRoaXMsdCxlLHIsbixmLHMsYSxvKSlyZXR1cm59fSxaaS5wcm90b3R5cGUuX2NvbnZlcnRGcm9tQ2VsbENvb3JkPWZ1bmN0aW9uKHQpe3JldHVybiAodC10aGlzLnBhZGRpbmcpL3RoaXMuc2NhbGV9LFppLnByb3RvdHlwZS5fY29udmVydFRvQ2VsbENvb3JkPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKHRoaXMuZC0xLE1hdGguZmxvb3IodCp0aGlzLnNjYWxlKSt0aGlzLnBhZGRpbmcpKX0sWmkucHJvdG90eXBlLnRvQXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXtpZih0aGlzLmFycmF5QnVmZmVyKXJldHVybiB0aGlzLmFycmF5QnVmZmVyO2Zvcih2YXIgdD10aGlzLmNlbGxzLGU9R2krdGhpcy5jZWxscy5sZW5ndGgrMSsxLHI9MCxuPTA7bjx0aGlzLmNlbGxzLmxlbmd0aDtuKyspcis9dGhpcy5jZWxsc1tuXS5sZW5ndGg7dmFyIGk9bmV3IEludDMyQXJyYXkoZStyK3RoaXMua2V5cy5sZW5ndGgrdGhpcy5iYm94ZXMubGVuZ3RoKTtpWzBdPXRoaXMuZXh0ZW50LGlbMV09dGhpcy5uLGlbMl09dGhpcy5wYWRkaW5nO2Zvcih2YXIgcz1lLGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIG89dFthXTtpW0dpK2FdPXMsaS5zZXQobyxzKSxzKz1vLmxlbmd0aDt9cmV0dXJuIGlbR2krdC5sZW5ndGhdPXMsaS5zZXQodGhpcy5rZXlzLHMpLGlbR2krdC5sZW5ndGgrMV09cys9dGhpcy5rZXlzLmxlbmd0aCxpLnNldCh0aGlzLmJib3hlcyxzKSxzKz10aGlzLmJib3hlcy5sZW5ndGgsaS5idWZmZXJ9O3ZhciBLaT1wKE5pKTtjb25zdCBYaT17fTtmdW5jdGlvbiBKaSh0LGUscj17fSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfY2xhc3NSZWdpc3RyeUtleVwiLHt2YWx1ZTplLHdyaXRlYWJsZTohMX0pLFhpW2VdPXtrbGFzczp0LG9taXQ6ci5vbWl0fHxbXX07fUppKE9iamVjdCxcIk9iamVjdFwiKSxLaS5zZXJpYWxpemU9ZnVuY3Rpb24odCxlKXtjb25zdCByPXQudG9BcnJheUJ1ZmZlcigpO3JldHVybiBlJiZlLnB1c2gocikse2J1ZmZlcjpyfX0sS2kuZGVzZXJpYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBLaSh0LmJ1ZmZlcil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShLaSxcIm5hbWVcIix7dmFsdWU6XCJHcmlkXCJ9KSxKaShLaSxcIkdyaWRcIiksSmkoRWUsXCJDb2xvclwiKSxKaShFcnJvcixcIkVycm9yXCIpLEppKHV0LFwiQUpBWEVycm9yXCIpLEppKFZlLFwiUmVzb2x2ZWRJbWFnZVwiKSxKaSh0aSxcIlN0eWxlUHJvcGVydHlGdW5jdGlvblwiKSxKaShYbixcIlN0eWxlRXhwcmVzc2lvblwiLHtvbWl0OltcIl9ldmFsdWF0b3JcIl19KSxKaShXbixcIlpvb21EZXBlbmRlbnRFeHByZXNzaW9uXCIpLEppKFluLFwiWm9vbUNvbnN0YW50RXhwcmVzc2lvblwiKSxKaSh0cixcIkNvbXBvdW5kRXhwcmVzc2lvblwiLHtvbWl0OltcIl9ldmFsdWF0ZVwiXX0pO2Zvcihjb25zdCB0IGluIFBuKVhpW1BuW3RdLl9jbGFzc1JlZ2lzdHJ5S2V5XXx8SmkoUG5bdF0sYEV4cHJlc3Npb24ke3R9YCk7ZnVuY3Rpb24gSGkodCl7cmV0dXJuIHQmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8dC5jb25zdHJ1Y3RvciYmXCJBcnJheUJ1ZmZlclwiPT09dC5jb25zdHJ1Y3Rvci5uYW1lKX1mdW5jdGlvbiBZaSh0KXtyZXR1cm4gZS5JbWFnZUJpdG1hcCYmdCBpbnN0YW5jZW9mIGUuSW1hZ2VCaXRtYXB9ZnVuY3Rpb24gV2kodCxyKXtpZihudWxsPT10fHxcImJvb2xlYW5cIj09dHlwZW9mIHR8fFwibnVtYmVyXCI9PXR5cGVvZiB0fHxcInN0cmluZ1wiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIEJvb2xlYW58fHQgaW5zdGFuY2VvZiBOdW1iZXJ8fHQgaW5zdGFuY2VvZiBTdHJpbmd8fHQgaW5zdGFuY2VvZiBEYXRlfHx0IGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiB0O2lmKEhpKHQpfHxZaSh0KSlyZXR1cm4gciYmci5wdXNoKHQpLHQ7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KHQpKXtjb25zdCBlPXQ7cmV0dXJuIHImJnIucHVzaChlLmJ1ZmZlciksZX1pZih0IGluc3RhbmNlb2YgZS5JbWFnZURhdGEpcmV0dXJuIHImJnIucHVzaCh0LmRhdGEuYnVmZmVyKSx0O2lmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IG4gb2YgdCllLnB1c2goV2kobixyKSk7cmV0dXJuIGV9aWYoXCJvYmplY3RcIj09dHlwZW9mIHQpe2NvbnN0IGU9dC5jb25zdHJ1Y3RvcixuPWUuX2NsYXNzUmVnaXN0cnlLZXk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBjYW4ndCBzZXJpYWxpemUgb2JqZWN0IG9mIHVucmVnaXN0ZXJlZCBjbGFzcyAke259YCk7Y29uc3QgaT1lLnNlcmlhbGl6ZT9lLnNlcmlhbGl6ZSh0LHIpOnt9O2lmKCFlLnNlcmlhbGl6ZSl7Zm9yKGNvbnN0IGUgaW4gdCl0Lmhhc093blByb3BlcnR5KGUpJiYoWGlbbl0ub21pdC5pbmRleE9mKGUpPj0wfHwoaVtlXT1XaSh0W2VdLHIpKSk7dCBpbnN0YW5jZW9mIEVycm9yJiYoaS5tZXNzYWdlPXQubWVzc2FnZSk7fWlmKGkuJG5hbWUpdGhyb3cgbmV3IEVycm9yKFwiJG5hbWUgcHJvcGVydHkgaXMgcmVzZXJ2ZWQgZm9yIHdvcmtlciBzZXJpYWxpemF0aW9uIGxvZ2ljLlwiKTtyZXR1cm4gXCJPYmplY3RcIiE9PW4mJihpLiRuYW1lPW4pLGl9dGhyb3cgbmV3IEVycm9yKFwiY2FuJ3Qgc2VyaWFsaXplIG9iamVjdCBvZiB0eXBlIFwiK3R5cGVvZiB0KX1mdW5jdGlvbiBRaSh0KXtpZihudWxsPT10fHxcImJvb2xlYW5cIj09dHlwZW9mIHR8fFwibnVtYmVyXCI9PXR5cGVvZiB0fHxcInN0cmluZ1wiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIEJvb2xlYW58fHQgaW5zdGFuY2VvZiBOdW1iZXJ8fHQgaW5zdGFuY2VvZiBTdHJpbmd8fHQgaW5zdGFuY2VvZiBEYXRlfHx0IGluc3RhbmNlb2YgUmVnRXhwfHxIaSh0KXx8WWkodCl8fEFycmF5QnVmZmVyLmlzVmlldyh0KXx8dCBpbnN0YW5jZW9mIGUuSW1hZ2VEYXRhKXJldHVybiB0O2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQubWFwKFFpKTtpZihcIm9iamVjdFwiPT10eXBlb2YgdCl7Y29uc3QgZT10LiRuYW1lfHxcIk9iamVjdFwiLHtrbGFzczpyfT1YaVtlXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYGNhbid0IGRlc2VyaWFsaXplIHVucmVnaXN0ZXJlZCBjbGFzcyAke2V9YCk7aWYoci5kZXNlcmlhbGl6ZSlyZXR1cm4gci5kZXNlcmlhbGl6ZSh0KTtjb25zdCBuPU9iamVjdC5jcmVhdGUoci5wcm90b3R5cGUpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5rZXlzKHQpKVwiJG5hbWVcIiE9PWUmJihuW2VdPVFpKHRbZV0pKTtyZXR1cm4gbn10aHJvdyBuZXcgRXJyb3IoXCJjYW4ndCBkZXNlcmlhbGl6ZSBvYmplY3Qgb2YgdHlwZSBcIit0eXBlb2YgdCl9Y29uc3QgdHM9e1wiTGF0aW4tMSBTdXBwbGVtZW50XCI6dD0+dD49MTI4JiZ0PD0yNTUsQXJhYmljOnQ9PnQ+PTE1MzYmJnQ8PTE3OTEsXCJBcmFiaWMgU3VwcGxlbWVudFwiOnQ9PnQ+PTE4NzImJnQ8PTE5MTksXCJBcmFiaWMgRXh0ZW5kZWQtQVwiOnQ9PnQ+PTIyMDgmJnQ8PTIzMDMsXCJIYW5ndWwgSmFtb1wiOnQ9PnQ+PTQzNTImJnQ8PTQ2MDcsXCJVbmlmaWVkIENhbmFkaWFuIEFib3JpZ2luYWwgU3lsbGFiaWNzXCI6dD0+dD49NTEyMCYmdDw9NTc1OSxLaG1lcjp0PT50Pj02MDE2JiZ0PD02MTQzLFwiVW5pZmllZCBDYW5hZGlhbiBBYm9yaWdpbmFsIFN5bGxhYmljcyBFeHRlbmRlZFwiOnQ9PnQ+PTYzMjAmJnQ8PTYzOTksXCJHZW5lcmFsIFB1bmN0dWF0aW9uXCI6dD0+dD49ODE5MiYmdDw9ODMwMyxcIkxldHRlcmxpa2UgU3ltYm9sc1wiOnQ9PnQ+PTg0NDgmJnQ8PTg1MjcsXCJOdW1iZXIgRm9ybXNcIjp0PT50Pj04NTI4JiZ0PD04NTkxLFwiTWlzY2VsbGFuZW91cyBUZWNobmljYWxcIjp0PT50Pj04OTYwJiZ0PD05MjE1LFwiQ29udHJvbCBQaWN0dXJlc1wiOnQ9PnQ+PTkyMTYmJnQ8PTkyNzksXCJPcHRpY2FsIENoYXJhY3RlciBSZWNvZ25pdGlvblwiOnQ9PnQ+PTkyODAmJnQ8PTkzMTEsXCJFbmNsb3NlZCBBbHBoYW51bWVyaWNzXCI6dD0+dD49OTMxMiYmdDw9OTQ3MSxcIkdlb21ldHJpYyBTaGFwZXNcIjp0PT50Pj05NjMyJiZ0PD05NzI3LFwiTWlzY2VsbGFuZW91cyBTeW1ib2xzXCI6dD0+dD49OTcyOCYmdDw9OTk4MyxcIk1pc2NlbGxhbmVvdXMgU3ltYm9scyBhbmQgQXJyb3dzXCI6dD0+dD49MTEwMDgmJnQ8PTExMjYzLFwiQ0pLIFJhZGljYWxzIFN1cHBsZW1lbnRcIjp0PT50Pj0xMTkwNCYmdDw9MTIwMzEsXCJLYW5neGkgUmFkaWNhbHNcIjp0PT50Pj0xMjAzMiYmdDw9MTIyNTUsXCJJZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiBDaGFyYWN0ZXJzXCI6dD0+dD49MTIyNzImJnQ8PTEyMjg3LFwiQ0pLIFN5bWJvbHMgYW5kIFB1bmN0dWF0aW9uXCI6dD0+dD49MTIyODgmJnQ8PTEyMzUxLEhpcmFnYW5hOnQ9PnQ+PTEyMzUyJiZ0PD0xMjQ0NyxLYXRha2FuYTp0PT50Pj0xMjQ0OCYmdDw9MTI1NDMsQm9wb21vZm86dD0+dD49MTI1NDQmJnQ8PTEyNTkxLFwiSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFtb1wiOnQ9PnQ+PTEyNTkyJiZ0PD0xMjY4NyxLYW5idW46dD0+dD49MTI2ODgmJnQ8PTEyNzAzLFwiQm9wb21vZm8gRXh0ZW5kZWRcIjp0PT50Pj0xMjcwNCYmdDw9MTI3MzUsXCJDSksgU3Ryb2tlc1wiOnQ9PnQ+PTEyNzM2JiZ0PD0xMjc4MyxcIkthdGFrYW5hIFBob25ldGljIEV4dGVuc2lvbnNcIjp0PT50Pj0xMjc4NCYmdDw9MTI3OTksXCJFbmNsb3NlZCBDSksgTGV0dGVycyBhbmQgTW9udGhzXCI6dD0+dD49MTI4MDAmJnQ8PTEzMDU1LFwiQ0pLIENvbXBhdGliaWxpdHlcIjp0PT50Pj0xMzA1NiYmdDw9MTMzMTEsXCJDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBBXCI6dD0+dD49MTMzMTImJnQ8PTE5OTAzLFwiWWlqaW5nIEhleGFncmFtIFN5bWJvbHNcIjp0PT50Pj0xOTkwNCYmdDw9MTk5NjcsXCJDSksgVW5pZmllZCBJZGVvZ3JhcGhzXCI6dD0+dD49MTk5NjgmJnQ8PTQwOTU5LFwiWWkgU3lsbGFibGVzXCI6dD0+dD49NDA5NjAmJnQ8PTQyMTI3LFwiWWkgUmFkaWNhbHNcIjp0PT50Pj00MjEyOCYmdDw9NDIxOTEsXCJIYW5ndWwgSmFtbyBFeHRlbmRlZC1BXCI6dD0+dD49NDMzNjAmJnQ8PTQzMzkxLFwiSGFuZ3VsIFN5bGxhYmxlc1wiOnQ9PnQ+PTQ0MDMyJiZ0PD01NTIxNSxcIkhhbmd1bCBKYW1vIEV4dGVuZGVkLUJcIjp0PT50Pj01NTIxNiYmdDw9NTUyOTUsXCJQcml2YXRlIFVzZSBBcmVhXCI6dD0+dD49NTczNDQmJnQ8PTYzNzQzLFwiQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBoc1wiOnQ9PnQ+PTYzNzQ0JiZ0PD02NDI1NSxcIkFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQVwiOnQ9PnQ+PTY0MzM2JiZ0PD02NTAyMyxcIlZlcnRpY2FsIEZvcm1zXCI6dD0+dD49NjUwNDAmJnQ8PTY1MDU1LFwiQ0pLIENvbXBhdGliaWxpdHkgRm9ybXNcIjp0PT50Pj02NTA3MiYmdDw9NjUxMDMsXCJTbWFsbCBGb3JtIFZhcmlhbnRzXCI6dD0+dD49NjUxMDQmJnQ8PTY1MTM1LFwiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1CXCI6dD0+dD49NjUxMzYmJnQ8PTY1Mjc5LFwiSGFsZndpZHRoIGFuZCBGdWxsd2lkdGggRm9ybXNcIjp0PT50Pj02NTI4MCYmdDw9NjU1MTl9O2Z1bmN0aW9uIGVzKHQpe2Zvcihjb25zdCBlIG9mIHQpaWYoaXMoZS5jaGFyQ29kZUF0KDApKSlyZXR1cm4gITA7cmV0dXJuICExfWZ1bmN0aW9uIHJzKHQpe2Zvcihjb25zdCBlIG9mIHQpaWYoIW5zKGUuY2hhckNvZGVBdCgwKSkpcmV0dXJuICExO3JldHVybiAhMH1mdW5jdGlvbiBucyh0KXtyZXR1cm4gISh0cy5BcmFiaWModCl8fHRzW1wiQXJhYmljIFN1cHBsZW1lbnRcIl0odCl8fHRzW1wiQXJhYmljIEV4dGVuZGVkLUFcIl0odCl8fHRzW1wiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1BXCJdKHQpfHx0c1tcIkFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQlwiXSh0KSl9ZnVuY3Rpb24gaXModCl7cmV0dXJuICEoNzQ2IT09dCYmNzQ3IT09dCYmKHQ8NDM1Mnx8ISh0c1tcIkJvcG9tb2ZvIEV4dGVuZGVkXCJdKHQpfHx0cy5Cb3BvbW9mbyh0KXx8dHNbXCJDSksgQ29tcGF0aWJpbGl0eSBGb3Jtc1wiXSh0KSYmISh0Pj02NTA5NyYmdDw9NjUxMDMpfHx0c1tcIkNKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHNcIl0odCl8fHRzW1wiQ0pLIENvbXBhdGliaWxpdHlcIl0odCl8fHRzW1wiQ0pLIFJhZGljYWxzIFN1cHBsZW1lbnRcIl0odCl8fHRzW1wiQ0pLIFN0cm9rZXNcIl0odCl8fCEoIXRzW1wiQ0pLIFN5bWJvbHMgYW5kIFB1bmN0dWF0aW9uXCJdKHQpfHx0Pj0xMjI5NiYmdDw9MTIzMDV8fHQ+PTEyMzA4JiZ0PD0xMjMxOXx8MTIzMzY9PT10KXx8dHNbXCJDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBBXCJdKHQpfHx0c1tcIkNKSyBVbmlmaWVkIElkZW9ncmFwaHNcIl0odCl8fHRzW1wiRW5jbG9zZWQgQ0pLIExldHRlcnMgYW5kIE1vbnRoc1wiXSh0KXx8dHNbXCJIYW5ndWwgQ29tcGF0aWJpbGl0eSBKYW1vXCJdKHQpfHx0c1tcIkhhbmd1bCBKYW1vIEV4dGVuZGVkLUFcIl0odCl8fHRzW1wiSGFuZ3VsIEphbW8gRXh0ZW5kZWQtQlwiXSh0KXx8dHNbXCJIYW5ndWwgSmFtb1wiXSh0KXx8dHNbXCJIYW5ndWwgU3lsbGFibGVzXCJdKHQpfHx0cy5IaXJhZ2FuYSh0KXx8dHNbXCJJZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiBDaGFyYWN0ZXJzXCJdKHQpfHx0cy5LYW5idW4odCl8fHRzW1wiS2FuZ3hpIFJhZGljYWxzXCJdKHQpfHx0c1tcIkthdGFrYW5hIFBob25ldGljIEV4dGVuc2lvbnNcIl0odCl8fHRzLkthdGFrYW5hKHQpJiYxMjU0MCE9PXR8fCEoIXRzW1wiSGFsZndpZHRoIGFuZCBGdWxsd2lkdGggRm9ybXNcIl0odCl8fDY1Mjg4PT09dHx8NjUyODk9PT10fHw2NTI5Mz09PXR8fHQ+PTY1MzA2JiZ0PD02NTMxMHx8NjUzMzk9PT10fHw2NTM0MT09PXR8fDY1MzQzPT09dHx8dD49NjUzNzEmJnQ8PTY1NTAzfHw2NTUwNz09PXR8fHQ+PTY1NTEyJiZ0PD02NTUxOSl8fCEoIXRzW1wiU21hbGwgRm9ybSBWYXJpYW50c1wiXSh0KXx8dD49NjUxMTImJnQ8PTY1MTE4fHx0Pj02NTEyMyYmdDw9NjUxMjYpfHx0c1tcIlVuaWZpZWQgQ2FuYWRpYW4gQWJvcmlnaW5hbCBTeWxsYWJpY3NcIl0odCl8fHRzW1wiVW5pZmllZCBDYW5hZGlhbiBBYm9yaWdpbmFsIFN5bGxhYmljcyBFeHRlbmRlZFwiXSh0KXx8dHNbXCJWZXJ0aWNhbCBGb3Jtc1wiXSh0KXx8dHNbXCJZaWppbmcgSGV4YWdyYW0gU3ltYm9sc1wiXSh0KXx8dHNbXCJZaSBTeWxsYWJsZXNcIl0odCl8fHRzW1wiWWkgUmFkaWNhbHNcIl0odCkpKSl9ZnVuY3Rpb24gc3ModCl7cmV0dXJuICEoaXModCl8fGZ1bmN0aW9uKHQpe3JldHVybiAhISh0c1tcIkxhdGluLTEgU3VwcGxlbWVudFwiXSh0KSYmKDE2Nz09PXR8fDE2OT09PXR8fDE3ND09PXR8fDE3Nz09PXR8fDE4OD09PXR8fDE4OT09PXR8fDE5MD09PXR8fDIxNT09PXR8fDI0Nz09PXQpfHx0c1tcIkdlbmVyYWwgUHVuY3R1YXRpb25cIl0odCkmJig4MjE0PT09dHx8ODIyND09PXR8fDgyMjU9PT10fHw4MjQwPT09dHx8ODI0MT09PXR8fDgyNTE9PT10fHw4MjUyPT09dHx8ODI1OD09PXR8fDgyNjM9PT10fHw4MjY0PT09dHx8ODI2NT09PXR8fDgyNzM9PT10KXx8dHNbXCJMZXR0ZXJsaWtlIFN5bWJvbHNcIl0odCl8fHRzW1wiTnVtYmVyIEZvcm1zXCJdKHQpfHx0c1tcIk1pc2NlbGxhbmVvdXMgVGVjaG5pY2FsXCJdKHQpJiYodD49ODk2MCYmdDw9ODk2N3x8dD49ODk3MiYmdDw9ODk5MXx8dD49ODk5NiYmdDw9OWUzfHw5MDAzPT09dHx8dD49OTA4NSYmdDw9OTExNHx8dD49OTE1MCYmdDw9OTE2NXx8OTE2Nz09PXR8fHQ+PTkxNjkmJnQ8PTkxNzl8fHQ+PTkxODYmJnQ8PTkyMTUpfHx0c1tcIkNvbnRyb2wgUGljdHVyZXNcIl0odCkmJjkyNTEhPT10fHx0c1tcIk9wdGljYWwgQ2hhcmFjdGVyIFJlY29nbml0aW9uXCJdKHQpfHx0c1tcIkVuY2xvc2VkIEFscGhhbnVtZXJpY3NcIl0odCl8fHRzW1wiR2VvbWV0cmljIFNoYXBlc1wiXSh0KXx8dHNbXCJNaXNjZWxsYW5lb3VzIFN5bWJvbHNcIl0odCkmJiEodD49OTc1NCYmdDw9OTc1OSl8fHRzW1wiTWlzY2VsbGFuZW91cyBTeW1ib2xzIGFuZCBBcnJvd3NcIl0odCkmJih0Pj0xMTAyNiYmdDw9MTEwNTV8fHQ+PTExMDg4JiZ0PD0xMTA5N3x8dD49MTExOTImJnQ8PTExMjQzKXx8dHNbXCJDSksgU3ltYm9scyBhbmQgUHVuY3R1YXRpb25cIl0odCl8fHRzLkthdGFrYW5hKHQpfHx0c1tcIlByaXZhdGUgVXNlIEFyZWFcIl0odCl8fHRzW1wiQ0pLIENvbXBhdGliaWxpdHkgRm9ybXNcIl0odCl8fHRzW1wiU21hbGwgRm9ybSBWYXJpYW50c1wiXSh0KXx8dHNbXCJIYWxmd2lkdGggYW5kIEZ1bGx3aWR0aCBGb3Jtc1wiXSh0KXx8ODczND09PXR8fDg3NTY9PT10fHw4NzU3PT09dHx8dD49OTk4NCYmdDw9MTAwODd8fHQ+PTEwMTAyJiZ0PD0xMDEzMXx8NjU1MzI9PT10fHw2NTUzMz09PXQpfSh0KSl9ZnVuY3Rpb24gYXModCl7cmV0dXJuIHQ+PTE0MjQmJnQ8PTIzMDN8fHRzW1wiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1BXCJdKHQpfHx0c1tcIkFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQlwiXSh0KX1mdW5jdGlvbiBvcyh0LGUpe3JldHVybiAhKCFlJiZhcyh0KXx8dD49MjMwNCYmdDw9MzU4M3x8dD49Mzg0MCYmdDw9NDI1NXx8dHMuS2htZXIodCkpfWZ1bmN0aW9uIGxzKHQpe2Zvcihjb25zdCBlIG9mIHQpaWYoYXMoZS5jaGFyQ29kZUF0KDApKSlyZXR1cm4gITA7cmV0dXJuICExfWNvbnN0IHVzPVwiZGVmZXJyZWRcIixjcz1cImxvYWRpbmdcIixocz1cImxvYWRlZFwiO2xldCBwcz1udWxsLGRzPVwidW5hdmFpbGFibGVcIixmcz1udWxsO2NvbnN0IHlzPWZ1bmN0aW9uKHQpe3QmJlwic3RyaW5nXCI9PXR5cGVvZiB0JiZ0LmluZGV4T2YoXCJOZXR3b3JrRXJyb3JcIik+LTEmJihkcz1cImVycm9yXCIpLHBzJiZwcyh0KTt9O2Z1bmN0aW9uIG1zKCl7Z3MuZmlyZShuZXcgWXQoXCJwbHVnaW5TdGF0ZUNoYW5nZVwiLHtwbHVnaW5TdGF0dXM6ZHMscGx1Z2luVVJMOmZzfSkpO31jb25zdCBncz1uZXcgUXQseHM9ZnVuY3Rpb24oKXtyZXR1cm4gZHN9LHZzPWZ1bmN0aW9uKCl7aWYoZHMhPT11c3x8IWZzKXRocm93IG5ldyBFcnJvcihcInJ0bC10ZXh0LXBsdWdpbiBjYW5ub3QgYmUgZG93bmxvYWRlZCB1bmxlc3MgYSBwbHVnaW5VUkwgaXMgc3BlY2lmaWVkXCIpO2RzPWNzLG1zKCksZnMmJnB0KHt1cmw6ZnN9LCh0PT57dD95cyh0KTooZHM9aHMsbXMoKSk7fSkpO30sYnM9e2FwcGx5QXJhYmljU2hhcGluZzpudWxsLHByb2Nlc3NCaWRpcmVjdGlvbmFsVGV4dDpudWxsLHByb2Nlc3NTdHlsZWRCaWRpcmVjdGlvbmFsVGV4dDpudWxsLGlzTG9hZGVkOigpPT5kcz09PWhzfHxudWxsIT1icy5hcHBseUFyYWJpY1NoYXBpbmcsaXNMb2FkaW5nOigpPT5kcz09PWNzLHNldFN0YXRlKHQpe2RzPXQucGx1Z2luU3RhdHVzLGZzPXQucGx1Z2luVVJMO30saXNQYXJzZWQ6KCk9Pm51bGwhPWJzLmFwcGx5QXJhYmljU2hhcGluZyYmbnVsbCE9YnMucHJvY2Vzc0JpZGlyZWN0aW9uYWxUZXh0JiZudWxsIT1icy5wcm9jZXNzU3R5bGVkQmlkaXJlY3Rpb25hbFRleHQsZ2V0UGx1Z2luVVJMOigpPT5mc307Y2xhc3Mgd3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLnpvb209dCxlPyh0aGlzLm5vdz1lLm5vdyx0aGlzLmZhZGVEdXJhdGlvbj1lLmZhZGVEdXJhdGlvbix0aGlzLnRyYW5zaXRpb249ZS50cmFuc2l0aW9uLHRoaXMucGl0Y2g9ZS5waXRjaCk6KHRoaXMubm93PTAsdGhpcy5mYWRlRHVyYXRpb249MCx0aGlzLnRyYW5zaXRpb249e30sdGhpcy5waXRjaD0wKTt9aXNTdXBwb3J0ZWRTY3JpcHQodCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKGNvbnN0IHIgb2YgdClpZighb3Moci5jaGFyQ29kZUF0KDApLGUpKXJldHVybiAhMTtyZXR1cm4gITB9KHQsYnMuaXNMb2FkZWQoKSl9fWNsYXNzIF9ze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5wcm9wZXJ0eT10LHRoaXMudmFsdWU9ZSx0aGlzLmV4cHJlc3Npb249ZnVuY3Rpb24odCxlKXtpZigkbih0KSlyZXR1cm4gbmV3IHRpKHQsZSk7aWYoSm4odCkpe2NvbnN0IHI9UW4odCxlKTtpZihcImVycm9yXCI9PT1yLnJlc3VsdCl0aHJvdyBuZXcgRXJyb3Ioci52YWx1ZS5tYXAoKHQ9PmAke3Qua2V5fTogJHt0Lm1lc3NhZ2V9YCkpLmpvaW4oXCIsIFwiKSk7cmV0dXJuIHIudmFsdWV9e2xldCByPXQ7cmV0dXJuIFwic3RyaW5nXCI9PXR5cGVvZiB0JiZcImNvbG9yXCI9PT1lLnR5cGUmJihyPUVlLnBhcnNlKHQpKSx7a2luZDpcImNvbnN0YW50XCIsZXZhbHVhdGU6KCk9PnJ9fX0odm9pZCAwPT09ZT90LnNwZWNpZmljYXRpb24uZGVmYXVsdDplLHQuc3BlY2lmaWNhdGlvbik7fWlzRGF0YURyaXZlbigpe3JldHVybiBcInNvdXJjZVwiPT09dGhpcy5leHByZXNzaW9uLmtpbmR8fFwiY29tcG9zaXRlXCI9PT10aGlzLmV4cHJlc3Npb24ua2luZH1wb3NzaWJseUV2YWx1YXRlKHQsZSxyKXtyZXR1cm4gdGhpcy5wcm9wZXJ0eS5wb3NzaWJseUV2YWx1YXRlKHRoaXMsdCxlLHIpfX1jbGFzcyBBc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnByb3BlcnR5PXQsdGhpcy52YWx1ZT1uZXcgX3ModCx2b2lkIDApO310cmFuc2l0aW9uZWQodCxlKXtyZXR1cm4gbmV3IGtzKHRoaXMucHJvcGVydHksdGhpcy52YWx1ZSxlLEMoe30sdC50cmFuc2l0aW9uLHRoaXMudHJhbnNpdGlvbiksdC5ub3cpfXVudHJhbnNpdGlvbmVkKCl7cmV0dXJuIG5ldyBrcyh0aGlzLnByb3BlcnR5LHRoaXMudmFsdWUsbnVsbCx7fSwwKX19Y2xhc3MgU3N7Y29uc3RydWN0b3IodCl7dGhpcy5fcHJvcGVydGllcz10LHRoaXMuX3ZhbHVlcz1PYmplY3QuY3JlYXRlKHQuZGVmYXVsdFRyYW5zaXRpb25hYmxlUHJvcGVydHlWYWx1ZXMpO31nZXRWYWx1ZSh0KXtyZXR1cm4gTyh0aGlzLl92YWx1ZXNbdF0udmFsdWUudmFsdWUpfXNldFZhbHVlKHQsZSl7dGhpcy5fdmFsdWVzLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5fdmFsdWVzW3RdPW5ldyBBcyh0aGlzLl92YWx1ZXNbdF0ucHJvcGVydHkpKSx0aGlzLl92YWx1ZXNbdF0udmFsdWU9bmV3IF9zKHRoaXMuX3ZhbHVlc1t0XS5wcm9wZXJ0eSxudWxsPT09ZT92b2lkIDA6TyhlKSk7fWdldFRyYW5zaXRpb24odCl7cmV0dXJuIE8odGhpcy5fdmFsdWVzW3RdLnRyYW5zaXRpb24pfXNldFRyYW5zaXRpb24odCxlKXt0aGlzLl92YWx1ZXMuaGFzT3duUHJvcGVydHkodCl8fCh0aGlzLl92YWx1ZXNbdF09bmV3IEFzKHRoaXMuX3ZhbHVlc1t0XS5wcm9wZXJ0eSkpLHRoaXMuX3ZhbHVlc1t0XS50cmFuc2l0aW9uPU8oZSl8fHZvaWQgMDt9c2VyaWFsaXplKCl7Y29uc3QgdD17fTtmb3IoY29uc3QgZSBvZiBPYmplY3Qua2V5cyh0aGlzLl92YWx1ZXMpKXtjb25zdCByPXRoaXMuZ2V0VmFsdWUoZSk7dm9pZCAwIT09ciYmKHRbZV09cik7Y29uc3Qgbj10aGlzLmdldFRyYW5zaXRpb24oZSk7dm9pZCAwIT09biYmKHRbYCR7ZX0tdHJhbnNpdGlvbmBdPW4pO31yZXR1cm4gdH10cmFuc2l0aW9uZWQodCxlKXtjb25zdCByPW5ldyBJcyh0aGlzLl9wcm9wZXJ0aWVzKTtmb3IoY29uc3QgbiBvZiBPYmplY3Qua2V5cyh0aGlzLl92YWx1ZXMpKXIuX3ZhbHVlc1tuXT10aGlzLl92YWx1ZXNbbl0udHJhbnNpdGlvbmVkKHQsZS5fdmFsdWVzW25dKTtyZXR1cm4gcn11bnRyYW5zaXRpb25lZCgpe2NvbnN0IHQ9bmV3IElzKHRoaXMuX3Byb3BlcnRpZXMpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5rZXlzKHRoaXMuX3ZhbHVlcykpdC5fdmFsdWVzW2VdPXRoaXMuX3ZhbHVlc1tlXS51bnRyYW5zaXRpb25lZCgpO3JldHVybiB0fX1jbGFzcyBrc3tjb25zdHJ1Y3Rvcih0LGUscixuLGkpe2NvbnN0IHM9bi5kZWxheXx8MCxhPW4uZHVyYXRpb258fDA7aT1pfHwwLHRoaXMucHJvcGVydHk9dCx0aGlzLnZhbHVlPWUsdGhpcy5iZWdpbj1pK3MsdGhpcy5lbmQ9dGhpcy5iZWdpbithLHQuc3BlY2lmaWNhdGlvbi50cmFuc2l0aW9uJiYobi5kZWxheXx8bi5kdXJhdGlvbikmJih0aGlzLnByaW9yPXIpO31wb3NzaWJseUV2YWx1YXRlKHQsZSxyKXtjb25zdCBuPXQubm93fHwwLGk9dGhpcy52YWx1ZS5wb3NzaWJseUV2YWx1YXRlKHQsZSxyKSxzPXRoaXMucHJpb3I7aWYocyl7aWYobj50aGlzLmVuZClyZXR1cm4gdGhpcy5wcmlvcj1udWxsLGk7aWYodGhpcy52YWx1ZS5pc0RhdGFEcml2ZW4oKSlyZXR1cm4gdGhpcy5wcmlvcj1udWxsLGk7aWYobjx0aGlzLmJlZ2luKXJldHVybiBzLnBvc3NpYmx5RXZhbHVhdGUodCxlLHIpO3tjb25zdCBhPShuLXRoaXMuYmVnaW4pLyh0aGlzLmVuZC10aGlzLmJlZ2luKTtyZXR1cm4gdGhpcy5wcm9wZXJ0eS5pbnRlcnBvbGF0ZShzLnBvc3NpYmx5RXZhbHVhdGUodCxlLHIpLGksUyhhKSl9fXJldHVybiBpfX1jbGFzcyBJc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9wcm9wZXJ0aWVzPXQsdGhpcy5fdmFsdWVzPU9iamVjdC5jcmVhdGUodC5kZWZhdWx0VHJhbnNpdGlvbmluZ1Byb3BlcnR5VmFsdWVzKTt9cG9zc2libHlFdmFsdWF0ZSh0LGUscil7Y29uc3Qgbj1uZXcgenModGhpcy5fcHJvcGVydGllcyk7Zm9yKGNvbnN0IGkgb2YgT2JqZWN0LmtleXModGhpcy5fdmFsdWVzKSluLl92YWx1ZXNbaV09dGhpcy5fdmFsdWVzW2ldLnBvc3NpYmx5RXZhbHVhdGUodCxlLHIpO3JldHVybiBufWhhc1RyYW5zaXRpb24oKXtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyh0aGlzLl92YWx1ZXMpKWlmKHRoaXMuX3ZhbHVlc1t0XS5wcmlvcilyZXR1cm4gITA7cmV0dXJuICExfX1jbGFzcyBNc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9wcm9wZXJ0aWVzPXQsdGhpcy5fdmFsdWVzPU9iamVjdC5jcmVhdGUodC5kZWZhdWx0UHJvcGVydHlWYWx1ZXMpO31nZXRWYWx1ZSh0KXtyZXR1cm4gTyh0aGlzLl92YWx1ZXNbdF0udmFsdWUpfXNldFZhbHVlKHQsZSl7dGhpcy5fdmFsdWVzW3RdPW5ldyBfcyh0aGlzLl92YWx1ZXNbdF0ucHJvcGVydHksbnVsbD09PWU/dm9pZCAwOk8oZSkpO31zZXJpYWxpemUoKXtjb25zdCB0PXt9O2Zvcihjb25zdCBlIG9mIE9iamVjdC5rZXlzKHRoaXMuX3ZhbHVlcykpe2NvbnN0IHI9dGhpcy5nZXRWYWx1ZShlKTt2b2lkIDAhPT1yJiYodFtlXT1yKTt9cmV0dXJuIHR9cG9zc2libHlFdmFsdWF0ZSh0LGUscil7Y29uc3Qgbj1uZXcgenModGhpcy5fcHJvcGVydGllcyk7Zm9yKGNvbnN0IGkgb2YgT2JqZWN0LmtleXModGhpcy5fdmFsdWVzKSluLl92YWx1ZXNbaV09dGhpcy5fdmFsdWVzW2ldLnBvc3NpYmx5RXZhbHVhdGUodCxlLHIpO3JldHVybiBufX1jbGFzcyBUc3tjb25zdHJ1Y3Rvcih0LGUscil7dGhpcy5wcm9wZXJ0eT10LHRoaXMudmFsdWU9ZSx0aGlzLnBhcmFtZXRlcnM9cjt9aXNDb25zdGFudCgpe3JldHVybiBcImNvbnN0YW50XCI9PT10aGlzLnZhbHVlLmtpbmR9Y29uc3RhbnRPcih0KXtyZXR1cm4gXCJjb25zdGFudFwiPT09dGhpcy52YWx1ZS5raW5kP3RoaXMudmFsdWUudmFsdWU6dH1ldmFsdWF0ZSh0LGUscixuKXtyZXR1cm4gdGhpcy5wcm9wZXJ0eS5ldmFsdWF0ZSh0aGlzLnZhbHVlLHRoaXMucGFyYW1ldGVycyx0LGUscixuKX19Y2xhc3MgenN7Y29uc3RydWN0b3IodCl7dGhpcy5fcHJvcGVydGllcz10LHRoaXMuX3ZhbHVlcz1PYmplY3QuY3JlYXRlKHQuZGVmYXVsdFBvc3NpYmx5RXZhbHVhdGVkVmFsdWVzKTt9Z2V0KHQpe3JldHVybiB0aGlzLl92YWx1ZXNbdF19fWNsYXNzIEJze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3BlY2lmaWNhdGlvbj10O31wb3NzaWJseUV2YWx1YXRlKHQsZSl7cmV0dXJuIHQuZXhwcmVzc2lvbi5ldmFsdWF0ZShlKX1pbnRlcnBvbGF0ZSh0LGUscil7Y29uc3Qgbj1Dclt0aGlzLnNwZWNpZmljYXRpb24udHlwZV07cmV0dXJuIG4/bih0LGUscik6dH19Y2xhc3MgRXN7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNwZWNpZmljYXRpb249dCx0aGlzLm92ZXJyaWRlcz1lO31wb3NzaWJseUV2YWx1YXRlKHQsZSxyLG4pe3JldHVybiBuZXcgVHModGhpcyxcImNvbnN0YW50XCI9PT10LmV4cHJlc3Npb24ua2luZHx8XCJjYW1lcmFcIj09PXQuZXhwcmVzc2lvbi5raW5kP3traW5kOlwiY29uc3RhbnRcIix2YWx1ZTp0LmV4cHJlc3Npb24uZXZhbHVhdGUoZSxudWxsLHt9LHIsbil9OnQuZXhwcmVzc2lvbixlKX1pbnRlcnBvbGF0ZSh0LGUscil7aWYoXCJjb25zdGFudFwiIT09dC52YWx1ZS5raW5kfHxcImNvbnN0YW50XCIhPT1lLnZhbHVlLmtpbmQpcmV0dXJuIHQ7aWYodm9pZCAwPT09dC52YWx1ZS52YWx1ZXx8dm9pZCAwPT09ZS52YWx1ZS52YWx1ZSlyZXR1cm4gbmV3IFRzKHRoaXMse2tpbmQ6XCJjb25zdGFudFwiLHZhbHVlOnZvaWQgMH0sdC5wYXJhbWV0ZXJzKTtjb25zdCBuPUNyW3RoaXMuc3BlY2lmaWNhdGlvbi50eXBlXTtyZXR1cm4gbj9uZXcgVHModGhpcyx7a2luZDpcImNvbnN0YW50XCIsdmFsdWU6bih0LnZhbHVlLnZhbHVlLGUudmFsdWUudmFsdWUscil9LHQucGFyYW1ldGVycyk6dH1ldmFsdWF0ZSh0LGUscixuLGkscyl7cmV0dXJuIFwiY29uc3RhbnRcIj09PXQua2luZD90LnZhbHVlOnQuZXZhbHVhdGUoZSxyLG4saSxzKX19Y2xhc3MgQ3N7Y29uc3RydWN0b3IodCl7dGhpcy5zcGVjaWZpY2F0aW9uPXQ7fXBvc3NpYmx5RXZhbHVhdGUodCxlLHIsbil7cmV0dXJuICEhdC5leHByZXNzaW9uLmV2YWx1YXRlKGUsbnVsbCx7fSxyLG4pfWludGVycG9sYXRlKCl7cmV0dXJuICExfX1jbGFzcyBQc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnByb3BlcnRpZXM9dCx0aGlzLmRlZmF1bHRQcm9wZXJ0eVZhbHVlcz17fSx0aGlzLmRlZmF1bHRUcmFuc2l0aW9uYWJsZVByb3BlcnR5VmFsdWVzPXt9LHRoaXMuZGVmYXVsdFRyYW5zaXRpb25pbmdQcm9wZXJ0eVZhbHVlcz17fSx0aGlzLmRlZmF1bHRQb3NzaWJseUV2YWx1YXRlZFZhbHVlcz17fSx0aGlzLm92ZXJyaWRhYmxlUHJvcGVydGllcz1bXTtjb25zdCBlPW5ldyB3cygwLHt9KTtmb3IoY29uc3QgciBpbiB0KXtjb25zdCBuPXRbcl07bi5zcGVjaWZpY2F0aW9uLm92ZXJyaWRhYmxlJiZ0aGlzLm92ZXJyaWRhYmxlUHJvcGVydGllcy5wdXNoKHIpO2NvbnN0IGk9dGhpcy5kZWZhdWx0UHJvcGVydHlWYWx1ZXNbcl09bmV3IF9zKG4sdm9pZCAwKSxzPXRoaXMuZGVmYXVsdFRyYW5zaXRpb25hYmxlUHJvcGVydHlWYWx1ZXNbcl09bmV3IEFzKG4pO3RoaXMuZGVmYXVsdFRyYW5zaXRpb25pbmdQcm9wZXJ0eVZhbHVlc1tyXT1zLnVudHJhbnNpdGlvbmVkKCksdGhpcy5kZWZhdWx0UG9zc2libHlFdmFsdWF0ZWRWYWx1ZXNbcl09aS5wb3NzaWJseUV2YWx1YXRlKGUpO319fWZ1bmN0aW9uIERzKHQsZSl7cmV0dXJuIDI1NioodD1NKE1hdGguZmxvb3IodCksMCwyNTUpKStNKE1hdGguZmxvb3IoZSksMCwyNTUpfUppKEVzLFwiRGF0YURyaXZlblByb3BlcnR5XCIpLEppKEJzLFwiRGF0YUNvbnN0YW50UHJvcGVydHlcIiksSmkoQ3MsXCJDb2xvclJhbXBQcm9wZXJ0eVwiKTtjb25zdCBWcz17SW50ODpJbnQ4QXJyYXksVWludDg6VWludDhBcnJheSxJbnQxNjpJbnQxNkFycmF5LFVpbnQxNjpVaW50MTZBcnJheSxJbnQzMjpJbnQzMkFycmF5LFVpbnQzMjpVaW50MzJBcnJheSxGbG9hdDMyOkZsb2F0MzJBcnJheX07Y2xhc3MgTHN7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9zdHJ1Y3RBcnJheT10LHRoaXMuX3BvczE9ZSp0aGlzLnNpemUsdGhpcy5fcG9zMj10aGlzLl9wb3MxLzIsdGhpcy5fcG9zND10aGlzLl9wb3MxLzQsdGhpcy5fcG9zOD10aGlzLl9wb3MxLzg7fX1jbGFzcyBGc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaXNUcmFuc2ZlcnJlZD0hMSx0aGlzLmNhcGFjaXR5PS0xLHRoaXMucmVzaXplKDApO31zdGF0aWMgc2VyaWFsaXplKHQsZSl7cmV0dXJuIHQuX3RyaW0oKSxlJiYodC5pc1RyYW5zZmVycmVkPSEwLGUucHVzaCh0LmFycmF5QnVmZmVyKSkse2xlbmd0aDp0Lmxlbmd0aCxhcnJheUJ1ZmZlcjp0LmFycmF5QnVmZmVyfX1zdGF0aWMgZGVzZXJpYWxpemUodCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKHRoaXMucHJvdG90eXBlKTtyZXR1cm4gZS5hcnJheUJ1ZmZlcj10LmFycmF5QnVmZmVyLGUubGVuZ3RoPXQubGVuZ3RoLGUuY2FwYWNpdHk9dC5hcnJheUJ1ZmZlci5ieXRlTGVuZ3RoL2UuYnl0ZXNQZXJFbGVtZW50LGUuX3JlZnJlc2hWaWV3cygpLGV9X3RyaW0oKXt0aGlzLmxlbmd0aCE9PXRoaXMuY2FwYWNpdHkmJih0aGlzLmNhcGFjaXR5PXRoaXMubGVuZ3RoLHRoaXMuYXJyYXlCdWZmZXI9dGhpcy5hcnJheUJ1ZmZlci5zbGljZSgwLHRoaXMubGVuZ3RoKnRoaXMuYnl0ZXNQZXJFbGVtZW50KSx0aGlzLl9yZWZyZXNoVmlld3MoKSk7fWNsZWFyKCl7dGhpcy5sZW5ndGg9MDt9cmVzaXplKHQpe3RoaXMucmVzZXJ2ZSh0KSx0aGlzLmxlbmd0aD10O31yZXNlcnZlKHQpe2lmKHQ+dGhpcy5jYXBhY2l0eSl7dGhpcy5jYXBhY2l0eT1NYXRoLm1heCh0LE1hdGguZmxvb3IoNSp0aGlzLmNhcGFjaXR5KSwxMjgpLHRoaXMuYXJyYXlCdWZmZXI9bmV3IEFycmF5QnVmZmVyKHRoaXMuY2FwYWNpdHkqdGhpcy5ieXRlc1BlckVsZW1lbnQpO2NvbnN0IGU9dGhpcy51aW50ODt0aGlzLl9yZWZyZXNoVmlld3MoKSxlJiZ0aGlzLnVpbnQ4LnNldChlKTt9fV9yZWZyZXNoVmlld3MoKXt0aHJvdyBuZXcgRXJyb3IoXCJfcmVmcmVzaFZpZXdzKCkgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBlYWNoIGNvbmNyZXRlIFN0cnVjdEFycmF5IGxheW91dFwiKX1kZXN0cm95KCl7dGhpcy5pbnQ4PXRoaXMudWludDg9dGhpcy5pbnQxNj10aGlzLnVpbnQxNj10aGlzLmludDMyPXRoaXMudWludDMyPXRoaXMuZmxvYXQzMj1udWxsLHRoaXMuYXJyYXlCdWZmZXI9bnVsbDt9fWZ1bmN0aW9uIFJzKHQsZT0xKXtsZXQgcj0wLG49MDtyZXR1cm4ge21lbWJlcnM6dC5tYXAoKHQ9Pntjb25zdCBpPVZzW3QudHlwZV0uQllURVNfUEVSX0VMRU1FTlQscz1yPVVzKHIsTWF0aC5tYXgoZSxpKSksYT10LmNvbXBvbmVudHN8fDE7cmV0dXJuIG49TWF0aC5tYXgobixpKSxyKz1pKmEse25hbWU6dC5uYW1lLHR5cGU6dC50eXBlLGNvbXBvbmVudHM6YSxvZmZzZXQ6c319KSksc2l6ZTpVcyhyLE1hdGgubWF4KG4sZSkpLGFsaWdubWVudDplfX1mdW5jdGlvbiBVcyh0LGUpe3JldHVybiBNYXRoLmNlaWwodC9lKSplfWNsYXNzICRzIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt9ZW1wbGFjZUJhY2sodCxlKXtjb25zdCByPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShyKzEpLHRoaXMuZW1wbGFjZShyLHQsZSl9ZW1wbGFjZSh0LGUscil7Y29uc3Qgbj0yKnQ7cmV0dXJuIHRoaXMuaW50MTZbbiswXT1lLHRoaXMuaW50MTZbbisxXT1yLHR9fSRzLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9NCxKaSgkcyxcIlN0cnVjdEFycmF5TGF5b3V0Mmk0XCIpO2NsYXNzIGpzIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt9ZW1wbGFjZUJhY2sodCxlLHIpe2NvbnN0IG49dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKG4rMSksdGhpcy5lbXBsYWNlKG4sdCxlLHIpfWVtcGxhY2UodCxlLHIsbil7Y29uc3QgaT0zKnQ7cmV0dXJuIHRoaXMuaW50MTZbaSswXT1lLHRoaXMuaW50MTZbaSsxXT1yLHRoaXMuaW50MTZbaSsyXT1uLHR9fWpzLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9NixKaShqcyxcIlN0cnVjdEFycmF5TGF5b3V0M2k2XCIpO2NsYXNzIE9zIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt9ZW1wbGFjZUJhY2sodCxlLHIsbil7Y29uc3QgaT10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUoaSsxKSx0aGlzLmVtcGxhY2UoaSx0LGUscixuKX1lbXBsYWNlKHQsZSxyLG4saSl7Y29uc3Qgcz00KnQ7cmV0dXJuIHRoaXMuaW50MTZbcyswXT1lLHRoaXMuaW50MTZbcysxXT1yLHRoaXMuaW50MTZbcysyXT1uLHRoaXMuaW50MTZbcyszXT1pLHR9fU9zLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9OCxKaShPcyxcIlN0cnVjdEFycmF5TGF5b3V0NGk4XCIpO2NsYXNzIHFzIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmZsb2F0MzI9bmV3IEZsb2F0MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt9ZW1wbGFjZUJhY2sodCxlLHIsbixpLHMsYSl7Y29uc3Qgbz10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUobysxKSx0aGlzLmVtcGxhY2Uobyx0LGUscixuLGkscyxhKX1lbXBsYWNlKHQsZSxyLG4saSxzLGEsbyl7Y29uc3QgbD02KnQsdT0xMip0LGM9Myp0O3JldHVybiB0aGlzLmludDE2W2wrMF09ZSx0aGlzLmludDE2W2wrMV09cix0aGlzLnVpbnQ4W3UrNF09bix0aGlzLnVpbnQ4W3UrNV09aSx0aGlzLnVpbnQ4W3UrNl09cyx0aGlzLnVpbnQ4W3UrN109YSx0aGlzLmZsb2F0MzJbYysyXT1vLHR9fXFzLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MTIsSmkocXMsXCJTdHJ1Y3RBcnJheUxheW91dDJpNHViMWYxMlwiKTtjbGFzcyBOcyBleHRlbmRzIEZze19yZWZyZXNoVmlld3MoKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuZmxvYXQzMj1uZXcgRmxvYXQzMkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpO31lbXBsYWNlQmFjayh0LGUscixuKXtjb25zdCBpPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShpKzEpLHRoaXMuZW1wbGFjZShpLHQsZSxyLG4pfWVtcGxhY2UodCxlLHIsbixpKXtjb25zdCBzPTQqdDtyZXR1cm4gdGhpcy5mbG9hdDMyW3MrMF09ZSx0aGlzLmZsb2F0MzJbcysxXT1yLHRoaXMuZmxvYXQzMltzKzJdPW4sdGhpcy5mbG9hdDMyW3MrM109aSx0fX1Ocy5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTE2LEppKE5zLFwiU3RydWN0QXJyYXlMYXlvdXQ0ZjE2XCIpO2NsYXNzIEdzIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuZmxvYXQzMj1uZXcgRmxvYXQzMkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpO31lbXBsYWNlQmFjayh0LGUscixuLGkpe2NvbnN0IHM9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKHMrMSksdGhpcy5lbXBsYWNlKHMsdCxlLHIsbixpKX1lbXBsYWNlKHQsZSxyLG4saSxzKXtjb25zdCBhPTYqdCxvPTMqdDtyZXR1cm4gdGhpcy51aW50MTZbYSswXT1lLHRoaXMudWludDE2W2ErMV09cix0aGlzLnVpbnQxNlthKzJdPW4sdGhpcy51aW50MTZbYSszXT1pLHRoaXMuZmxvYXQzMltvKzJdPXMsdH19R3MucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD0xMixKaShHcyxcIlN0cnVjdEFycmF5TGF5b3V0NHVpMWYxMlwiKTtjbGFzcyBacyBleHRlbmRzIEZze19yZWZyZXNoVmlld3MoKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMudWludDE2PW5ldyBVaW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt9ZW1wbGFjZUJhY2sodCxlLHIsbil7Y29uc3QgaT10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUoaSsxKSx0aGlzLmVtcGxhY2UoaSx0LGUscixuKX1lbXBsYWNlKHQsZSxyLG4saSl7Y29uc3Qgcz00KnQ7cmV0dXJuIHRoaXMudWludDE2W3MrMF09ZSx0aGlzLnVpbnQxNltzKzFdPXIsdGhpcy51aW50MTZbcysyXT1uLHRoaXMudWludDE2W3MrM109aSx0fX1acy5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTgsSmkoWnMsXCJTdHJ1Y3RBcnJheUxheW91dDR1aThcIik7Y2xhc3MgS3MgZXh0ZW5kcyBGc3tfcmVmcmVzaFZpZXdzKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmludDE2PW5ldyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpO31lbXBsYWNlQmFjayh0LGUscixuLGkscyl7Y29uc3QgYT10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUoYSsxKSx0aGlzLmVtcGxhY2UoYSx0LGUscixuLGkscyl9ZW1wbGFjZSh0LGUscixuLGkscyxhKXtjb25zdCBvPTYqdDtyZXR1cm4gdGhpcy5pbnQxNltvKzBdPWUsdGhpcy5pbnQxNltvKzFdPXIsdGhpcy5pbnQxNltvKzJdPW4sdGhpcy5pbnQxNltvKzNdPWksdGhpcy5pbnQxNltvKzRdPXMsdGhpcy5pbnQxNltvKzVdPWEsdH19S3MucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD0xMixKaShLcyxcIlN0cnVjdEFycmF5TGF5b3V0NmkxMlwiKTtjbGFzcyBYcyBleHRlbmRzIEZze19yZWZyZXNoVmlld3MoKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuaW50MTY9bmV3IEludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpO31lbXBsYWNlQmFjayh0LGUscixuLGkscyxhLG8sbCx1LGMsaCl7Y29uc3QgcD10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUocCsxKSx0aGlzLmVtcGxhY2UocCx0LGUscixuLGkscyxhLG8sbCx1LGMsaCl9ZW1wbGFjZSh0LGUscixuLGkscyxhLG8sbCx1LGMsaCxwKXtjb25zdCBkPTEyKnQ7cmV0dXJuIHRoaXMuaW50MTZbZCswXT1lLHRoaXMuaW50MTZbZCsxXT1yLHRoaXMuaW50MTZbZCsyXT1uLHRoaXMuaW50MTZbZCszXT1pLHRoaXMudWludDE2W2QrNF09cyx0aGlzLnVpbnQxNltkKzVdPWEsdGhpcy51aW50MTZbZCs2XT1vLHRoaXMudWludDE2W2QrN109bCx0aGlzLmludDE2W2QrOF09dSx0aGlzLmludDE2W2QrOV09Yyx0aGlzLmludDE2W2QrMTBdPWgsdGhpcy5pbnQxNltkKzExXT1wLHR9fVhzLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MjQsSmkoWHMsXCJTdHJ1Y3RBcnJheUxheW91dDRpNHVpNGkyNFwiKTtjbGFzcyBKcyBleHRlbmRzIEZze19yZWZyZXNoVmlld3MoKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuaW50MTY9bmV3IEludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5mbG9hdDMyPW5ldyBGbG9hdDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcik7fWVtcGxhY2VCYWNrKHQsZSxyLG4saSxzKXtjb25zdCBhPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShhKzEpLHRoaXMuZW1wbGFjZShhLHQsZSxyLG4saSxzKX1lbXBsYWNlKHQsZSxyLG4saSxzLGEpe2NvbnN0IG89MTAqdCxsPTUqdDtyZXR1cm4gdGhpcy5pbnQxNltvKzBdPWUsdGhpcy5pbnQxNltvKzFdPXIsdGhpcy5pbnQxNltvKzJdPW4sdGhpcy5mbG9hdDMyW2wrMl09aSx0aGlzLmZsb2F0MzJbbCszXT1zLHRoaXMuZmxvYXQzMltsKzRdPWEsdH19SnMucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD0yMCxKaShKcyxcIlN0cnVjdEFycmF5TGF5b3V0M2kzZjIwXCIpO2NsYXNzIEhzIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MzI9bmV3IFVpbnQzMkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpO31lbXBsYWNlQmFjayh0KXtjb25zdCBlPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShlKzEpLHRoaXMuZW1wbGFjZShlLHQpfWVtcGxhY2UodCxlKXtyZXR1cm4gdGhpcy51aW50MzJbMSp0KzBdPWUsdH19SHMucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD00LEppKEhzLFwiU3RydWN0QXJyYXlMYXlvdXQxdWw0XCIpO2NsYXNzIFlzIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmZsb2F0MzI9bmV3IEZsb2F0MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLnVpbnQzMj1uZXcgVWludDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpO31lbXBsYWNlQmFjayh0LGUscixuLGkscyxhLG8sbCx1LGMsaCxwKXtjb25zdCBkPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShkKzEpLHRoaXMuZW1wbGFjZShkLHQsZSxyLG4saSxzLGEsbyxsLHUsYyxoLHApfWVtcGxhY2UodCxlLHIsbixpLHMsYSxvLGwsdSxjLGgscCxkKXtjb25zdCBmPTIwKnQseT0xMCp0O3JldHVybiB0aGlzLmludDE2W2YrMF09ZSx0aGlzLmludDE2W2YrMV09cix0aGlzLmludDE2W2YrMl09bix0aGlzLmludDE2W2YrM109aSx0aGlzLmludDE2W2YrNF09cyx0aGlzLmZsb2F0MzJbeSszXT1hLHRoaXMuZmxvYXQzMlt5KzRdPW8sdGhpcy5mbG9hdDMyW3krNV09bCx0aGlzLmZsb2F0MzJbeSs2XT11LHRoaXMuaW50MTZbZisxNF09Yyx0aGlzLnVpbnQzMlt5KzhdPWgsdGhpcy51aW50MTZbZisxOF09cCx0aGlzLnVpbnQxNltmKzE5XT1kLHR9fVlzLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9NDAsSmkoWXMsXCJTdHJ1Y3RBcnJheUxheW91dDVpNGYxaTF1bDJ1aTQwXCIpO2NsYXNzIFdzIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt9ZW1wbGFjZUJhY2sodCxlLHIsbixpLHMsYSl7Y29uc3Qgbz10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUobysxKSx0aGlzLmVtcGxhY2Uobyx0LGUscixuLGkscyxhKX1lbXBsYWNlKHQsZSxyLG4saSxzLGEsbyl7Y29uc3QgbD04KnQ7cmV0dXJuIHRoaXMuaW50MTZbbCswXT1lLHRoaXMuaW50MTZbbCsxXT1yLHRoaXMuaW50MTZbbCsyXT1uLHRoaXMuaW50MTZbbCs0XT1pLHRoaXMuaW50MTZbbCs1XT1zLHRoaXMuaW50MTZbbCs2XT1hLHRoaXMuaW50MTZbbCs3XT1vLHR9fVdzLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MTYsSmkoV3MsXCJTdHJ1Y3RBcnJheUxheW91dDNpMmkyaTE2XCIpO2NsYXNzIFFzIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5mbG9hdDMyPW5ldyBGbG9hdDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt9ZW1wbGFjZUJhY2sodCxlLHIsbixpKXtjb25zdCBzPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShzKzEpLHRoaXMuZW1wbGFjZShzLHQsZSxyLG4saSl9ZW1wbGFjZSh0LGUscixuLGkscyl7Y29uc3QgYT00KnQsbz04KnQ7cmV0dXJuIHRoaXMuZmxvYXQzMlthKzBdPWUsdGhpcy5mbG9hdDMyW2ErMV09cix0aGlzLmZsb2F0MzJbYSsyXT1uLHRoaXMuaW50MTZbbys2XT1pLHRoaXMuaW50MTZbbys3XT1zLHR9fVFzLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MTYsSmkoUXMsXCJTdHJ1Y3RBcnJheUxheW91dDJmMWYyaTE2XCIpO2NsYXNzIHRhIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5mbG9hdDMyPW5ldyBGbG9hdDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcik7fWVtcGxhY2VCYWNrKHQsZSxyLG4pe2NvbnN0IGk9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKGkrMSksdGhpcy5lbXBsYWNlKGksdCxlLHIsbil9ZW1wbGFjZSh0LGUscixuLGkpe2NvbnN0IHM9MTIqdCxhPTMqdDtyZXR1cm4gdGhpcy51aW50OFtzKzBdPWUsdGhpcy51aW50OFtzKzFdPXIsdGhpcy5mbG9hdDMyW2ErMV09bix0aGlzLmZsb2F0MzJbYSsyXT1pLHR9fXRhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MTIsSmkodGEsXCJTdHJ1Y3RBcnJheUxheW91dDJ1YjJmMTJcIik7Y2xhc3MgZWEgZXh0ZW5kcyBGc3tfcmVmcmVzaFZpZXdzKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmZsb2F0MzI9bmV3IEZsb2F0MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt9ZW1wbGFjZUJhY2sodCxlLHIpe2NvbnN0IG49dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKG4rMSksdGhpcy5lbXBsYWNlKG4sdCxlLHIpfWVtcGxhY2UodCxlLHIsbil7Y29uc3QgaT0zKnQ7cmV0dXJuIHRoaXMuZmxvYXQzMltpKzBdPWUsdGhpcy5mbG9hdDMyW2krMV09cix0aGlzLmZsb2F0MzJbaSsyXT1uLHR9fWVhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MTIsSmkoZWEsXCJTdHJ1Y3RBcnJheUxheW91dDNmMTJcIik7Y2xhc3MgcmEgZXh0ZW5kcyBGc3tfcmVmcmVzaFZpZXdzKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLnVpbnQxNj1uZXcgVWludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlcik7fWVtcGxhY2VCYWNrKHQsZSxyKXtjb25zdCBuPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShuKzEpLHRoaXMuZW1wbGFjZShuLHQsZSxyKX1lbXBsYWNlKHQsZSxyLG4pe2NvbnN0IGk9Myp0O3JldHVybiB0aGlzLnVpbnQxNltpKzBdPWUsdGhpcy51aW50MTZbaSsxXT1yLHRoaXMudWludDE2W2krMl09bix0fX1yYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTYsSmkocmEsXCJTdHJ1Y3RBcnJheUxheW91dDN1aTZcIik7Y2xhc3MgbmEgZXh0ZW5kcyBGc3tfcmVmcmVzaFZpZXdzKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmludDE2PW5ldyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuZmxvYXQzMj1uZXcgRmxvYXQzMkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMudWludDE2PW5ldyBVaW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLnVpbnQzMj1uZXcgVWludDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcik7fWVtcGxhY2VCYWNrKHQsZSxyLG4saSxzLGEsbyxsLHUsYyxoLHAsZCxmLHksbSxnLHgsdixiKXtjb25zdCB3PXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZSh3KzEpLHRoaXMuZW1wbGFjZSh3LHQsZSxyLG4saSxzLGEsbyxsLHUsYyxoLHAsZCxmLHksbSxnLHgsdixiKX1lbXBsYWNlKHQsZSxyLG4saSxzLGEsbyxsLHUsYyxoLHAsZCxmLHksbSxnLHgsdixiLHcpe2NvbnN0IF89MzAqdCxBPTE1KnQsUz02MCp0O3JldHVybiB0aGlzLmludDE2W18rMF09ZSx0aGlzLmludDE2W18rMV09cix0aGlzLmludDE2W18rMl09bix0aGlzLmZsb2F0MzJbQSsyXT1pLHRoaXMuZmxvYXQzMltBKzNdPXMsdGhpcy51aW50MTZbXys4XT1hLHRoaXMudWludDE2W18rOV09byx0aGlzLnVpbnQzMltBKzVdPWwsdGhpcy51aW50MzJbQSs2XT11LHRoaXMudWludDMyW0ErN109Yyx0aGlzLnVpbnQxNltfKzE2XT1oLHRoaXMudWludDE2W18rMTddPXAsdGhpcy51aW50MTZbXysxOF09ZCx0aGlzLmZsb2F0MzJbQSsxMF09Zix0aGlzLmZsb2F0MzJbQSsxMV09eSx0aGlzLnVpbnQ4W1MrNDhdPW0sdGhpcy51aW50OFtTKzQ5XT1nLHRoaXMudWludDhbUys1MF09eCx0aGlzLnVpbnQzMltBKzEzXT12LHRoaXMuaW50MTZbXysyOF09Yix0aGlzLnVpbnQ4W1MrNThdPXcsdH19bmEucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD02MCxKaShuYSxcIlN0cnVjdEFycmF5TGF5b3V0M2kyZjJ1aTN1bDN1aTJmM3ViMXVsMWkxdWI2MFwiKTtjbGFzcyBpYSBleHRlbmRzIEZze19yZWZyZXNoVmlld3MoKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuaW50MTY9bmV3IEludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5mbG9hdDMyPW5ldyBGbG9hdDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMudWludDMyPW5ldyBVaW50MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt9ZW1wbGFjZUJhY2sodCxlLHIsbixpLHMsYSxvLGwsdSxjLGgscCxkLGYseSxtLGcseCx2LGIsdyxfLEEsUyxrLEksTSxULHope2NvbnN0IEI9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKEIrMSksdGhpcy5lbXBsYWNlKEIsdCxlLHIsbixpLHMsYSxvLGwsdSxjLGgscCxkLGYseSxtLGcseCx2LGIsdyxfLEEsUyxrLEksTSxULHopfWVtcGxhY2UodCxlLHIsbixpLHMsYSxvLGwsdSxjLGgscCxkLGYseSxtLGcseCx2LGIsdyxfLEEsUyxrLEksTSxULHosQil7Y29uc3QgRT0zOCp0LEM9MTkqdDtyZXR1cm4gdGhpcy5pbnQxNltFKzBdPWUsdGhpcy5pbnQxNltFKzFdPXIsdGhpcy5pbnQxNltFKzJdPW4sdGhpcy5mbG9hdDMyW0MrMl09aSx0aGlzLmZsb2F0MzJbQyszXT1zLHRoaXMuaW50MTZbRSs4XT1hLHRoaXMuaW50MTZbRSs5XT1vLHRoaXMuaW50MTZbRSsxMF09bCx0aGlzLmludDE2W0UrMTFdPXUsdGhpcy5pbnQxNltFKzEyXT1jLHRoaXMuaW50MTZbRSsxM109aCx0aGlzLnVpbnQxNltFKzE0XT1wLHRoaXMudWludDE2W0UrMTVdPWQsdGhpcy51aW50MTZbRSsxNl09Zix0aGlzLnVpbnQxNltFKzE3XT15LHRoaXMudWludDE2W0UrMThdPW0sdGhpcy51aW50MTZbRSsxOV09Zyx0aGlzLnVpbnQxNltFKzIwXT14LHRoaXMudWludDE2W0UrMjFdPXYsdGhpcy51aW50MTZbRSsyMl09Yix0aGlzLnVpbnQxNltFKzIzXT13LHRoaXMudWludDE2W0UrMjRdPV8sdGhpcy51aW50MTZbRSsyNV09QSx0aGlzLnVpbnQxNltFKzI2XT1TLHRoaXMudWludDE2W0UrMjddPWssdGhpcy51aW50MTZbRSsyOF09SSx0aGlzLnVpbnQzMltDKzE1XT1NLHRoaXMuZmxvYXQzMltDKzE2XT1ULHRoaXMuZmxvYXQzMltDKzE3XT16LHRoaXMuZmxvYXQzMltDKzE4XT1CLHR9fWlhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9NzYsSmkoaWEsXCJTdHJ1Y3RBcnJheUxheW91dDNpMmY2aTE1dWkxdWwzZjc2XCIpO2NsYXNzIHNhIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5mbG9hdDMyPW5ldyBGbG9hdDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcik7fWVtcGxhY2VCYWNrKHQpe2NvbnN0IGU9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKGUrMSksdGhpcy5lbXBsYWNlKGUsdCl9ZW1wbGFjZSh0LGUpe3JldHVybiB0aGlzLmZsb2F0MzJbMSp0KzBdPWUsdH19c2EucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD00LEppKHNhLFwiU3RydWN0QXJyYXlMYXlvdXQxZjRcIik7Y2xhc3MgYWEgZXh0ZW5kcyBGc3tfcmVmcmVzaFZpZXdzKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmZsb2F0MzI9bmV3IEZsb2F0MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt9ZW1wbGFjZUJhY2sodCxlLHIsbixpKXtjb25zdCBzPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShzKzEpLHRoaXMuZW1wbGFjZShzLHQsZSxyLG4saSl9ZW1wbGFjZSh0LGUscixuLGkscyl7Y29uc3QgYT01KnQ7cmV0dXJuIHRoaXMuZmxvYXQzMlthKzBdPWUsdGhpcy5mbG9hdDMyW2ErMV09cix0aGlzLmZsb2F0MzJbYSsyXT1uLHRoaXMuZmxvYXQzMlthKzNdPWksdGhpcy5mbG9hdDMyW2ErNF09cyx0fX1hYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTIwLEppKGFhLFwiU3RydWN0QXJyYXlMYXlvdXQ1ZjIwXCIpO2NsYXNzIG9hIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MzI9bmV3IFVpbnQzMkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMudWludDE2PW5ldyBVaW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt9ZW1wbGFjZUJhY2sodCxlLHIsbil7Y29uc3QgaT10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUoaSsxKSx0aGlzLmVtcGxhY2UoaSx0LGUscixuKX1lbXBsYWNlKHQsZSxyLG4saSl7Y29uc3Qgcz02KnQ7cmV0dXJuIHRoaXMudWludDMyWzMqdCswXT1lLHRoaXMudWludDE2W3MrMl09cix0aGlzLnVpbnQxNltzKzNdPW4sdGhpcy51aW50MTZbcys0XT1pLHR9fW9hLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MTIsSmkob2EsXCJTdHJ1Y3RBcnJheUxheW91dDF1bDN1aTEyXCIpO2NsYXNzIGxhIGV4dGVuZHMgRnN7X3JlZnJlc2hWaWV3cygpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpO31lbXBsYWNlQmFjayh0LGUpe2NvbnN0IHI9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKHIrMSksdGhpcy5lbXBsYWNlKHIsdCxlKX1lbXBsYWNlKHQsZSxyKXtjb25zdCBuPTIqdDtyZXR1cm4gdGhpcy51aW50MTZbbiswXT1lLHRoaXMudWludDE2W24rMV09cix0fX1sYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTQsSmkobGEsXCJTdHJ1Y3RBcnJheUxheW91dDJ1aTRcIik7Y2xhc3MgdWEgZXh0ZW5kcyBGc3tfcmVmcmVzaFZpZXdzKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLnVpbnQxNj1uZXcgVWludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlcik7fWVtcGxhY2VCYWNrKHQpe2NvbnN0IGU9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKGUrMSksdGhpcy5lbXBsYWNlKGUsdCl9ZW1wbGFjZSh0LGUpe3JldHVybiB0aGlzLnVpbnQxNlsxKnQrMF09ZSx0fX11YS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTIsSmkodWEsXCJTdHJ1Y3RBcnJheUxheW91dDF1aTJcIik7Y2xhc3MgY2EgZXh0ZW5kcyBGc3tfcmVmcmVzaFZpZXdzKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmZsb2F0MzI9bmV3IEZsb2F0MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKTt9ZW1wbGFjZUJhY2sodCxlKXtjb25zdCByPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShyKzEpLHRoaXMuZW1wbGFjZShyLHQsZSl9ZW1wbGFjZSh0LGUscil7Y29uc3Qgbj0yKnQ7cmV0dXJuIHRoaXMuZmxvYXQzMltuKzBdPWUsdGhpcy5mbG9hdDMyW24rMV09cix0fX1jYS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTgsSmkoY2EsXCJTdHJ1Y3RBcnJheUxheW91dDJmOFwiKTtjbGFzcyBoYSBleHRlbmRzIExze2dldCBwcm9qZWN0ZWRBbmNob3JYKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMF19Z2V0IHByb2plY3RlZEFuY2hvclkoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisxXX1nZXQgcHJvamVjdGVkQW5jaG9yWigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzJdfWdldCB0aWxlQW5jaG9yWCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzNdfWdldCB0aWxlQW5jaG9yWSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzRdfWdldCB4MSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrM119Z2V0IHkxKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmZsb2F0MzJbdGhpcy5fcG9zNCs0XX1nZXQgeDIoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuZmxvYXQzMlt0aGlzLl9wb3M0KzVdfWdldCB5Migpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrNl19Z2V0IHBhZGRpbmcoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisxNF19Z2V0IGZlYXR1cmVJbmRleCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCs4XX1nZXQgc291cmNlTGF5ZXJJbmRleCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxOF19Z2V0IGJ1Y2tldEluZGV4KCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzE5XX19aGEucHJvdG90eXBlLnNpemU9NDA7Y2xhc3MgcGEgZXh0ZW5kcyBZc3tnZXQodCl7cmV0dXJuIG5ldyBoYSh0aGlzLHQpfX1KaShwYSxcIkNvbGxpc2lvbkJveEFycmF5XCIpO2NsYXNzIGRhIGV4dGVuZHMgTHN7Z2V0IHByb2plY3RlZEFuY2hvclgoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMiswXX1nZXQgcHJvamVjdGVkQW5jaG9yWSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzFdfWdldCBwcm9qZWN0ZWRBbmNob3JaKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMl19Z2V0IHRpbGVBbmNob3JYKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmZsb2F0MzJbdGhpcy5fcG9zNCsyXX1nZXQgdGlsZUFuY2hvclkoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuZmxvYXQzMlt0aGlzLl9wb3M0KzNdfWdldCBnbHlwaFN0YXJ0SW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrOF19Z2V0IG51bUdseXBocygpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMis5XX1nZXQgdmVydGV4U3RhcnRJbmRleCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCs1XX1nZXQgbGluZVN0YXJ0SW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDMyW3RoaXMuX3BvczQrNl19Z2V0IGxpbmVMZW5ndGgoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDMyW3RoaXMuX3BvczQrN119Z2V0IHNlZ21lbnQoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTZdfWdldCBsb3dlclNpemUoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTddfWdldCB1cHBlclNpemUoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMThdfWdldCBsaW5lT2Zmc2V0WCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrMTBdfWdldCBsaW5lT2Zmc2V0WSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrMTFdfWdldCB3cml0aW5nTW9kZSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50OFt0aGlzLl9wb3MxKzQ4XX1nZXQgcGxhY2VkT3JpZW50YXRpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDhbdGhpcy5fcG9zMSs0OV19c2V0IHBsYWNlZE9yaWVudGF0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQ4W3RoaXMuX3BvczErNDldPXQ7fWdldCBoaWRkZW4oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDhbdGhpcy5fcG9zMSs1MF19c2V0IGhpZGRlbih0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50OFt0aGlzLl9wb3MxKzUwXT10O31nZXQgY3Jvc3NUaWxlSUQoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDMyW3RoaXMuX3BvczQrMTNdfXNldCBjcm9zc1RpbGVJRCh0KXt0aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCsxM109dDt9Z2V0IGFzc29jaWF0ZWRJY29uSW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisyOF19Z2V0IGZsaXBTdGF0ZSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50OFt0aGlzLl9wb3MxKzU4XX1zZXQgZmxpcFN0YXRlKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQ4W3RoaXMuX3BvczErNThdPXQ7fX1kYS5wcm90b3R5cGUuc2l6ZT02MDtjbGFzcyBmYSBleHRlbmRzIG5he2dldCh0KXtyZXR1cm4gbmV3IGRhKHRoaXMsdCl9fUppKGZhLFwiUGxhY2VkU3ltYm9sQXJyYXlcIik7Y2xhc3MgeWEgZXh0ZW5kcyBMc3tnZXQgcHJvamVjdGVkQW5jaG9yWCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzBdfWdldCBwcm9qZWN0ZWRBbmNob3JZKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMV19Z2V0IHByb2plY3RlZEFuY2hvclooKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisyXX1nZXQgdGlsZUFuY2hvclgoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuZmxvYXQzMlt0aGlzLl9wb3M0KzJdfWdldCB0aWxlQW5jaG9yWSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrM119Z2V0IHJpZ2h0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4KCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrOF19Z2V0IGNlbnRlckp1c3RpZmllZFRleHRTeW1ib2xJbmRleCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzldfWdldCBsZWZ0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4KCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMTBdfWdldCB2ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzExXX1nZXQgcGxhY2VkSWNvblN5bWJvbEluZGV4KCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMTJdfWdldCB2ZXJ0aWNhbFBsYWNlZEljb25TeW1ib2xJbmRleCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzEzXX1nZXQga2V5KCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzE0XX1nZXQgdGV4dEJveFN0YXJ0SW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTVdfWdldCB0ZXh0Qm94RW5kSW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTZdfWdldCB2ZXJ0aWNhbFRleHRCb3hTdGFydEluZGV4KCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzE3XX1nZXQgdmVydGljYWxUZXh0Qm94RW5kSW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMThdfWdldCBpY29uQm94U3RhcnRJbmRleCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxOV19Z2V0IGljb25Cb3hFbmRJbmRleCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisyMF19Z2V0IHZlcnRpY2FsSWNvbkJveFN0YXJ0SW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMjFdfWdldCB2ZXJ0aWNhbEljb25Cb3hFbmRJbmRleCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisyMl19Z2V0IGZlYXR1cmVJbmRleCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisyM119Z2V0IG51bUhvcml6b250YWxHbHlwaFZlcnRpY2VzKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzI0XX1nZXQgbnVtVmVydGljYWxHbHlwaFZlcnRpY2VzKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzI1XX1nZXQgbnVtSWNvblZlcnRpY2VzKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzI2XX1nZXQgbnVtVmVydGljYWxJY29uVmVydGljZXMoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMjddfWdldCB1c2VSdW50aW1lQ29sbGlzaW9uQ2lyY2xlcygpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisyOF19Z2V0IGNyb3NzVGlsZUlEKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQzMlt0aGlzLl9wb3M0KzE1XX1zZXQgY3Jvc3NUaWxlSUQodCl7dGhpcy5fc3RydWN0QXJyYXkudWludDMyW3RoaXMuX3BvczQrMTVdPXQ7fWdldCB0ZXh0T2Zmc2V0MCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrMTZdfWdldCB0ZXh0T2Zmc2V0MSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrMTddfWdldCBjb2xsaXNpb25DaXJjbGVEaWFtZXRlcigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrMThdfX15YS5wcm90b3R5cGUuc2l6ZT03NjtjbGFzcyBtYSBleHRlbmRzIGlhe2dldCh0KXtyZXR1cm4gbmV3IHlhKHRoaXMsdCl9fUppKG1hLFwiU3ltYm9sSW5zdGFuY2VBcnJheVwiKTtjbGFzcyBnYSBleHRlbmRzIHNhe2dldG9mZnNldFgodCl7cmV0dXJuIHRoaXMuZmxvYXQzMlsxKnQrMF19fUppKGdhLFwiR2x5cGhPZmZzZXRBcnJheVwiKTtjbGFzcyB4YSBleHRlbmRzICRze2dldHgodCl7cmV0dXJuIHRoaXMuaW50MTZbMip0KzBdfWdldHkodCl7cmV0dXJuIHRoaXMuaW50MTZbMip0KzFdfX1KaSh4YSxcIlN5bWJvbExpbmVWZXJ0ZXhBcnJheVwiKTtjbGFzcyB2YSBleHRlbmRzIExze2dldCBmZWF0dXJlSW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDMyW3RoaXMuX3BvczQrMF19Z2V0IHNvdXJjZUxheWVySW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMl19Z2V0IGJ1Y2tldEluZGV4KCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzNdfWdldCBsYXlvdXRWZXJ0ZXhBcnJheU9mZnNldCgpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMis0XX19dmEucHJvdG90eXBlLnNpemU9MTI7Y2xhc3MgYmEgZXh0ZW5kcyBvYXtnZXQodCl7cmV0dXJuIG5ldyB2YSh0aGlzLHQpfX1KaShiYSxcIkZlYXR1cmVJbmRleEFycmF5XCIpO2NsYXNzIHdhIGV4dGVuZHMgbGF7Z2V0YV9jZW50cm9pZF9wb3MwKHQpe3JldHVybiB0aGlzLnVpbnQxNlsyKnQrMF19Z2V0YV9jZW50cm9pZF9wb3MxKHQpe3JldHVybiB0aGlzLnVpbnQxNlsyKnQrMV19fUppKHdhLFwiRmlsbEV4dHJ1c2lvbkNlbnRyb2lkQXJyYXlcIik7Y29uc3QgX2E9UnMoW3tuYW1lOlwiYV9wYXR0ZXJuXCIsY29tcG9uZW50czo0LHR5cGU6XCJVaW50MTZcIn0se25hbWU6XCJhX3BpeGVsX3JhdGlvXCIsY29tcG9uZW50czoxLHR5cGU6XCJGbG9hdDMyXCJ9XSksQWE9UnMoW3tuYW1lOlwiYV9kYXNoXCIsY29tcG9uZW50czo0LHR5cGU6XCJVaW50MTZcIn1dKTt2YXIgU2E9e2V4cG9ydHM6e319LGthPXtleHBvcnRzOnt9fTtrYS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpLHMsYSxvLGwsdTtmb3Iobj10Lmxlbmd0aC0ocj0zJnQubGVuZ3RoKSxpPWUsYT0zNDMyOTE4MzUzLG89NDYxODQ1OTA3LHU9MDt1PG47KWw9MjU1JnQuY2hhckNvZGVBdCh1KXwoMjU1JnQuY2hhckNvZGVBdCgrK3UpKTw8OHwoMjU1JnQuY2hhckNvZGVBdCgrK3UpKTw8MTZ8KDI1NSZ0LmNoYXJDb2RlQXQoKyt1KSk8PDI0LCsrdSxpPTI3NDkyKyg2NTUzNSYocz01Kig2NTUzNSYoaT0oaV49bD0oNjU1MzUmKGw9KGw9KDY1NTM1JmwpKmErKCgobD4+PjE2KSphJjY1NTM1KTw8MTYpJjQyOTQ5NjcyOTUpPDwxNXxsPj4+MTcpKSpvKygoKGw+Pj4xNikqbyY2NTUzNSk8PDE2KSY0Mjk0OTY3Mjk1KTw8MTN8aT4+PjE5KSkrKCg1KihpPj4+MTYpJjY1NTM1KTw8MTYpJjQyOTQ5NjcyOTUpKSsoKDU4OTY0KyhzPj4+MTYpJjY1NTM1KTw8MTYpO3N3aXRjaChsPTAscil7Y2FzZSAzOmxePSgyNTUmdC5jaGFyQ29kZUF0KHUrMikpPDwxNjtjYXNlIDI6bF49KDI1NSZ0LmNoYXJDb2RlQXQodSsxKSk8PDg7Y2FzZSAxOmlePWw9KDY1NTM1JihsPShsPSg2NTUzNSYobF49MjU1JnQuY2hhckNvZGVBdCh1KSkpKmErKCgobD4+PjE2KSphJjY1NTM1KTw8MTYpJjQyOTQ5NjcyOTUpPDwxNXxsPj4+MTcpKSpvKygoKGw+Pj4xNikqbyY2NTUzNSk8PDE2KSY0Mjk0OTY3Mjk1O31yZXR1cm4gaV49dC5sZW5ndGgsaT0yMjQ2ODIyNTA3Kig2NTUzNSYoaV49aT4+PjE2KSkrKCgyMjQ2ODIyNTA3KihpPj4+MTYpJjY1NTM1KTw8MTYpJjQyOTQ5NjcyOTUsaT0zMjY2NDg5OTA5Kig2NTUzNSYoaV49aT4+PjEzKSkrKCgzMjY2NDg5OTA5KihpPj4+MTYpJjY1NTM1KTw8MTYpJjQyOTQ5NjcyOTUsKGlePWk+Pj4xNik+Pj4wfTt2YXIgSWE9a2EuZXhwb3J0cyxNYT17ZXhwb3J0czp7fX07TWEuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuPXQubGVuZ3RoLGk9ZV5uLHM9MDtuPj00OylyPTE1NDA0ODM0NzcqKDY1NTM1JihyPTI1NSZ0LmNoYXJDb2RlQXQocyl8KDI1NSZ0LmNoYXJDb2RlQXQoKytzKSk8PDh8KDI1NSZ0LmNoYXJDb2RlQXQoKytzKSk8PDE2fCgyNTUmdC5jaGFyQ29kZUF0KCsrcykpPDwyNCkpKygoMTU0MDQ4MzQ3Nyoocj4+PjE2KSY2NTUzNSk8PDE2KSxpPTE1NDA0ODM0NzcqKDY1NTM1JmkpKygoMTU0MDQ4MzQ3NyooaT4+PjE2KSY2NTUzNSk8PDE2KV4ocj0xNTQwNDgzNDc3Kig2NTUzNSYocl49cj4+PjI0KSkrKCgxNTQwNDgzNDc3KihyPj4+MTYpJjY1NTM1KTw8MTYpKSxuLT00LCsrcztzd2l0Y2gobil7Y2FzZSAzOmlePSgyNTUmdC5jaGFyQ29kZUF0KHMrMikpPDwxNjtjYXNlIDI6aV49KDI1NSZ0LmNoYXJDb2RlQXQocysxKSk8PDg7Y2FzZSAxOmk9MTU0MDQ4MzQ3NyooNjU1MzUmKGlePTI1NSZ0LmNoYXJDb2RlQXQocykpKSsoKDE1NDA0ODM0NzcqKGk+Pj4xNikmNjU1MzUpPDwxNik7fXJldHVybiBpPTE1NDA0ODM0NzcqKDY1NTM1JihpXj1pPj4+MTMpKSsoKDE1NDA0ODM0NzcqKGk+Pj4xNikmNjU1MzUpPDwxNiksKGlePWk+Pj4xNSk+Pj4wfTt2YXIgVGE9SWEsemE9TWEuZXhwb3J0cztTYS5leHBvcnRzPVRhLFNhLmV4cG9ydHMubXVybXVyMz1UYSxTYS5leHBvcnRzLm11cm11cjI9emE7dmFyIEJhPXAoU2EuZXhwb3J0cyk7Y2xhc3MgRWF7Y29uc3RydWN0b3IoKXt0aGlzLmlkcz1bXSx0aGlzLnBvc2l0aW9ucz1bXSx0aGlzLmluZGV4ZWQ9ITE7fWFkZCh0LGUscixuKXt0aGlzLmlkcy5wdXNoKENhKHQpKSx0aGlzLnBvc2l0aW9ucy5wdXNoKGUscixuKTt9Z2V0UG9zaXRpb25zKHQpe2NvbnN0IGU9Q2EodCk7bGV0IHI9MCxuPXRoaXMuaWRzLmxlbmd0aC0xO2Zvcig7cjxuOyl7Y29uc3QgdD1yK24+PjE7dGhpcy5pZHNbdF0+PWU/bj10OnI9dCsxO31jb25zdCBpPVtdO2Zvcig7dGhpcy5pZHNbcl09PT1lOylpLnB1c2goe2luZGV4OnRoaXMucG9zaXRpb25zWzMqcl0sc3RhcnQ6dGhpcy5wb3NpdGlvbnNbMypyKzFdLGVuZDp0aGlzLnBvc2l0aW9uc1szKnIrMl19KSxyKys7cmV0dXJuIGl9c3RhdGljIHNlcmlhbGl6ZSh0LGUpe2NvbnN0IHI9bmV3IEZsb2F0NjRBcnJheSh0Lmlkcyksbj1uZXcgVWludDMyQXJyYXkodC5wb3NpdGlvbnMpO3JldHVybiBQYShyLG4sMCxyLmxlbmd0aC0xKSxlJiZlLnB1c2goci5idWZmZXIsbi5idWZmZXIpLHtpZHM6cixwb3NpdGlvbnM6bn19c3RhdGljIGRlc2VyaWFsaXplKHQpe2NvbnN0IGU9bmV3IEVhO3JldHVybiBlLmlkcz10LmlkcyxlLnBvc2l0aW9ucz10LnBvc2l0aW9ucyxlLmluZGV4ZWQ9ITAsZX19ZnVuY3Rpb24gQ2EodCl7Y29uc3QgZT0rdDtyZXR1cm4gIWlzTmFOKGUpJiZOdW1iZXIuTUlOX1NBRkVfSU5URUdFUjw9ZSYmZTw9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/ZTpCYShTdHJpbmcodCkpfWZ1bmN0aW9uIFBhKHQsZSxyLG4pe2Zvcig7cjxuOyl7Y29uc3QgaT10W3Irbj4+MV07bGV0IHM9ci0xLGE9bisxO2Zvcig7Oyl7ZG97cysrO313aGlsZSh0W3NdPGkpO2Rve2EtLTt9d2hpbGUodFthXT5pKTtpZihzPj1hKWJyZWFrO0RhKHQscyxhKSxEYShlLDMqcywzKmEpLERhKGUsMypzKzEsMyphKzEpLERhKGUsMypzKzIsMyphKzIpO31hLXI8bi1hPyhQYSh0LGUscixhKSxyPWErMSk6KFBhKHQsZSxhKzEsbiksbj1hKTt9fWZ1bmN0aW9uIERhKHQsZSxyKXtjb25zdCBuPXRbZV07dFtlXT10W3JdLHRbcl09bjt9SmkoRWEsXCJGZWF0dXJlUG9zaXRpb25NYXBcIik7Y2xhc3MgVmF7Y29uc3RydWN0b3IodCl7dGhpcy5nbD10LmdsLHRoaXMuaW5pdGlhbGl6ZWQ9ITE7fWZldGNoVW5pZm9ybUxvY2F0aW9uKHQsZSl7cmV0dXJuIHRoaXMubG9jYXRpb258fHRoaXMuaW5pdGlhbGl6ZWR8fCh0aGlzLmxvY2F0aW9uPXRoaXMuZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHQsZSksdGhpcy5pbml0aWFsaXplZD0hMCksISF0aGlzLmxvY2F0aW9ufX1jbGFzcyBMYSBleHRlbmRzIFZhe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuY3VycmVudD0wO31zZXQodCxlLHIpe3RoaXMuZmV0Y2hVbmlmb3JtTG9jYXRpb24odCxlKSYmdGhpcy5jdXJyZW50IT09ciYmKHRoaXMuY3VycmVudD1yLHRoaXMuZ2wudW5pZm9ybTFmKHRoaXMubG9jYXRpb24scikpO319Y2xhc3MgRmEgZXh0ZW5kcyBWYXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLmN1cnJlbnQ9WzAsMCwwLDBdO31zZXQodCxlLHIpe3RoaXMuZmV0Y2hVbmlmb3JtTG9jYXRpb24odCxlKSYmKHJbMF09PT10aGlzLmN1cnJlbnRbMF0mJnJbMV09PT10aGlzLmN1cnJlbnRbMV0mJnJbMl09PT10aGlzLmN1cnJlbnRbMl0mJnJbM109PT10aGlzLmN1cnJlbnRbM118fCh0aGlzLmN1cnJlbnQ9cix0aGlzLmdsLnVuaWZvcm00Zih0aGlzLmxvY2F0aW9uLHJbMF0sclsxXSxyWzJdLHJbM10pKSk7fX1jbGFzcyBSYSBleHRlbmRzIFZhe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuY3VycmVudD1FZS50cmFuc3BhcmVudDt9c2V0KHQsZSxyKXt0aGlzLmZldGNoVW5pZm9ybUxvY2F0aW9uKHQsZSkmJihyLnI9PT10aGlzLmN1cnJlbnQuciYmci5nPT09dGhpcy5jdXJyZW50LmcmJnIuYj09PXRoaXMuY3VycmVudC5iJiZyLmE9PT10aGlzLmN1cnJlbnQuYXx8KHRoaXMuY3VycmVudD1yLHRoaXMuZ2wudW5pZm9ybTRmKHRoaXMubG9jYXRpb24sci5yLHIuZyxyLmIsci5hKSkpO319Y29uc3QgVWE9bmV3IEZsb2F0MzJBcnJheSgxNiksJGE9bmV3IEZsb2F0MzJBcnJheSg5KSxqYT1uZXcgRmxvYXQzMkFycmF5KDQpO2Z1bmN0aW9uIE9hKHQpe3JldHVybiBbRHMoMjU1KnQuciwyNTUqdC5nKSxEcygyNTUqdC5iLDI1NSp0LmEpXX1jbGFzcyBxYXtjb25zdHJ1Y3Rvcih0LGUscil7dGhpcy52YWx1ZT10LHRoaXMudW5pZm9ybU5hbWVzPWUubWFwKCh0PT5gdV8ke3R9YCkpLHRoaXMudHlwZT1yO31zZXRVbmlmb3JtKHQsZSxyLG4saSl7ZS5zZXQodCxpLG4uY29uc3RhbnRPcih0aGlzLnZhbHVlKSk7fWdldEJpbmRpbmcodCxlKXtyZXR1cm4gXCJjb2xvclwiPT09dGhpcy50eXBlP25ldyBSYSh0KTpuZXcgTGEodCl9fWNsYXNzIE5he2NvbnN0cnVjdG9yKHQsZSl7dGhpcy51bmlmb3JtTmFtZXM9ZS5tYXAoKHQ9PmB1XyR7dH1gKSksdGhpcy5wYXR0ZXJuPW51bGwsdGhpcy5waXhlbFJhdGlvPTE7fXNldENvbnN0YW50UGF0dGVyblBvc2l0aW9ucyh0KXt0aGlzLnBpeGVsUmF0aW89dC5waXhlbFJhdGlvfHwxLHRoaXMucGF0dGVybj10LnRsLmNvbmNhdCh0LmJyKTt9c2V0VW5pZm9ybSh0LGUscixuLGkpe2NvbnN0IHM9XCJ1X3BhdHRlcm5cIj09PWl8fFwidV9kYXNoXCI9PT1pP3RoaXMucGF0dGVybjpcInVfcGl4ZWxfcmF0aW9cIj09PWk/dGhpcy5waXhlbFJhdGlvOm51bGw7cyYmZS5zZXQodCxpLHMpO31nZXRCaW5kaW5nKHQsZSl7cmV0dXJuIFwidV9wYXR0ZXJuXCI9PT1lfHxcInVfZGFzaFwiPT09ZT9uZXcgRmEodCk6bmV3IExhKHQpfX1jbGFzcyBHYXtjb25zdHJ1Y3Rvcih0LGUscixuKXt0aGlzLmV4cHJlc3Npb249dCx0aGlzLnR5cGU9cix0aGlzLm1heFZhbHVlPTAsdGhpcy5wYWludFZlcnRleEF0dHJpYnV0ZXM9ZS5tYXAoKHQ9Pih7bmFtZTpgYV8ke3R9YCx0eXBlOlwiRmxvYXQzMlwiLGNvbXBvbmVudHM6XCJjb2xvclwiPT09cj8yOjEsb2Zmc2V0OjB9KSkpLHRoaXMucGFpbnRWZXJ0ZXhBcnJheT1uZXcgbjt9cG9wdWxhdGVQYWludEFycmF5KHQsZSxyLG4saSxzKXtjb25zdCBhPXRoaXMucGFpbnRWZXJ0ZXhBcnJheS5sZW5ndGgsbz10aGlzLmV4cHJlc3Npb24uZXZhbHVhdGUobmV3IHdzKDApLGUse30saSxuLHMpO3RoaXMucGFpbnRWZXJ0ZXhBcnJheS5yZXNpemUodCksdGhpcy5fc2V0UGFpbnRWYWx1ZShhLHQsbyk7fXVwZGF0ZVBhaW50QXJyYXkodCxlLHIsbixpKXtjb25zdCBzPXRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZSh7em9vbTowfSxyLG4sdm9pZCAwLGkpO3RoaXMuX3NldFBhaW50VmFsdWUodCxlLHMpO31fc2V0UGFpbnRWYWx1ZSh0LGUscil7aWYoXCJjb2xvclwiPT09dGhpcy50eXBlKXtjb25zdCBuPU9hKHIpO2ZvcihsZXQgcj10O3I8ZTtyKyspdGhpcy5wYWludFZlcnRleEFycmF5LmVtcGxhY2UocixuWzBdLG5bMV0pO31lbHNlIHtmb3IobGV0IG49dDtuPGU7bisrKXRoaXMucGFpbnRWZXJ0ZXhBcnJheS5lbXBsYWNlKG4scik7dGhpcy5tYXhWYWx1ZT1NYXRoLm1heCh0aGlzLm1heFZhbHVlLE1hdGguYWJzKHIpKTt9fXVwbG9hZCh0KXt0aGlzLnBhaW50VmVydGV4QXJyYXkmJnRoaXMucGFpbnRWZXJ0ZXhBcnJheS5hcnJheUJ1ZmZlciYmKHRoaXMucGFpbnRWZXJ0ZXhCdWZmZXImJnRoaXMucGFpbnRWZXJ0ZXhCdWZmZXIuYnVmZmVyP3RoaXMucGFpbnRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YSh0aGlzLnBhaW50VmVydGV4QXJyYXkpOnRoaXMucGFpbnRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5wYWludFZlcnRleEFycmF5LHRoaXMucGFpbnRWZXJ0ZXhBdHRyaWJ1dGVzLHRoaXMuZXhwcmVzc2lvbi5pc1N0YXRlRGVwZW5kZW50KSk7fWRlc3Ryb3koKXt0aGlzLnBhaW50VmVydGV4QnVmZmVyJiZ0aGlzLnBhaW50VmVydGV4QnVmZmVyLmRlc3Ryb3koKTt9fWNsYXNzIFphe2NvbnN0cnVjdG9yKHQsZSxyLG4saSxzKXt0aGlzLmV4cHJlc3Npb249dCx0aGlzLnVuaWZvcm1OYW1lcz1lLm1hcCgodD0+YHVfJHt0fV90YCkpLHRoaXMudHlwZT1yLHRoaXMudXNlSW50ZWdlclpvb209bix0aGlzLnpvb209aSx0aGlzLm1heFZhbHVlPTAsdGhpcy5wYWludFZlcnRleEF0dHJpYnV0ZXM9ZS5tYXAoKHQ9Pih7bmFtZTpgYV8ke3R9YCx0eXBlOlwiRmxvYXQzMlwiLGNvbXBvbmVudHM6XCJjb2xvclwiPT09cj80OjIsb2Zmc2V0OjB9KSkpLHRoaXMucGFpbnRWZXJ0ZXhBcnJheT1uZXcgczt9cG9wdWxhdGVQYWludEFycmF5KHQsZSxyLG4saSxzKXtjb25zdCBhPXRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZShuZXcgd3ModGhpcy56b29tKSxlLHt9LGksbixzKSxvPXRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZShuZXcgd3ModGhpcy56b29tKzEpLGUse30saSxuLHMpLGw9dGhpcy5wYWludFZlcnRleEFycmF5Lmxlbmd0aDt0aGlzLnBhaW50VmVydGV4QXJyYXkucmVzaXplKHQpLHRoaXMuX3NldFBhaW50VmFsdWUobCx0LGEsbyk7fXVwZGF0ZVBhaW50QXJyYXkodCxlLHIsbixpKXtjb25zdCBzPXRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZSh7em9vbTp0aGlzLnpvb219LHIsbix2b2lkIDAsaSksYT10aGlzLmV4cHJlc3Npb24uZXZhbHVhdGUoe3pvb206dGhpcy56b29tKzF9LHIsbix2b2lkIDAsaSk7dGhpcy5fc2V0UGFpbnRWYWx1ZSh0LGUscyxhKTt9X3NldFBhaW50VmFsdWUodCxlLHIsbil7aWYoXCJjb2xvclwiPT09dGhpcy50eXBlKXtjb25zdCBpPU9hKHIpLHM9T2Eobik7Zm9yKGxldCByPXQ7cjxlO3IrKyl0aGlzLnBhaW50VmVydGV4QXJyYXkuZW1wbGFjZShyLGlbMF0saVsxXSxzWzBdLHNbMV0pO31lbHNlIHtmb3IobGV0IGk9dDtpPGU7aSsrKXRoaXMucGFpbnRWZXJ0ZXhBcnJheS5lbXBsYWNlKGkscixuKTt0aGlzLm1heFZhbHVlPU1hdGgubWF4KHRoaXMubWF4VmFsdWUsTWF0aC5hYnMociksTWF0aC5hYnMobikpO319dXBsb2FkKHQpe3RoaXMucGFpbnRWZXJ0ZXhBcnJheSYmdGhpcy5wYWludFZlcnRleEFycmF5LmFycmF5QnVmZmVyJiYodGhpcy5wYWludFZlcnRleEJ1ZmZlciYmdGhpcy5wYWludFZlcnRleEJ1ZmZlci5idWZmZXI/dGhpcy5wYWludFZlcnRleEJ1ZmZlci51cGRhdGVEYXRhKHRoaXMucGFpbnRWZXJ0ZXhBcnJheSk6dGhpcy5wYWludFZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLnBhaW50VmVydGV4QXJyYXksdGhpcy5wYWludFZlcnRleEF0dHJpYnV0ZXMsdGhpcy5leHByZXNzaW9uLmlzU3RhdGVEZXBlbmRlbnQpKTt9ZGVzdHJveSgpe3RoaXMucGFpbnRWZXJ0ZXhCdWZmZXImJnRoaXMucGFpbnRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpO31zZXRVbmlmb3JtKHQsZSxyLG4saSl7Y29uc3Qgcz10aGlzLnVzZUludGVnZXJab29tP01hdGguZmxvb3Ioci56b29tKTpyLnpvb20sYT1NKHRoaXMuZXhwcmVzc2lvbi5pbnRlcnBvbGF0aW9uRmFjdG9yKHMsdGhpcy56b29tLHRoaXMuem9vbSsxKSwwLDEpO2Uuc2V0KHQsaSxhKTt9Z2V0QmluZGluZyh0LGUpe3JldHVybiBuZXcgTGEodCl9fWNsYXNzIEthe2NvbnN0cnVjdG9yKHQsZSxyLG4saSl7dGhpcy5leHByZXNzaW9uPXQsdGhpcy5sYXllcklkPWksdGhpcy5wYWludFZlcnRleEF0dHJpYnV0ZXM9KFwiYXJyYXlcIj09PXI/QWE6X2EpLm1lbWJlcnM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDsrK3QpO3RoaXMucGFpbnRWZXJ0ZXhBcnJheT1uZXcgbjt9cG9wdWxhdGVQYWludEFycmF5KHQsZSxyKXtjb25zdCBuPXRoaXMucGFpbnRWZXJ0ZXhBcnJheS5sZW5ndGg7dGhpcy5wYWludFZlcnRleEFycmF5LnJlc2l6ZSh0KSx0aGlzLl9zZXRQYWludFZhbHVlcyhuLHQsZS5wYXR0ZXJucyYmZS5wYXR0ZXJuc1t0aGlzLmxheWVySWRdLHIpO311cGRhdGVQYWludEFycmF5KHQsZSxyLG4saSxzKXt0aGlzLl9zZXRQYWludFZhbHVlcyh0LGUsci5wYXR0ZXJucyYmci5wYXR0ZXJuc1t0aGlzLmxheWVySWRdLHMpO31fc2V0UGFpbnRWYWx1ZXModCxlLHIsbil7aWYoIW58fCFyKXJldHVybjtjb25zdCBpPW5bcl07aWYoIWkpcmV0dXJuO2NvbnN0e3RsOnMsYnI6YSxwaXhlbFJhdGlvOm99PWk7Zm9yKGxldCByPXQ7cjxlO3IrKyl0aGlzLnBhaW50VmVydGV4QXJyYXkuZW1wbGFjZShyLHNbMF0sc1sxXSxhWzBdLGFbMV0sbyk7fXVwbG9hZCh0KXt0aGlzLnBhaW50VmVydGV4QXJyYXkmJnRoaXMucGFpbnRWZXJ0ZXhBcnJheS5hcnJheUJ1ZmZlciYmKHRoaXMucGFpbnRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5wYWludFZlcnRleEFycmF5LHRoaXMucGFpbnRWZXJ0ZXhBdHRyaWJ1dGVzLHRoaXMuZXhwcmVzc2lvbi5pc1N0YXRlRGVwZW5kZW50KSk7fWRlc3Ryb3koKXt0aGlzLnBhaW50VmVydGV4QnVmZmVyJiZ0aGlzLnBhaW50VmVydGV4QnVmZmVyLmRlc3Ryb3koKTt9fWNsYXNzIFhhe2NvbnN0cnVjdG9yKHQsZSxyPSgoKT0+ITApKXt0aGlzLmJpbmRlcnM9e30sdGhpcy5fYnVmZmVycz1bXTtjb25zdCBuPVtdO2Zvcihjb25zdCBpIGluIHQucGFpbnQuX3ZhbHVlcyl7aWYoIXIoaSkpY29udGludWU7Y29uc3Qgcz10LnBhaW50LmdldChpKTtpZighKHMgaW5zdGFuY2VvZiBUcyYmTG4ocy5wcm9wZXJ0eS5zcGVjaWZpY2F0aW9uKSkpY29udGludWU7Y29uc3QgYT1ZYShpLHQudHlwZSksbz1zLnZhbHVlLGw9cy5wcm9wZXJ0eS5zcGVjaWZpY2F0aW9uLnR5cGUsdT0hIXMucHJvcGVydHkudXNlSW50ZWdlclpvb20sYz1cImxpbmUtZGFzaGFycmF5XCI9PT1pfHxpLmVuZHNXaXRoKFwicGF0dGVyblwiKSxoPVwibGluZS1kYXNoYXJyYXlcIj09PWkmJlwiY29uc3RhbnRcIiE9PXQubGF5b3V0LmdldChcImxpbmUtY2FwXCIpLnZhbHVlLmtpbmQ7aWYoXCJjb25zdGFudFwiIT09by5raW5kfHxoKWlmKFwic291cmNlXCI9PT1vLmtpbmR8fGh8fGMpe2NvbnN0IGU9dG8oaSxsLFwic291cmNlXCIpO3RoaXMuYmluZGVyc1tpXT1jP25ldyBLYShvLGEsbCxlLHQuaWQpOm5ldyBHYShvLGEsbCxlKSxuLnB1c2goYC9hXyR7aX1gKTt9ZWxzZSB7Y29uc3QgdD10byhpLGwsXCJjb21wb3NpdGVcIik7dGhpcy5iaW5kZXJzW2ldPW5ldyBaYShvLGEsbCx1LGUsdCksbi5wdXNoKGAvel8ke2l9YCk7fWVsc2UgdGhpcy5iaW5kZXJzW2ldPWM/bmV3IE5hKG8udmFsdWUsYSk6bmV3IHFhKG8udmFsdWUsYSxsKSxuLnB1c2goYC91XyR7aX1gKTt9dGhpcy5jYWNoZUtleT1uLnNvcnQoKS5qb2luKFwiXCIpO31nZXRNYXhWYWx1ZSh0KXtjb25zdCBlPXRoaXMuYmluZGVyc1t0XTtyZXR1cm4gZSBpbnN0YW5jZW9mIEdhfHxlIGluc3RhbmNlb2YgWmE/ZS5tYXhWYWx1ZTowfXBvcHVsYXRlUGFpbnRBcnJheXModCxlLHIsbixpLHMpe2Zvcihjb25zdCBhIGluIHRoaXMuYmluZGVycyl7Y29uc3Qgbz10aGlzLmJpbmRlcnNbYV07KG8gaW5zdGFuY2VvZiBHYXx8byBpbnN0YW5jZW9mIFphfHxvIGluc3RhbmNlb2YgS2EpJiZvLnBvcHVsYXRlUGFpbnRBcnJheSh0LGUscixuLGkscyk7fX1zZXRDb25zdGFudFBhdHRlcm5Qb3NpdGlvbnModCl7Zm9yKGNvbnN0IGUgaW4gdGhpcy5iaW5kZXJzKXtjb25zdCByPXRoaXMuYmluZGVyc1tlXTtyIGluc3RhbmNlb2YgTmEmJnIuc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRpb25zKHQpO319dXBkYXRlUGFpbnRBcnJheXModCxlLHIsbixpLHMpe2xldCBhPSExO2Zvcihjb25zdCBvIGluIHQpe2NvbnN0IGw9ZS5nZXRQb3NpdGlvbnMobyk7Zm9yKGNvbnN0IGUgb2YgbCl7Y29uc3QgbD1yLmZlYXR1cmUoZS5pbmRleCk7Zm9yKGNvbnN0IHIgaW4gdGhpcy5iaW5kZXJzKXtjb25zdCB1PXRoaXMuYmluZGVyc1tyXTtpZigodSBpbnN0YW5jZW9mIEdhfHx1IGluc3RhbmNlb2YgWmF8fHUgaW5zdGFuY2VvZiBLYSkmJiEwPT09dS5leHByZXNzaW9uLmlzU3RhdGVEZXBlbmRlbnQpe2NvbnN0IGM9bi5wYWludC5nZXQocik7dS5leHByZXNzaW9uPWMudmFsdWUsdS51cGRhdGVQYWludEFycmF5KGUuc3RhcnQsZS5lbmQsbCx0W29dLGkscyksYT0hMDt9fX19cmV0dXJuIGF9ZGVmaW5lcygpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGUgaW4gdGhpcy5iaW5kZXJzKXtjb25zdCByPXRoaXMuYmluZGVyc1tlXTsociBpbnN0YW5jZW9mIHFhfHxyIGluc3RhbmNlb2YgTmEpJiZ0LnB1c2goLi4uci51bmlmb3JtTmFtZXMubWFwKCh0PT5gI2RlZmluZSBIQVNfVU5JRk9STV8ke3R9YCkpKTt9cmV0dXJuIHR9Z2V0QmluZGVyQXR0cmlidXRlcygpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGUgaW4gdGhpcy5iaW5kZXJzKXtjb25zdCByPXRoaXMuYmluZGVyc1tlXTtpZihyIGluc3RhbmNlb2YgR2F8fHIgaW5zdGFuY2VvZiBaYXx8ciBpbnN0YW5jZW9mIEthKWZvcihsZXQgZT0wO2U8ci5wYWludFZlcnRleEF0dHJpYnV0ZXMubGVuZ3RoO2UrKyl0LnB1c2goci5wYWludFZlcnRleEF0dHJpYnV0ZXNbZV0ubmFtZSk7fXJldHVybiB0fWdldEJpbmRlclVuaWZvcm1zKCl7Y29uc3QgdD1bXTtmb3IoY29uc3QgZSBpbiB0aGlzLmJpbmRlcnMpe2NvbnN0IHI9dGhpcy5iaW5kZXJzW2VdO2lmKHIgaW5zdGFuY2VvZiBxYXx8ciBpbnN0YW5jZW9mIE5hfHxyIGluc3RhbmNlb2YgWmEpZm9yKGNvbnN0IGUgb2Ygci51bmlmb3JtTmFtZXMpdC5wdXNoKGUpO31yZXR1cm4gdH1nZXRQYWludFZlcnRleEJ1ZmZlcnMoKXtyZXR1cm4gdGhpcy5fYnVmZmVyc31nZXRVbmlmb3Jtcyh0KXtjb25zdCBlPVtdO2Zvcihjb25zdCByIGluIHRoaXMuYmluZGVycyl7Y29uc3Qgbj10aGlzLmJpbmRlcnNbcl07aWYobiBpbnN0YW5jZW9mIHFhfHxuIGluc3RhbmNlb2YgTmF8fG4gaW5zdGFuY2VvZiBaYSlmb3IoY29uc3QgaSBvZiBuLnVuaWZvcm1OYW1lcyllLnB1c2goe25hbWU6aSxwcm9wZXJ0eTpyLGJpbmRpbmc6bi5nZXRCaW5kaW5nKHQsaSl9KTt9cmV0dXJuIGV9c2V0VW5pZm9ybXModCxlLHIsbixpKXtmb3IoY29uc3R7bmFtZTplLHByb3BlcnR5OnMsYmluZGluZzphfW9mIHIpdGhpcy5iaW5kZXJzW3NdLnNldFVuaWZvcm0odCxhLGksbi5nZXQocyksZSk7fXVwZGF0ZVBhaW50QnVmZmVycygpe3RoaXMuX2J1ZmZlcnM9W107Zm9yKGNvbnN0IHQgaW4gdGhpcy5iaW5kZXJzKXtjb25zdCBlPXRoaXMuYmluZGVyc1t0XTsoZSBpbnN0YW5jZW9mIEdhfHxlIGluc3RhbmNlb2YgWmF8fGUgaW5zdGFuY2VvZiBLYSkmJmUucGFpbnRWZXJ0ZXhCdWZmZXImJnRoaXMuX2J1ZmZlcnMucHVzaChlLnBhaW50VmVydGV4QnVmZmVyKTt9fXVwbG9hZCh0KXtmb3IoY29uc3QgZSBpbiB0aGlzLmJpbmRlcnMpe2NvbnN0IHI9dGhpcy5iaW5kZXJzW2VdOyhyIGluc3RhbmNlb2YgR2F8fHIgaW5zdGFuY2VvZiBaYXx8ciBpbnN0YW5jZW9mIEthKSYmci51cGxvYWQodCk7fXRoaXMudXBkYXRlUGFpbnRCdWZmZXJzKCk7fWRlc3Ryb3koKXtmb3IoY29uc3QgdCBpbiB0aGlzLmJpbmRlcnMpe2NvbnN0IGU9dGhpcy5iaW5kZXJzW3RdOyhlIGluc3RhbmNlb2YgR2F8fGUgaW5zdGFuY2VvZiBaYXx8ZSBpbnN0YW5jZW9mIEthKSYmZS5kZXN0cm95KCk7fX19Y2xhc3MgSmF7Y29uc3RydWN0b3IodCxlLHI9KCgpPT4hMCkpe3RoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zPXt9O2Zvcihjb25zdCBuIG9mIHQpdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnNbbi5pZF09bmV3IFhhKG4sZSxyKTt0aGlzLm5lZWRzVXBsb2FkPSExLHRoaXMuX2ZlYXR1cmVNYXA9bmV3IEVhLHRoaXMuX2J1ZmZlck9mZnNldD0wO31wb3B1bGF0ZVBhaW50QXJyYXlzKHQsZSxyLG4saSxzLGEpe2Zvcihjb25zdCByIGluIHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zKXRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zW3JdLnBvcHVsYXRlUGFpbnRBcnJheXModCxlLG4saSxzLGEpO3ZvaWQgMCE9PWUuaWQmJnRoaXMuX2ZlYXR1cmVNYXAuYWRkKGUuaWQscix0aGlzLl9idWZmZXJPZmZzZXQsdCksdGhpcy5fYnVmZmVyT2Zmc2V0PXQsdGhpcy5uZWVkc1VwbG9hZD0hMDt9dXBkYXRlUGFpbnRBcnJheXModCxlLHIsbixpKXtmb3IoY29uc3QgcyBvZiByKXRoaXMubmVlZHNVcGxvYWQ9dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnNbcy5pZF0udXBkYXRlUGFpbnRBcnJheXModCx0aGlzLl9mZWF0dXJlTWFwLGUscyxuLGkpfHx0aGlzLm5lZWRzVXBsb2FkO31nZXQodCl7cmV0dXJuIHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zW3RdfXVwbG9hZCh0KXtpZih0aGlzLm5lZWRzVXBsb2FkKXtmb3IoY29uc3QgZSBpbiB0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucyl0aGlzLnByb2dyYW1Db25maWd1cmF0aW9uc1tlXS51cGxvYWQodCk7dGhpcy5uZWVkc1VwbG9hZD0hMTt9fWRlc3Ryb3koKXtmb3IoY29uc3QgdCBpbiB0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucyl0aGlzLnByb2dyYW1Db25maWd1cmF0aW9uc1t0XS5kZXN0cm95KCk7fX1jb25zdCBIYT17XCJ0ZXh0LW9wYWNpdHlcIjpbXCJvcGFjaXR5XCJdLFwiaWNvbi1vcGFjaXR5XCI6W1wib3BhY2l0eVwiXSxcInRleHQtY29sb3JcIjpbXCJmaWxsX2NvbG9yXCJdLFwiaWNvbi1jb2xvclwiOltcImZpbGxfY29sb3JcIl0sXCJ0ZXh0LWhhbG8tY29sb3JcIjpbXCJoYWxvX2NvbG9yXCJdLFwiaWNvbi1oYWxvLWNvbG9yXCI6W1wiaGFsb19jb2xvclwiXSxcInRleHQtaGFsby1ibHVyXCI6W1wiaGFsb19ibHVyXCJdLFwiaWNvbi1oYWxvLWJsdXJcIjpbXCJoYWxvX2JsdXJcIl0sXCJ0ZXh0LWhhbG8td2lkdGhcIjpbXCJoYWxvX3dpZHRoXCJdLFwiaWNvbi1oYWxvLXdpZHRoXCI6W1wiaGFsb193aWR0aFwiXSxcImxpbmUtZ2FwLXdpZHRoXCI6W1wiZ2Fwd2lkdGhcIl0sXCJsaW5lLXBhdHRlcm5cIjpbXCJwYXR0ZXJuXCIsXCJwaXhlbF9yYXRpb1wiXSxcImZpbGwtcGF0dGVyblwiOltcInBhdHRlcm5cIixcInBpeGVsX3JhdGlvXCJdLFwiZmlsbC1leHRydXNpb24tcGF0dGVyblwiOltcInBhdHRlcm5cIixcInBpeGVsX3JhdGlvXCJdLFwibGluZS1kYXNoYXJyYXlcIjpbXCJkYXNoXCJdfTtmdW5jdGlvbiBZYSh0LGUpe3JldHVybiBIYVt0XXx8W3QucmVwbGFjZShgJHtlfS1gLFwiXCIpLnJlcGxhY2UoLy0vZyxcIl9cIildfWNvbnN0IFdhPXtcImxpbmUtcGF0dGVyblwiOntzb3VyY2U6R3MsY29tcG9zaXRlOkdzfSxcImZpbGwtcGF0dGVyblwiOntzb3VyY2U6R3MsY29tcG9zaXRlOkdzfSxcImZpbGwtZXh0cnVzaW9uLXBhdHRlcm5cIjp7c291cmNlOkdzLGNvbXBvc2l0ZTpHc30sXCJsaW5lLWRhc2hhcnJheVwiOntzb3VyY2U6WnMsY29tcG9zaXRlOlpzfX0sUWE9e2NvbG9yOntzb3VyY2U6Y2EsY29tcG9zaXRlOk5zfSxudW1iZXI6e3NvdXJjZTpzYSxjb21wb3NpdGU6Y2F9fTtmdW5jdGlvbiB0byh0LGUscil7Y29uc3Qgbj1XYVt0XTtyZXR1cm4gbiYmbltyXXx8UWFbZV1bcl19SmkocWEsXCJDb25zdGFudEJpbmRlclwiKSxKaShOYSxcIlBhdHRlcm5Db25zdGFudEJpbmRlclwiKSxKaShHYSxcIlNvdXJjZUV4cHJlc3Npb25CaW5kZXJcIiksSmkoS2EsXCJQYXR0ZXJuQ29tcG9zaXRlQmluZGVyXCIpLEppKFphLFwiQ29tcG9zaXRlRXhwcmVzc2lvbkJpbmRlclwiKSxKaShYYSxcIlByb2dyYW1Db25maWd1cmF0aW9uXCIse29taXQ6W1wiX2J1ZmZlcnNcIl19KSxKaShKYSxcIlByb2dyYW1Db25maWd1cmF0aW9uU2V0XCIpO2NvbnN0IGVvPVwiLXRyYW5zaXRpb25cIjtjbGFzcyBybyBleHRlbmRzIFF0e2NvbnN0cnVjdG9yKHQsZSl7aWYoc3VwZXIoKSx0aGlzLmlkPXQuaWQsdGhpcy50eXBlPXQudHlwZSx0aGlzLl9mZWF0dXJlRmlsdGVyPXtmaWx0ZXI6KCk9PiEwLG5lZWRHZW9tZXRyeTohMSxuZWVkRmVhdHVyZTohMX0sdGhpcy5fZmlsdGVyQ29tcGlsZWQ9ITEsXCJjdXN0b21cIiE9PXQudHlwZSYmKHRoaXMubWV0YWRhdGE9dC5tZXRhZGF0YSx0aGlzLm1pbnpvb209dC5taW56b29tLHRoaXMubWF4em9vbT10Lm1heHpvb20sXCJiYWNrZ3JvdW5kXCIhPT10LnR5cGUmJlwic2t5XCIhPT10LnR5cGUmJih0aGlzLnNvdXJjZT10LnNvdXJjZSx0aGlzLnNvdXJjZUxheWVyPXRbXCJzb3VyY2UtbGF5ZXJcIl0sdGhpcy5maWx0ZXI9dC5maWx0ZXIpLGUubGF5b3V0JiYodGhpcy5fdW5ldmFsdWF0ZWRMYXlvdXQ9bmV3IE1zKGUubGF5b3V0KSksZS5wYWludCkpe3RoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQ9bmV3IFNzKGUucGFpbnQpO2Zvcihjb25zdCBlIGluIHQucGFpbnQpdGhpcy5zZXRQYWludFByb3BlcnR5KGUsdC5wYWludFtlXSx7dmFsaWRhdGU6ITF9KTtmb3IoY29uc3QgZSBpbiB0LmxheW91dCl0aGlzLnNldExheW91dFByb3BlcnR5KGUsdC5sYXlvdXRbZV0se3ZhbGlkYXRlOiExfSk7dGhpcy5fdHJhbnNpdGlvbmluZ1BhaW50PXRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQudW50cmFuc2l0aW9uZWQoKSx0aGlzLnBhaW50PW5ldyB6cyhlLnBhaW50KTt9fWdldExheW91dFByb3BlcnR5KHQpe3JldHVybiBcInZpc2liaWxpdHlcIj09PXQ/dGhpcy52aXNpYmlsaXR5OnRoaXMuX3VuZXZhbHVhdGVkTGF5b3V0LmdldFZhbHVlKHQpfXNldExheW91dFByb3BlcnR5KHQsZSxyPXt9KXtudWxsIT1lJiZ0aGlzLl92YWxpZGF0ZShqaSxgbGF5ZXJzLiR7dGhpcy5pZH0ubGF5b3V0LiR7dH1gLHQsZSxyKXx8KFwidmlzaWJpbGl0eVwiIT09dD90aGlzLl91bmV2YWx1YXRlZExheW91dC5zZXRWYWx1ZSh0LGUpOnRoaXMudmlzaWJpbGl0eT1lKTt9Z2V0UGFpbnRQcm9wZXJ0eSh0KXtyZXR1cm4gVSh0LGVvKT90aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50LmdldFRyYW5zaXRpb24odC5zbGljZSgwLC0xMSkpOnRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQuZ2V0VmFsdWUodCl9c2V0UGFpbnRQcm9wZXJ0eSh0LGUscj17fSl7aWYobnVsbCE9ZSYmdGhpcy5fdmFsaWRhdGUoJGksYGxheWVycy4ke3RoaXMuaWR9LnBhaW50LiR7dH1gLHQsZSxyKSlyZXR1cm4gITE7aWYoVSh0LGVvKSlyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbmFibGVQYWludC5zZXRUcmFuc2l0aW9uKHQuc2xpY2UoMCwtMTEpLGV8fHZvaWQgMCksITE7e2NvbnN0IHI9dGhpcy5fdHJhbnNpdGlvbmFibGVQYWludC5fdmFsdWVzW3RdLG49ci52YWx1ZS5pc0RhdGFEcml2ZW4oKSxpPXIudmFsdWU7dGhpcy5fdHJhbnNpdGlvbmFibGVQYWludC5zZXRWYWx1ZSh0LGUpLHRoaXMuX2hhbmRsZVNwZWNpYWxQYWludFByb3BlcnR5VXBkYXRlKHQpO2NvbnN0IHM9dGhpcy5fdHJhbnNpdGlvbmFibGVQYWludC5fdmFsdWVzW3RdLnZhbHVlLGE9cy5pc0RhdGFEcml2ZW4oKSxvPVUodCxcInBhdHRlcm5cIil8fFwibGluZS1kYXNoYXJyYXlcIj09PXQ7cmV0dXJuIGF8fG58fG98fHRoaXMuX2hhbmRsZU92ZXJyaWRhYmxlUGFpbnRQcm9wZXJ0eVVwZGF0ZSh0LGkscyl9fV9oYW5kbGVTcGVjaWFsUGFpbnRQcm9wZXJ0eVVwZGF0ZSh0KXt9Z2V0UHJvZ3JhbUlkcygpe3JldHVybiBudWxsfWdldFByb2dyYW1Db25maWd1cmF0aW9uKHQpe3JldHVybiBudWxsfV9oYW5kbGVPdmVycmlkYWJsZVBhaW50UHJvcGVydHlVcGRhdGUodCxlLHIpe3JldHVybiAhMX1pc0hpZGRlbih0KXtyZXR1cm4gISEodGhpcy5taW56b29tJiZ0PHRoaXMubWluem9vbSl8fCEhKHRoaXMubWF4em9vbSYmdD49dGhpcy5tYXh6b29tKXx8XCJub25lXCI9PT10aGlzLnZpc2liaWxpdHl9dXBkYXRlVHJhbnNpdGlvbnModCl7dGhpcy5fdHJhbnNpdGlvbmluZ1BhaW50PXRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQudHJhbnNpdGlvbmVkKHQsdGhpcy5fdHJhbnNpdGlvbmluZ1BhaW50KTt9aGFzVHJhbnNpdGlvbigpe3JldHVybiB0aGlzLl90cmFuc2l0aW9uaW5nUGFpbnQuaGFzVHJhbnNpdGlvbigpfXJlY2FsY3VsYXRlKHQsZSl7dGhpcy5fdW5ldmFsdWF0ZWRMYXlvdXQmJih0aGlzLmxheW91dD10aGlzLl91bmV2YWx1YXRlZExheW91dC5wb3NzaWJseUV2YWx1YXRlKHQsdm9pZCAwLGUpKSx0aGlzLnBhaW50PXRoaXMuX3RyYW5zaXRpb25pbmdQYWludC5wb3NzaWJseUV2YWx1YXRlKHQsdm9pZCAwLGUpO31zZXJpYWxpemUoKXtjb25zdCB0PXtpZDp0aGlzLmlkLHR5cGU6dGhpcy50eXBlLHNvdXJjZTp0aGlzLnNvdXJjZSxcInNvdXJjZS1sYXllclwiOnRoaXMuc291cmNlTGF5ZXIsbWV0YWRhdGE6dGhpcy5tZXRhZGF0YSxtaW56b29tOnRoaXMubWluem9vbSxtYXh6b29tOnRoaXMubWF4em9vbSxmaWx0ZXI6dGhpcy5maWx0ZXIsbGF5b3V0OnRoaXMuX3VuZXZhbHVhdGVkTGF5b3V0JiZ0aGlzLl91bmV2YWx1YXRlZExheW91dC5zZXJpYWxpemUoKSxwYWludDp0aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50JiZ0aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50LnNlcmlhbGl6ZSgpfTtyZXR1cm4gdGhpcy52aXNpYmlsaXR5JiYodC5sYXlvdXQ9dC5sYXlvdXR8fHt9LHQubGF5b3V0LnZpc2liaWxpdHk9dGhpcy52aXNpYmlsaXR5KSxqKHQsKCh0LGUpPT4hKHZvaWQgMD09PXR8fFwibGF5b3V0XCI9PT1lJiYhT2JqZWN0LmtleXModCkubGVuZ3RofHxcInBhaW50XCI9PT1lJiYhT2JqZWN0LmtleXModCkubGVuZ3RoKSkpfV92YWxpZGF0ZSh0LGUscixuLGk9e30pe3JldHVybiAoIWl8fCExIT09aS52YWxpZGF0ZSkmJnFpKHRoaXMsdC5jYWxsKFVpLHtrZXk6ZSxsYXllclR5cGU6dGhpcy50eXBlLG9iamVjdEtleTpyLHZhbHVlOm4sc3R5bGVTcGVjOnRlLHN0eWxlOntnbHlwaHM6ITAsc3ByaXRlOiEwfX0pKX1pczNEKCl7cmV0dXJuICExfWlzU2t5KCl7cmV0dXJuICExfWlzVGlsZUNsaXBwZWQoKXtyZXR1cm4gITF9aGFzT2Zmc2NyZWVuUGFzcygpe3JldHVybiAhMX1yZXNpemUoKXt9aXNTdGF0ZURlcGVuZGVudCgpe2Zvcihjb25zdCB0IGluIHRoaXMucGFpbnQuX3ZhbHVlcyl7Y29uc3QgZT10aGlzLnBhaW50LmdldCh0KTtpZihlIGluc3RhbmNlb2YgVHMmJkxuKGUucHJvcGVydHkuc3BlY2lmaWNhdGlvbikmJihcInNvdXJjZVwiPT09ZS52YWx1ZS5raW5kfHxcImNvbXBvc2l0ZVwiPT09ZS52YWx1ZS5raW5kKSYmZS52YWx1ZS5pc1N0YXRlRGVwZW5kZW50KXJldHVybiAhMH1yZXR1cm4gITF9Y29tcGlsZUZpbHRlcigpe3RoaXMuX2ZpbHRlckNvbXBpbGVkfHwodGhpcy5fZmVhdHVyZUZpbHRlcj1oaSh0aGlzLmZpbHRlciksdGhpcy5fZmlsdGVyQ29tcGlsZWQ9ITApO31pbnZhbGlkYXRlQ29tcGlsZWRGaWx0ZXIoKXt0aGlzLl9maWx0ZXJDb21waWxlZD0hMTt9ZHluYW1pY0ZpbHRlcigpe3JldHVybiB0aGlzLl9mZWF0dXJlRmlsdGVyLmR5bmFtaWNGaWx0ZXJ9ZHluYW1pY0ZpbHRlck5lZWRzRmVhdHVyZSgpe3JldHVybiB0aGlzLl9mZWF0dXJlRmlsdGVyLm5lZWRGZWF0dXJlfX1jb25zdCBubz1Scyhbe25hbWU6XCJhX3Bvc1wiLGNvbXBvbmVudHM6Mix0eXBlOlwiSW50MTZcIn1dLDQpLGlvPVJzKFt7bmFtZTpcImFfcG9zXzNcIixjb21wb25lbnRzOjMsdHlwZTpcIkludDE2XCJ9LHtuYW1lOlwiYV9wb3Nfbm9ybWFsXzNcIixjb21wb25lbnRzOjMsdHlwZTpcIkludDE2XCJ9XSk7Y2xhc3Mgc297Y29uc3RydWN0b3IodD1bXSl7dGhpcy5zZWdtZW50cz10O31wcmVwYXJlU2VnbWVudCh0LGUscixuKXtsZXQgaT10aGlzLnNlZ21lbnRzW3RoaXMuc2VnbWVudHMubGVuZ3RoLTFdO3JldHVybiB0PnNvLk1BWF9WRVJURVhfQVJSQVlfTEVOR1RIJiZOKGBNYXggdmVydGljZXMgcGVyIHNlZ21lbnQgaXMgJHtzby5NQVhfVkVSVEVYX0FSUkFZX0xFTkdUSH06IGJ1Y2tldCByZXF1ZXN0ZWQgJHt0fWApLCghaXx8aS52ZXJ0ZXhMZW5ndGgrdD5zby5NQVhfVkVSVEVYX0FSUkFZX0xFTkdUSHx8aS5zb3J0S2V5IT09bikmJihpPXt2ZXJ0ZXhPZmZzZXQ6ZS5sZW5ndGgscHJpbWl0aXZlT2Zmc2V0OnIubGVuZ3RoLHZlcnRleExlbmd0aDowLHByaW1pdGl2ZUxlbmd0aDowfSx2b2lkIDAhPT1uJiYoaS5zb3J0S2V5PW4pLHRoaXMuc2VnbWVudHMucHVzaChpKSksaX1nZXQoKXtyZXR1cm4gdGhpcy5zZWdtZW50c31kZXN0cm95KCl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5zZWdtZW50cylmb3IoY29uc3QgZSBpbiB0LnZhb3MpdC52YW9zW2VdLmRlc3Ryb3koKTt9c3RhdGljIHNpbXBsZVNlZ21lbnQodCxlLHIsbil7cmV0dXJuIG5ldyBzbyhbe3ZlcnRleE9mZnNldDp0LHByaW1pdGl2ZU9mZnNldDplLHZlcnRleExlbmd0aDpyLHByaW1pdGl2ZUxlbmd0aDpuLHZhb3M6e30sc29ydEtleTowfV0pfX1zby5NQVhfVkVSVEVYX0FSUkFZX0xFTkdUSD1NYXRoLnBvdygyLDE2KS0xLEppKHNvLFwiU2VnbWVudFZlY3RvclwiKTt2YXIgYW89ODE5MjtjbGFzcyBvb3tjb25zdHJ1Y3Rvcih0LGUpe3QmJihlP3RoaXMuc2V0U291dGhXZXN0KHQpLnNldE5vcnRoRWFzdChlKTo0PT09dC5sZW5ndGg/dGhpcy5zZXRTb3V0aFdlc3QoW3RbMF0sdFsxXV0pLnNldE5vcnRoRWFzdChbdFsyXSx0WzNdXSk6dGhpcy5zZXRTb3V0aFdlc3QodFswXSkuc2V0Tm9ydGhFYXN0KHRbMV0pKTt9c2V0Tm9ydGhFYXN0KHQpe3JldHVybiB0aGlzLl9uZT10IGluc3RhbmNlb2YgT2w/bmV3IE9sKHQubG5nLHQubGF0KTpPbC5jb252ZXJ0KHQpLHRoaXN9c2V0U291dGhXZXN0KHQpe3JldHVybiB0aGlzLl9zdz10IGluc3RhbmNlb2YgT2w/bmV3IE9sKHQubG5nLHQubGF0KTpPbC5jb252ZXJ0KHQpLHRoaXN9ZXh0ZW5kKHQpe2NvbnN0IGU9dGhpcy5fc3cscj10aGlzLl9uZTtsZXQgbixpO2lmKHQgaW5zdGFuY2VvZiBPbCluPXQsaT10O2Vsc2Uge2lmKCEodCBpbnN0YW5jZW9mIG9vKSlyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT80PT09dC5sZW5ndGh8fHQuZXZlcnkoQXJyYXkuaXNBcnJheSk/dGhpcy5leHRlbmQob28uY29udmVydCh0KSk6dGhpcy5leHRlbmQoT2wuY29udmVydCh0KSk6XCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPT10JiZ0Lmhhc093blByb3BlcnR5KFwibGF0XCIpJiYodC5oYXNPd25Qcm9wZXJ0eShcImxvblwiKXx8dC5oYXNPd25Qcm9wZXJ0eShcImxuZ1wiKSk/dGhpcy5leHRlbmQoT2wuY29udmVydCh0KSk6dGhpcztpZihuPXQuX3N3LGk9dC5fbmUsIW58fCFpKXJldHVybiB0aGlzfXJldHVybiBlfHxyPyhlLmxuZz1NYXRoLm1pbihuLmxuZyxlLmxuZyksZS5sYXQ9TWF0aC5taW4obi5sYXQsZS5sYXQpLHIubG5nPU1hdGgubWF4KGkubG5nLHIubG5nKSxyLmxhdD1NYXRoLm1heChpLmxhdCxyLmxhdCkpOih0aGlzLl9zdz1uZXcgT2wobi5sbmcsbi5sYXQpLHRoaXMuX25lPW5ldyBPbChpLmxuZyxpLmxhdCkpLHRoaXN9Z2V0Q2VudGVyKCl7cmV0dXJuIG5ldyBPbCgodGhpcy5fc3cubG5nK3RoaXMuX25lLmxuZykvMiwodGhpcy5fc3cubGF0K3RoaXMuX25lLmxhdCkvMil9Z2V0U291dGhXZXN0KCl7cmV0dXJuIHRoaXMuX3N3fWdldE5vcnRoRWFzdCgpe3JldHVybiB0aGlzLl9uZX1nZXROb3J0aFdlc3QoKXtyZXR1cm4gbmV3IE9sKHRoaXMuZ2V0V2VzdCgpLHRoaXMuZ2V0Tm9ydGgoKSl9Z2V0U291dGhFYXN0KCl7cmV0dXJuIG5ldyBPbCh0aGlzLmdldEVhc3QoKSx0aGlzLmdldFNvdXRoKCkpfWdldFdlc3QoKXtyZXR1cm4gdGhpcy5fc3cubG5nfWdldFNvdXRoKCl7cmV0dXJuIHRoaXMuX3N3LmxhdH1nZXRFYXN0KCl7cmV0dXJuIHRoaXMuX25lLmxuZ31nZXROb3J0aCgpe3JldHVybiB0aGlzLl9uZS5sYXR9dG9BcnJheSgpe3JldHVybiBbdGhpcy5fc3cudG9BcnJheSgpLHRoaXMuX25lLnRvQXJyYXkoKV19dG9TdHJpbmcoKXtyZXR1cm4gYExuZ0xhdEJvdW5kcygke3RoaXMuX3N3LnRvU3RyaW5nKCl9LCAke3RoaXMuX25lLnRvU3RyaW5nKCl9KWB9aXNFbXB0eSgpe3JldHVybiAhKHRoaXMuX3N3JiZ0aGlzLl9uZSl9Y29udGFpbnModCl7Y29uc3R7bG5nOmUsbGF0OnJ9PU9sLmNvbnZlcnQodCk7bGV0IG49dGhpcy5fc3cubG5nPD1lJiZlPD10aGlzLl9uZS5sbmc7cmV0dXJuIHRoaXMuX3N3LmxuZz50aGlzLl9uZS5sbmcmJihuPXRoaXMuX3N3LmxuZz49ZSYmZT49dGhpcy5fbmUubG5nKSx0aGlzLl9zdy5sYXQ8PXImJnI8PXRoaXMuX25lLmxhdCYmbn1zdGF0aWMgY29udmVydCh0KXtyZXR1cm4gIXR8fHQgaW5zdGFuY2VvZiBvbz90Om5ldyBvbyh0KX19dmFyIGxvPTFlLTYsdW89XCJ1bmRlZmluZWRcIiE9dHlwZW9mIEZsb2F0MzJBcnJheT9GbG9hdDMyQXJyYXk6QXJyYXk7ZnVuY3Rpb24gY28oKXt2YXIgdD1uZXcgdW8oOSk7cmV0dXJuIHVvIT1GbG9hdDMyQXJyYXkmJih0WzFdPTAsdFsyXT0wLHRbM109MCx0WzVdPTAsdFs2XT0wLHRbN109MCksdFswXT0xLHRbNF09MSx0WzhdPTEsdH1mdW5jdGlvbiBobyh0LGUscil7dmFyIG49ZVswXSxpPWVbMV0scz1lWzJdLGE9ZVszXSxvPWVbNF0sbD1lWzVdLHU9ZVs2XSxjPWVbN10saD1lWzhdLHA9clswXSxkPXJbMV0sZj1yWzJdLHk9clszXSxtPXJbNF0sZz1yWzVdLHg9cls2XSx2PXJbN10sYj1yWzhdO3JldHVybiB0WzBdPXAqbitkKmErZip1LHRbMV09cCppK2QqbytmKmMsdFsyXT1wKnMrZCpsK2YqaCx0WzNdPXkqbittKmErZyp1LHRbNF09eSppK20qbytnKmMsdFs1XT15KnMrbSpsK2cqaCx0WzZdPXgqbit2KmErYip1LHRbN109eCppK3YqbytiKmMsdFs4XT14KnMrdipsK2IqaCx0fWZ1bmN0aW9uIHBvKHQpe3JldHVybiB0WzBdPTEsdFsxXT0wLHRbMl09MCx0WzNdPTAsdFs0XT0wLHRbNV09MSx0WzZdPTAsdFs3XT0wLHRbOF09MCx0WzldPTAsdFsxMF09MSx0WzExXT0wLHRbMTJdPTAsdFsxM109MCx0WzE0XT0wLHRbMTVdPTEsdH1mdW5jdGlvbiBmbyh0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGk9ZVsyXSxzPWVbM10sYT1lWzRdLG89ZVs1XSxsPWVbNl0sdT1lWzddLGM9ZVs4XSxoPWVbOV0scD1lWzEwXSxkPWVbMTFdLGY9ZVsxMl0seT1lWzEzXSxtPWVbMTRdLGc9ZVsxNV0seD1yKm8tbiphLHY9cipsLWkqYSxiPXIqdS1zKmEsdz1uKmwtaSpvLF89bip1LXMqbyxBPWkqdS1zKmwsUz1jKnktaCpmLGs9YyptLXAqZixJPWMqZy1kKmYsTT1oKm0tcCp5LFQ9aCpnLWQqeSx6PXAqZy1kKm0sQj14KnotdipUK2IqTSt3KkktXyprK0EqUztyZXR1cm4gQj8odFswXT0obyp6LWwqVCt1Kk0pKihCPTEvQiksdFsxXT0oaSpULW4qei1zKk0pKkIsdFsyXT0oeSpBLW0qXytnKncpKkIsdFszXT0ocCpfLWgqQS1kKncpKkIsdFs0XT0obCpJLWEqei11KmspKkIsdFs1XT0ocip6LWkqSStzKmspKkIsdFs2XT0obSpiLWYqQS1nKnYpKkIsdFs3XT0oYypBLXAqYitkKnYpKkIsdFs4XT0oYSpULW8qSSt1KlMpKkIsdFs5XT0obipJLXIqVC1zKlMpKkIsdFsxMF09KGYqXy15KmIrZyp4KSpCLHRbMTFdPShoKmItYypfLWQqeCkqQix0WzEyXT0obyprLWEqTS1sKlMpKkIsdFsxM109KHIqTS1uKmsraSpTKSpCLHRbMTRdPSh5KnYtZip3LW0qeCkqQix0WzE1XT0oYyp3LWgqditwKngpKkIsdCk6bnVsbH1mdW5jdGlvbiB5byh0LGUscil7dmFyIG49ZVswXSxpPWVbMV0scz1lWzJdLGE9ZVszXSxvPWVbNF0sbD1lWzVdLHU9ZVs2XSxjPWVbN10saD1lWzhdLHA9ZVs5XSxkPWVbMTBdLGY9ZVsxMV0seT1lWzEyXSxtPWVbMTNdLGc9ZVsxNF0seD1lWzE1XSx2PXJbMF0sYj1yWzFdLHc9clsyXSxfPXJbM107cmV0dXJuIHRbMF09dipuK2Iqbyt3KmgrXyp5LHRbMV09dippK2IqbCt3KnArXyptLHRbMl09dipzK2IqdSt3KmQrXypnLHRbM109diphK2IqYyt3KmYrXyp4LHRbNF09KHY9cls0XSkqbisoYj1yWzVdKSpvKyh3PXJbNl0pKmgrKF89cls3XSkqeSx0WzVdPXYqaStiKmwrdypwK18qbSx0WzZdPXYqcytiKnUrdypkK18qZyx0WzddPXYqYStiKmMrdypmK18qeCx0WzhdPSh2PXJbOF0pKm4rKGI9cls5XSkqbysodz1yWzEwXSkqaCsoXz1yWzExXSkqeSx0WzldPXYqaStiKmwrdypwK18qbSx0WzEwXT12KnMrYip1K3cqZCtfKmcsdFsxMV09diphK2IqYyt3KmYrXyp4LHRbMTJdPSh2PXJbMTJdKSpuKyhiPXJbMTNdKSpvKyh3PXJbMTRdKSpoKyhfPXJbMTVdKSp5LHRbMTNdPXYqaStiKmwrdypwK18qbSx0WzE0XT12KnMrYip1K3cqZCtfKmcsdFsxNV09diphK2IqYyt3KmYrXyp4LHR9ZnVuY3Rpb24gbW8odCxlLHIpe3ZhciBuLGkscyxhLG8sbCx1LGMsaCxwLGQsZix5PXJbMF0sbT1yWzFdLGc9clsyXTtyZXR1cm4gZT09PXQ/KHRbMTJdPWVbMF0qeStlWzRdKm0rZVs4XSpnK2VbMTJdLHRbMTNdPWVbMV0qeStlWzVdKm0rZVs5XSpnK2VbMTNdLHRbMTRdPWVbMl0qeStlWzZdKm0rZVsxMF0qZytlWzE0XSx0WzE1XT1lWzNdKnkrZVs3XSptK2VbMTFdKmcrZVsxNV0pOihpPWVbMV0scz1lWzJdLGE9ZVszXSxvPWVbNF0sbD1lWzVdLHU9ZVs2XSxjPWVbN10saD1lWzhdLHA9ZVs5XSxkPWVbMTBdLGY9ZVsxMV0sdFswXT1uPWVbMF0sdFsxXT1pLHRbMl09cyx0WzNdPWEsdFs0XT1vLHRbNV09bCx0WzZdPXUsdFs3XT1jLHRbOF09aCx0WzldPXAsdFsxMF09ZCx0WzExXT1mLHRbMTJdPW4qeStvKm0raCpnK2VbMTJdLHRbMTNdPWkqeStsKm0rcCpnK2VbMTNdLHRbMTRdPXMqeSt1Km0rZCpnK2VbMTRdLHRbMTVdPWEqeStjKm0rZipnK2VbMTVdKSx0fWZ1bmN0aW9uIGdvKHQsZSxyKXt2YXIgbj1yWzBdLGk9clsxXSxzPXJbMl07cmV0dXJuIHRbMF09ZVswXSpuLHRbMV09ZVsxXSpuLHRbMl09ZVsyXSpuLHRbM109ZVszXSpuLHRbNF09ZVs0XSppLHRbNV09ZVs1XSppLHRbNl09ZVs2XSppLHRbN109ZVs3XSppLHRbOF09ZVs4XSpzLHRbOV09ZVs5XSpzLHRbMTBdPWVbMTBdKnMsdFsxMV09ZVsxMV0qcyx0WzEyXT1lWzEyXSx0WzEzXT1lWzEzXSx0WzE0XT1lWzE0XSx0WzE1XT1lWzE1XSx0fWZ1bmN0aW9uIHhvKHQsZSxyKXt2YXIgbj1NYXRoLnNpbihyKSxpPU1hdGguY29zKHIpLHM9ZVs0XSxhPWVbNV0sbz1lWzZdLGw9ZVs3XSx1PWVbOF0sYz1lWzldLGg9ZVsxMF0scD1lWzExXTtyZXR1cm4gZSE9PXQmJih0WzBdPWVbMF0sdFsxXT1lWzFdLHRbMl09ZVsyXSx0WzNdPWVbM10sdFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0pLHRbNF09cyppK3Uqbix0WzVdPWEqaStjKm4sdFs2XT1vKmkraCpuLHRbN109bCppK3Aqbix0WzhdPXUqaS1zKm4sdFs5XT1jKmktYSpuLHRbMTBdPWgqaS1vKm4sdFsxMV09cCppLWwqbix0fWZ1bmN0aW9uIHZvKHQsZSxyKXt2YXIgbj1NYXRoLnNpbihyKSxpPU1hdGguY29zKHIpLHM9ZVswXSxhPWVbMV0sbz1lWzJdLGw9ZVszXSx1PWVbOF0sYz1lWzldLGg9ZVsxMF0scD1lWzExXTtyZXR1cm4gZSE9PXQmJih0WzRdPWVbNF0sdFs1XT1lWzVdLHRbNl09ZVs2XSx0WzddPWVbN10sdFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0pLHRbMF09cyppLXUqbix0WzFdPWEqaS1jKm4sdFsyXT1vKmktaCpuLHRbM109bCppLXAqbix0WzhdPXMqbit1KmksdFs5XT1hKm4rYyppLHRbMTBdPW8qbitoKmksdFsxMV09bCpuK3AqaSx0fWZ1bmN0aW9uIGJvKHQsZSl7cmV0dXJuIHRbMF09ZVswXSx0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRdPTAsdFs1XT1lWzFdLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzEwXT1lWzJdLHRbMTFdPTAsdFsxMl09MCx0WzEzXT0wLHRbMTRdPTAsdFsxNV09MSx0fWZ1bmN0aW9uIHdvKHQsZSxyKXt2YXIgbixpLHMsYT1yWzBdLG89clsxXSxsPXJbMl0sdT1NYXRoLmh5cG90KGEsbyxsKTtyZXR1cm4gdTxsbz9udWxsOihhKj11PTEvdSxvKj11LGwqPXUsbj1NYXRoLnNpbihlKSxpPU1hdGguY29zKGUpLHRbMF09YSphKihzPTEtaSkraSx0WzFdPW8qYSpzK2wqbix0WzJdPWwqYSpzLW8qbix0WzNdPTAsdFs0XT1hKm8qcy1sKm4sdFs1XT1vKm8qcytpLHRbNl09bCpvKnMrYSpuLHRbN109MCx0WzhdPWEqbCpzK28qbix0WzldPW8qbCpzLWEqbix0WzEwXT1sKmwqcytpLHRbMTFdPTAsdFsxMl09MCx0WzEzXT0wLHRbMTRdPTAsdFsxNV09MSx0KX1NYXRoLmh5cG90fHwoTWF0aC5oeXBvdD1mdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9YXJndW1lbnRzLmxlbmd0aDtlLS07KXQrPWFyZ3VtZW50c1tlXSphcmd1bWVudHNbZV07cmV0dXJuIE1hdGguc3FydCh0KX0pO3ZhciBfbz15bztmdW5jdGlvbiBBbygpe3ZhciB0PW5ldyB1bygzKTtyZXR1cm4gdW8hPUZsb2F0MzJBcnJheSYmKHRbMF09MCx0WzFdPTAsdFsyXT0wKSx0fWZ1bmN0aW9uIFNvKHQpe3ZhciBlPW5ldyB1bygzKTtyZXR1cm4gZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZX1mdW5jdGlvbiBrbyh0KXtyZXR1cm4gTWF0aC5oeXBvdCh0WzBdLHRbMV0sdFsyXSl9ZnVuY3Rpb24gSW8odCxlLHIpe3ZhciBuPW5ldyB1bygzKTtyZXR1cm4gblswXT10LG5bMV09ZSxuWzJdPXIsbn1mdW5jdGlvbiBNbyh0LGUscil7cmV0dXJuIHRbMF09ZVswXStyWzBdLHRbMV09ZVsxXStyWzFdLHRbMl09ZVsyXStyWzJdLHR9ZnVuY3Rpb24gVG8odCxlLHIpe3JldHVybiB0WzBdPWVbMF0tclswXSx0WzFdPWVbMV0tclsxXSx0WzJdPWVbMl0tclsyXSx0fWZ1bmN0aW9uIHpvKHQsZSxyKXtyZXR1cm4gdFswXT1lWzBdKnJbMF0sdFsxXT1lWzFdKnJbMV0sdFsyXT1lWzJdKnJbMl0sdH1mdW5jdGlvbiBCbyh0LGUscil7cmV0dXJuIHRbMF09TWF0aC5taW4oZVswXSxyWzBdKSx0WzFdPU1hdGgubWluKGVbMV0sclsxXSksdFsyXT1NYXRoLm1pbihlWzJdLHJbMl0pLHR9ZnVuY3Rpb24gRW8odCxlLHIpe3JldHVybiB0WzBdPU1hdGgubWF4KGVbMF0sclswXSksdFsxXT1NYXRoLm1heChlWzFdLHJbMV0pLHRbMl09TWF0aC5tYXgoZVsyXSxyWzJdKSx0fWZ1bmN0aW9uIENvKHQsZSxyKXtyZXR1cm4gdFswXT1lWzBdKnIsdFsxXT1lWzFdKnIsdFsyXT1lWzJdKnIsdH1mdW5jdGlvbiBQbyh0LGUscixuKXtyZXR1cm4gdFswXT1lWzBdK3JbMF0qbix0WzFdPWVbMV0rclsxXSpuLHRbMl09ZVsyXStyWzJdKm4sdH1mdW5jdGlvbiBEbyh0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGk9ZVsyXSxzPXIqcituKm4raSppO3JldHVybiBzPjAmJihzPTEvTWF0aC5zcXJ0KHMpKSx0WzBdPWVbMF0qcyx0WzFdPWVbMV0qcyx0WzJdPWVbMl0qcyx0fWZ1bmN0aW9uIFZvKHQsZSl7cmV0dXJuIHRbMF0qZVswXSt0WzFdKmVbMV0rdFsyXSplWzJdfWZ1bmN0aW9uIExvKHQsZSxyKXt2YXIgbj1lWzBdLGk9ZVsxXSxzPWVbMl0sYT1yWzBdLG89clsxXSxsPXJbMl07cmV0dXJuIHRbMF09aSpsLXMqbyx0WzFdPXMqYS1uKmwsdFsyXT1uKm8taSphLHR9ZnVuY3Rpb24gRm8odCxlLHIpe3ZhciBuPWVbMF0saT1lWzFdLHM9ZVsyXSxhPXJbM10qbityWzddKmkrclsxMV0qcytyWzE1XTtyZXR1cm4gdFswXT0oclswXSpuK3JbNF0qaStyWzhdKnMrclsxMl0pLyhhPWF8fDEpLHRbMV09KHJbMV0qbityWzVdKmkrcls5XSpzK3JbMTNdKS9hLHRbMl09KHJbMl0qbityWzZdKmkrclsxMF0qcytyWzE0XSkvYSx0fWZ1bmN0aW9uIFJvKHQsZSxyKXt2YXIgbj1yWzBdLGk9clsxXSxzPXJbMl0sYT1lWzBdLG89ZVsxXSxsPWVbMl0sdT1pKmwtcypvLGM9cyphLW4qbCxoPW4qby1pKmEscD1pKmgtcypjLGQ9cyp1LW4qaCxmPW4qYy1pKnUseT0yKnJbM107cmV0dXJuIGMqPXksaCo9eSxkKj0yLGYqPTIsdFswXT1hKyh1Kj15KSsocCo9MiksdFsxXT1vK2MrZCx0WzJdPWwraCtmLHR9dmFyIFVvLCRvPVRvLGpvPXpvLE9vPWtvO2Z1bmN0aW9uIHFvKHQsZSxyKXtyZXR1cm4gdFswXT1lWzBdKnIsdFsxXT1lWzFdKnIsdFsyXT1lWzJdKnIsdFszXT1lWzNdKnIsdH1mdW5jdGlvbiBObyh0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGk9ZVsyXSxzPWVbM10sYT1yKnIrbipuK2kqaStzKnM7cmV0dXJuIGE+MCYmKGE9MS9NYXRoLnNxcnQoYSkpLHRbMF09ciphLHRbMV09biphLHRbMl09aSphLHRbM109cyphLHR9ZnVuY3Rpb24gR28odCxlLHIpe3ZhciBuPWVbMF0saT1lWzFdLHM9ZVsyXSxhPWVbM107cmV0dXJuIHRbMF09clswXSpuK3JbNF0qaStyWzhdKnMrclsxMl0qYSx0WzFdPXJbMV0qbityWzVdKmkrcls5XSpzK3JbMTNdKmEsdFsyXT1yWzJdKm4rcls2XSppK3JbMTBdKnMrclsxNF0qYSx0WzNdPXJbM10qbityWzddKmkrclsxMV0qcytyWzE1XSphLHR9ZnVuY3Rpb24gWm8oKXt2YXIgdD1uZXcgdW8oNCk7cmV0dXJuIHVvIT1GbG9hdDMyQXJyYXkmJih0WzBdPTAsdFsxXT0wLHRbMl09MCksdFszXT0xLHR9ZnVuY3Rpb24gS28odCl7cmV0dXJuIHRbMF09MCx0WzFdPTAsdFsyXT0wLHRbM109MSx0fWZ1bmN0aW9uIFhvKHQsZSxyKXtyKj0uNTt2YXIgbj1lWzBdLGk9ZVsxXSxzPWVbMl0sYT1lWzNdLG89TWF0aC5zaW4ociksbD1NYXRoLmNvcyhyKTtyZXR1cm4gdFswXT1uKmwrYSpvLHRbMV09aSpsK3Mqbyx0WzJdPXMqbC1pKm8sdFszXT1hKmwtbipvLHR9ZnVuY3Rpb24gSm8odCxlLHIpe3IqPS41O3ZhciBuPWVbMF0saT1lWzFdLHM9ZVsyXSxhPWVbM10sbz1NYXRoLnNpbihyKSxsPU1hdGguY29zKHIpO3JldHVybiB0WzBdPW4qbC1zKm8sdFsxXT1pKmwrYSpvLHRbMl09cypsK24qbyx0WzNdPWEqbC1pKm8sdH1BbygpLFVvPW5ldyB1byg0KSx1byE9RmxvYXQzMkFycmF5JiYoVW9bMF09MCxVb1sxXT0wLFVvWzJdPTAsVW9bM109MCk7dmFyIEhvPU5vO0FvKCksSW8oMSwwLDApLElvKDAsMSwwKSxabygpLFpvKCksY28oKTtjb25zdCBZbz1Scyhbe3R5cGU6XCJGbG9hdDMyXCIsbmFtZTpcImFfZ2xvYmVfcG9zXCIsY29tcG9uZW50czozfSx7dHlwZTpcIkZsb2F0MzJcIixuYW1lOlwiYV91dlwiLGNvbXBvbmVudHM6Mn1dKSx7bWVtYmVyczpXb309WW8sUW89UnMoW3tuYW1lOlwiYV9wb3NfM1wiLGNvbXBvbmVudHM6Myx0eXBlOlwiSW50MTZcIn1dKTt2YXIgdGw9UnMoW3tuYW1lOlwiYV9wb3NcIix0eXBlOlwiSW50MTZcIixjb21wb25lbnRzOjJ9XSk7Y2xhc3MgZWx7Y29uc3RydWN0b3IodCxlKXt0aGlzLnBvcz10LHRoaXMuZGlyPWU7fWludGVyc2VjdHNQbGFuZSh0LGUscil7Y29uc3Qgbj1WbyhlLHRoaXMuZGlyKTtpZihNYXRoLmFicyhuKTwxZS02KXJldHVybiAhMTtjb25zdCBpPSgodFswXS10aGlzLnBvc1swXSkqZVswXSsodFsxXS10aGlzLnBvc1sxXSkqZVsxXSsodFsyXS10aGlzLnBvc1syXSkqZVsyXSkvbjtyZXR1cm4gclswXT10aGlzLnBvc1swXSt0aGlzLmRpclswXSppLHJbMV09dGhpcy5wb3NbMV0rdGhpcy5kaXJbMV0qaSxyWzJdPXRoaXMucG9zWzJdK3RoaXMuZGlyWzJdKmksITB9Y2xvc2VzdFBvaW50T25TcGhlcmUodCxlLHIpe2lmKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dFswXSxuPXRbMV0saT10WzJdLHM9ZVswXSxhPWVbMV0sbz1lWzJdO3JldHVybiBNYXRoLmFicyhyLXMpPD1sbypNYXRoLm1heCgxLE1hdGguYWJzKHIpLE1hdGguYWJzKHMpKSYmTWF0aC5hYnMobi1hKTw9bG8qTWF0aC5tYXgoMSxNYXRoLmFicyhuKSxNYXRoLmFicyhhKSkmJk1hdGguYWJzKGktbyk8PWxvKk1hdGgubWF4KDEsTWF0aC5hYnMoaSksTWF0aC5hYnMobykpfSh0aGlzLnBvcyx0KXx8MD09PWUpcmV0dXJuIHJbMF09clsxXT1yWzJdPTAsITE7Y29uc3RbbixpLHNdPXRoaXMuZGlyLGE9dGhpcy5wb3NbMF0tdFswXSxvPXRoaXMucG9zWzFdLXRbMV0sbD10aGlzLnBvc1syXS10WzJdLHU9bipuK2kqaStzKnMsYz0yKihhKm4rbyppK2wqcyksaD1jKmMtNCp1KihhKmErbypvK2wqbC1lKmUpO2lmKGg8MCl7Y29uc3QgdD1NYXRoLm1heCgtYy8yLDApLHU9YStuKnQsaD1vK2kqdCxwPWwrcyp0LGQ9TWF0aC5oeXBvdCh1LGgscCk7cmV0dXJuIHJbMF09dSplL2QsclsxXT1oKmUvZCxyWzJdPXAqZS9kLCExfXtjb25zdCB0PSgtYy1NYXRoLnNxcnQoaCkpLygyKnUpO2lmKHQ8MCl7Y29uc3QgdD1NYXRoLmh5cG90KGEsbyxsKTtyZXR1cm4gclswXT1hKmUvdCxyWzFdPW8qZS90LHJbMl09bCplL3QsITF9cmV0dXJuIHJbMF09YStuKnQsclsxXT1vK2kqdCxyWzJdPWwrcyp0LCEwfX19Y2xhc3Mgcmx7Y29uc3RydWN0b3IodCxlLHIsbixpKXt0aGlzLlRMPXQsdGhpcy5UUj1lLHRoaXMuQlI9cix0aGlzLkJMPW4sdGhpcy5ob3Jpem9uPWk7fXN0YXRpYyBmcm9tSW52UHJvamVjdGlvbk1hdHJpeCh0LGUscil7Y29uc3Qgbj1bLTEsMSwxXSxpPVsxLDEsMV0scz1bMSwtMSwxXSxhPVstMSwtMSwxXSxvPUZvKG4sbix0KSxsPUZvKGksaSx0KSx1PUZvKHMscyx0KSxjPUZvKGEsYSx0KTtyZXR1cm4gbmV3IHJsKG8sbCx1LGMsZS9yKX19Y2xhc3Mgbmx7Y29uc3RydWN0b3IodCxlKXt0aGlzLnBvaW50cz10LHRoaXMucGxhbmVzPWU7fXN0YXRpYyBmcm9tSW52UHJvamVjdGlvbk1hdHJpeCh0LGUscixuKXtjb25zdCBpPU1hdGgucG93KDIscikscz1bWy0xLDEsLTEsMV0sWzEsMSwtMSwxXSxbMSwtMSwtMSwxXSxbLTEsLTEsLTEsMV0sWy0xLDEsMSwxXSxbMSwxLDEsMV0sWzEsLTEsMSwxXSxbLTEsLTEsMSwxXV0ubWFwKChyPT57Y29uc3Qgcz1HbyhbXSxyLHQpLGE9MS9zWzNdL2UqaTtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPWVbMF0qclswXSx0WzFdPWVbMV0qclsxXSx0WzJdPWVbMl0qclsyXSx0WzNdPWVbM10qclszXSx0fShzLHMsW2EsYSxuPzEvc1szXTphLGFdKX0pKSxhPVtbMCwxLDJdLFs2LDUsNF0sWzAsMyw3XSxbMiwxLDVdLFszLDIsNl0sWzAsNCw1XV0ubWFwKCh0PT57Y29uc3QgZT1EbyhbXSxMbyhbXSwkbyhbXSxzW3RbMF1dLHNbdFsxXV0pLCRvKFtdLHNbdFsyXV0sc1t0WzFdXSkpKSxyPS1WbyhlLHNbdFsxXV0pO3JldHVybiBlLmNvbmNhdChyKX0pKTtyZXR1cm4gbmV3IG5sKHMsYSl9fWNsYXNzIGlse3N0YXRpYyBmcm9tUG9pbnRzKHQpe2NvbnN0IGU9WzEvMCwxLzAsMS8wXSxyPVstMS8wLC0xLzAsLTEvMF07Zm9yKGNvbnN0IG4gb2YgdClCbyhlLGUsbiksRW8ocixyLG4pO3JldHVybiBuZXcgaWwoZSxyKX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0odCxlKXtjb25zdCByPXQuZ2V0Q29ybmVycygpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7Kyt0KUZvKHJbdF0sclt0XSxlKTtyZXR1cm4gaWwuZnJvbVBvaW50cyhyKX1jb25zdHJ1Y3Rvcih0LGUpe3RoaXMubWluPXQsdGhpcy5tYXg9ZSx0aGlzLmNlbnRlcj1DbyhbXSxNbyhbXSx0aGlzLm1pbix0aGlzLm1heCksLjUpO31xdWFkcmFudCh0KXtjb25zdCBlPVt0JTI9PTAsdDwyXSxyPVNvKHRoaXMubWluKSxuPVNvKHRoaXMubWF4KTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylyW3RdPWVbdF0/dGhpcy5taW5bdF06dGhpcy5jZW50ZXJbdF0sblt0XT1lW3RdP3RoaXMuY2VudGVyW3RdOnRoaXMubWF4W3RdO3JldHVybiBuWzJdPXRoaXMubWF4WzJdLG5ldyBpbChyLG4pfWRpc3RhbmNlWCh0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4odGhpcy5tYXhbMF0sdFswXSksdGhpcy5taW5bMF0pLXRbMF19ZGlzdGFuY2VZKHQpe3JldHVybiBNYXRoLm1heChNYXRoLm1pbih0aGlzLm1heFsxXSx0WzFdKSx0aGlzLm1pblsxXSktdFsxXX1kaXN0YW5jZVoodCl7cmV0dXJuIE1hdGgubWF4KE1hdGgubWluKHRoaXMubWF4WzJdLHRbMl0pLHRoaXMubWluWzJdKS10WzJdfWdldENvcm5lcnMoKXtjb25zdCB0PXRoaXMubWluLGU9dGhpcy5tYXg7cmV0dXJuIFtbdFswXSx0WzFdLHRbMl1dLFtlWzBdLHRbMV0sdFsyXV0sW2VbMF0sZVsxXSx0WzJdXSxbdFswXSxlWzFdLHRbMl1dLFt0WzBdLHRbMV0sZVsyXV0sW2VbMF0sdFsxXSxlWzJdXSxbZVswXSxlWzFdLGVbMl1dLFt0WzBdLGVbMV0sZVsyXV1dfWludGVyc2VjdHModCl7Y29uc3QgZT10aGlzLmdldENvcm5lcnMoKTtsZXQgcj0hMDtmb3IobGV0IG49MDtuPHQucGxhbmVzLmxlbmd0aDtuKyspe2NvbnN0IGk9dC5wbGFuZXNbbl07bGV0IHM9MDtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylzKz1WbyhpLGVbdF0pK2lbM10+PTA7aWYoMD09PXMpcmV0dXJuIDA7cyE9PWUubGVuZ3RoJiYocj0hMSk7fWlmKHIpcmV0dXJuIDI7Zm9yKGxldCBlPTA7ZTwzO2UrKyl7bGV0IHI9TnVtYmVyLk1BWF9WQUxVRSxuPS1OdW1iZXIuTUFYX1ZBTFVFO2ZvcihsZXQgaT0wO2k8dC5wb2ludHMubGVuZ3RoO2krKyl7Y29uc3Qgcz10LnBvaW50c1tpXVtlXS10aGlzLm1pbltlXTtyPU1hdGgubWluKHIscyksbj1NYXRoLm1heChuLHMpO31pZihuPDB8fHI+dGhpcy5tYXhbZV0tdGhpcy5taW5bZV0pcmV0dXJuIDB9cmV0dXJuIDF9fWNvbnN0IHNsPTUsYWw9NixvbD1hby9NYXRoLlBJLzIsbGw9MTYzODMsdWw9NjQsY2w9W3VsLDMyLDE2XSxobD0tb2wscGw9b2wsZGw9W25ldyBpbChbaGwsaGwsaGxdLFtwbCxwbCxwbF0pLG5ldyBpbChbaGwsaGwsaGxdLFswLDAscGxdKSxuZXcgaWwoWzAsaGwsaGxdLFtwbCwwLHBsXSksbmV3IGlsKFtobCwwLGhsXSxbMCxwbCxwbF0pLG5ldyBpbChbMCwwLGhsXSxbcGwscGwscGxdKV07ZnVuY3Rpb24gZmwodCl7cmV0dXJuIHQqb2wvVWx9ZnVuY3Rpb24geWwodCxlLHIsbj0hMCl7Y29uc3QgaT1DbyhbXSx0Ll9jYW1lcmEucG9zaXRpb24sdC53b3JsZFNpemUpLHM9W2UsciwxLDFdO0dvKHMscyx0LnBpeGVsTWF0cml4SW52ZXJzZSkscW8ocyxzLDEvc1szXSk7Y29uc3QgYT1EbyhbXSwkbyhbXSxzLGkpKSxvPXQuZ2xvYmVNYXRyaXgsbD1bb1sxMl0sb1sxM10sb1sxNF1dLHU9JG8oW10sbCxpKSxjPWtvKHUpLGg9RG8oW10sdSkscD10LndvcmxkU2l6ZS8oMipNYXRoLlBJKSxkPVZvKGgsYSksZj1NYXRoLmFzaW4ocC9jKTtpZihmPE1hdGguYWNvcyhkKSl7aWYoIW4pcmV0dXJuIG51bGw7Y29uc3QgdD1bXSxlPVtdO0NvKHQsYSxjL2QpLERvKGUsJG8oZSx0LHUpKSxEbyhhLE1vKGEsdSxDbyhhLGUsTWF0aC50YW4oZikqYykpKTt9Y29uc3QgeT1bXTtuZXcgZWwoaSxhKS5jbG9zZXN0UG9pbnRPblNwaGVyZShsLHAseSk7Y29uc3QgbT1EbyhbXSxXKG8sMCkpLGc9RG8oW10sVyhvLDEpKSx4PURvKFtdLFcobywyKSksdj1WbyhtLHkpLGI9Vm8oZyx5KSx3PVZvKHgseSksQT1fKE1hdGguYXNpbigtYi9wKSk7bGV0IFM9XyhNYXRoLmF0YW4yKHYsdykpO1M9dC5jZW50ZXIubG5nK2Z1bmN0aW9uKHQsZSl7Y29uc3Qgcj0oZS10KzE4MCklMzYwLTE4MDtyZXR1cm4gcjwtMTgwP3IrMzYwOnJ9KHQuY2VudGVyLmxuZyxTKTtjb25zdCBrPU5sKFMpLEk9TShHbChBKSwwLDEpO3JldHVybiBuZXcgV2woayxJKX1jbGFzcyBtbHtjb25zdHJ1Y3Rvcih0LGUscil7dGhpcy5hPSRvKFtdLHQsciksdGhpcy5iPSRvKFtdLGUsciksdGhpcy5jZW50ZXI9cjtjb25zdCBuPURvKFtdLHRoaXMuYSksaT1EbyhbXSx0aGlzLmIpO3RoaXMuYW5nbGU9TWF0aC5hY29zKFZvKG4saSkpO319ZnVuY3Rpb24gZ2wodCxlKXtpZigwPT09dC5hbmdsZSlyZXR1cm4gbnVsbDtsZXQgcjtyZXR1cm4gcj0wPT09dC5hW2VdPzEvdC5hbmdsZSouNSpNYXRoLlBJOjEvdC5hbmdsZSpNYXRoLmF0YW4odC5iW2VdL3QuYVtlXS9NYXRoLnNpbih0LmFuZ2xlKS0xL01hdGgudGFuKHQuYW5nbGUpKSxyPDB8fHI+MT9udWxsOmZ1bmN0aW9uKHQsZSxyLG4pe2NvbnN0IGk9TWF0aC5zaW4ocik7cmV0dXJuIHQqKE1hdGguc2luKCgxLW4pKnIpL2kpK2UqKE1hdGguc2luKG4qcikvaSl9KHQuYVtlXSx0LmJbZV0sdC5hbmdsZSxNKHIsMCwxKSkrdC5jZW50ZXJbZV19ZnVuY3Rpb24geGwodCl7aWYodC56PD0xKXJldHVybiBkbFt0LnorMip0LnkrdC54XTtjb25zdCBlPVNsKEFsKHQpKTtyZXR1cm4gaWwuZnJvbVBvaW50cyhlKX1mdW5jdGlvbiB2bCh0LGUscil7cmV0dXJuIENvKHQsdCwxLXIpLFBvKHQsdCxlLHIpfWZ1bmN0aW9uIGJsKHQsZSl7Y29uc3Qgcj1QbChlLnpvb20pO2lmKDA9PT1yKXJldHVybiB4bCh0KTtjb25zdCBuPUFsKHQpLGk9U2wobikscz1ObChuLmdldFdlc3QoKSkqZS53b3JsZFNpemUsYT1ObChuLmdldEVhc3QoKSkqZS53b3JsZFNpemUsbz1HbChuLmdldE5vcnRoKCkpKmUud29ybGRTaXplLGw9R2wobi5nZXRTb3V0aCgpKSplLndvcmxkU2l6ZSx1PVtzLG8sMF0sYz1bYSxvLDBdLGg9W3MsbCwwXSxwPVthLGwsMF0sZD1mbyhbXSxlLmdsb2JlTWF0cml4KTtyZXR1cm4gRm8odSx1LGQpLEZvKGMsYyxkKSxGbyhoLGgsZCksRm8ocCxwLGQpLGlbMF09dmwoaVswXSxoLHIpLGlbMV09dmwoaVsxXSxwLHIpLGlbMl09dmwoaVsyXSxjLHIpLGlbM109dmwoaVszXSx1LHIpLGlsLmZyb21Qb2ludHMoaSl9ZnVuY3Rpb24gd2wodCxlLHIpe2Zvcihjb25zdCBuIG9mIHQpRm8obixuLGUpLENvKG4sbixyKTt9ZnVuY3Rpb24gX2wodCxlLHIpe2NvbnN0IG49ZS90LndvcmxkU2l6ZSxpPXQuZ2xvYmVNYXRyaXg7aWYoci56PD0xKXtjb25zdCB0PXhsKHIpLmdldENvcm5lcnMoKTtyZXR1cm4gd2wodCxpLG4pLGlsLmZyb21Qb2ludHModCl9Y29uc3Qgcz1BbChyKSxhPVNsKHMpO3dsKGEsaSxuKTtjb25zdCBvPU51bWJlci5NQVhfVkFMVUUsbD1bLW8sLW8sLW9dLHU9W28sbyxvXTtpZihzLmNvbnRhaW5zKHQuY2VudGVyKSl7Zm9yKGNvbnN0IHQgb2YgYSlCbyh1LHUsdCksRW8obCxsLHQpO2xbMl09MDtjb25zdCBlPXQucG9pbnQscj1bZS54Km4sZS55Km4sMF07cmV0dXJuIEJvKHUsdSxyKSxFbyhsLGwsciksbmV3IGlsKHUsbCl9Y29uc3QgYz1baVsxMl0qbixpWzEzXSpuLGlbMTRdKm5dLGg9cy5nZXRDZW50ZXIoKSxwPU0odC5jZW50ZXIubGF0LC1IbCxIbCksZD1NKGgubGF0LC1IbCxIbCksZj1ObCh0LmNlbnRlci5sbmcpLHk9R2wocCk7bGV0IG09Zi1ObChoLmxuZyk7Y29uc3QgZz15LUdsKGQpO20+LjU/bS09MTptPC0uNSYmKG0rPTEpO2xldCB4PTA7TWF0aC5hYnMobSk+TWF0aC5hYnMoZyk/eD1tPj0wPzE6MzooeD1nPj0wPzA6MixQbyhjLGMsW2lbNF0qbixpWzVdKm4saVs2XSpuXSwtTWF0aC5zaW4odyhnPj0wP3MuZ2V0U291dGgoKTpzLmdldE5vcnRoKCkpKSpvbCkpO2NvbnN0IHY9YVt4XSxiPWFbKHgrMSklNF0sXz1uZXcgbWwodixiLGMpLEE9W2dsKF8sMCl8fHZbMF0sZ2woXywxKXx8dlsxXSxnbChfLDIpfHx2WzJdXSxTPVBsKHQuem9vbSk7aWYoUz4wKXtjb25zdCBuPWZ1bmN0aW9uKHt4OnQseTplLHo6cn0sbixpLHMsYSl7Y29uc3Qgbz0xLygxPDxyKTtsZXQgbD10Km8sdT1sK28sYz1lKm8saD1jK28scD0wO2NvbnN0IGQ9KGwrdSkvMi1zO3JldHVybiBkPi41P3A9LTE6ZDwtLjUmJihwPTEpLGw9KChsK3ApKm4tKHMqPW4pKSppK3MsdT0oKHUrcCkqbi1zKSppK3MsYz0oYypuLShhKj1uKSkqaSthLGg9KGgqbi1hKSppK2EsW1tsLGgsMF0sW3UsaCwwXSxbdSxjLDBdLFtsLGMsMF1dfShyLGUsdC5fcGl4ZWxzUGVyTWVyY2F0b3JQaXhlbCxmLHkpO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCsrKXZsKGFbdF0sblt0XSxTKTtjb25zdCBpPU1vKFtdLG5beF0sblsoeCsxKSU0XSk7Q28oaSxpLC41KSx2bChBLGksUyk7fWZvcihjb25zdCB0IG9mIGEpQm8odSx1LHQpLEVvKGwsbCx0KTtyZXR1cm4gdVsyXT1NYXRoLm1pbih2WzJdLGJbMl0pLEJvKHUsdSxBKSxFbyhsLGwsQSksbmV3IGlsKHUsbCl9ZnVuY3Rpb24gQWwoe3g6dCx5OmUsejpyfSl7Y29uc3Qgbj0xLygxPDxyKSxpPW5ldyBPbChLbCh0Km4pLFhsKChlKzEpKm4pKSxzPW5ldyBPbChLbCgodCsxKSpuKSxYbChlKm4pKTtyZXR1cm4gbmV3IG9vKGkscyl9ZnVuY3Rpb24gU2wodCl7Y29uc3QgZT13KHQuZ2V0Tm9ydGgoKSkscj13KHQuZ2V0U291dGgoKSksbj1NYXRoLmNvcyhlKSxpPU1hdGguY29zKHIpLHM9TWF0aC5zaW4oZSksYT1NYXRoLnNpbihyKSxvPXQuZ2V0V2VzdCgpLGw9dC5nZXRFYXN0KCk7cmV0dXJuIFtrbChpLGEsbyksa2woaSxhLGwpLGtsKG4scyxsKSxrbChuLHMsbyldfWZ1bmN0aW9uIGtsKHQsZSxyLG49b2wpe3JldHVybiByPXcociksW3QqTWF0aC5zaW4ocikqbiwtZSpuLHQqTWF0aC5jb3Mocikqbl19ZnVuY3Rpb24gSWwodCxlLHIpe3JldHVybiBrbChNYXRoLmNvcyh3KHQpKSxNYXRoLnNpbih3KHQpKSxlLHIpfWZ1bmN0aW9uIE1sKHQsZSxyLG4pe2NvbnN0IGk9MTw8ci56LHM9KHQvYW8rci54KS9pO3JldHVybiBJbChYbCgoZS9hbytyLnkpL2kpLEtsKHMpLG4pfWZ1bmN0aW9uIFRsKHttaW46dCxtYXg6ZX0pe3JldHVybiBsbC9NYXRoLm1heChlWzBdLXRbMF0sZVsxXS10WzFdLGVbMl0tdFsyXSl9Y29uc3Qgemw9bmV3IEZsb2F0NjRBcnJheSgxNik7ZnVuY3Rpb24gQmwodCl7Y29uc3QgZT1UbCh0KSxyPWJvKHpsLFtlLGUsZV0pO3JldHVybiBtbyhyLHIsKChuPVtdKVswXT0tKGk9dC5taW4pWzBdLG5bMV09LWlbMV0sblsyXT0taVsyXSxuKSk7dmFyIG4saTt9ZnVuY3Rpb24gRWwodCl7Y29uc3QgZT0obj10Lm1pbiwocj16bClbMF09MSxyWzFdPTAsclsyXT0wLHJbM109MCxyWzRdPTAscls1XT0xLHJbNl09MCxyWzddPTAscls4XT0wLHJbOV09MCxyWzEwXT0xLHJbMTFdPTAsclsxMl09blswXSxyWzEzXT1uWzFdLHJbMTRdPW5bMl0sclsxNV09MSxyKTt2YXIgcixuO2NvbnN0IGk9MS9UbCh0KTtyZXR1cm4gZ28oZSxlLFtpLGksaV0pfWZ1bmN0aW9uIENsKHQsZSxyLG4saSl7Y29uc3Qgcz1mdW5jdGlvbih0KXtjb25zdCBlPWFvLygyKk1hdGguUEkpO3JldHVybiB0LygyKk1hdGguUEkpL2V9KHIpLGE9W3QsZSwtci8oMipNYXRoLlBJKV0sbz1wbyhuZXcgRmxvYXQ2NEFycmF5KDE2KSk7cmV0dXJuIG1vKG8sbyxhKSxnbyhvLG8sW3MscyxzXSkseG8obyxvLHcoLWkpKSx2byhvLG8sdygtbikpLG99ZnVuY3Rpb24gUGwodCl7cmV0dXJuIFQoc2wsYWwsdCl9ZnVuY3Rpb24gRGwodCxlKXtjb25zdCByPUlsKGUubGF0LGUubG5nKSxuPWZ1bmN0aW9uKHQpe2NvbnN0IGU9SWwodC5fY2VudGVyLmxhdCx0Ll9jZW50ZXIubG5nKTtsZXQgcj1MbyhbXSxJbygwLDEsMCksZSk7Y29uc3Qgbj13byhbXSwtdC5hbmdsZSxlKTtyPUZvKHIscixuKSx3byhuLC10Ll9waXRjaCxyKTtjb25zdCBpPURvKFtdLGUpO3JldHVybiBDbyhpLGksZmwodC5jYW1lcmFUb0NlbnRlckRpc3RhbmNlL3QucGl4ZWxzUGVyTWV0ZXIpKSxGbyhpLGksbiksTW8oW10sZSxpKX0odCk7cmV0dXJuIGE9KGk9VG8oW10sbixyKSlbMF0sbz1pWzFdLGw9aVsyXSx1PShzPXIpWzBdLGM9c1sxXSxoPXNbMl0sZD0ocD1NYXRoLnNxcnQoYSphK28qbytsKmwpKk1hdGguc3FydCh1KnUrYypjK2gqaCkpJiZWbyhpLHMpL3AsTWF0aC5hY29zKE1hdGgubWluKE1hdGgubWF4KGQsLTEpLDEpKTt2YXIgaSxzLGEsbyxsLHUsYyxoLHAsZDt9ZnVuY3Rpb24gVmwodCxlKXtyZXR1cm4gRGwodCxlKT5NYXRoLlBJLzIqMS4wMX1jb25zdCBMbD13KDg1KSxGbD1NYXRoLmNvcyhMbCksUmw9TWF0aC5zaW4oTGwpLFVsPTYzNzEwMDguOCwkbD0yKk1hdGguUEkqVWw7Y2xhc3Mgamx7Y29uc3RydWN0b3IodCxlKXtpZihpc05hTih0KXx8aXNOYU4oZSkpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIExuZ0xhdCBvYmplY3Q6ICgke3R9LCAke2V9KWApO2lmKHRoaXMubG5nPSt0LHRoaXMubGF0PStlLHRoaXMubGF0PjkwfHx0aGlzLmxhdDwtOTApdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBMbmdMYXQgbGF0aXR1ZGUgdmFsdWU6IG11c3QgYmUgYmV0d2VlbiAtOTAgYW5kIDkwXCIpfXdyYXAoKXtyZXR1cm4gbmV3IGpsKHoodGhpcy5sbmcsLTE4MCwxODApLHRoaXMubGF0KX10b0FycmF5KCl7cmV0dXJuIFt0aGlzLmxuZyx0aGlzLmxhdF19dG9TdHJpbmcoKXtyZXR1cm4gYExuZ0xhdCgke3RoaXMubG5nfSwgJHt0aGlzLmxhdH0pYH1kaXN0YW5jZVRvKHQpe2NvbnN0IGU9TWF0aC5QSS8xODAscj10aGlzLmxhdCplLG49dC5sYXQqZSxpPU1hdGguc2luKHIpKk1hdGguc2luKG4pK01hdGguY29zKHIpKk1hdGguY29zKG4pKk1hdGguY29zKCh0LmxuZy10aGlzLmxuZykqZSk7cmV0dXJuIFVsKk1hdGguYWNvcyhNYXRoLm1pbihpLDEpKX10b0JvdW5kcyh0PTApe2NvbnN0IGU9MzYwKnQvNDAwNzUwMTcscj1lL01hdGguY29zKE1hdGguUEkvMTgwKnRoaXMubGF0KTtyZXR1cm4gbmV3IG9vKG5ldyBqbCh0aGlzLmxuZy1yLHRoaXMubGF0LWUpLG5ldyBqbCh0aGlzLmxuZytyLHRoaXMubGF0K2UpKX10b0VjZWYodCl7Y29uc3QgZT1mbCh0KTtyZXR1cm4gSWwodGhpcy5sYXQsdGhpcy5sbmcsb2wrZSl9c3RhdGljIGNvbnZlcnQodCl7aWYodCBpbnN0YW5jZW9mIGpsKXJldHVybiB0O2lmKEFycmF5LmlzQXJyYXkodCkmJigyPT09dC5sZW5ndGh8fDM9PT10Lmxlbmd0aCkpcmV0dXJuIG5ldyBqbChOdW1iZXIodFswXSksTnVtYmVyKHRbMV0pKTtpZighQXJyYXkuaXNBcnJheSh0KSYmXCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPT10KXJldHVybiBuZXcgamwoTnVtYmVyKFwibG5nXCJpbiB0P3QubG5nOnQubG9uKSxOdW1iZXIodC5sYXQpKTt0aHJvdyBuZXcgRXJyb3IoXCJgTG5nTGF0TGlrZWAgYXJndW1lbnQgbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBMbmdMYXQgaW5zdGFuY2UsIGFuIG9iamVjdCB7bG5nOiA8bG5nPiwgbGF0OiA8bGF0Pn0sIGFuIG9iamVjdCB7bG9uOiA8bG5nPiwgbGF0OiA8bGF0Pn0sIG9yIGFuIGFycmF5IG9mIFs8bG5nPiwgPGxhdD5dXCIpfX12YXIgT2w9amw7ZnVuY3Rpb24gcWwodCl7cmV0dXJuICRsKk1hdGguY29zKHQqTWF0aC5QSS8xODApfWZ1bmN0aW9uIE5sKHQpe3JldHVybiAoMTgwK3QpLzM2MH1mdW5jdGlvbiBHbCh0KXtyZXR1cm4gKDE4MC0xODAvTWF0aC5QSSpNYXRoLmxvZyhNYXRoLnRhbihNYXRoLlBJLzQrdCpNYXRoLlBJLzM2MCkpKS8zNjB9ZnVuY3Rpb24gWmwodCxlKXtyZXR1cm4gdC9xbChlKX1mdW5jdGlvbiBLbCh0KXtyZXR1cm4gMzYwKnQtMTgwfWZ1bmN0aW9uIFhsKHQpe3JldHVybiAzNjAvTWF0aC5QSSpNYXRoLmF0YW4oTWF0aC5leHAoKDE4MC0zNjAqdCkqTWF0aC5QSS8xODApKS05MH1mdW5jdGlvbiBKbCh0LGUpe3JldHVybiB0KnFsKFhsKGUpKX1jb25zdCBIbD04NS4wNTExMjk7ZnVuY3Rpb24gWWwodCl7cmV0dXJuIDEvTWF0aC5jb3ModCpNYXRoLlBJLzE4MCl9Y2xhc3MgV2x7Y29uc3RydWN0b3IodCxlLHI9MCl7dGhpcy54PSt0LHRoaXMueT0rZSx0aGlzLno9K3I7fXN0YXRpYyBmcm9tTG5nTGF0KHQsZT0wKXtjb25zdCByPU9sLmNvbnZlcnQodCk7cmV0dXJuIG5ldyBXbChObChyLmxuZyksR2woci5sYXQpLFpsKGUsci5sYXQpKX10b0xuZ0xhdCgpe3JldHVybiBuZXcgT2woS2wodGhpcy54KSxYbCh0aGlzLnkpKX10b0FsdGl0dWRlKCl7cmV0dXJuIEpsKHRoaXMueix0aGlzLnkpfW1ldGVySW5NZXJjYXRvckNvb3JkaW5hdGVVbml0cygpe3JldHVybiAxLyRsKllsKFhsKHRoaXMueSkpfX1mdW5jdGlvbiBRbCh0LGUscixuLGkscyxhLG8sbCl7Y29uc3QgdT0oZStuKS8yLGM9KHIraSkvMixoPW5ldyB4KHUsYyk7byhoKSxmdW5jdGlvbih0LGUscixuLGkscyl7Y29uc3QgYT1yLWksbz1uLXM7cmV0dXJuIE1hdGguYWJzKChuLWUpKmEtKHItdCkqbykvTWF0aC5oeXBvdChhLG8pfShoLngsaC55LHMueCxzLnksYS54LGEueSk+PWw/KFFsKHQsZSxyLHUsYyxzLGgsbyxsKSxRbCh0LHUsYyxuLGksaCxhLG8sbCkpOnQucHVzaChhKTt9ZnVuY3Rpb24gdHUodCxlLHIpe2xldCBuPXRbMF0saT1uLngscz1uLnk7ZShuKTtjb25zdCBhPVtuXTtmb3IobGV0IG89MTtvPHQubGVuZ3RoO28rKyl7Y29uc3QgbD10W29dLHt4OnUseTpjfT1sO2UobCksUWwoYSxpLHMsdSxjLG4sbCxlLHIpLGk9dSxzPWMsbj1sO31yZXR1cm4gYX1mdW5jdGlvbiBldSh0LGUscixuKXtpZihuKGUscikpe2NvbnN0IGk9ZS5hZGQocikuX211bHQoLjUpO2V1KHQsZSxpLG4pLGV1KHQsaSxyLG4pO31lbHNlIHQucHVzaChyKTt9ZnVuY3Rpb24gcnUodCxlKXtsZXQgcj10WzBdO2NvbnN0IG49W3JdO2ZvcihsZXQgaT0xO2k8dC5sZW5ndGg7aSsrKXtjb25zdCBzPXRbaV07ZXUobixyLHMsZSkscj1zO31yZXR1cm4gbn1jb25zdCBudT1NYXRoLnBvdygyLDE0KS0xLGl1PS1udS0xO2Z1bmN0aW9uIHN1KHQsZSl7Y29uc3Qgcj1NYXRoLnJvdW5kKHQueCplKSxuPU1hdGgucm91bmQodC55KmUpO3JldHVybiB0Lng9TShyLGl1LG51KSx0Lnk9TShuLGl1LG51KSwocjx0Lnh8fHI+dC54KzF8fG48dC55fHxuPnQueSsxKSYmTihcIkdlb21ldHJ5IGV4Y2VlZHMgYWxsb3dlZCBleHRlbnQsIHJlZHVjZSB5b3VyIHZlY3RvciB0aWxlIGJ1ZmZlciBzaXplXCIpLHR9ZnVuY3Rpb24gYXUodCxlLHIpe2NvbnN0IG49dC5sb2FkR2VvbWV0cnkoKSxpPXQuZXh0ZW50LHM9YW8vaTtpZihlJiZyJiZyLnByb2plY3Rpb24uaXNSZXByb2plY3RlZEluVGlsZVNwYWNlKXtjb25zdCBzPTE8PGUueix7c2NhbGU6YSx4Om8seTpsLHByb2plY3Rpb246dX09cixjPXQ9Pntjb25zdCByPUtsKChlLngrdC54L2kpL3MpLG49WGwoKGUueSt0LnkvaSkvcyksYz11LnByb2plY3QocixuKTt0Lng9KGMueCphLW8pKmksdC55PShjLnkqYS1sKSppO307Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspaWYoMSE9PXQudHlwZSluW2VdPXR1KG5bZV0sYywxKTtlbHNlIHtjb25zdCB0PVtdO2Zvcihjb25zdCByIG9mIG5bZV0pci54PDB8fHIueD49aXx8ci55PDB8fHIueT49aXx8KGMociksdC5wdXNoKHIpKTtuW2VdPXQ7fX1mb3IoY29uc3QgdCBvZiBuKWZvcihjb25zdCBlIG9mIHQpc3UoZSxzKTtyZXR1cm4gbn1mdW5jdGlvbiBvdSh0LGUpe3JldHVybiB7dHlwZTp0LnR5cGUsaWQ6dC5pZCxwcm9wZXJ0aWVzOnQucHJvcGVydGllcyxnZW9tZXRyeTplP2F1KHQpOltdfX1mdW5jdGlvbiBsdSh0LGUscixuLGkpe3QuZW1wbGFjZUJhY2soMiplKyhuKzEpLzIsMipyKyhpKzEpLzIpO31mdW5jdGlvbiB1dSh0LGUscil7Y29uc3Qgbj0xNjM4NDt0LmVtcGxhY2VCYWNrKGUueCxlLnksZS56LHJbMF0qbixyWzFdKm4sclsyXSpuKTt9Y2xhc3MgY3V7Y29uc3RydWN0b3IodCl7dGhpcy56b29tPXQuem9vbSx0aGlzLm92ZXJzY2FsaW5nPXQub3ZlcnNjYWxpbmcsdGhpcy5sYXllcnM9dC5sYXllcnMsdGhpcy5sYXllcklkcz10aGlzLmxheWVycy5tYXAoKHQ9PnQuaWQpKSx0aGlzLmluZGV4PXQuaW5kZXgsdGhpcy5oYXNQYXR0ZXJuPSExLHRoaXMucHJvamVjdGlvbj10LnByb2plY3Rpb24sdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheT1uZXcgJHMsdGhpcy5pbmRleEFycmF5PW5ldyByYSx0aGlzLnNlZ21lbnRzPW5ldyBzbyx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucz1uZXcgSmEodC5sYXllcnMsdC56b29tKSx0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJJZHM9dGhpcy5sYXllcnMuZmlsdGVyKCh0PT50LmlzU3RhdGVEZXBlbmRlbnQoKSkpLm1hcCgodD0+dC5pZCkpO31wb3B1bGF0ZSh0LGUscixuKXtjb25zdCBpPXRoaXMubGF5ZXJzWzBdLHM9W107bGV0IGE9bnVsbDtcImNpcmNsZVwiPT09aS50eXBlJiYoYT1pLmxheW91dC5nZXQoXCJjaXJjbGUtc29ydC1rZXlcIikpO2Zvcihjb25zdHtmZWF0dXJlOmUsaWQ6aSxpbmRleDpvLHNvdXJjZUxheWVySW5kZXg6bH1vZiB0KXtjb25zdCB0PXRoaXMubGF5ZXJzWzBdLl9mZWF0dXJlRmlsdGVyLm5lZWRHZW9tZXRyeSx1PW91KGUsdCk7aWYoIXRoaXMubGF5ZXJzWzBdLl9mZWF0dXJlRmlsdGVyLmZpbHRlcihuZXcgd3ModGhpcy56b29tKSx1LHIpKWNvbnRpbnVlO2NvbnN0IGM9YT9hLmV2YWx1YXRlKHUse30scik6dm9pZCAwLGg9e2lkOmkscHJvcGVydGllczplLnByb3BlcnRpZXMsdHlwZTplLnR5cGUsc291cmNlTGF5ZXJJbmRleDpsLGluZGV4Om8sZ2VvbWV0cnk6dD91Lmdlb21ldHJ5OmF1KGUscixuKSxwYXR0ZXJuczp7fSxzb3J0S2V5OmN9O3MucHVzaChoKTt9YSYmcy5zb3J0KCgodCxlKT0+dC5zb3J0S2V5LWUuc29ydEtleSkpO2xldCBvPW51bGw7XCJnbG9iZVwiPT09bi5wcm9qZWN0aW9uLm5hbWUmJih0aGlzLmdsb2JlRXh0VmVydGV4QXJyYXk9bmV3IEtzLG89bi5wcm9qZWN0aW9uKTtmb3IoY29uc3QgbiBvZiBzKXtjb25zdHtnZW9tZXRyeTppLGluZGV4OnMsc291cmNlTGF5ZXJJbmRleDphfT1uLGw9dFtzXS5mZWF0dXJlO3RoaXMuYWRkRmVhdHVyZShuLGkscyxlLmF2YWlsYWJsZUltYWdlcyxyLG8pLGUuZmVhdHVyZUluZGV4Lmluc2VydChsLGkscyxhLHRoaXMuaW5kZXgpO319dXBkYXRlKHQsZSxyLG4pe3RoaXMuc3RhdGVEZXBlbmRlbnRMYXllcnMubGVuZ3RoJiZ0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGRhdGVQYWludEFycmF5cyh0LGUsdGhpcy5zdGF0ZURlcGVuZGVudExheWVycyxyLG4pO31pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLmxheW91dFZlcnRleEFycmF5Lmxlbmd0aH11cGxvYWRQZW5kaW5nKCl7cmV0dXJuICF0aGlzLnVwbG9hZGVkfHx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5uZWVkc1VwbG9hZH11cGxvYWQodCl7dGhpcy51cGxvYWRlZHx8KHRoaXMubGF5b3V0VmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMubGF5b3V0VmVydGV4QXJyYXksbm8ubWVtYmVycyksdGhpcy5pbmRleEJ1ZmZlcj10LmNyZWF0ZUluZGV4QnVmZmVyKHRoaXMuaW5kZXhBcnJheSksdGhpcy5nbG9iZUV4dFZlcnRleEFycmF5JiYodGhpcy5nbG9iZUV4dFZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLmdsb2JlRXh0VmVydGV4QXJyYXksaW8ubWVtYmVycykpKSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGxvYWQodCksdGhpcy51cGxvYWRlZD0hMDt9ZGVzdHJveSgpe3RoaXMubGF5b3V0VmVydGV4QnVmZmVyJiYodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuaW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmRlc3Ryb3koKSx0aGlzLnNlZ21lbnRzLmRlc3Ryb3koKSx0aGlzLmdsb2JlRXh0VmVydGV4QnVmZmVyJiZ0aGlzLmdsb2JlRXh0VmVydGV4QnVmZmVyLmRlc3Ryb3koKSk7fWFkZEZlYXR1cmUodCxlLHIsbixpLHMpe2Zvcihjb25zdCByIG9mIGUpZm9yKGNvbnN0IGUgb2Ygcil7Y29uc3Qgcj1lLngsbj1lLnk7aWYocjwwfHxyPj1hb3x8bjwwfHxuPj1hbyljb250aW51ZTtpZihzKXtjb25zdCB0PXMucHJvamVjdFRpbGVQb2ludChyLG4saSksZT1zLnVwVmVjdG9yKGkscixuKSxhPXRoaXMuZ2xvYmVFeHRWZXJ0ZXhBcnJheTt1dShhLHQsZSksdXUoYSx0LGUpLHV1KGEsdCxlKSx1dShhLHQsZSk7fWNvbnN0IGE9dGhpcy5zZWdtZW50cy5wcmVwYXJlU2VnbWVudCg0LHRoaXMubGF5b3V0VmVydGV4QXJyYXksdGhpcy5pbmRleEFycmF5LHQuc29ydEtleSksbz1hLnZlcnRleExlbmd0aDtsdSh0aGlzLmxheW91dFZlcnRleEFycmF5LHIsbiwtMSwtMSksbHUodGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSxyLG4sMSwtMSksbHUodGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSxyLG4sMSwxKSxsdSh0aGlzLmxheW91dFZlcnRleEFycmF5LHIsbiwtMSwxKSx0aGlzLmluZGV4QXJyYXkuZW1wbGFjZUJhY2sobyxvKzEsbysyKSx0aGlzLmluZGV4QXJyYXkuZW1wbGFjZUJhY2sobyxvKzIsbyszKSxhLnZlcnRleExlbmd0aCs9NCxhLnByaW1pdGl2ZUxlbmd0aCs9Mjt9dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMucG9wdWxhdGVQYWludEFycmF5cyh0aGlzLmxheW91dFZlcnRleEFycmF5Lmxlbmd0aCx0LHIse30sbixpKTt9fWZ1bmN0aW9uIGh1KHQsZSl7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspaWYoYnUoZSx0W3JdKSlyZXR1cm4gITA7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspaWYoYnUodCxlW3JdKSlyZXR1cm4gITA7cmV0dXJuICEheXUodCxlKX1mdW5jdGlvbiBwdSh0LGUscil7cmV0dXJuICEhYnUodCxlKXx8ISFndShlLHQscil9ZnVuY3Rpb24gZHUodCxlKXtpZigxPT09dC5sZW5ndGgpcmV0dXJuIHZ1KGUsdFswXSk7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IG49ZVtyXTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKylpZihidSh0LG5bZV0pKXJldHVybiAhMH1mb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKylpZih2dShlLHRbcl0pKXJldHVybiAhMDtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKylpZih5dSh0LGVbcl0pKXJldHVybiAhMDtyZXR1cm4gITF9ZnVuY3Rpb24gZnUodCxlLHIpe2lmKHQubGVuZ3RoPjEpe2lmKHl1KHQsZSkpcmV0dXJuICEwO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKWlmKGd1KGVbbl0sdCxyKSlyZXR1cm4gITB9Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspaWYoZ3UodFtuXSxlLHIpKXJldHVybiAhMDtyZXR1cm4gITF9ZnVuY3Rpb24geXUodCxlKXtpZigwPT09dC5sZW5ndGh8fDA9PT1lLmxlbmd0aClyZXR1cm4gITE7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aC0xO3IrKyl7Y29uc3Qgbj10W3JdLGk9dFtyKzFdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGgtMTt0KyspaWYobXUobixpLGVbdF0sZVt0KzFdKSlyZXR1cm4gITB9cmV0dXJuICExfWZ1bmN0aW9uIG11KHQsZSxyLG4pe3JldHVybiBHKHQscixuKSE9PUcoZSxyLG4pJiZHKHQsZSxyKSE9PUcodCxlLG4pfWZ1bmN0aW9uIGd1KHQsZSxyKXtjb25zdCBuPXIqcjtpZigxPT09ZS5sZW5ndGgpcmV0dXJuIHQuZGlzdFNxcihlWzBdKTxuO2ZvcihsZXQgcj0xO3I8ZS5sZW5ndGg7cisrKWlmKHh1KHQsZVtyLTFdLGVbcl0pPG4pcmV0dXJuICEwO3JldHVybiAhMX1mdW5jdGlvbiB4dSh0LGUscil7Y29uc3Qgbj1lLmRpc3RTcXIocik7aWYoMD09PW4pcmV0dXJuIHQuZGlzdFNxcihlKTtjb25zdCBpPSgodC54LWUueCkqKHIueC1lLngpKyh0LnktZS55KSooci55LWUueSkpL247cmV0dXJuIHQuZGlzdFNxcihpPDA/ZTppPjE/cjpyLnN1YihlKS5fbXVsdChpKS5fYWRkKGUpKX1mdW5jdGlvbiB2dSh0LGUpe2xldCByLG4saSxzPSExO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKXtyPXRbYV07Zm9yKGxldCB0PTAsYT1yLmxlbmd0aC0xO3Q8ci5sZW5ndGg7YT10Kyspbj1yW3RdLGk9clthXSxuLnk+ZS55IT1pLnk+ZS55JiZlLng8KGkueC1uLngpKihlLnktbi55KS8oaS55LW4ueSkrbi54JiYocz0hcyk7fXJldHVybiBzfWZ1bmN0aW9uIGJ1KHQsZSl7bGV0IHI9ITE7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aC0xO248dC5sZW5ndGg7aT1uKyspe2NvbnN0IHM9dFtuXSxhPXRbaV07cy55PmUueSE9YS55PmUueSYmZS54PChhLngtcy54KSooZS55LXMueSkvKGEueS1zLnkpK3MueCYmKHI9IXIpO31yZXR1cm4gcn1mdW5jdGlvbiB3dSh0LGUscixuLGkpe2Zvcihjb25zdCBzIG9mIHQpaWYoZTw9cy54JiZyPD1zLnkmJm4+PXMueCYmaT49cy55KXJldHVybiAhMDtjb25zdCBzPVtuZXcgeChlLHIpLG5ldyB4KGUsaSksbmV3IHgobixpKSxuZXcgeChuLHIpXTtpZih0Lmxlbmd0aD4yKWZvcihjb25zdCBlIG9mIHMpaWYoYnUodCxlKSlyZXR1cm4gITA7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aC0xO2UrKylpZihfdSh0W2VdLHRbZSsxXSxzKSlyZXR1cm4gITA7cmV0dXJuICExfWZ1bmN0aW9uIF91KHQsZSxyKXtjb25zdCBuPXJbMF0saT1yWzJdO2lmKHQueDxuLngmJmUueDxuLnh8fHQueD5pLngmJmUueD5pLnh8fHQueTxuLnkmJmUueTxuLnl8fHQueT5pLnkmJmUueT5pLnkpcmV0dXJuICExO2NvbnN0IHM9Ryh0LGUsclswXSk7cmV0dXJuIHMhPT1HKHQsZSxyWzFdKXx8cyE9PUcodCxlLHJbMl0pfHxzIT09Ryh0LGUsclszXSl9ZnVuY3Rpb24gQXUodCxlLHIpe2NvbnN0IG49ZS5wYWludC5nZXQodCkudmFsdWU7cmV0dXJuIFwiY29uc3RhbnRcIj09PW4ua2luZD9uLnZhbHVlOnIucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChlLmlkKS5nZXRNYXhWYWx1ZSh0KX1mdW5jdGlvbiBTdSh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRbMF0qdFswXSt0WzFdKnRbMV0pfWZ1bmN0aW9uIGt1KHQsZSxyLG4saSl7aWYoIWVbMF0mJiFlWzFdKXJldHVybiB0O2NvbnN0IHM9eC5jb252ZXJ0KGUpLl9tdWx0KGkpO1widmlld3BvcnRcIj09PXImJnMuX3JvdGF0ZSgtbik7Y29uc3QgYT1bXTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylhLnB1c2godFtlXS5zdWIocykpO3JldHVybiBhfWZ1bmN0aW9uIEl1KHQsZSxyLG4pe2NvbnN0IGk9eC5jb252ZXJ0KHQpLl9tdWx0KG4pO3JldHVybiBcInZpZXdwb3J0XCI9PT1lJiZpLl9yb3RhdGUoLXIpLGl9SmkoY3UsXCJDaXJjbGVCdWNrZXRcIix7b21pdDpbXCJsYXllcnNcIl19KTtjb25zdCBNdT1uZXcgUHMoe1wiY2lyY2xlLXNvcnQta2V5XCI6bmV3IEVzKHRlLmxheW91dF9jaXJjbGVbXCJjaXJjbGUtc29ydC1rZXlcIl0pfSk7dmFyIFR1PXtwYWludDpuZXcgUHMoe1wiY2lyY2xlLXJhZGl1c1wiOm5ldyBFcyh0ZS5wYWludF9jaXJjbGVbXCJjaXJjbGUtcmFkaXVzXCJdKSxcImNpcmNsZS1jb2xvclwiOm5ldyBFcyh0ZS5wYWludF9jaXJjbGVbXCJjaXJjbGUtY29sb3JcIl0pLFwiY2lyY2xlLWJsdXJcIjpuZXcgRXModGUucGFpbnRfY2lyY2xlW1wiY2lyY2xlLWJsdXJcIl0pLFwiY2lyY2xlLW9wYWNpdHlcIjpuZXcgRXModGUucGFpbnRfY2lyY2xlW1wiY2lyY2xlLW9wYWNpdHlcIl0pLFwiY2lyY2xlLXRyYW5zbGF0ZVwiOm5ldyBCcyh0ZS5wYWludF9jaXJjbGVbXCJjaXJjbGUtdHJhbnNsYXRlXCJdKSxcImNpcmNsZS10cmFuc2xhdGUtYW5jaG9yXCI6bmV3IEJzKHRlLnBhaW50X2NpcmNsZVtcImNpcmNsZS10cmFuc2xhdGUtYW5jaG9yXCJdKSxcImNpcmNsZS1waXRjaC1zY2FsZVwiOm5ldyBCcyh0ZS5wYWludF9jaXJjbGVbXCJjaXJjbGUtcGl0Y2gtc2NhbGVcIl0pLFwiY2lyY2xlLXBpdGNoLWFsaWdubWVudFwiOm5ldyBCcyh0ZS5wYWludF9jaXJjbGVbXCJjaXJjbGUtcGl0Y2gtYWxpZ25tZW50XCJdKSxcImNpcmNsZS1zdHJva2Utd2lkdGhcIjpuZXcgRXModGUucGFpbnRfY2lyY2xlW1wiY2lyY2xlLXN0cm9rZS13aWR0aFwiXSksXCJjaXJjbGUtc3Ryb2tlLWNvbG9yXCI6bmV3IEVzKHRlLnBhaW50X2NpcmNsZVtcImNpcmNsZS1zdHJva2UtY29sb3JcIl0pLFwiY2lyY2xlLXN0cm9rZS1vcGFjaXR5XCI6bmV3IEVzKHRlLnBhaW50X2NpcmNsZVtcImNpcmNsZS1zdHJva2Utb3BhY2l0eVwiXSl9KSxsYXlvdXQ6TXV9O2Z1bmN0aW9uIHp1KHQsZSxyLG4saSxzLGEsbyxsKXtpZihzJiZ0LnF1ZXJ5R2VvbWV0cnkuaXNBYm92ZUhvcml6b24pcmV0dXJuICExO3MmJihsKj10LnBpeGVsVG9UaWxlVW5pdHNGYWN0b3IpO2NvbnN0IHU9dC50aWxlSUQuY2Fub25pY2FsLGM9ci5wcm9qZWN0aW9uLnVwVmVjdG9yU2NhbGUodSxyLmNlbnRlci5sYXQsci53b3JsZFNpemUpLm1ldGVyc1RvVGlsZTtmb3IoY29uc3QgaCBvZiBlKWZvcihjb25zdCBlIG9mIGgpe2NvbnN0IGg9ZS5hZGQobykscD1pJiZyLmVsZXZhdGlvbj9yLmVsZXZhdGlvbi5leGFnZ2VyYXRpb24oKSppLmdldEVsZXZhdGlvbkF0KGgueCxoLnksITApOjAsZD1yLnByb2plY3Rpb24ucHJvamVjdFRpbGVQb2ludChoLngsaC55LHUpO2lmKHA+MCl7Y29uc3QgdD1yLnByb2plY3Rpb24udXBWZWN0b3IodSxoLngsaC55KTtkLngrPXRbMF0qYypwLGQueSs9dFsxXSpjKnAsZC56Kz10WzJdKmMqcDt9Y29uc3QgZj1zP2g6QnUoZC54LGQueSxkLnosbikseT1zP3QudGlsZXNwYWNlUmF5cy5tYXAoKHQ9PlB1KHQscCkpKTp0LnF1ZXJ5R2VvbWV0cnkuc2NyZWVuR2VvbWV0cnksbT1HbyhbXSxbZC54LGQueSxkLnosMV0sbik7aWYoIWEmJnM/bCo9bVszXS9yLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2U6YSYmIXMmJihsKj1yLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UvbVszXSkscyl7Y29uc3QgdD1YbCgoZS55L2FvK3UueSkvKDE8PHUueikpO2wvPXIucHJvamVjdGlvbi5waXhlbHNQZXJNZXRlcih0LDEpL1psKDEsdCk7fWlmKHB1KHksZixsKSlyZXR1cm4gITB9cmV0dXJuICExfWZ1bmN0aW9uIEJ1KHQsZSxyLG4pe2NvbnN0IGk9R28oW10sW3QsZSxyLDFdLG4pO3JldHVybiBuZXcgeChpWzBdL2lbM10saVsxXS9pWzNdKX1jb25zdCBFdT1JbygwLDAsMCksQ3U9SW8oMCwwLDEpO2Z1bmN0aW9uIFB1KHQsZSl7Y29uc3Qgcj1BbygpO3JldHVybiBFdVsyXT1lLHQuaW50ZXJzZWN0c1BsYW5lKEV1LEN1LHIpLG5ldyB4KHJbMF0sclsxXSl9Y2xhc3MgRHUgZXh0ZW5kcyBjdXt9ZnVuY3Rpb24gVnUodCx7d2lkdGg6ZSxoZWlnaHQ6cn0sbixpKXtpZihpKXtpZihpIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpaT1uZXcgVWludDhBcnJheShpLmJ1ZmZlcik7ZWxzZSBpZihpLmxlbmd0aCE9PWUqcipuKXRocm93IG5ldyBSYW5nZUVycm9yKFwibWlzbWF0Y2hlZCBpbWFnZSBzaXplXCIpfWVsc2UgaT1uZXcgVWludDhBcnJheShlKnIqbik7cmV0dXJuIHQud2lkdGg9ZSx0LmhlaWdodD1yLHQuZGF0YT1pLHR9ZnVuY3Rpb24gTHUodCxlLHIpe2NvbnN0e3dpZHRoOm4saGVpZ2h0Oml9PWU7bj09PXQud2lkdGgmJmk9PT10LmhlaWdodHx8KEZ1KHQsZSx7eDowLHk6MH0se3g6MCx5OjB9LHt3aWR0aDpNYXRoLm1pbih0LndpZHRoLG4pLGhlaWdodDpNYXRoLm1pbih0LmhlaWdodCxpKX0sciksdC53aWR0aD1uLHQuaGVpZ2h0PWksdC5kYXRhPWUuZGF0YSk7fWZ1bmN0aW9uIEZ1KHQsZSxyLG4saSxzKXtpZigwPT09aS53aWR0aHx8MD09PWkuaGVpZ2h0KXJldHVybiBlO2lmKGkud2lkdGg+dC53aWR0aHx8aS5oZWlnaHQ+dC5oZWlnaHR8fHIueD50LndpZHRoLWkud2lkdGh8fHIueT50LmhlaWdodC1pLmhlaWdodCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIm91dCBvZiByYW5nZSBzb3VyY2UgY29vcmRpbmF0ZXMgZm9yIGltYWdlIGNvcHlcIik7aWYoaS53aWR0aD5lLndpZHRofHxpLmhlaWdodD5lLmhlaWdodHx8bi54PmUud2lkdGgtaS53aWR0aHx8bi55PmUuaGVpZ2h0LWkuaGVpZ2h0KXRocm93IG5ldyBSYW5nZUVycm9yKFwib3V0IG9mIHJhbmdlIGRlc3RpbmF0aW9uIGNvb3JkaW5hdGVzIGZvciBpbWFnZSBjb3B5XCIpO2NvbnN0IGE9dC5kYXRhLG89ZS5kYXRhO2ZvcihsZXQgbD0wO2w8aS5oZWlnaHQ7bCsrKXtjb25zdCB1PSgoci55K2wpKnQud2lkdGgrci54KSpzLGM9KChuLnkrbCkqZS53aWR0aCtuLngpKnM7Zm9yKGxldCB0PTA7dDxpLndpZHRoKnM7dCsrKW9bYyt0XT1hW3UrdF07fXJldHVybiBlfUppKER1LFwiSGVhdG1hcEJ1Y2tldFwiLHtvbWl0OltcImxheWVyc1wiXX0pO2NsYXNzIFJ1e2NvbnN0cnVjdG9yKHQsZSl7VnUodGhpcyx0LDEsZSk7fXJlc2l6ZSh0KXtMdSh0aGlzLG5ldyBSdSh0KSwxKTt9Y2xvbmUoKXtyZXR1cm4gbmV3IFJ1KHt3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodH0sbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhKSl9c3RhdGljIGNvcHkodCxlLHIsbixpKXtGdSh0LGUscixuLGksMSk7fX1jbGFzcyBVdXtjb25zdHJ1Y3Rvcih0LGUpe1Z1KHRoaXMsdCw0LGUpO31yZXNpemUodCl7THUodGhpcyxuZXcgVXUodCksNCk7fXJlcGxhY2UodCxlKXtlP3RoaXMuZGF0YS5zZXQodCk6dGhpcy5kYXRhPXQgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheT9uZXcgVWludDhBcnJheSh0LmJ1ZmZlcik6dDt9Y2xvbmUoKXtyZXR1cm4gbmV3IFV1KHt3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodH0sbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhKSl9c3RhdGljIGNvcHkodCxlLHIsbixpKXtGdSh0LGUscixuLGksNCk7fX1KaShSdSxcIkFscGhhSW1hZ2VcIiksSmkoVXUsXCJSR0JBSW1hZ2VcIik7dmFyICR1PXtwYWludDpuZXcgUHMoe1wiaGVhdG1hcC1yYWRpdXNcIjpuZXcgRXModGUucGFpbnRfaGVhdG1hcFtcImhlYXRtYXAtcmFkaXVzXCJdKSxcImhlYXRtYXAtd2VpZ2h0XCI6bmV3IEVzKHRlLnBhaW50X2hlYXRtYXBbXCJoZWF0bWFwLXdlaWdodFwiXSksXCJoZWF0bWFwLWludGVuc2l0eVwiOm5ldyBCcyh0ZS5wYWludF9oZWF0bWFwW1wiaGVhdG1hcC1pbnRlbnNpdHlcIl0pLFwiaGVhdG1hcC1jb2xvclwiOm5ldyBDcyh0ZS5wYWludF9oZWF0bWFwW1wiaGVhdG1hcC1jb2xvclwiXSksXCJoZWF0bWFwLW9wYWNpdHlcIjpuZXcgQnModGUucGFpbnRfaGVhdG1hcFtcImhlYXRtYXAtb3BhY2l0eVwiXSl9KX07ZnVuY3Rpb24ganUodCl7Y29uc3QgZT17fSxyPXQucmVzb2x1dGlvbnx8MjU2LG49dC5jbGlwcz90LmNsaXBzLmxlbmd0aDoxLGk9dC5pbWFnZXx8bmV3IFV1KHt3aWR0aDpyLGhlaWdodDpufSkscz0ocixuLHMpPT57ZVt0LmV2YWx1YXRpb25LZXldPXM7Y29uc3QgYT10LmV4cHJlc3Npb24uZXZhbHVhdGUoZSk7aS5kYXRhW3IrbiswXT1NYXRoLmZsb29yKDI1NSphLnIvYS5hKSxpLmRhdGFbcituKzFdPU1hdGguZmxvb3IoMjU1KmEuZy9hLmEpLGkuZGF0YVtyK24rMl09TWF0aC5mbG9vcigyNTUqYS5iL2EuYSksaS5kYXRhW3IrbiszXT1NYXRoLmZsb29yKDI1NSphLmEpO307aWYodC5jbGlwcylmb3IobGV0IGU9MCxpPTA7ZTxuOysrZSxpKz00KnIpZm9yKGxldCBuPTAsYT0wO248cjtuKyssYSs9NCl7Y29uc3Qgbz1uLyhyLTEpLHtzdGFydDpsLGVuZDp1fT10LmNsaXBzW2VdO3MoaSxhLGwqKDEtbykrdSpvKTt9ZWxzZSBmb3IobGV0IHQ9MCxlPTA7dDxyO3QrKyxlKz00KXMoMCxlLHQvKHItMSkpO3JldHVybiBpfXZhciBPdT17cGFpbnQ6bmV3IFBzKHtcImhpbGxzaGFkZS1pbGx1bWluYXRpb24tZGlyZWN0aW9uXCI6bmV3IEJzKHRlLnBhaW50X2hpbGxzaGFkZVtcImhpbGxzaGFkZS1pbGx1bWluYXRpb24tZGlyZWN0aW9uXCJdKSxcImhpbGxzaGFkZS1pbGx1bWluYXRpb24tYW5jaG9yXCI6bmV3IEJzKHRlLnBhaW50X2hpbGxzaGFkZVtcImhpbGxzaGFkZS1pbGx1bWluYXRpb24tYW5jaG9yXCJdKSxcImhpbGxzaGFkZS1leGFnZ2VyYXRpb25cIjpuZXcgQnModGUucGFpbnRfaGlsbHNoYWRlW1wiaGlsbHNoYWRlLWV4YWdnZXJhdGlvblwiXSksXCJoaWxsc2hhZGUtc2hhZG93LWNvbG9yXCI6bmV3IEJzKHRlLnBhaW50X2hpbGxzaGFkZVtcImhpbGxzaGFkZS1zaGFkb3ctY29sb3JcIl0pLFwiaGlsbHNoYWRlLWhpZ2hsaWdodC1jb2xvclwiOm5ldyBCcyh0ZS5wYWludF9oaWxsc2hhZGVbXCJoaWxsc2hhZGUtaGlnaGxpZ2h0LWNvbG9yXCJdKSxcImhpbGxzaGFkZS1hY2NlbnQtY29sb3JcIjpuZXcgQnModGUucGFpbnRfaGlsbHNoYWRlW1wiaGlsbHNoYWRlLWFjY2VudC1jb2xvclwiXSl9KX07Y29uc3QgcXU9UnMoW3tuYW1lOlwiYV9wb3NcIixjb21wb25lbnRzOjIsdHlwZTpcIkludDE2XCJ9XSw0KSx7bWVtYmVyczpOdX09cXU7dmFyIEd1PXtleHBvcnRzOnt9fTtmdW5jdGlvbiBadSh0LGUscil7cj1yfHwyO3ZhciBuLGkscyxhLG8sbCx1LGM9ZSYmZS5sZW5ndGgsaD1jP2VbMF0qcjp0Lmxlbmd0aCxwPUt1KHQsMCxoLHIsITApLGQ9W107aWYoIXB8fHAubmV4dD09PXAucHJldilyZXR1cm4gZDtpZihjJiYocD1mdW5jdGlvbih0LGUscixuKXt2YXIgaSxzLGEsbz1bXTtmb3IoaT0wLHM9ZS5sZW5ndGg7aTxzO2krKykoYT1LdSh0LGVbaV0qbixpPHMtMT9lW2krMV0qbjp0Lmxlbmd0aCxuLCExKSk9PT1hLm5leHQmJihhLnN0ZWluZXI9ITApLG8ucHVzaChpYyhhKSk7Zm9yKG8uc29ydCh0YyksaT0wO2k8by5sZW5ndGg7aSsrKXI9ZWMob1tpXSxyKTtyZXR1cm4gcn0odCxlLHAscikpLHQubGVuZ3RoPjgwKnIpe249cz10WzBdLGk9YT10WzFdO2Zvcih2YXIgZj1yO2Y8aDtmKz1yKShvPXRbZl0pPG4mJihuPW8pLChsPXRbZisxXSk8aSYmKGk9bCksbz5zJiYocz1vKSxsPmEmJihhPWwpO3U9MCE9PSh1PU1hdGgubWF4KHMtbixhLWkpKT8zMjc2Ny91OjA7fXJldHVybiBKdShwLGQscixuLGksdSwwKSxkfWZ1bmN0aW9uIEt1KHQsZSxyLG4saSl7dmFyIHMsYTtpZihpPT09Z2ModCxlLHIsbik+MClmb3Iocz1lO3M8cjtzKz1uKWE9ZmMocyx0W3NdLHRbcysxXSxhKTtlbHNlIGZvcihzPXItbjtzPj1lO3MtPW4pYT1mYyhzLHRbc10sdFtzKzFdLGEpO3JldHVybiBhJiZsYyhhLGEubmV4dCkmJih5YyhhKSxhPWEubmV4dCksYX1mdW5jdGlvbiBYdSh0LGUpe2lmKCF0KXJldHVybiB0O2V8fChlPXQpO3ZhciByLG49dDtkb3tpZihyPSExLG4uc3RlaW5lcnx8IWxjKG4sbi5uZXh0KSYmMCE9PW9jKG4ucHJldixuLG4ubmV4dCkpbj1uLm5leHQ7ZWxzZSB7aWYoeWMobiksKG49ZT1uLnByZXYpPT09bi5uZXh0KWJyZWFrO3I9ITA7fX13aGlsZShyfHxuIT09ZSk7cmV0dXJuIGV9ZnVuY3Rpb24gSnUodCxlLHIsbixpLHMsYSl7aWYodCl7IWEmJnMmJmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXQ7ZG97MD09PWkueiYmKGkuej1uYyhpLngsaS55LGUscixuKSksaS5wcmV2Wj1pLnByZXYsaS5uZXh0Wj1pLm5leHQsaT1pLm5leHQ7fXdoaWxlKGkhPT10KTtpLnByZXZaLm5leHRaPW51bGwsaS5wcmV2Wj1udWxsLGZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLHMsYSxvLGwsdT0xO2Rve2ZvcihyPXQsdD1udWxsLHM9bnVsbCxhPTA7cjspe2ZvcihhKyssbj1yLG89MCxlPTA7ZTx1JiYobysrLG49bi5uZXh0Wik7ZSsrKTtmb3IobD11O28+MHx8bD4wJiZuOykwIT09byYmKDA9PT1sfHwhbnx8ci56PD1uLnopPyhpPXIscj1yLm5leHRaLG8tLSk6KGk9bixuPW4ubmV4dFosbC0tKSxzP3MubmV4dFo9aTp0PWksaS5wcmV2Wj1zLHM9aTtyPW47fXMubmV4dFo9bnVsbCx1Kj0yO313aGlsZShhPjEpfShpKTt9KHQsbixpLHMpO2Zvcih2YXIgbyxsLHU9dDt0LnByZXYhPT10Lm5leHQ7KWlmKG89dC5wcmV2LGw9dC5uZXh0LHM/WXUodCxuLGkscyk6SHUodCkpZS5wdXNoKG8uaS9yfDApLGUucHVzaCh0LmkvcnwwKSxlLnB1c2gobC5pL3J8MCkseWModCksdD1sLm5leHQsdT1sLm5leHQ7ZWxzZSBpZigodD1sKT09PXUpe2E/MT09PWE/SnUodD1XdShYdSh0KSxlLHIpLGUscixuLGkscywyKToyPT09YSYmUXUodCxlLHIsbixpLHMpOkp1KFh1KHQpLGUscixuLGkscywxKTticmVha319fWZ1bmN0aW9uIEh1KHQpe3ZhciBlPXQucHJldixyPXQsbj10Lm5leHQ7aWYob2MoZSxyLG4pPj0wKXJldHVybiAhMTtmb3IodmFyIGk9ZS54LHM9ci54LGE9bi54LG89ZS55LGw9ci55LHU9bi55LGM9aTxzP2k8YT9pOmE6czxhP3M6YSxoPW88bD9vPHU/bzp1Omw8dT9sOnUscD1pPnM/aT5hP2k6YTpzPmE/czphLGQ9bz5sP28+dT9vOnU6bD51P2w6dSxmPW4ubmV4dDtmIT09ZTspe2lmKGYueD49YyYmZi54PD1wJiZmLnk+PWgmJmYueTw9ZCYmc2MoaSxvLHMsbCxhLHUsZi54LGYueSkmJm9jKGYucHJldixmLGYubmV4dCk+PTApcmV0dXJuICExO2Y9Zi5uZXh0O31yZXR1cm4gITB9ZnVuY3Rpb24gWXUodCxlLHIsbil7dmFyIGk9dC5wcmV2LHM9dCxhPXQubmV4dDtpZihvYyhpLHMsYSk+PTApcmV0dXJuICExO2Zvcih2YXIgbz1pLngsbD1zLngsdT1hLngsYz1pLnksaD1zLnkscD1hLnksZD1vPGw/bzx1P286dTpsPHU/bDp1LGY9YzxoP2M8cD9jOnA6aDxwP2g6cCx5PW8+bD9vPnU/bzp1Omw+dT9sOnUsbT1jPmg/Yz5wP2M6cDpoPnA/aDpwLGc9bmMoZCxmLGUscixuKSx4PW5jKHksbSxlLHIsbiksdj10LnByZXZaLGI9dC5uZXh0Wjt2JiZ2Lno+PWcmJmImJmIuejw9eDspe2lmKHYueD49ZCYmdi54PD15JiZ2Lnk+PWYmJnYueTw9bSYmdiE9PWkmJnYhPT1hJiZzYyhvLGMsbCxoLHUscCx2Lngsdi55KSYmb2Modi5wcmV2LHYsdi5uZXh0KT49MClyZXR1cm4gITE7aWYodj12LnByZXZaLGIueD49ZCYmYi54PD15JiZiLnk+PWYmJmIueTw9bSYmYiE9PWkmJmIhPT1hJiZzYyhvLGMsbCxoLHUscCxiLngsYi55KSYmb2MoYi5wcmV2LGIsYi5uZXh0KT49MClyZXR1cm4gITE7Yj1iLm5leHRaO31mb3IoO3YmJnYuej49Zzspe2lmKHYueD49ZCYmdi54PD15JiZ2Lnk+PWYmJnYueTw9bSYmdiE9PWkmJnYhPT1hJiZzYyhvLGMsbCxoLHUscCx2Lngsdi55KSYmb2Modi5wcmV2LHYsdi5uZXh0KT49MClyZXR1cm4gITE7dj12LnByZXZaO31mb3IoO2ImJmIuejw9eDspe2lmKGIueD49ZCYmYi54PD15JiZiLnk+PWYmJmIueTw9bSYmYiE9PWkmJmIhPT1hJiZzYyhvLGMsbCxoLHUscCxiLngsYi55KSYmb2MoYi5wcmV2LGIsYi5uZXh0KT49MClyZXR1cm4gITE7Yj1iLm5leHRaO31yZXR1cm4gITB9ZnVuY3Rpb24gV3UodCxlLHIpe3ZhciBuPXQ7ZG97dmFyIGk9bi5wcmV2LHM9bi5uZXh0Lm5leHQ7IWxjKGkscykmJnVjKGksbixuLm5leHQscykmJnBjKGkscykmJnBjKHMsaSkmJihlLnB1c2goaS5pL3J8MCksZS5wdXNoKG4uaS9yfDApLGUucHVzaChzLmkvcnwwKSx5YyhuKSx5YyhuLm5leHQpLG49dD1zKSxuPW4ubmV4dDt9d2hpbGUobiE9PXQpO3JldHVybiBYdShuKX1mdW5jdGlvbiBRdSh0LGUscixuLGkscyl7dmFyIGE9dDtkb3tmb3IodmFyIG89YS5uZXh0Lm5leHQ7byE9PWEucHJldjspe2lmKGEuaSE9PW8uaSYmYWMoYSxvKSl7dmFyIGw9ZGMoYSxvKTtyZXR1cm4gYT1YdShhLGEubmV4dCksbD1YdShsLGwubmV4dCksSnUoYSxlLHIsbixpLHMsMCksdm9pZCBKdShsLGUscixuLGkscywwKX1vPW8ubmV4dDt9YT1hLm5leHQ7fXdoaWxlKGEhPT10KX1mdW5jdGlvbiB0Yyh0LGUpe3JldHVybiB0LngtZS54fWZ1bmN0aW9uIGVjKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXt2YXIgcixuPWUsaT10Lngscz10LnksYT0tMS8wO2Rve2lmKHM8PW4ueSYmcz49bi5uZXh0LnkmJm4ubmV4dC55IT09bi55KXt2YXIgbz1uLngrKHMtbi55KSoobi5uZXh0Lngtbi54KS8obi5uZXh0Lnktbi55KTtpZihvPD1pJiZvPmEmJihhPW8scj1uLng8bi5uZXh0Lng/bjpuLm5leHQsbz09PWkpKXJldHVybiByfW49bi5uZXh0O313aGlsZShuIT09ZSk7aWYoIXIpcmV0dXJuIG51bGw7dmFyIGwsdT1yLGM9ci54LGg9ci55LHA9MS8wO249cjtkb3tpPj1uLngmJm4ueD49YyYmaSE9PW4ueCYmc2MoczxoP2k6YSxzLGMsaCxzPGg/YTppLHMsbi54LG4ueSkmJihsPU1hdGguYWJzKHMtbi55KS8oaS1uLngpLHBjKG4sdCkmJihsPHB8fGw9PT1wJiYobi54PnIueHx8bi54PT09ci54JiZyYyhyLG4pKSkmJihyPW4scD1sKSksbj1uLm5leHQ7fXdoaWxlKG4hPT11KTtyZXR1cm4gcn0odCxlKTtpZighcilyZXR1cm4gZTt2YXIgbj1kYyhyLHQpO3JldHVybiBYdShuLG4ubmV4dCksWHUocixyLm5leHQpfWZ1bmN0aW9uIHJjKHQsZSl7cmV0dXJuIG9jKHQucHJldix0LGUucHJldik8MCYmb2MoZS5uZXh0LHQsdC5uZXh0KTwwfWZ1bmN0aW9uIG5jKHQsZSxyLG4saSl7cmV0dXJuICh0PTE0MzE2NTU3NjUmKCh0PTg1ODk5MzQ1OSYoKHQ9MjUyNjQ1MTM1JigodD0xNjcxMTkzNSYoKHQ9KHQtcikqaXwwKXx0PDw4KSl8dDw8NCkpfHQ8PDIpKXx0PDwxKSl8KGU9MTQzMTY1NTc2NSYoKGU9ODU4OTkzNDU5JigoZT0yNTI2NDUxMzUmKChlPTE2NzExOTM1JigoZT0oZS1uKSppfDApfGU8PDgpKXxlPDw0KSl8ZTw8MikpfGU8PDEpKTw8MX1mdW5jdGlvbiBpYyh0KXt2YXIgZT10LHI9dDtkb3soZS54PHIueHx8ZS54PT09ci54JiZlLnk8ci55KSYmKHI9ZSksZT1lLm5leHQ7fXdoaWxlKGUhPT10KTtyZXR1cm4gcn1mdW5jdGlvbiBzYyh0LGUscixuLGkscyxhLG8pe3JldHVybiAoaS1hKSooZS1vKT49KHQtYSkqKHMtbykmJih0LWEpKihuLW8pPj0oci1hKSooZS1vKSYmKHItYSkqKHMtbyk+PShpLWEpKihuLW8pfWZ1bmN0aW9uIGFjKHQsZSl7cmV0dXJuIHQubmV4dC5pIT09ZS5pJiZ0LnByZXYuaSE9PWUuaSYmIWZ1bmN0aW9uKHQsZSl7dmFyIHI9dDtkb3tpZihyLmkhPT10LmkmJnIubmV4dC5pIT09dC5pJiZyLmkhPT1lLmkmJnIubmV4dC5pIT09ZS5pJiZ1YyhyLHIubmV4dCx0LGUpKXJldHVybiAhMDtyPXIubmV4dDt9d2hpbGUociE9PXQpO3JldHVybiAhMX0odCxlKSYmKHBjKHQsZSkmJnBjKGUsdCkmJmZ1bmN0aW9uKHQsZSl7dmFyIHI9dCxuPSExLGk9KHQueCtlLngpLzIscz0odC55K2UueSkvMjtkb3tyLnk+cyE9ci5uZXh0Lnk+cyYmci5uZXh0LnkhPT1yLnkmJmk8KHIubmV4dC54LXIueCkqKHMtci55KS8oci5uZXh0Lnktci55KStyLngmJihuPSFuKSxyPXIubmV4dDt9d2hpbGUociE9PXQpO3JldHVybiBufSh0LGUpJiYob2ModC5wcmV2LHQsZS5wcmV2KXx8b2ModCxlLnByZXYsZSkpfHxsYyh0LGUpJiZvYyh0LnByZXYsdCx0Lm5leHQpPjAmJm9jKGUucHJldixlLGUubmV4dCk+MCl9ZnVuY3Rpb24gb2ModCxlLHIpe3JldHVybiAoZS55LXQueSkqKHIueC1lLngpLShlLngtdC54KSooci55LWUueSl9ZnVuY3Rpb24gbGModCxlKXtyZXR1cm4gdC54PT09ZS54JiZ0Lnk9PT1lLnl9ZnVuY3Rpb24gdWModCxlLHIsbil7dmFyIGk9aGMob2ModCxlLHIpKSxzPWhjKG9jKHQsZSxuKSksYT1oYyhvYyhyLG4sdCkpLG89aGMob2MocixuLGUpKTtyZXR1cm4gaSE9PXMmJmEhPT1vfHwhKDAhPT1pfHwhY2ModCxyLGUpKXx8ISgwIT09c3x8IWNjKHQsbixlKSl8fCEoMCE9PWF8fCFjYyhyLHQsbikpfHwhKDAhPT1vfHwhY2MocixlLG4pKX1mdW5jdGlvbiBjYyh0LGUscil7cmV0dXJuIGUueDw9TWF0aC5tYXgodC54LHIueCkmJmUueD49TWF0aC5taW4odC54LHIueCkmJmUueTw9TWF0aC5tYXgodC55LHIueSkmJmUueT49TWF0aC5taW4odC55LHIueSl9ZnVuY3Rpb24gaGModCl7cmV0dXJuIHQ+MD8xOnQ8MD8tMTowfWZ1bmN0aW9uIHBjKHQsZSl7cmV0dXJuIG9jKHQucHJldix0LHQubmV4dCk8MD9vYyh0LGUsdC5uZXh0KT49MCYmb2ModCx0LnByZXYsZSk+PTA6b2ModCxlLHQucHJldik8MHx8b2ModCx0Lm5leHQsZSk8MH1mdW5jdGlvbiBkYyh0LGUpe3ZhciByPW5ldyBtYyh0LmksdC54LHQueSksbj1uZXcgbWMoZS5pLGUueCxlLnkpLGk9dC5uZXh0LHM9ZS5wcmV2O3JldHVybiB0Lm5leHQ9ZSxlLnByZXY9dCxyLm5leHQ9aSxpLnByZXY9cixuLm5leHQ9cixyLnByZXY9bixzLm5leHQ9bixuLnByZXY9cyxufWZ1bmN0aW9uIGZjKHQsZSxyLG4pe3ZhciBpPW5ldyBtYyh0LGUscik7cmV0dXJuIG4/KGkubmV4dD1uLm5leHQsaS5wcmV2PW4sbi5uZXh0LnByZXY9aSxuLm5leHQ9aSk6KGkucHJldj1pLGkubmV4dD1pKSxpfWZ1bmN0aW9uIHljKHQpe3QubmV4dC5wcmV2PXQucHJldix0LnByZXYubmV4dD10Lm5leHQsdC5wcmV2WiYmKHQucHJldloubmV4dFo9dC5uZXh0WiksdC5uZXh0WiYmKHQubmV4dFoucHJldlo9dC5wcmV2Wik7fWZ1bmN0aW9uIG1jKHQsZSxyKXt0aGlzLmk9dCx0aGlzLng9ZSx0aGlzLnk9cix0aGlzLnByZXY9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLno9MCx0aGlzLnByZXZaPW51bGwsdGhpcy5uZXh0Wj1udWxsLHRoaXMuc3RlaW5lcj0hMTt9ZnVuY3Rpb24gZ2ModCxlLHIsbil7Zm9yKHZhciBpPTAscz1lLGE9ci1uO3M8cjtzKz1uKWkrPSh0W2FdLXRbc10pKih0W3MrMV0rdFthKzFdKSxhPXM7cmV0dXJuIGl9R3UuZXhwb3J0cz1adSxHdS5leHBvcnRzLmRlZmF1bHQ9WnUsWnUuZGV2aWF0aW9uPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPWUmJmUubGVuZ3RoLHM9TWF0aC5hYnMoZ2ModCwwLGk/ZVswXSpyOnQubGVuZ3RoLHIpKTtpZihpKWZvcih2YXIgYT0wLG89ZS5sZW5ndGg7YTxvO2ErKylzLT1NYXRoLmFicyhnYyh0LGVbYV0qcixhPG8tMT9lW2ErMV0qcjp0Lmxlbmd0aCxyKSk7dmFyIGw9MDtmb3IoYT0wO2E8bi5sZW5ndGg7YSs9Myl7dmFyIHU9blthXSpyLGM9blthKzFdKnIsaD1uW2ErMl0qcjtsKz1NYXRoLmFicygodFt1XS10W2hdKSoodFtjKzFdLXRbdSsxXSktKHRbdV0tdFtjXSkqKHRbaCsxXS10W3UrMV0pKTt9cmV0dXJuIDA9PT1zJiYwPT09bD8wOk1hdGguYWJzKChsLXMpL3MpfSxadS5mbGF0dGVuPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10WzBdWzBdLmxlbmd0aCxyPXt2ZXJ0aWNlczpbXSxob2xlczpbXSxkaW1lbnNpb25zOmV9LG49MCxpPTA7aTx0Lmxlbmd0aDtpKyspe2Zvcih2YXIgcz0wO3M8dFtpXS5sZW5ndGg7cysrKWZvcih2YXIgYT0wO2E8ZTthKyspci52ZXJ0aWNlcy5wdXNoKHRbaV1bc11bYV0pO2k+MCYmci5ob2xlcy5wdXNoKG4rPXRbaS0xXS5sZW5ndGgpO31yZXR1cm4gcn07dmFyIHhjPXAoR3UuZXhwb3J0cyk7ZnVuY3Rpb24gdmModCxlLHIsbixpKXtiYyh0LGUscnx8MCxufHx0Lmxlbmd0aC0xLGl8fF9jKTt9ZnVuY3Rpb24gYmModCxlLHIsbixpKXtmb3IoO24+cjspe2lmKG4tcj42MDApe3ZhciBzPW4tcisxLGE9ZS1yKzEsbz1NYXRoLmxvZyhzKSxsPS41Kk1hdGguZXhwKDIqby8zKSx1PS41Kk1hdGguc3FydChvKmwqKHMtbCkvcykqKGEtcy8yPDA/LTE6MSk7YmModCxlLE1hdGgubWF4KHIsTWF0aC5mbG9vcihlLWEqbC9zK3UpKSxNYXRoLm1pbihuLE1hdGguZmxvb3IoZSsocy1hKSpsL3MrdSkpLGkpO312YXIgYz10W2VdLGg9cixwPW47Zm9yKHdjKHQscixlKSxpKHRbbl0sYyk+MCYmd2ModCxyLG4pO2g8cDspe2Zvcih3Yyh0LGgscCksaCsrLHAtLTtpKHRbaF0sYyk8MDspaCsrO2Zvcig7aSh0W3BdLGMpPjA7KXAtLTt9MD09PWkodFtyXSxjKT93Yyh0LHIscCk6d2ModCwrK3AsbikscDw9ZSYmKHI9cCsxKSxlPD1wJiYobj1wLTEpO319ZnVuY3Rpb24gd2ModCxlLHIpe3ZhciBuPXRbZV07dFtlXT10W3JdLHRbcl09bjt9ZnVuY3Rpb24gX2ModCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOjB9ZnVuY3Rpb24gQWModCxlKXtjb25zdCByPXQubGVuZ3RoO2lmKHI8PTEpcmV0dXJuIFt0XTtjb25zdCBuPVtdO2xldCBpLHM7Zm9yKGxldCBlPTA7ZTxyO2UrKyl7Y29uc3Qgcj1aKHRbZV0pOzAhPT1yJiYodFtlXS5hcmVhPU1hdGguYWJzKHIpLHZvaWQgMD09PXMmJihzPXI8MCkscz09PXI8MD8oaSYmbi5wdXNoKGkpLGk9W3RbZV1dKTppLnB1c2godFtlXSkpO31pZihpJiZuLnB1c2goaSksZT4xKWZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKW5bdF0ubGVuZ3RoPD1lfHwodmMoblt0XSxlLDEsblt0XS5sZW5ndGgtMSxTYyksblt0XT1uW3RdLnNsaWNlKDAsZSkpO3JldHVybiBufWZ1bmN0aW9uIFNjKHQsZSl7cmV0dXJuIGUuYXJlYS10LmFyZWF9ZnVuY3Rpb24ga2ModCxlLHIpe2NvbnN0IG49ci5wYXR0ZXJuRGVwZW5kZW5jaWVzO2xldCBpPSExO2Zvcihjb25zdCByIG9mIGUpe2NvbnN0IGU9ci5wYWludC5nZXQoYCR7dH0tcGF0dGVybmApO2UuaXNDb25zdGFudCgpfHwoaT0hMCk7Y29uc3Qgcz1lLmNvbnN0YW50T3IobnVsbCk7cyYmKGk9ITAsbltzXT0hMCk7fXJldHVybiBpfWZ1bmN0aW9uIEljKHQsZSxyLG4saSl7Y29uc3Qgcz1pLnBhdHRlcm5EZXBlbmRlbmNpZXM7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1hLnBhaW50LmdldChgJHt0fS1wYXR0ZXJuYCkudmFsdWU7aWYoXCJjb25zdGFudFwiIT09ZS5raW5kKXtsZXQgdD1lLmV2YWx1YXRlKHt6b29tOm59LHIse30saS5hdmFpbGFibGVJbWFnZXMpO3Q9dCYmdC5uYW1lP3QubmFtZTp0LHNbdF09ITAsci5wYXR0ZXJuc1thLmlkXT10O319cmV0dXJuIHJ9Y2xhc3MgTWN7Y29uc3RydWN0b3IodCl7dGhpcy56b29tPXQuem9vbSx0aGlzLm92ZXJzY2FsaW5nPXQub3ZlcnNjYWxpbmcsdGhpcy5sYXllcnM9dC5sYXllcnMsdGhpcy5sYXllcklkcz10aGlzLmxheWVycy5tYXAoKHQ9PnQuaWQpKSx0aGlzLmluZGV4PXQuaW5kZXgsdGhpcy5oYXNQYXR0ZXJuPSExLHRoaXMucGF0dGVybkZlYXR1cmVzPVtdLHRoaXMubGF5b3V0VmVydGV4QXJyYXk9bmV3ICRzLHRoaXMuaW5kZXhBcnJheT1uZXcgcmEsdGhpcy5pbmRleEFycmF5Mj1uZXcgbGEsdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnM9bmV3IEphKHQubGF5ZXJzLHQuem9vbSksdGhpcy5zZWdtZW50cz1uZXcgc28sdGhpcy5zZWdtZW50czI9bmV3IHNvLHRoaXMuc3RhdGVEZXBlbmRlbnRMYXllcklkcz10aGlzLmxheWVycy5maWx0ZXIoKHQ9PnQuaXNTdGF0ZURlcGVuZGVudCgpKSkubWFwKCh0PT50LmlkKSksdGhpcy5wcm9qZWN0aW9uPXQucHJvamVjdGlvbjt9cG9wdWxhdGUodCxlLHIsbil7dGhpcy5oYXNQYXR0ZXJuPWtjKFwiZmlsbFwiLHRoaXMubGF5ZXJzLGUpO2NvbnN0IGk9dGhpcy5sYXllcnNbMF0ubGF5b3V0LmdldChcImZpbGwtc29ydC1rZXlcIikscz1bXTtmb3IoY29uc3R7ZmVhdHVyZTphLGlkOm8saW5kZXg6bCxzb3VyY2VMYXllckluZGV4OnV9b2YgdCl7Y29uc3QgdD10aGlzLmxheWVyc1swXS5fZmVhdHVyZUZpbHRlci5uZWVkR2VvbWV0cnksYz1vdShhLHQpO2lmKCF0aGlzLmxheWVyc1swXS5fZmVhdHVyZUZpbHRlci5maWx0ZXIobmV3IHdzKHRoaXMuem9vbSksYyxyKSljb250aW51ZTtjb25zdCBoPWk/aS5ldmFsdWF0ZShjLHt9LHIsZS5hdmFpbGFibGVJbWFnZXMpOnZvaWQgMCxwPXtpZDpvLHByb3BlcnRpZXM6YS5wcm9wZXJ0aWVzLHR5cGU6YS50eXBlLHNvdXJjZUxheWVySW5kZXg6dSxpbmRleDpsLGdlb21ldHJ5OnQ/Yy5nZW9tZXRyeTphdShhLHIsbikscGF0dGVybnM6e30sc29ydEtleTpofTtzLnB1c2gocCk7fWkmJnMuc29ydCgoKHQsZSk9PnQuc29ydEtleS1lLnNvcnRLZXkpKTtmb3IoY29uc3QgbiBvZiBzKXtjb25zdHtnZW9tZXRyeTppLGluZGV4OnMsc291cmNlTGF5ZXJJbmRleDphfT1uO2lmKHRoaXMuaGFzUGF0dGVybil7Y29uc3QgdD1JYyhcImZpbGxcIix0aGlzLmxheWVycyxuLHRoaXMuem9vbSxlKTt0aGlzLnBhdHRlcm5GZWF0dXJlcy5wdXNoKHQpO31lbHNlIHRoaXMuYWRkRmVhdHVyZShuLGkscyxyLHt9LGUuYXZhaWxhYmxlSW1hZ2VzKTtlLmZlYXR1cmVJbmRleC5pbnNlcnQodFtzXS5mZWF0dXJlLGkscyxhLHRoaXMuaW5kZXgpO319dXBkYXRlKHQsZSxyLG4pe3RoaXMuc3RhdGVEZXBlbmRlbnRMYXllcnMubGVuZ3RoJiZ0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGRhdGVQYWludEFycmF5cyh0LGUsdGhpcy5zdGF0ZURlcGVuZGVudExheWVycyxyLG4pO31hZGRGZWF0dXJlcyh0LGUscixuLGkpe2Zvcihjb25zdCB0IG9mIHRoaXMucGF0dGVybkZlYXR1cmVzKXRoaXMuYWRkRmVhdHVyZSh0LHQuZ2VvbWV0cnksdC5pbmRleCxlLHIsbik7fWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RofXVwbG9hZFBlbmRpbmcoKXtyZXR1cm4gIXRoaXMudXBsb2FkZWR8fHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLm5lZWRzVXBsb2FkfXVwbG9hZCh0KXt0aGlzLnVwbG9hZGVkfHwodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSxOdSksdGhpcy5pbmRleEJ1ZmZlcj10LmNyZWF0ZUluZGV4QnVmZmVyKHRoaXMuaW5kZXhBcnJheSksdGhpcy5pbmRleEJ1ZmZlcjI9dC5jcmVhdGVJbmRleEJ1ZmZlcih0aGlzLmluZGV4QXJyYXkyKSksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMudXBsb2FkKHQpLHRoaXMudXBsb2FkZWQ9ITA7fWRlc3Ryb3koKXt0aGlzLmxheW91dFZlcnRleEJ1ZmZlciYmKHRoaXMubGF5b3V0VmVydGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLmluZGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLmluZGV4QnVmZmVyMi5kZXN0cm95KCksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZGVzdHJveSgpLHRoaXMuc2VnbWVudHMuZGVzdHJveSgpLHRoaXMuc2VnbWVudHMyLmRlc3Ryb3koKSk7fWFkZEZlYXR1cmUodCxlLHIsbixpLHM9W10pe2Zvcihjb25zdCB0IG9mIEFjKGUsNTAwKSl7bGV0IGU9MDtmb3IoY29uc3QgciBvZiB0KWUrPXIubGVuZ3RoO2NvbnN0IHI9dGhpcy5zZWdtZW50cy5wcmVwYXJlU2VnbWVudChlLHRoaXMubGF5b3V0VmVydGV4QXJyYXksdGhpcy5pbmRleEFycmF5KSxuPXIudmVydGV4TGVuZ3RoLGk9W10scz1bXTtmb3IoY29uc3QgZSBvZiB0KXtpZigwPT09ZS5sZW5ndGgpY29udGludWU7ZSE9PXRbMF0mJnMucHVzaChpLmxlbmd0aC8yKTtjb25zdCByPXRoaXMuc2VnbWVudHMyLnByZXBhcmVTZWdtZW50KGUubGVuZ3RoLHRoaXMubGF5b3V0VmVydGV4QXJyYXksdGhpcy5pbmRleEFycmF5Miksbj1yLnZlcnRleExlbmd0aDt0aGlzLmxheW91dFZlcnRleEFycmF5LmVtcGxhY2VCYWNrKGVbMF0ueCxlWzBdLnkpLHRoaXMuaW5kZXhBcnJheTIuZW1wbGFjZUJhY2sobitlLmxlbmd0aC0xLG4pLGkucHVzaChlWzBdLngpLGkucHVzaChlWzBdLnkpO2ZvcihsZXQgdD0xO3Q8ZS5sZW5ndGg7dCsrKXRoaXMubGF5b3V0VmVydGV4QXJyYXkuZW1wbGFjZUJhY2soZVt0XS54LGVbdF0ueSksdGhpcy5pbmRleEFycmF5Mi5lbXBsYWNlQmFjayhuK3QtMSxuK3QpLGkucHVzaChlW3RdLngpLGkucHVzaChlW3RdLnkpO3IudmVydGV4TGVuZ3RoKz1lLmxlbmd0aCxyLnByaW1pdGl2ZUxlbmd0aCs9ZS5sZW5ndGg7fWNvbnN0IGE9eGMoaSxzKTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrPTMpdGhpcy5pbmRleEFycmF5LmVtcGxhY2VCYWNrKG4rYVt0XSxuK2FbdCsxXSxuK2FbdCsyXSk7ci52ZXJ0ZXhMZW5ndGgrPWUsci5wcmltaXRpdmVMZW5ndGgrPWEubGVuZ3RoLzM7fXRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnBvcHVsYXRlUGFpbnRBcnJheXModGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGgsdCxyLGkscyxuKTt9fUppKE1jLFwiRmlsbEJ1Y2tldFwiLHtvbWl0OltcImxheWVyc1wiLFwicGF0dGVybkZlYXR1cmVzXCJdfSk7Y29uc3QgVGM9bmV3IFBzKHtcImZpbGwtc29ydC1rZXlcIjpuZXcgRXModGUubGF5b3V0X2ZpbGxbXCJmaWxsLXNvcnQta2V5XCJdKX0pO3ZhciB6Yz17cGFpbnQ6bmV3IFBzKHtcImZpbGwtYW50aWFsaWFzXCI6bmV3IEJzKHRlLnBhaW50X2ZpbGxbXCJmaWxsLWFudGlhbGlhc1wiXSksXCJmaWxsLW9wYWNpdHlcIjpuZXcgRXModGUucGFpbnRfZmlsbFtcImZpbGwtb3BhY2l0eVwiXSksXCJmaWxsLWNvbG9yXCI6bmV3IEVzKHRlLnBhaW50X2ZpbGxbXCJmaWxsLWNvbG9yXCJdKSxcImZpbGwtb3V0bGluZS1jb2xvclwiOm5ldyBFcyh0ZS5wYWludF9maWxsW1wiZmlsbC1vdXRsaW5lLWNvbG9yXCJdKSxcImZpbGwtdHJhbnNsYXRlXCI6bmV3IEJzKHRlLnBhaW50X2ZpbGxbXCJmaWxsLXRyYW5zbGF0ZVwiXSksXCJmaWxsLXRyYW5zbGF0ZS1hbmNob3JcIjpuZXcgQnModGUucGFpbnRfZmlsbFtcImZpbGwtdHJhbnNsYXRlLWFuY2hvclwiXSksXCJmaWxsLXBhdHRlcm5cIjpuZXcgRXModGUucGFpbnRfZmlsbFtcImZpbGwtcGF0dGVyblwiXSl9KSxsYXlvdXQ6VGN9O2NvbnN0IEJjPVJzKFt7bmFtZTpcImFfcG9zX25vcm1hbF9lZFwiLGNvbXBvbmVudHM6NCx0eXBlOlwiSW50MTZcIn1dKSxFYz1Scyhbe25hbWU6XCJhX2NlbnRyb2lkX3Bvc1wiLGNvbXBvbmVudHM6Mix0eXBlOlwiVWludDE2XCJ9XSksQ2M9UnMoW3tuYW1lOlwiYV9wb3NfM1wiLGNvbXBvbmVudHM6Myx0eXBlOlwiSW50MTZcIn0se25hbWU6XCJhX3Bvc19ub3JtYWxfM1wiLGNvbXBvbmVudHM6Myx0eXBlOlwiSW50MTZcIn1dKSx7bWVtYmVyczpQY309QmM7dmFyIERjPXt9LFZjPW0sTGM9RmM7ZnVuY3Rpb24gRmModCxlLHIsbixpKXt0aGlzLnByb3BlcnRpZXM9e30sdGhpcy5leHRlbnQ9cix0aGlzLnR5cGU9MCx0aGlzLl9wYmY9dCx0aGlzLl9nZW9tZXRyeT0tMSx0aGlzLl9rZXlzPW4sdGhpcy5fdmFsdWVzPWksdC5yZWFkRmllbGRzKFJjLHRoaXMsZSk7fWZ1bmN0aW9uIFJjKHQsZSxyKXsxPT10P2UuaWQ9ci5yZWFkVmFyaW50KCk6Mj09dD9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LnJlYWRWYXJpbnQoKSt0LnBvczt0LnBvczxyOyl7dmFyIG49ZS5fa2V5c1t0LnJlYWRWYXJpbnQoKV0saT1lLl92YWx1ZXNbdC5yZWFkVmFyaW50KCldO2UucHJvcGVydGllc1tuXT1pO319KHIsZSk6Mz09dD9lLnR5cGU9ci5yZWFkVmFyaW50KCk6ND09dCYmKGUuX2dlb21ldHJ5PXIucG9zKTt9ZnVuY3Rpb24gVWModCl7Zm9yKHZhciBlLHIsbj0wLGk9MCxzPXQubGVuZ3RoLGE9cy0xO2k8czthPWkrKyluKz0oKHI9dFthXSkueC0oZT10W2ldKS54KSooZS55K3IueSk7cmV0dXJuIG59RmMudHlwZXM9W1wiVW5rbm93blwiLFwiUG9pbnRcIixcIkxpbmVTdHJpbmdcIixcIlBvbHlnb25cIl0sRmMucHJvdG90eXBlLmxvYWRHZW9tZXRyeT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BiZjt0LnBvcz10aGlzLl9nZW9tZXRyeTtmb3IodmFyIGUscj10LnJlYWRWYXJpbnQoKSt0LnBvcyxuPTEsaT0wLHM9MCxhPTAsbz1bXTt0LnBvczxyOyl7aWYoaTw9MCl7dmFyIGw9dC5yZWFkVmFyaW50KCk7bj03JmwsaT1sPj4zO31pZihpLS0sMT09PW58fDI9PT1uKXMrPXQucmVhZFNWYXJpbnQoKSxhKz10LnJlYWRTVmFyaW50KCksMT09PW4mJihlJiZvLnB1c2goZSksZT1bXSksZS5wdXNoKG5ldyBWYyhzLGEpKTtlbHNlIHtpZig3IT09bil0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIGNvbW1hbmQgXCIrbik7ZSYmZS5wdXNoKGVbMF0uY2xvbmUoKSk7fX1yZXR1cm4gZSYmby5wdXNoKGUpLG99LEZjLnByb3RvdHlwZS5iYm94PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcGJmO3QucG9zPXRoaXMuX2dlb21ldHJ5O2Zvcih2YXIgZT10LnJlYWRWYXJpbnQoKSt0LnBvcyxyPTEsbj0wLGk9MCxzPTAsYT0xLzAsbz0tMS8wLGw9MS8wLHU9LTEvMDt0LnBvczxlOyl7aWYobjw9MCl7dmFyIGM9dC5yZWFkVmFyaW50KCk7cj03JmMsbj1jPj4zO31pZihuLS0sMT09PXJ8fDI9PT1yKShpKz10LnJlYWRTVmFyaW50KCkpPGEmJihhPWkpLGk+byYmKG89aSksKHMrPXQucmVhZFNWYXJpbnQoKSk8bCYmKGw9cykscz51JiYodT1zKTtlbHNlIGlmKDchPT1yKXRocm93IG5ldyBFcnJvcihcInVua25vd24gY29tbWFuZCBcIityKX1yZXR1cm4gW2EsbCxvLHVdfSxGYy5wcm90b3R5cGUudG9HZW9KU09OPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpLHM9dGhpcy5leHRlbnQqTWF0aC5wb3coMixyKSxhPXRoaXMuZXh0ZW50KnQsbz10aGlzLmV4dGVudCplLGw9dGhpcy5sb2FkR2VvbWV0cnkoKSx1PUZjLnR5cGVzW3RoaXMudHlwZV07ZnVuY3Rpb24gYyh0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIHI9dFtlXTt0W2VdPVszNjAqKHIueCthKS9zLTE4MCwzNjAvTWF0aC5QSSpNYXRoLmF0YW4oTWF0aC5leHAoKDE4MC0zNjAqKHIueStvKS9zKSpNYXRoLlBJLzE4MCkpLTkwXTt9fXN3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgMTp2YXIgaD1bXTtmb3Iobj0wO248bC5sZW5ndGg7bisrKWhbbl09bFtuXVswXTtjKGw9aCk7YnJlYWs7Y2FzZSAyOmZvcihuPTA7bjxsLmxlbmd0aDtuKyspYyhsW25dKTticmVhaztjYXNlIDM6Zm9yKGw9ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGg7aWYoZTw9MSlyZXR1cm4gW3RdO2Zvcih2YXIgcixuLGk9W10scz0wO3M8ZTtzKyspe3ZhciBhPVVjKHRbc10pOzAhPT1hJiYodm9pZCAwPT09biYmKG49YTwwKSxuPT09YTwwPyhyJiZpLnB1c2gocikscj1bdFtzXV0pOnIucHVzaCh0W3NdKSk7fXJldHVybiByJiZpLnB1c2gociksaX0obCksbj0wO248bC5sZW5ndGg7bisrKWZvcihpPTA7aTxsW25dLmxlbmd0aDtpKyspYyhsW25dW2ldKTt9MT09PWwubGVuZ3RoP2w9bFswXTp1PVwiTXVsdGlcIit1O3ZhciBwPXt0eXBlOlwiRmVhdHVyZVwiLGdlb21ldHJ5Ont0eXBlOnUsY29vcmRpbmF0ZXM6bH0scHJvcGVydGllczp0aGlzLnByb3BlcnRpZXN9O3JldHVybiBcImlkXCJpbiB0aGlzJiYocC5pZD10aGlzLmlkKSxwfTt2YXIgJGM9TGMsamM9T2M7ZnVuY3Rpb24gT2ModCxlKXt0aGlzLnZlcnNpb249MSx0aGlzLm5hbWU9bnVsbCx0aGlzLmV4dGVudD00MDk2LHRoaXMubGVuZ3RoPTAsdGhpcy5fcGJmPXQsdGhpcy5fa2V5cz1bXSx0aGlzLl92YWx1ZXM9W10sdGhpcy5fZmVhdHVyZXM9W10sdC5yZWFkRmllbGRzKHFjLHRoaXMsZSksdGhpcy5sZW5ndGg9dGhpcy5fZmVhdHVyZXMubGVuZ3RoO31mdW5jdGlvbiBxYyh0LGUscil7MTU9PT10P2UudmVyc2lvbj1yLnJlYWRWYXJpbnQoKToxPT09dD9lLm5hbWU9ci5yZWFkU3RyaW5nKCk6NT09PXQ/ZS5leHRlbnQ9ci5yZWFkVmFyaW50KCk6Mj09PXQ/ZS5fZmVhdHVyZXMucHVzaChyLnBvcyk6Mz09PXQ/ZS5fa2V5cy5wdXNoKHIucmVhZFN0cmluZygpKTo0PT09dCYmZS5fdmFsdWVzLnB1c2goZnVuY3Rpb24odCl7Zm9yKHZhciBlPW51bGwscj10LnJlYWRWYXJpbnQoKSt0LnBvczt0LnBvczxyOyl7dmFyIG49dC5yZWFkVmFyaW50KCk+PjM7ZT0xPT09bj90LnJlYWRTdHJpbmcoKToyPT09bj90LnJlYWRGbG9hdCgpOjM9PT1uP3QucmVhZERvdWJsZSgpOjQ9PT1uP3QucmVhZFZhcmludDY0KCk6NT09PW4/dC5yZWFkVmFyaW50KCk6Nj09PW4/dC5yZWFkU1ZhcmludCgpOjc9PT1uP3QucmVhZEJvb2xlYW4oKTpudWxsO31yZXR1cm4gZX0ocikpO31PYy5wcm90b3R5cGUuZmVhdHVyZT1mdW5jdGlvbih0KXtpZih0PDB8fHQ+PXRoaXMuX2ZlYXR1cmVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJmZWF0dXJlIGluZGV4IG91dCBvZiBib3VuZHNcIik7dGhpcy5fcGJmLnBvcz10aGlzLl9mZWF0dXJlc1t0XTt2YXIgZT10aGlzLl9wYmYucmVhZFZhcmludCgpK3RoaXMuX3BiZi5wb3M7cmV0dXJuIG5ldyAkYyh0aGlzLl9wYmYsZSx0aGlzLmV4dGVudCx0aGlzLl9rZXlzLHRoaXMuX3ZhbHVlcyl9O3ZhciBOYz1qYztmdW5jdGlvbiBHYyh0LGUscil7aWYoMz09PXQpe3ZhciBuPW5ldyBOYyhyLHIucmVhZFZhcmludCgpK3IucG9zKTtuLmxlbmd0aCYmKGVbbi5uYW1lXT1uKTt9fXZhciBaYz1EYy5WZWN0b3JUaWxlPWZ1bmN0aW9uKHQsZSl7dGhpcy5sYXllcnM9dC5yZWFkRmllbGRzKEdjLHt9LGUpO30sS2M9RGMuVmVjdG9yVGlsZUZlYXR1cmU9TGM7ZnVuY3Rpb24gWGModCxlLHIsbil7Y29uc3QgaT1bXSxzPTA9PT1uPyh0LGUscixuLGkscyk9Pnt0LnB1c2gobmV3IHgocyxyKyhzLWUpLyhuLWUpKihpLXIpKSk7fToodCxlLHIsbixpLHMpPT57dC5wdXNoKG5ldyB4KGUrKHMtcikvKGktcikqKG4tZSkscykpO307Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3QgdD1bXTtmb3IoY29uc3QgaSBvZiBhKXtpZihpLmxlbmd0aDw9Miljb250aW51ZTtjb25zdCBhPVtdO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGgtMTt0Kyspe2NvbnN0IG89aVt0XS54LGw9aVt0XS55LHU9aVt0KzFdLngsYz1pW3QrMV0ueSxoPTA9PT1uP286bCxwPTA9PT1uP3U6YztoPGU/cD5lJiZzKGEsbyxsLHUsYyxlKTpoPnI/cDxyJiZzKGEsbyxsLHUsYyxyKTphLnB1c2goaVt0XSkscDxlJiZoPj1lJiZzKGEsbyxsLHUsYyxlKSxwPnImJmg8PXImJnMoYSxvLGwsdSxjLHIpO31sZXQgbz1pW2kubGVuZ3RoLTFdO2NvbnN0IGw9MD09PW4/by54Om8ueTtsPj1lJiZsPD1yJiZhLnB1c2gobyksYS5sZW5ndGgmJihvPWFbYS5sZW5ndGgtMV0sYVswXS54PT09by54JiZhWzBdLnk9PT1vLnl8fGEucHVzaChhWzBdKSx0LnB1c2goYSkpO310Lmxlbmd0aCYmaS5wdXNoKHQpO31yZXR1cm4gaX1EYy5WZWN0b3JUaWxlTGF5ZXI9amM7Y29uc3QgSmM9S2MudHlwZXMsSGM9TWF0aC5wb3coMiwxMyk7ZnVuY3Rpb24gWWModCxlLHIsbixpLHMsYSxvKXt0LmVtcGxhY2VCYWNrKChlPDwxKSthLChyPDwxKStzLChNYXRoLmZsb29yKG4qSGMpPDwxKStpLE1hdGgucm91bmQobykpO31mdW5jdGlvbiBXYyh0LGUscil7Y29uc3Qgbj0xNjM4NDt0LmVtcGxhY2VCYWNrKGUueCxlLnksZS56LHJbMF0qbixyWzFdKm4sclsyXSpuKTt9Y2xhc3MgUWN7Y29uc3RydWN0b3IoKXt0aGlzLmFjYz1uZXcgeCgwLDApLHRoaXMucG9seUNvdW50PVtdO31zdGFydFJpbmcodCl7dGhpcy5jdXJyZW50UG9seUNvdW50PXtlZGdlczowLHRvcDowfSx0aGlzLnBvbHlDb3VudC5wdXNoKHRoaXMuY3VycmVudFBvbHlDb3VudCksdGhpcy5taW58fCh0aGlzLm1pbj1uZXcgeCh0LngsdC55KSx0aGlzLm1heD1uZXcgeCh0LngsdC55KSk7fWFwcGVuZCh0LGUpe3RoaXMuY3VycmVudFBvbHlDb3VudC5lZGdlcysrLHRoaXMuYWNjLl9hZGQodCk7Y29uc3Qgcj10aGlzLm1pbixuPXRoaXMubWF4O3QueDxyLng/ci54PXQueDp0Lng+bi54JiYobi54PXQueCksdC55PHIueT9yLnk9dC55OnQueT5uLnkmJihuLnk9dC55KSwoKDA9PT10Lnh8fHQueD09PWFvKSYmdC54PT09ZS54KSE9KCgwPT09dC55fHx0Lnk9PT1hbykmJnQueT09PWUueSkmJnRoaXMucHJvY2Vzc0JvcmRlck92ZXJsYXAodCxlKSxlLng8MCE9dC54PDAmJnRoaXMuYWRkQm9yZGVySW50ZXJzZWN0aW9uKDAsRXIoZS55LHQueSwoMC1lLngpLyh0LngtZS54KSkpLGUueD5hbyE9dC54PmFvJiZ0aGlzLmFkZEJvcmRlckludGVyc2VjdGlvbigxLEVyKGUueSx0LnksKGFvLWUueCkvKHQueC1lLngpKSksZS55PDAhPXQueTwwJiZ0aGlzLmFkZEJvcmRlckludGVyc2VjdGlvbigyLEVyKGUueCx0LngsKDAtZS55KS8odC55LWUueSkpKSxlLnk+YW8hPXQueT5hbyYmdGhpcy5hZGRCb3JkZXJJbnRlcnNlY3Rpb24oMyxFcihlLngsdC54LChhby1lLnkpLyh0LnktZS55KSkpO31hZGRCb3JkZXJJbnRlcnNlY3Rpb24odCxlKXt0aGlzLmJvcmRlcnN8fCh0aGlzLmJvcmRlcnM9W1tOdW1iZXIuTUFYX1ZBTFVFLC1OdW1iZXIuTUFYX1ZBTFVFXSxbTnVtYmVyLk1BWF9WQUxVRSwtTnVtYmVyLk1BWF9WQUxVRV0sW051bWJlci5NQVhfVkFMVUUsLU51bWJlci5NQVhfVkFMVUVdLFtOdW1iZXIuTUFYX1ZBTFVFLC1OdW1iZXIuTUFYX1ZBTFVFXV0pO2NvbnN0IHI9dGhpcy5ib3JkZXJzW3RdO2U8clswXSYmKHJbMF09ZSksZT5yWzFdJiYoclsxXT1lKTt9cHJvY2Vzc0JvcmRlck92ZXJsYXAodCxlKXtpZih0Lng9PT1lLngpe2lmKHQueT09PWUueSlyZXR1cm47Y29uc3Qgcj0wPT09dC54PzA6MTt0aGlzLmFkZEJvcmRlckludGVyc2VjdGlvbihyLGUueSksdGhpcy5hZGRCb3JkZXJJbnRlcnNlY3Rpb24ocix0LnkpO31lbHNlIHtjb25zdCByPTA9PT10Lnk/MjozO3RoaXMuYWRkQm9yZGVySW50ZXJzZWN0aW9uKHIsZS54KSx0aGlzLmFkZEJvcmRlckludGVyc2VjdGlvbihyLHQueCk7fX1jZW50cm9pZCgpe2NvbnN0IHQ9dGhpcy5wb2x5Q291bnQucmVkdWNlKCgodCxlKT0+dCtlLmVkZ2VzKSwwKTtyZXR1cm4gMCE9PXQ/dGhpcy5hY2MuZGl2KHQpLl9yb3VuZCgpOm5ldyB4KDAsMCl9c3Bhbigpe3JldHVybiBuZXcgeCh0aGlzLm1heC54LXRoaXMubWluLngsdGhpcy5tYXgueS10aGlzLm1pbi55KX1pbnRlcnNlY3RzQ291bnQoKXtyZXR1cm4gdGhpcy5ib3JkZXJzLnJlZHVjZSgoKHQsZSk9PnQrICsoZVswXSE9PU51bWJlci5NQVhfVkFMVUUpKSwwKX19Y2xhc3MgdGh7Y29uc3RydWN0b3IodCl7dGhpcy56b29tPXQuem9vbSx0aGlzLmNhbm9uaWNhbD10LmNhbm9uaWNhbCx0aGlzLm92ZXJzY2FsaW5nPXQub3ZlcnNjYWxpbmcsdGhpcy5sYXllcnM9dC5sYXllcnMsdGhpcy5sYXllcklkcz10aGlzLmxheWVycy5tYXAoKHQ9PnQuaWQpKSx0aGlzLmluZGV4PXQuaW5kZXgsdGhpcy5oYXNQYXR0ZXJuPSExLHRoaXMuZWRnZVJhZGl1cz0wLHRoaXMucHJvamVjdGlvbj10LnByb2plY3Rpb24sdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheT1uZXcgT3MsdGhpcy5jZW50cm9pZFZlcnRleEFycmF5PW5ldyB3YSx0aGlzLmluZGV4QXJyYXk9bmV3IHJhLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zPW5ldyBKYSh0LmxheWVycyx0Lnpvb20pLHRoaXMuc2VnbWVudHM9bmV3IHNvLHRoaXMuc3RhdGVEZXBlbmRlbnRMYXllcklkcz10aGlzLmxheWVycy5maWx0ZXIoKHQ9PnQuaXNTdGF0ZURlcGVuZGVudCgpKSkubWFwKCh0PT50LmlkKSksdGhpcy5lbmFibGVUZXJyYWluPXQuZW5hYmxlVGVycmFpbjt9cG9wdWxhdGUodCxlLHIsbil7dGhpcy5mZWF0dXJlcz1bXSx0aGlzLmhhc1BhdHRlcm49a2MoXCJmaWxsLWV4dHJ1c2lvblwiLHRoaXMubGF5ZXJzLGUpLHRoaXMuZmVhdHVyZXNPbkJvcmRlcj1bXSx0aGlzLmJvcmRlcnM9W1tdLFtdLFtdLFtdXSx0aGlzLmJvcmRlckRvbmVXaXRoTmVpZ2hib3JaPVstMSwtMSwtMSwtMV0sdGhpcy50aWxlVG9NZXRlcj1mdW5jdGlvbih0KXtjb25zdCBlPU1hdGguZXhwKE1hdGguUEkqKDEtdC55LygxPDx0LnopKjIpKTtyZXR1cm4gODAxNTAwMzQqZS8oZSplKzEpL2FvLygxPDx0LnopfShyKSx0aGlzLmVkZ2VSYWRpdXM9dGhpcy5sYXllcnNbMF0ubGF5b3V0LmdldChcImZpbGwtZXh0cnVzaW9uLWVkZ2UtcmFkaXVzXCIpL3RoaXMudGlsZVRvTWV0ZXI7Zm9yKGNvbnN0e2ZlYXR1cmU6aSxpZDpzLGluZGV4OmEsc291cmNlTGF5ZXJJbmRleDpvfW9mIHQpe2NvbnN0IHQ9dGhpcy5sYXllcnNbMF0uX2ZlYXR1cmVGaWx0ZXIubmVlZEdlb21ldHJ5LGw9b3UoaSx0KTtpZighdGhpcy5sYXllcnNbMF0uX2ZlYXR1cmVGaWx0ZXIuZmlsdGVyKG5ldyB3cyh0aGlzLnpvb20pLGwscikpY29udGludWU7Y29uc3QgdT17aWQ6cyxzb3VyY2VMYXllckluZGV4Om8saW5kZXg6YSxnZW9tZXRyeTp0P2wuZ2VvbWV0cnk6YXUoaSxyLG4pLHByb3BlcnRpZXM6aS5wcm9wZXJ0aWVzLHR5cGU6aS50eXBlLHBhdHRlcm5zOnt9fSxjPXRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RoO3RoaXMuaGFzUGF0dGVybj90aGlzLmZlYXR1cmVzLnB1c2goSWMoXCJmaWxsLWV4dHJ1c2lvblwiLHRoaXMubGF5ZXJzLHUsdGhpcy56b29tLGUpKTp0aGlzLmFkZEZlYXR1cmUodSx1Lmdlb21ldHJ5LGEscix7fSxlLmF2YWlsYWJsZUltYWdlcyxuKSxlLmZlYXR1cmVJbmRleC5pbnNlcnQoaSx1Lmdlb21ldHJ5LGEsbyx0aGlzLmluZGV4LGMpO310aGlzLnNvcnRCb3JkZXJzKCk7fWFkZEZlYXR1cmVzKHQsZSxyLG4saSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5mZWF0dXJlcyl7Y29uc3R7Z2VvbWV0cnk6c309dDt0aGlzLmFkZEZlYXR1cmUodCxzLHQuaW5kZXgsZSxyLG4saSk7fXRoaXMuc29ydEJvcmRlcnMoKTt9dXBkYXRlKHQsZSxyLG4pe3RoaXMuc3RhdGVEZXBlbmRlbnRMYXllcnMubGVuZ3RoJiZ0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGRhdGVQYWludEFycmF5cyh0LGUsdGhpcy5zdGF0ZURlcGVuZGVudExheWVycyxyLG4pO31pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLmxheW91dFZlcnRleEFycmF5Lmxlbmd0aH11cGxvYWRQZW5kaW5nKCl7cmV0dXJuICF0aGlzLnVwbG9hZGVkfHx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5uZWVkc1VwbG9hZH11cGxvYWQodCl7dGhpcy51cGxvYWRlZHx8KHRoaXMubGF5b3V0VmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMubGF5b3V0VmVydGV4QXJyYXksUGMpLHRoaXMuaW5kZXhCdWZmZXI9dC5jcmVhdGVJbmRleEJ1ZmZlcih0aGlzLmluZGV4QXJyYXkpLHRoaXMubGF5b3V0VmVydGV4RXh0QXJyYXkmJih0aGlzLmxheW91dFZlcnRleEV4dEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLmxheW91dFZlcnRleEV4dEFycmF5LENjLm1lbWJlcnMsITApKSksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMudXBsb2FkKHQpLHRoaXMudXBsb2FkZWQ9ITA7fXVwbG9hZENlbnRyb2lkKHQpezAhPT10aGlzLmNlbnRyb2lkVmVydGV4QXJyYXkubGVuZ3RoJiYodGhpcy5jZW50cm9pZFZlcnRleEJ1ZmZlcj90aGlzLm5lZWRzQ2VudHJvaWRVcGRhdGUmJnRoaXMuY2VudHJvaWRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YSh0aGlzLmNlbnRyb2lkVmVydGV4QXJyYXkpOnRoaXMuY2VudHJvaWRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5jZW50cm9pZFZlcnRleEFycmF5LEVjLm1lbWJlcnMsITApLHRoaXMubmVlZHNDZW50cm9pZFVwZGF0ZT0hMSk7fWRlc3Ryb3koKXt0aGlzLmxheW91dFZlcnRleEJ1ZmZlciYmKHRoaXMubGF5b3V0VmVydGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLmNlbnRyb2lkVmVydGV4QnVmZmVyJiZ0aGlzLmNlbnRyb2lkVmVydGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLmxheW91dFZlcnRleEV4dEJ1ZmZlciYmdGhpcy5sYXlvdXRWZXJ0ZXhFeHRCdWZmZXIuZGVzdHJveSgpLHRoaXMuaW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmRlc3Ryb3koKSx0aGlzLnNlZ21lbnRzLmRlc3Ryb3koKSk7fWFkZEZlYXR1cmUodCxlLHIsbixpLHMsYSl7Y29uc3Qgbz1bbmV3IHgoMCwwKSxuZXcgeChhbyxhbyldLGw9YS5wcm9qZWN0aW9uLHU9XCJnbG9iZVwiPT09bC5uYW1lLGM9dGhpcy5lbmFibGVUZXJyYWluJiYhdT9uZXcgUWM6bnVsbCxoPVwiUG9seWdvblwiPT09SmNbdC50eXBlXTt1JiYhdGhpcy5sYXlvdXRWZXJ0ZXhFeHRBcnJheSYmKHRoaXMubGF5b3V0VmVydGV4RXh0QXJyYXk9bmV3IEtzKTtjb25zdCBwPUFjKGUsNTAwKTtmb3IobGV0IHQ9cC5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3QgZT1wW3RdOygwPT09ZS5sZW5ndGh8fChkPWVbMF0pLmV2ZXJ5KCh0PT50Lng8PTApKXx8ZC5ldmVyeSgodD0+dC54Pj1hbykpfHxkLmV2ZXJ5KCh0PT50Lnk8PTApKXx8ZC5ldmVyeSgodD0+dC55Pj1hbykpKSYmcC5zcGxpY2UodCwxKTt9dmFyIGQ7bGV0IGY7aWYodSlmPWxoKHAsbyxuKTtlbHNlIHtmPVtdO2Zvcihjb25zdCB0IG9mIHApZi5wdXNoKHtwb2x5Z29uOnQsYm91bmRzOm99KTt9Y29uc3QgeT1oP3RoaXMuZWRnZVJhZGl1czowO2Zvcihjb25zdHtwb2x5Z29uOnQsYm91bmRzOmV9b2YgZil7bGV0IHI9MCxpPTA7Zm9yKGNvbnN0IGUgb2YgdCloJiYhZVswXS5lcXVhbHMoZVtlLmxlbmd0aC0xXSkmJmUucHVzaChlWzBdKSxpKz1oP2UubGVuZ3RoLTE6ZS5sZW5ndGg7Y29uc3Qgcz10aGlzLnNlZ21lbnRzLnByZXBhcmVTZWdtZW50KChoPzU6NCkqaSx0aGlzLmxheW91dFZlcnRleEFycmF5LHRoaXMuaW5kZXhBcnJheSk7aWYoaCl7Y29uc3QgZT1bXSxpPVtdO3I9cy52ZXJ0ZXhMZW5ndGg7Zm9yKGNvbnN0IHIgb2YgdCl7bGV0IGEsbztyLmxlbmd0aCYmciE9PXRbMF0mJmkucHVzaChlLmxlbmd0aC8yKSxhPXJbMV0uc3ViKHJbMF0pLl9wZXJwKCkuX3VuaXQoKTtmb3IobGV0IHQ9MTt0PHIubGVuZ3RoO3QrKyl7Y29uc3QgaT1yW3RdLGM9clt0PT09ci5sZW5ndGgtMT8xOnQrMV07bGV0e3g6aCx5OnB9PWk7aWYoeSl7bz1jLnN1YihpKS5fcGVycCgpLl91bml0KCk7Y29uc3QgdD1hLmFkZChvKS5fdW5pdCgpLGU9eSpNYXRoLm1pbig0LDEvKGEueCp0LngrYS55KnQueSkpO2grPWUqdC54LHArPWUqdC55LGE9bzt9WWModGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSxoLHAsMCwwLDEsMSwwKSxzLnZlcnRleExlbmd0aCsrLGUucHVzaChpLngsaS55KSx1JiZXYyh0aGlzLmxheW91dFZlcnRleEV4dEFycmF5LGwucHJvamVjdFRpbGVQb2ludChoLHAsbiksbC51cFZlY3RvcihuLGgscCkpO319Y29uc3QgYT14YyhlLGkpO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCs9Myl0aGlzLmluZGV4QXJyYXkuZW1wbGFjZUJhY2socithW3RdLHIrYVt0KzJdLHIrYVt0KzFdKSxzLnByaW1pdGl2ZUxlbmd0aCsrO31mb3IoY29uc3QgaSBvZiB0KXtjJiZpLmxlbmd0aCYmYy5zdGFydFJpbmcoaVswXSk7bGV0IHQsYSxvLHA9aS5sZW5ndGg+NCYmc2goaVtpLmxlbmd0aC0yXSxpWzBdLGlbMV0pLGQ9eT9yaChpW2kubGVuZ3RoLTJdLGlbMF0saVsxXSx5KTowO2E9aVsxXS5zdWIoaVswXSkuX3BlcnAoKS5fdW5pdCgpO2xldCBmPSEwO2ZvcihsZXQgbT0xLGc9MDttPGkubGVuZ3RoO20rKyl7bGV0IHg9aVttLTFdLHY9aVttXTtjb25zdCBiPWlbbT09PWkubGVuZ3RoLTE/MTptKzFdO2lmKGMmJmgmJmMuY3VycmVudFBvbHlDb3VudC50b3ArKyxpaCh2LHgsZSkpe3kmJihhPWIuc3ViKHYpLl9wZXJwKCkuX3VuaXQoKSxmPSFmKTtjb250aW51ZX1jJiZjLmFwcGVuZCh2LHgpO2NvbnN0IHc9di5zdWIoeCkuX3BlcnAoKSxfPXcueC8oTWF0aC5hYnMody54KStNYXRoLmFicyh3LnkpKSxBPXcueT4wPzE6MCxTPXguZGlzdCh2KTtpZihnK1M+MzI3NjgmJihnPTApLHkpe289Yi5zdWIodikuX3BlcnAoKS5fdW5pdCgpO2xldCB0PW5oKHgsdixiLGVoKGEsbykseSk7aXNOYU4odCkmJih0PTApO2NvbnN0IGU9di5zdWIoeCkuX3VuaXQoKTt4PXguYWRkKGUubXVsdChkKSkuX3JvdW5kKCksdj12LmFkZChlLm11bHQoLXQpKS5fcm91bmQoKSxkPXQsYT1vO31jb25zdCBrPXMudmVydGV4TGVuZ3RoLEk9aS5sZW5ndGg+NCYmc2goeCx2LGIpO2xldCBNPWFoKGcscCxmKTtpZihZYyh0aGlzLmxheW91dFZlcnRleEFycmF5LHgueCx4LnksXyxBLDAsMCxNKSxZYyh0aGlzLmxheW91dFZlcnRleEFycmF5LHgueCx4LnksXyxBLDAsMSxNKSxnKz1TLE09YWgoZyxJLCFmKSxwPUksWWModGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx2Lngsdi55LF8sQSwwLDAsTSksWWModGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx2Lngsdi55LF8sQSwwLDEsTSkscy52ZXJ0ZXhMZW5ndGgrPTQsdGhpcy5pbmRleEFycmF5LmVtcGxhY2VCYWNrKGsrMCxrKzEsaysyKSx0aGlzLmluZGV4QXJyYXkuZW1wbGFjZUJhY2soaysxLGsrMyxrKzIpLHMucHJpbWl0aXZlTGVuZ3RoKz0yLHkpe2NvbnN0IG49cisoMT09PW0/aS5sZW5ndGgtMjptLTIpLGE9MT09PW0/cjpuKzE7aWYodGhpcy5pbmRleEFycmF5LmVtcGxhY2VCYWNrKGsrMSxuLGsrMyksdGhpcy5pbmRleEFycmF5LmVtcGxhY2VCYWNrKG4sYSxrKzMpLHMucHJpbWl0aXZlTGVuZ3RoKz0yLHZvaWQgMD09PXQmJih0PWspLCFpaChiLGlbbV0sZSkpe2NvbnN0IGU9bT09PWkubGVuZ3RoLTE/dDpzLnZlcnRleExlbmd0aDt0aGlzLmluZGV4QXJyYXkuZW1wbGFjZUJhY2soaysyLGsrMyxlKSx0aGlzLmluZGV4QXJyYXkuZW1wbGFjZUJhY2soayszLGUrMSxlKSx0aGlzLmluZGV4QXJyYXkuZW1wbGFjZUJhY2soayszLGEsZSsxKSxzLnByaW1pdGl2ZUxlbmd0aCs9Mzt9Zj0hZjt9aWYodSl7Y29uc3QgdD10aGlzLmxheW91dFZlcnRleEV4dEFycmF5LGU9bC5wcm9qZWN0VGlsZVBvaW50KHgueCx4Lnksbikscj1sLnByb2plY3RUaWxlUG9pbnQodi54LHYueSxuKSxpPWwudXBWZWN0b3Iobix4LngseC55KSxzPWwudXBWZWN0b3Iobix2Lngsdi55KTtXYyh0LGUsaSksV2ModCxlLGkpLFdjKHQscixzKSxXYyh0LHIscyk7fX1oJiYocis9aS5sZW5ndGgtMSk7fX1pZihjJiZjLnBvbHlDb3VudC5sZW5ndGg+MCl7aWYoYy5ib3JkZXJzKXtjLnZlcnRleEFycmF5T2Zmc2V0PXRoaXMuY2VudHJvaWRWZXJ0ZXhBcnJheS5sZW5ndGg7Y29uc3QgdD1jLmJvcmRlcnMsZT10aGlzLmZlYXR1cmVzT25Cb3JkZXIucHVzaChjKS0xO2ZvcihsZXQgcj0wO3I8NDtyKyspdFtyXVswXSE9PU51bWJlci5NQVhfVkFMVUUmJnRoaXMuYm9yZGVyc1tyXS5wdXNoKGUpO310aGlzLmVuY29kZUNlbnRyb2lkKGMuYm9yZGVycz92b2lkIDA6Yy5jZW50cm9pZCgpLGMpO310aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5wb3B1bGF0ZVBhaW50QXJyYXlzKHRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RoLHQscixpLHMsbik7fXNvcnRCb3JkZXJzKCl7Zm9yKGxldCB0PTA7dDw0O3QrKyl0aGlzLmJvcmRlcnNbdF0uc29ydCgoKGUscik9PnRoaXMuZmVhdHVyZXNPbkJvcmRlcltlXS5ib3JkZXJzW3RdWzBdLXRoaXMuZmVhdHVyZXNPbkJvcmRlcltyXS5ib3JkZXJzW3RdWzBdKSk7fWVuY29kZUNlbnRyb2lkKHQsZSxyPSEwKXtsZXQgbixpO2lmKHQpaWYoMCE9PXQueSl7Y29uc3Qgcj1lLnNwYW4oKS5fbXVsdCh0aGlzLnRpbGVUb01ldGVyKTtuPShNYXRoLm1heCh0LngsMSk8PDMpK01hdGgubWluKDcsTWF0aC5yb3VuZChyLngvMTApKSxpPShNYXRoLm1heCh0LnksMSk8PDMpK01hdGgubWluKDcsTWF0aC5yb3VuZChyLnkvMTApKTt9ZWxzZSBuPU1hdGguY2VpbCg3Kih0LngrNDUwKSksaT0wO2Vsc2Ugbj0wLGk9K3I7bGV0IHM9cj90aGlzLmNlbnRyb2lkVmVydGV4QXJyYXkubGVuZ3RoOmUudmVydGV4QXJyYXlPZmZzZXQ7Zm9yKGNvbnN0IHQgb2YgZS5wb2x5Q291bnQpe3ImJnRoaXMuY2VudHJvaWRWZXJ0ZXhBcnJheS5yZXNpemUodGhpcy5jZW50cm9pZFZlcnRleEFycmF5Lmxlbmd0aCs0KnQuZWRnZXMrdC50b3ApO2ZvcihsZXQgZT0wO2U8dC50b3A7ZSsrKXRoaXMuY2VudHJvaWRWZXJ0ZXhBcnJheS5lbXBsYWNlKHMrKyxuLGkpO2ZvcihsZXQgZT0wO2U8Mip0LmVkZ2VzO2UrKyl0aGlzLmNlbnRyb2lkVmVydGV4QXJyYXkuZW1wbGFjZShzKyssMCxpKSx0aGlzLmNlbnRyb2lkVmVydGV4QXJyYXkuZW1wbGFjZShzKyssbixpKTt9fX1mdW5jdGlvbiBlaCh0LGUpe2NvbnN0IHI9dC5hZGQoZSkuX3VuaXQoKTtyZXR1cm4gdC54KnIueCt0Lnkqci55fWZ1bmN0aW9uIHJoKHQsZSxyLG4pe2NvbnN0IGk9ZS5zdWIodCkuX3BlcnAoKS5fdW5pdCgpLHM9ci5zdWIoZSkuX3BlcnAoKS5fdW5pdCgpO3JldHVybiBuaCh0LGUscixlaChpLHMpLG4pfWZ1bmN0aW9uIG5oKHQsZSxyLG4saSl7Y29uc3Qgcz1NYXRoLnNxcnQoMS1uKm4pO3JldHVybiBNYXRoLm1pbih0LmRpc3QoZSkvMyxlLmRpc3QocikvMyxpKnMvbil9ZnVuY3Rpb24gaWgodCxlLHIpe3JldHVybiB0Lng8clswXS54JiZlLng8clswXS54fHx0Lng+clsxXS54JiZlLng+clsxXS54fHx0Lnk8clswXS55JiZlLnk8clswXS55fHx0Lnk+clsxXS55JiZlLnk+clsxXS55fWZ1bmN0aW9uIHNoKHQsZSxyKXtpZih0Lng8MHx8dC54Pj1hb3x8ZS54PDB8fGUueD49YW98fHIueDwwfHxyLng+PWFvKXJldHVybiAhMTtjb25zdCBuPXIuc3ViKGUpLGk9bi5wZXJwKCkscz10LnN1YihlKTtyZXR1cm4gKG4ueCpzLngrbi55KnMueSkvTWF0aC5zcXJ0KChuLngqbi54K24ueSpuLnkpKihzLngqcy54K3MueSpzLnkpKT4tLjg2NiYmaS54KnMueCtpLnkqcy55PDB9ZnVuY3Rpb24gYWgodCxlLHIpe2NvbnN0IG49ZT8yfHQ6LTMmdDtyZXR1cm4gcj8xfG46LTImbn1mdW5jdGlvbiBvaCgpe2NvbnN0IHQ9TWF0aC5QSS8zMixlPU1hdGgudGFuKHQpLHI9VWw7cmV0dXJuIHIqTWF0aC5zcXJ0KDErMiplKmUpLXJ9ZnVuY3Rpb24gbGgodCxlLHIpe2NvbnN0IG49MTw8ci56LGk9S2woci54L24pLHM9S2woKHIueCsxKS9uKSxhPVhsKHIueS9uKSxvPVhsKChyLnkrMSkvbik7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLG4saT0wLHMpe2NvbnN0IGE9W107aWYoIXQubGVuZ3RofHwhcnx8IW4pcmV0dXJuIGE7Y29uc3Qgbz0odCxlKT0+e2Zvcihjb25zdCByIG9mIHQpYS5wdXNoKHtwb2x5Z29uOnIsYm91bmRzOmV9KTt9LGw9TWF0aC5jZWlsKE1hdGgubG9nMihyKSksdT1NYXRoLmNlaWwoTWF0aC5sb2cyKG4pKSxjPWwtdSxoPVtdO2ZvcihsZXQgdD0wO3Q8TWF0aC5hYnMoYyk7dCsrKWgucHVzaChjPjA/MDoxKTtmb3IobGV0IHQ9MDt0PE1hdGgubWluKGwsdSk7dCsrKWgucHVzaCgwKSxoLnB1c2goMSk7bGV0IHA9dDtpZihwPVhjKHAsZVswXS55LWksZVsxXS55K2ksMSkscD1YYyhwLGVbMF0ueC1pLGVbMV0ueCtpLDApLCFwLmxlbmd0aClyZXR1cm4gYTtjb25zdCBkPVtdO2ZvcihoLmxlbmd0aD9kLnB1c2goe3BvbHlnb25zOnAsYm91bmRzOmUsZGVwdGg6MH0pOm8ocCxlKTtkLmxlbmd0aDspe2NvbnN0IHQ9ZC5wb3AoKSxlPXQuZGVwdGgscj1oW2VdLG49dC5ib3VuZHNbMF0sYT10LmJvdW5kc1sxXSxsPTA9PT1yP24ueDpuLnksdT0wPT09cj9hLng6YS55LGM9cz9zKHIsbCx1KTouNSoobCt1KSxwPVhjKHQucG9seWdvbnMsbC1pLGMraSxyKSxmPVhjKHQucG9seWdvbnMsYy1pLHUraSxyKTtpZihwLmxlbmd0aCl7Y29uc3QgdD1bbixuZXcgeCgwPT09cj9jOmEueCwxPT09cj9jOmEueSldO2gubGVuZ3RoPmUrMT9kLnB1c2goe3BvbHlnb25zOnAsYm91bmRzOnQsZGVwdGg6ZSsxfSk6byhwLHQpO31pZihmLmxlbmd0aCl7Y29uc3QgdD1bbmV3IHgoMD09PXI/YzpuLngsMT09PXI/YzpuLnkpLGFdO2gubGVuZ3RoPmUrMT9kLnB1c2goe3BvbHlnb25zOmYsYm91bmRzOnQsZGVwdGg6ZSsxfSk6byhmLHQpO319cmV0dXJuIGF9KHQsZSxNYXRoLmNlaWwoKHMtaSkvMTEuMjUpLE1hdGguY2VpbCgoYS1vKS8xMS4yNSksMSwoKHQsZSxpKT0+e2lmKDA9PT10KXJldHVybiAuNSooZStpKTt7Y29uc3QgdD1YbCgoci55K2UvYW8pL24pO3JldHVybiAoR2woLjUqKFhsKChyLnkraS9hbykvbikrdCkpKm4tci55KSphb319KSl9SmkodGgsXCJGaWxsRXh0cnVzaW9uQnVja2V0XCIse29taXQ6W1wibGF5ZXJzXCIsXCJmZWF0dXJlc1wiXX0pLEppKFFjLFwiUGFydE1ldGFkYXRhXCIpO2NvbnN0IHVoPW5ldyBQcyh7XCJmaWxsLWV4dHJ1c2lvbi1lZGdlLXJhZGl1c1wiOm5ldyBCcyh0ZVtcImxheW91dF9maWxsLWV4dHJ1c2lvblwiXVtcImZpbGwtZXh0cnVzaW9uLWVkZ2UtcmFkaXVzXCJdKX0pO3ZhciBjaD17cGFpbnQ6bmV3IFBzKHtcImZpbGwtZXh0cnVzaW9uLW9wYWNpdHlcIjpuZXcgQnModGVbXCJwYWludF9maWxsLWV4dHJ1c2lvblwiXVtcImZpbGwtZXh0cnVzaW9uLW9wYWNpdHlcIl0pLFwiZmlsbC1leHRydXNpb24tY29sb3JcIjpuZXcgRXModGVbXCJwYWludF9maWxsLWV4dHJ1c2lvblwiXVtcImZpbGwtZXh0cnVzaW9uLWNvbG9yXCJdKSxcImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZVwiOm5ldyBCcyh0ZVtcInBhaW50X2ZpbGwtZXh0cnVzaW9uXCJdW1wiZmlsbC1leHRydXNpb24tdHJhbnNsYXRlXCJdKSxcImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZS1hbmNob3JcIjpuZXcgQnModGVbXCJwYWludF9maWxsLWV4dHJ1c2lvblwiXVtcImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZS1hbmNob3JcIl0pLFwiZmlsbC1leHRydXNpb24tcGF0dGVyblwiOm5ldyBFcyh0ZVtcInBhaW50X2ZpbGwtZXh0cnVzaW9uXCJdW1wiZmlsbC1leHRydXNpb24tcGF0dGVyblwiXSksXCJmaWxsLWV4dHJ1c2lvbi1oZWlnaHRcIjpuZXcgRXModGVbXCJwYWludF9maWxsLWV4dHJ1c2lvblwiXVtcImZpbGwtZXh0cnVzaW9uLWhlaWdodFwiXSksXCJmaWxsLWV4dHJ1c2lvbi1iYXNlXCI6bmV3IEVzKHRlW1wicGFpbnRfZmlsbC1leHRydXNpb25cIl1bXCJmaWxsLWV4dHJ1c2lvbi1iYXNlXCJdKSxcImZpbGwtZXh0cnVzaW9uLXZlcnRpY2FsLWdyYWRpZW50XCI6bmV3IEJzKHRlW1wicGFpbnRfZmlsbC1leHRydXNpb25cIl1bXCJmaWxsLWV4dHJ1c2lvbi12ZXJ0aWNhbC1ncmFkaWVudFwiXSksXCJmaWxsLWV4dHJ1c2lvbi1hbWJpZW50LW9jY2x1c2lvbi1pbnRlbnNpdHlcIjpuZXcgQnModGVbXCJwYWludF9maWxsLWV4dHJ1c2lvblwiXVtcImZpbGwtZXh0cnVzaW9uLWFtYmllbnQtb2NjbHVzaW9uLWludGVuc2l0eVwiXSksXCJmaWxsLWV4dHJ1c2lvbi1hbWJpZW50LW9jY2x1c2lvbi1yYWRpdXNcIjpuZXcgQnModGVbXCJwYWludF9maWxsLWV4dHJ1c2lvblwiXVtcImZpbGwtZXh0cnVzaW9uLWFtYmllbnQtb2NjbHVzaW9uLXJhZGl1c1wiXSksXCJmaWxsLWV4dHJ1c2lvbi1yb3VuZGVkLXJvb2ZcIjpuZXcgQnModGVbXCJwYWludF9maWxsLWV4dHJ1c2lvblwiXVtcImZpbGwtZXh0cnVzaW9uLXJvdW5kZWQtcm9vZlwiXSl9KSxsYXlvdXQ6dWh9O2Z1bmN0aW9uIGhoKHQsZSxyKXt2YXIgbj0yKk1hdGguUEkqNjM3ODEzNy8yNTYvTWF0aC5wb3coMixyKTtyZXR1cm4gW3Qqbi0yKk1hdGguUEkqNjM3ODEzNy8yLGUqbi0yKk1hdGguUEkqNjM3ODEzNy8yXX1jbGFzcyBwaHtjb25zdHJ1Y3Rvcih0LGUscil7dGhpcy56PXQsdGhpcy54PWUsdGhpcy55PXIsdGhpcy5rZXk9eWgoMCx0LHQsZSxyKTt9ZXF1YWxzKHQpe3JldHVybiB0aGlzLno9PT10LnomJnRoaXMueD09PXQueCYmdGhpcy55PT09dC55fXVybCh0LGUpe2NvbnN0IHI9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWhoKDI1Nip0LDI1NiooZT1NYXRoLnBvdygyLHIpLWUtMSksciksaT1oaCgyNTYqKHQrMSksMjU2KihlKzEpLHIpO3JldHVybiBuWzBdK1wiLFwiK25bMV0rXCIsXCIraVswXStcIixcIitpWzFdfSh0aGlzLngsdGhpcy55LHRoaXMueiksbj1mdW5jdGlvbih0LGUscil7bGV0IG4saT1cIlwiO2ZvcihsZXQgcz10O3M+MDtzLS0pbj0xPDxzLTEsaSs9KGUmbj8xOjApKyhyJm4/MjowKTtyZXR1cm4gaX0odGhpcy56LHRoaXMueCx0aGlzLnkpO3JldHVybiB0Wyh0aGlzLngrdGhpcy55KSV0Lmxlbmd0aF0ucmVwbGFjZShcIntwcmVmaXh9XCIsKHRoaXMueCUxNikudG9TdHJpbmcoMTYpKyh0aGlzLnklMTYpLnRvU3RyaW5nKDE2KSkucmVwbGFjZSgve3p9L2csU3RyaW5nKHRoaXMueikpLnJlcGxhY2UoL3t4fS9nLFN0cmluZyh0aGlzLngpKS5yZXBsYWNlKC97eX0vZyxTdHJpbmcoXCJ0bXNcIj09PWU/TWF0aC5wb3coMix0aGlzLnopLXRoaXMueS0xOnRoaXMueSkpLnJlcGxhY2UoXCJ7cXVhZGtleX1cIixuKS5yZXBsYWNlKFwie2Jib3gtZXBzZy0zODU3fVwiLHIpfXRvU3RyaW5nKCl7cmV0dXJuIGAke3RoaXMuen0vJHt0aGlzLnh9LyR7dGhpcy55fWB9fWNsYXNzIGRoe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy53cmFwPXQsdGhpcy5jYW5vbmljYWw9ZSx0aGlzLmtleT15aCh0LGUueixlLnosZS54LGUueSk7fX1jbGFzcyBmaHtjb25zdHJ1Y3Rvcih0LGUscixuLGkpe3RoaXMub3ZlcnNjYWxlZFo9dCx0aGlzLndyYXA9ZSx0aGlzLmNhbm9uaWNhbD1uZXcgcGgociwrbiwraSksdGhpcy5rZXk9MD09PWUmJnQ9PT1yP3RoaXMuY2Fub25pY2FsLmtleTp5aChlLHQscixuLGkpO31lcXVhbHModCl7cmV0dXJuIHRoaXMub3ZlcnNjYWxlZFo9PT10Lm92ZXJzY2FsZWRaJiZ0aGlzLndyYXA9PT10LndyYXAmJnRoaXMuY2Fub25pY2FsLmVxdWFscyh0LmNhbm9uaWNhbCl9c2NhbGVkVG8odCl7Y29uc3QgZT10aGlzLmNhbm9uaWNhbC56LXQ7cmV0dXJuIHQ+dGhpcy5jYW5vbmljYWwuej9uZXcgZmgodCx0aGlzLndyYXAsdGhpcy5jYW5vbmljYWwueix0aGlzLmNhbm9uaWNhbC54LHRoaXMuY2Fub25pY2FsLnkpOm5ldyBmaCh0LHRoaXMud3JhcCx0LHRoaXMuY2Fub25pY2FsLng+PmUsdGhpcy5jYW5vbmljYWwueT4+ZSl9Y2FsY3VsYXRlU2NhbGVkS2V5KHQsZT0hMCl7aWYodGhpcy5vdmVyc2NhbGVkWj09PXQmJmUpcmV0dXJuIHRoaXMua2V5O2lmKHQ+dGhpcy5jYW5vbmljYWwueilyZXR1cm4geWgodGhpcy53cmFwKitlLHQsdGhpcy5jYW5vbmljYWwueix0aGlzLmNhbm9uaWNhbC54LHRoaXMuY2Fub25pY2FsLnkpO3tjb25zdCByPXRoaXMuY2Fub25pY2FsLnotdDtyZXR1cm4geWgodGhpcy53cmFwKitlLHQsdCx0aGlzLmNhbm9uaWNhbC54Pj5yLHRoaXMuY2Fub25pY2FsLnk+PnIpfX1pc0NoaWxkT2YodCl7aWYodC53cmFwIT09dGhpcy53cmFwKXJldHVybiAhMTtjb25zdCBlPXRoaXMuY2Fub25pY2FsLnotdC5jYW5vbmljYWwuejtyZXR1cm4gMD09PXQub3ZlcnNjYWxlZFp8fHQub3ZlcnNjYWxlZFo8dGhpcy5vdmVyc2NhbGVkWiYmdC5jYW5vbmljYWwueD09PXRoaXMuY2Fub25pY2FsLng+PmUmJnQuY2Fub25pY2FsLnk9PT10aGlzLmNhbm9uaWNhbC55Pj5lfWNoaWxkcmVuKHQpe2lmKHRoaXMub3ZlcnNjYWxlZFo+PXQpcmV0dXJuIFtuZXcgZmgodGhpcy5vdmVyc2NhbGVkWisxLHRoaXMud3JhcCx0aGlzLmNhbm9uaWNhbC56LHRoaXMuY2Fub25pY2FsLngsdGhpcy5jYW5vbmljYWwueSldO2NvbnN0IGU9dGhpcy5jYW5vbmljYWwueisxLHI9Mip0aGlzLmNhbm9uaWNhbC54LG49Mip0aGlzLmNhbm9uaWNhbC55O3JldHVybiBbbmV3IGZoKGUsdGhpcy53cmFwLGUscixuKSxuZXcgZmgoZSx0aGlzLndyYXAsZSxyKzEsbiksbmV3IGZoKGUsdGhpcy53cmFwLGUscixuKzEpLG5ldyBmaChlLHRoaXMud3JhcCxlLHIrMSxuKzEpXX1pc0xlc3NUaGFuKHQpe3JldHVybiB0aGlzLndyYXA8dC53cmFwfHwhKHRoaXMud3JhcD50LndyYXApJiYodGhpcy5vdmVyc2NhbGVkWjx0Lm92ZXJzY2FsZWRafHwhKHRoaXMub3ZlcnNjYWxlZFo+dC5vdmVyc2NhbGVkWikmJih0aGlzLmNhbm9uaWNhbC54PHQuY2Fub25pY2FsLnh8fCEodGhpcy5jYW5vbmljYWwueD50LmNhbm9uaWNhbC54KSYmdGhpcy5jYW5vbmljYWwueTx0LmNhbm9uaWNhbC55KSl9d3JhcHBlZCgpe3JldHVybiBuZXcgZmgodGhpcy5vdmVyc2NhbGVkWiwwLHRoaXMuY2Fub25pY2FsLnosdGhpcy5jYW5vbmljYWwueCx0aGlzLmNhbm9uaWNhbC55KX11bndyYXBUbyh0KXtyZXR1cm4gbmV3IGZoKHRoaXMub3ZlcnNjYWxlZFosdCx0aGlzLmNhbm9uaWNhbC56LHRoaXMuY2Fub25pY2FsLngsdGhpcy5jYW5vbmljYWwueSl9b3ZlcnNjYWxlRmFjdG9yKCl7cmV0dXJuIE1hdGgucG93KDIsdGhpcy5vdmVyc2NhbGVkWi10aGlzLmNhbm9uaWNhbC56KX10b1Vud3JhcHBlZCgpe3JldHVybiBuZXcgZGgodGhpcy53cmFwLHRoaXMuY2Fub25pY2FsKX10b1N0cmluZygpe3JldHVybiBgJHt0aGlzLm92ZXJzY2FsZWRafS8ke3RoaXMuY2Fub25pY2FsLnh9LyR7dGhpcy5jYW5vbmljYWwueX1gfX1mdW5jdGlvbiB5aCh0LGUscixuLGkpe2NvbnN0IHM9MTw8TWF0aC5taW4ociwyMik7bGV0IGE9cyooaSVzKStuJXM7cmV0dXJuIHQmJnI8MjImJihhKz1zKnMqKCh0PDA/LTIqdC0xOjIqdCklKDE8PDIqKDIyLXIpKSkpLDE2KigzMiphK3IpKyhlLXIpfUppKHBoLFwiQ2Fub25pY2FsVGlsZUlEXCIpLEppKGZoLFwiT3ZlcnNjYWxlZFRpbGVJRFwiLHtvbWl0OltcInByb2pNYXRyaXhcIl19KTtjbGFzcyBtaCBleHRlbmRzIHh7Y29uc3RydWN0b3IodCxlLHIpe3N1cGVyKHQsZSksdGhpcy56PXI7fX1mdW5jdGlvbiBnaCh0LGUpe3JldHVybiB0LngqZS54K3QueSplLnl9ZnVuY3Rpb24geGgodCxlKXtpZigxPT09dC5sZW5ndGgpe2xldCByPTA7Y29uc3Qgbj1lW3IrK107bGV0IGk7Zm9yKDshaXx8bi5lcXVhbHMoaSk7KWlmKGk9ZVtyKytdLCFpKXJldHVybiAxLzA7Zm9yKDtyPGUubGVuZ3RoO3IrKyl7Y29uc3Qgcz1lW3JdLGE9dFswXSxvPWkuc3ViKG4pLGw9cy5zdWIobiksdT1hLnN1YihuKSxjPWdoKG8sbyksaD1naChvLGwpLHA9Z2gobCxsKSxkPWdoKHUsbyksZj1naCh1LGwpLHk9YypwLWgqaCxtPShwKmQtaCpmKS95LGc9KGMqZi1oKmQpL3kseD1uLnoqKDEtbS1nKStpLnoqbStzLnoqZztpZihpc0Zpbml0ZSh4KSlyZXR1cm4geH1yZXR1cm4gMS8wfXtsZXQgdD0xLzA7Zm9yKGNvbnN0IHIgb2YgZSl0PU1hdGgubWluKHQsci56KTtyZXR1cm4gdH19ZnVuY3Rpb24gdmgodCxlLHIsbixpLHMsYSxvKXtjb25zdCBsPWEqaS5nZXRFbGV2YXRpb25BdCh0LGUsITAsITApLHU9MCE9PXNbMF0sYz11PzA9PT1zWzFdP2EqKHNbMF0vNy00NTApOmEqZnVuY3Rpb24odCxlLHIpe2NvbnN0IG49TWF0aC5mbG9vcihlWzBdLzgpLGk9TWF0aC5mbG9vcihlWzFdLzgpLHM9MTAqKGVbMF0tOCpuKSxhPTEwKihlWzFdLTgqaSksbz10LmdldEVsZXZhdGlvbkF0KG4saSwhMCwhMCksbD10LmdldE1ldGVyVG9ERU0ociksdT1NYXRoLmZsb29yKC41KihzKmwtMSkpLGM9TWF0aC5mbG9vciguNSooYSpsLTEpKSxoPXQudGlsZUNvb3JkVG9QaXhlbChuLGkpLHA9Mip1KzEsZD0yKmMrMSxmPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIFt0LmdldEVsZXZhdGlvbkF0UGl4ZWwoZSxyLCEwKSx0LmdldEVsZXZhdGlvbkF0UGl4ZWwoZStpLHIsITApLHQuZ2V0RWxldmF0aW9uQXRQaXhlbChlLHIraSwhMCksdC5nZXRFbGV2YXRpb25BdFBpeGVsKGUrbixyK2ksITApXX0odCxoLngtdSxoLnktYyxwLGQpLHk9TWF0aC5hYnMoZlswXS1mWzFdKSxtPU1hdGguYWJzKGZbMl0tZlszXSksZz1NYXRoLmFicyhmWzBdLWZbMl0pK01hdGguYWJzKGZbMV0tZlszXSkseD1NYXRoLm1pbiguMjUsLjUqbCooeSttKS9wKSx2PU1hdGgubWluKC4yNSwuNSpsKmcvZCk7cmV0dXJuIG8rTWF0aC5tYXgoeCpzLHYqYSl9KGkscyxvKTpsO3JldHVybiB7YmFzZTpsKygwPT09cik/LTE6cix0b3A6dT9NYXRoLm1heChjK24sbCtyKzIpOmwrbn19Y29uc3QgYmg9UnMoW3tuYW1lOlwiYV9wb3Nfbm9ybWFsXCIsY29tcG9uZW50czoyLHR5cGU6XCJJbnQxNlwifSx7bmFtZTpcImFfZGF0YVwiLGNvbXBvbmVudHM6NCx0eXBlOlwiVWludDhcIn0se25hbWU6XCJhX2xpbmVzb2ZhclwiLGNvbXBvbmVudHM6MSx0eXBlOlwiRmxvYXQzMlwifV0sNCkse21lbWJlcnM6d2h9PWJoLF9oPVJzKFt7bmFtZTpcImFfcGFja2VkXCIsY29tcG9uZW50czo0LHR5cGU6XCJGbG9hdDMyXCJ9XSkse21lbWJlcnM6QWh9PV9oLFNoPUtjLnR5cGVzLGtoPU1hdGguY29zKE1hdGguUEkvMTgwKjM3LjUpO2NsYXNzIEloe2NvbnN0cnVjdG9yKHQpe3RoaXMuem9vbT10Lnpvb20sdGhpcy5vdmVyc2NhbGluZz10Lm92ZXJzY2FsaW5nLHRoaXMubGF5ZXJzPXQubGF5ZXJzLHRoaXMubGF5ZXJJZHM9dGhpcy5sYXllcnMubWFwKCh0PT50LmlkKSksdGhpcy5pbmRleD10LmluZGV4LHRoaXMucHJvamVjdGlvbj10LnByb2plY3Rpb24sdGhpcy5oYXNQYXR0ZXJuPSExLHRoaXMucGF0dGVybkZlYXR1cmVzPVtdLHRoaXMubGluZUNsaXBzQXJyYXk9W10sdGhpcy5ncmFkaWVudHM9e30sdGhpcy5sYXllcnMuZm9yRWFjaCgodD0+e3RoaXMuZ3JhZGllbnRzW3QuaWRdPXt9O30pKSx0aGlzLmxheW91dFZlcnRleEFycmF5PW5ldyBxcyx0aGlzLmxheW91dFZlcnRleEFycmF5Mj1uZXcgTnMsdGhpcy5pbmRleEFycmF5PW5ldyByYSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucz1uZXcgSmEodC5sYXllcnMsdC56b29tKSx0aGlzLnNlZ21lbnRzPW5ldyBzbyx0aGlzLm1heExpbmVMZW5ndGg9MCx0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJJZHM9dGhpcy5sYXllcnMuZmlsdGVyKCh0PT50LmlzU3RhdGVEZXBlbmRlbnQoKSkpLm1hcCgodD0+dC5pZCkpO31wb3B1bGF0ZSh0LGUscixuKXt0aGlzLmhhc1BhdHRlcm49a2MoXCJsaW5lXCIsdGhpcy5sYXllcnMsZSk7Y29uc3QgaT10aGlzLmxheWVyc1swXS5sYXlvdXQuZ2V0KFwibGluZS1zb3J0LWtleVwiKSxzPVtdO2Zvcihjb25zdHtmZWF0dXJlOmUsaWQ6YSxpbmRleDpvLHNvdXJjZUxheWVySW5kZXg6bH1vZiB0KXtjb25zdCB0PXRoaXMubGF5ZXJzWzBdLl9mZWF0dXJlRmlsdGVyLm5lZWRHZW9tZXRyeSx1PW91KGUsdCk7aWYoIXRoaXMubGF5ZXJzWzBdLl9mZWF0dXJlRmlsdGVyLmZpbHRlcihuZXcgd3ModGhpcy56b29tKSx1LHIpKWNvbnRpbnVlO2NvbnN0IGM9aT9pLmV2YWx1YXRlKHUse30scik6dm9pZCAwLGg9e2lkOmEscHJvcGVydGllczplLnByb3BlcnRpZXMsdHlwZTplLnR5cGUsc291cmNlTGF5ZXJJbmRleDpsLGluZGV4Om8sZ2VvbWV0cnk6dD91Lmdlb21ldHJ5OmF1KGUscixuKSxwYXR0ZXJuczp7fSxzb3J0S2V5OmN9O3MucHVzaChoKTt9aSYmcy5zb3J0KCgodCxlKT0+dC5zb3J0S2V5LWUuc29ydEtleSkpO2NvbnN0e2xpbmVBdGxhczphLGZlYXR1cmVJbmRleDpvfT1lLGw9dGhpcy5hZGRDb25zdGFudERhc2hlcyhhKTtmb3IoY29uc3QgbiBvZiBzKXtjb25zdHtnZW9tZXRyeTppLGluZGV4OnMsc291cmNlTGF5ZXJJbmRleDp1fT1uO2lmKGwmJnRoaXMuYWRkRmVhdHVyZURhc2hlcyhuLGEpLHRoaXMuaGFzUGF0dGVybil7Y29uc3QgdD1JYyhcImxpbmVcIix0aGlzLmxheWVycyxuLHRoaXMuem9vbSxlKTt0aGlzLnBhdHRlcm5GZWF0dXJlcy5wdXNoKHQpO31lbHNlIHRoaXMuYWRkRmVhdHVyZShuLGkscyxyLGEucG9zaXRpb25zLGUuYXZhaWxhYmxlSW1hZ2VzKTtvLmluc2VydCh0W3NdLmZlYXR1cmUsaSxzLHUsdGhpcy5pbmRleCk7fX1hZGRDb25zdGFudERhc2hlcyh0KXtsZXQgZT0hMTtmb3IoY29uc3QgciBvZiB0aGlzLmxheWVycyl7Y29uc3Qgbj1yLnBhaW50LmdldChcImxpbmUtZGFzaGFycmF5XCIpLnZhbHVlLGk9ci5sYXlvdXQuZ2V0KFwibGluZS1jYXBcIikudmFsdWU7aWYoXCJjb25zdGFudFwiIT09bi5raW5kfHxcImNvbnN0YW50XCIhPT1pLmtpbmQpZT0hMDtlbHNlIHtjb25zdCBlPWkudmFsdWUscj1uLnZhbHVlO2lmKCFyKWNvbnRpbnVlO3QuYWRkRGFzaChyLGUpO319cmV0dXJuIGV9YWRkRmVhdHVyZURhc2hlcyh0LGUpe2NvbnN0IHI9dGhpcy56b29tO2Zvcihjb25zdCBuIG9mIHRoaXMubGF5ZXJzKXtjb25zdCBpPW4ucGFpbnQuZ2V0KFwibGluZS1kYXNoYXJyYXlcIikudmFsdWUscz1uLmxheW91dC5nZXQoXCJsaW5lLWNhcFwiKS52YWx1ZTtpZihcImNvbnN0YW50XCI9PT1pLmtpbmQmJlwiY29uc3RhbnRcIj09PXMua2luZCljb250aW51ZTtsZXQgYSxvO2lmKFwiY29uc3RhbnRcIj09PWkua2luZCl7aWYoYT1pLnZhbHVlLCFhKWNvbnRpbnVlfWVsc2UgYT1pLmV2YWx1YXRlKHt6b29tOnJ9LHQpO289XCJjb25zdGFudFwiPT09cy5raW5kP3MudmFsdWU6cy5ldmFsdWF0ZSh7em9vbTpyfSx0KSxlLmFkZERhc2goYSxvKSx0LnBhdHRlcm5zW24uaWRdPWUuZ2V0S2V5KGEsbyk7fX11cGRhdGUodCxlLHIsbil7dGhpcy5zdGF0ZURlcGVuZGVudExheWVycy5sZW5ndGgmJnRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwZGF0ZVBhaW50QXJyYXlzKHQsZSx0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJzLHIsbik7fWFkZEZlYXR1cmVzKHQsZSxyLG4saSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5wYXR0ZXJuRmVhdHVyZXMpdGhpcy5hZGRGZWF0dXJlKHQsdC5nZW9tZXRyeSx0LmluZGV4LGUscixuKTt9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGh9dXBsb2FkUGVuZGluZygpe3JldHVybiAhdGhpcy51cGxvYWRlZHx8dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMubmVlZHNVcGxvYWR9dXBsb2FkKHQpe3RoaXMudXBsb2FkZWR8fCgwIT09dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheTIubGVuZ3RoJiYodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXIyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMubGF5b3V0VmVydGV4QXJyYXkyLEFoKSksdGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx3aCksdGhpcy5pbmRleEJ1ZmZlcj10LmNyZWF0ZUluZGV4QnVmZmVyKHRoaXMuaW5kZXhBcnJheSkpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwbG9hZCh0KSx0aGlzLnVwbG9hZGVkPSEwO31kZXN0cm95KCl7dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXImJih0aGlzLmxheW91dFZlcnRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5pbmRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZGVzdHJveSgpLHRoaXMuc2VnbWVudHMuZGVzdHJveSgpKTt9bGluZUZlYXR1cmVDbGlwcyh0KXtpZih0LnByb3BlcnRpZXMmJnQucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShcIm1hcGJveF9jbGlwX3N0YXJ0XCIpJiZ0LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoXCJtYXBib3hfY2xpcF9lbmRcIikpcmV0dXJuIHtzdGFydDordC5wcm9wZXJ0aWVzLm1hcGJveF9jbGlwX3N0YXJ0LGVuZDordC5wcm9wZXJ0aWVzLm1hcGJveF9jbGlwX2VuZH19YWRkRmVhdHVyZSh0LGUscixuLGkscyl7Y29uc3QgYT10aGlzLmxheWVyc1swXS5sYXlvdXQsbz1hLmdldChcImxpbmUtam9pblwiKS5ldmFsdWF0ZSh0LHt9KSxsPWEuZ2V0KFwibGluZS1jYXBcIikuZXZhbHVhdGUodCx7fSksdT1hLmdldChcImxpbmUtbWl0ZXItbGltaXRcIiksYz1hLmdldChcImxpbmUtcm91bmQtbGltaXRcIik7dGhpcy5saW5lQ2xpcHM9dGhpcy5saW5lRmVhdHVyZUNsaXBzKHQpO2Zvcihjb25zdCByIG9mIGUpdGhpcy5hZGRMaW5lKHIsdCxvLGwsdSxjKTt0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5wb3B1bGF0ZVBhaW50QXJyYXlzKHRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RoLHQscixpLHMsbik7fWFkZExpbmUodCxlLHIsbixpLHMpe2lmKHRoaXMuZGlzdGFuY2U9MCx0aGlzLnNjYWxlZERpc3RhbmNlPTAsdGhpcy50b3RhbERpc3RhbmNlPTAsdGhpcy5saW5lU29GYXI9MCx0aGlzLmxpbmVDbGlwcyl7dGhpcy5saW5lQ2xpcHNBcnJheS5wdXNoKHRoaXMubGluZUNsaXBzKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoLTE7ZSsrKXRoaXMudG90YWxEaXN0YW5jZSs9dFtlXS5kaXN0KHRbZSsxXSk7dGhpcy51cGRhdGVTY2FsZWREaXN0YW5jZSgpLHRoaXMubWF4TGluZUxlbmd0aD1NYXRoLm1heCh0aGlzLm1heExpbmVMZW5ndGgsdGhpcy50b3RhbERpc3RhbmNlKTt9Y29uc3QgYT1cIlBvbHlnb25cIj09PVNoW2UudHlwZV07bGV0IG89dC5sZW5ndGg7Zm9yKDtvPj0yJiZ0W28tMV0uZXF1YWxzKHRbby0yXSk7KW8tLTtsZXQgbD0wO2Zvcig7bDxvLTEmJnRbbF0uZXF1YWxzKHRbbCsxXSk7KWwrKztpZihvPChhPzM6MikpcmV0dXJuO1wiYmV2ZWxcIj09PXImJihpPTEuMDUpO2NvbnN0IHU9dGhpcy5vdmVyc2NhbGluZzw9MTY/MTUqYW8vKDUxMip0aGlzLm92ZXJzY2FsaW5nKTowLGM9dGhpcy5zZWdtZW50cy5wcmVwYXJlU2VnbWVudCgxMCpvLHRoaXMubGF5b3V0VmVydGV4QXJyYXksdGhpcy5pbmRleEFycmF5KTtsZXQgaCxwLGQsZix5O3RoaXMuZTE9dGhpcy5lMj0tMSxhJiYoaD10W28tMl0seT10W2xdLnN1YihoKS5fdW5pdCgpLl9wZXJwKCkpO2ZvcihsZXQgZT1sO2U8bztlKyspe2lmKGQ9ZT09PW8tMT9hP3RbbCsxXTp2b2lkIDA6dFtlKzFdLGQmJnRbZV0uZXF1YWxzKGQpKWNvbnRpbnVlO3kmJihmPXkpLGgmJihwPWgpLGg9dFtlXSx5PWQ/ZC5zdWIoaCkuX3VuaXQoKS5fcGVycCgpOmYsZj1mfHx5O2xldCBtPWYuYWRkKHkpOzA9PT1tLngmJjA9PT1tLnl8fG0uX3VuaXQoKTtjb25zdCBnPWYueCp5LngrZi55KnkueSx4PW0ueCp5LngrbS55KnkueSx2PTAhPT14PzEveDoxLzAsYj0yKk1hdGguc3FydCgyLTIqeCksdz14PGtoJiZwJiZkLF89Zi54KnkueS1mLnkqeS54PjA7aWYodyYmZT5sKXtjb25zdCB0PWguZGlzdChwKTtpZih0PjIqdSl7Y29uc3QgZT1oLnN1YihoLnN1YihwKS5fbXVsdCh1L3QpLl9yb3VuZCgpKTt0aGlzLnVwZGF0ZURpc3RhbmNlKHAsZSksdGhpcy5hZGRDdXJyZW50VmVydGV4KGUsZiwwLDAsYykscD1lO319Y29uc3QgQT1wJiZkO2xldCBTPUE/cjphP1wiYnV0dFwiOm47aWYoQSYmXCJyb3VuZFwiPT09UyYmKHY8cz9TPVwibWl0ZXJcIjp2PD0yJiYoUz1cImZha2Vyb3VuZFwiKSksXCJtaXRlclwiPT09UyYmdj5pJiYoUz1cImJldmVsXCIpLFwiYmV2ZWxcIj09PVMmJih2PjImJihTPVwiZmxpcGJldmVsXCIpLHY8aSYmKFM9XCJtaXRlclwiKSkscCYmdGhpcy51cGRhdGVEaXN0YW5jZShwLGgpLFwibWl0ZXJcIj09PVMpbS5fbXVsdCh2KSx0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgoaCxtLDAsMCxjKTtlbHNlIGlmKFwiZmxpcGJldmVsXCI9PT1TKXtpZih2PjEwMCltPXkubXVsdCgtMSk7ZWxzZSB7Y29uc3QgdD12KmYuYWRkKHkpLm1hZygpL2Yuc3ViKHkpLm1hZygpO20uX3BlcnAoKS5fbXVsdCh0KihfPy0xOjEpKTt9dGhpcy5hZGRDdXJyZW50VmVydGV4KGgsbSwwLDAsYyksdGhpcy5hZGRDdXJyZW50VmVydGV4KGgsbS5tdWx0KC0xKSwwLDAsYyk7fWVsc2UgaWYoXCJiZXZlbFwiPT09U3x8XCJmYWtlcm91bmRcIj09PVMpe2NvbnN0IHQ9LU1hdGguc3FydCh2KnYtMSksZT1fP3Q6MCxyPV8/MDp0O2lmKHAmJnRoaXMuYWRkQ3VycmVudFZlcnRleChoLGYsZSxyLGMpLFwiZmFrZXJvdW5kXCI9PT1TKXtjb25zdCB0PU1hdGgucm91bmQoMTgwKmIvTWF0aC5QSS8yMCk7Zm9yKGxldCBlPTE7ZTx0O2UrKyl7bGV0IHI9ZS90O2lmKC41IT09cil7Y29uc3QgdD1yLS41O3IrPXIqdCooci0xKSooKDEuMDkwNCtnKihnKigzLjU1NjQ1LTEuNDM1MTkqZyktMy4yNDUyKSkqdCp0KyguODQ4MDEzK2cqKC4yMTU2MzgqZy0xLjA2MDIxKSkpO31jb25zdCBuPXkuc3ViKGYpLl9tdWx0KHIpLl9hZGQoZikuX3VuaXQoKS5fbXVsdChfPy0xOjEpO3RoaXMuYWRkSGFsZlZlcnRleChoLG4ueCxuLnksITEsXywwLGMpO319ZCYmdGhpcy5hZGRDdXJyZW50VmVydGV4KGgseSwtZSwtcixjKTt9ZWxzZSBpZihcImJ1dHRcIj09PVMpdGhpcy5hZGRDdXJyZW50VmVydGV4KGgsbSwwLDAsYyk7ZWxzZSBpZihcInNxdWFyZVwiPT09Uyl7Y29uc3QgdD1wPzE6LTE7cHx8dGhpcy5hZGRDdXJyZW50VmVydGV4KGgsbSx0LHQsYyksdGhpcy5hZGRDdXJyZW50VmVydGV4KGgsbSwwLDAsYykscCYmdGhpcy5hZGRDdXJyZW50VmVydGV4KGgsbSx0LHQsYyk7fWVsc2UgXCJyb3VuZFwiPT09UyYmKHAmJih0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgoaCxmLDAsMCxjKSx0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgoaCxmLDEsMSxjLCEwKSksZCYmKHRoaXMuYWRkQ3VycmVudFZlcnRleChoLHksLTEsLTEsYywhMCksdGhpcy5hZGRDdXJyZW50VmVydGV4KGgseSwwLDAsYykpKTtpZih3JiZlPG8tMSl7Y29uc3QgdD1oLmRpc3QoZCk7aWYodD4yKnUpe2NvbnN0IGU9aC5hZGQoZC5zdWIoaCkuX211bHQodS90KS5fcm91bmQoKSk7dGhpcy51cGRhdGVEaXN0YW5jZShoLGUpLHRoaXMuYWRkQ3VycmVudFZlcnRleChlLHksMCwwLGMpLGg9ZTt9fX19YWRkQ3VycmVudFZlcnRleCh0LGUscixuLGkscz0hMSl7Y29uc3QgYT1lLnkqbi1lLngsbz0tZS55LWUueCpuO3RoaXMuYWRkSGFsZlZlcnRleCh0LGUueCtlLnkqcixlLnktZS54KnIscywhMSxyLGkpLHRoaXMuYWRkSGFsZlZlcnRleCh0LGEsbyxzLCEwLC1uLGkpO31hZGRIYWxmVmVydGV4KHt4OnQseTplfSxyLG4saSxzLGEsbyl7dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5lbXBsYWNlQmFjaygodDw8MSkrKGk/MTowKSwoZTw8MSkrKHM/MTowKSxNYXRoLnJvdW5kKDYzKnIpKzEyOCxNYXRoLnJvdW5kKDYzKm4pKzEyOCwxKygwPT09YT8wOmE8MD8tMToxKSwwLHRoaXMubGluZVNvRmFyKSx0aGlzLmxpbmVDbGlwcyYmdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheTIuZW1wbGFjZUJhY2sodGhpcy5zY2FsZWREaXN0YW5jZSx0aGlzLmxpbmVDbGlwc0FycmF5Lmxlbmd0aCx0aGlzLmxpbmVDbGlwcy5zdGFydCx0aGlzLmxpbmVDbGlwcy5lbmQpO2NvbnN0IGw9by52ZXJ0ZXhMZW5ndGgrKzt0aGlzLmUxPj0wJiZ0aGlzLmUyPj0wJiYodGhpcy5pbmRleEFycmF5LmVtcGxhY2VCYWNrKHRoaXMuZTEsdGhpcy5lMixsKSxvLnByaW1pdGl2ZUxlbmd0aCsrKSxzP3RoaXMuZTI9bDp0aGlzLmUxPWw7fXVwZGF0ZVNjYWxlZERpc3RhbmNlKCl7aWYodGhpcy5saW5lQ2xpcHMpe2NvbnN0IHQ9dGhpcy50b3RhbERpc3RhbmNlLyh0aGlzLmxpbmVDbGlwcy5lbmQtdGhpcy5saW5lQ2xpcHMuc3RhcnQpO3RoaXMuc2NhbGVkRGlzdGFuY2U9dGhpcy5kaXN0YW5jZS90aGlzLnRvdGFsRGlzdGFuY2UsdGhpcy5saW5lU29GYXI9dCp0aGlzLmxpbmVDbGlwcy5zdGFydCt0aGlzLmRpc3RhbmNlO31lbHNlIHRoaXMubGluZVNvRmFyPXRoaXMuZGlzdGFuY2U7fXVwZGF0ZURpc3RhbmNlKHQsZSl7dGhpcy5kaXN0YW5jZSs9dC5kaXN0KGUpLHRoaXMudXBkYXRlU2NhbGVkRGlzdGFuY2UoKTt9fUppKEloLFwiTGluZUJ1Y2tldFwiLHtvbWl0OltcImxheWVyc1wiLFwicGF0dGVybkZlYXR1cmVzXCJdfSk7Y29uc3QgTWg9bmV3IFBzKHtcImxpbmUtY2FwXCI6bmV3IEVzKHRlLmxheW91dF9saW5lW1wibGluZS1jYXBcIl0pLFwibGluZS1qb2luXCI6bmV3IEVzKHRlLmxheW91dF9saW5lW1wibGluZS1qb2luXCJdKSxcImxpbmUtbWl0ZXItbGltaXRcIjpuZXcgQnModGUubGF5b3V0X2xpbmVbXCJsaW5lLW1pdGVyLWxpbWl0XCJdKSxcImxpbmUtcm91bmQtbGltaXRcIjpuZXcgQnModGUubGF5b3V0X2xpbmVbXCJsaW5lLXJvdW5kLWxpbWl0XCJdKSxcImxpbmUtc29ydC1rZXlcIjpuZXcgRXModGUubGF5b3V0X2xpbmVbXCJsaW5lLXNvcnQta2V5XCJdKX0pO3ZhciBUaD17cGFpbnQ6bmV3IFBzKHtcImxpbmUtb3BhY2l0eVwiOm5ldyBFcyh0ZS5wYWludF9saW5lW1wibGluZS1vcGFjaXR5XCJdKSxcImxpbmUtY29sb3JcIjpuZXcgRXModGUucGFpbnRfbGluZVtcImxpbmUtY29sb3JcIl0pLFwibGluZS10cmFuc2xhdGVcIjpuZXcgQnModGUucGFpbnRfbGluZVtcImxpbmUtdHJhbnNsYXRlXCJdKSxcImxpbmUtdHJhbnNsYXRlLWFuY2hvclwiOm5ldyBCcyh0ZS5wYWludF9saW5lW1wibGluZS10cmFuc2xhdGUtYW5jaG9yXCJdKSxcImxpbmUtd2lkdGhcIjpuZXcgRXModGUucGFpbnRfbGluZVtcImxpbmUtd2lkdGhcIl0pLFwibGluZS1nYXAtd2lkdGhcIjpuZXcgRXModGUucGFpbnRfbGluZVtcImxpbmUtZ2FwLXdpZHRoXCJdKSxcImxpbmUtb2Zmc2V0XCI6bmV3IEVzKHRlLnBhaW50X2xpbmVbXCJsaW5lLW9mZnNldFwiXSksXCJsaW5lLWJsdXJcIjpuZXcgRXModGUucGFpbnRfbGluZVtcImxpbmUtYmx1clwiXSksXCJsaW5lLWRhc2hhcnJheVwiOm5ldyBFcyh0ZS5wYWludF9saW5lW1wibGluZS1kYXNoYXJyYXlcIl0pLFwibGluZS1wYXR0ZXJuXCI6bmV3IEVzKHRlLnBhaW50X2xpbmVbXCJsaW5lLXBhdHRlcm5cIl0pLFwibGluZS1ncmFkaWVudFwiOm5ldyBDcyh0ZS5wYWludF9saW5lW1wibGluZS1ncmFkaWVudFwiXSksXCJsaW5lLXRyaW0tb2Zmc2V0XCI6bmV3IEJzKHRlLnBhaW50X2xpbmVbXCJsaW5lLXRyaW0tb2Zmc2V0XCJdKX0pLGxheW91dDpNaH07Y29uc3Qgemg9bmV3IGNsYXNzIGV4dGVuZHMgRXN7cG9zc2libHlFdmFsdWF0ZSh0LGUpe3JldHVybiBlPW5ldyB3cyhNYXRoLmZsb29yKGUuem9vbSkse25vdzplLm5vdyxmYWRlRHVyYXRpb246ZS5mYWRlRHVyYXRpb24sdHJhbnNpdGlvbjplLnRyYW5zaXRpb259KSxzdXBlci5wb3NzaWJseUV2YWx1YXRlKHQsZSl9ZXZhbHVhdGUodCxlLHIsbil7cmV0dXJuIGU9Qyh7fSxlLHt6b29tOk1hdGguZmxvb3IoZS56b29tKX0pLHN1cGVyLmV2YWx1YXRlKHQsZSxyLG4pfX0oVGgucGFpbnQucHJvcGVydGllc1tcImxpbmUtd2lkdGhcIl0uc3BlY2lmaWNhdGlvbik7ZnVuY3Rpb24gQmgodCxlKXtyZXR1cm4gZT4wP2UrMip0OnR9emgudXNlSW50ZWdlclpvb209ITA7Y29uc3QgRWg9UnMoW3tuYW1lOlwiYV9wb3Nfb2Zmc2V0XCIsY29tcG9uZW50czo0LHR5cGU6XCJJbnQxNlwifSx7bmFtZTpcImFfdGV4X3NpemVcIixjb21wb25lbnRzOjQsdHlwZTpcIlVpbnQxNlwifSx7bmFtZTpcImFfcGl4ZWxvZmZzZXRcIixjb21wb25lbnRzOjQsdHlwZTpcIkludDE2XCJ9XSw0KSxDaD1Scyhbe25hbWU6XCJhX2dsb2JlX2FuY2hvclwiLGNvbXBvbmVudHM6Myx0eXBlOlwiSW50MTZcIn0se25hbWU6XCJhX2dsb2JlX25vcm1hbFwiLGNvbXBvbmVudHM6Myx0eXBlOlwiRmxvYXQzMlwifV0sNCksUGg9UnMoW3tuYW1lOlwiYV9wcm9qZWN0ZWRfcG9zXCIsY29tcG9uZW50czo0LHR5cGU6XCJGbG9hdDMyXCJ9XSw0KTtScyhbe25hbWU6XCJhX2ZhZGVfb3BhY2l0eVwiLGNvbXBvbmVudHM6MSx0eXBlOlwiVWludDMyXCJ9XSw0KTtjb25zdCBEaD1Scyhbe25hbWU6XCJhX3BsYWNlZFwiLGNvbXBvbmVudHM6Mix0eXBlOlwiVWludDhcIn0se25hbWU6XCJhX3NoaWZ0XCIsY29tcG9uZW50czoyLHR5cGU6XCJGbG9hdDMyXCJ9XSksVmg9UnMoW3tuYW1lOlwiYV9zaXplX3NjYWxlXCIsY29tcG9uZW50czoxLHR5cGU6XCJGbG9hdDMyXCJ9LHtuYW1lOlwiYV9wYWRkaW5nXCIsY29tcG9uZW50czoyLHR5cGU6XCJGbG9hdDMyXCJ9XSk7UnMoW3t0eXBlOlwiSW50MTZcIixuYW1lOlwicHJvamVjdGVkQW5jaG9yWFwifSx7dHlwZTpcIkludDE2XCIsbmFtZTpcInByb2plY3RlZEFuY2hvcllcIn0se3R5cGU6XCJJbnQxNlwiLG5hbWU6XCJwcm9qZWN0ZWRBbmNob3JaXCJ9LHt0eXBlOlwiSW50MTZcIixuYW1lOlwidGlsZUFuY2hvclhcIn0se3R5cGU6XCJJbnQxNlwiLG5hbWU6XCJ0aWxlQW5jaG9yWVwifSx7dHlwZTpcIkZsb2F0MzJcIixuYW1lOlwieDFcIn0se3R5cGU6XCJGbG9hdDMyXCIsbmFtZTpcInkxXCJ9LHt0eXBlOlwiRmxvYXQzMlwiLG5hbWU6XCJ4MlwifSx7dHlwZTpcIkZsb2F0MzJcIixuYW1lOlwieTJcIn0se3R5cGU6XCJJbnQxNlwiLG5hbWU6XCJwYWRkaW5nXCJ9LHt0eXBlOlwiVWludDMyXCIsbmFtZTpcImZlYXR1cmVJbmRleFwifSx7dHlwZTpcIlVpbnQxNlwiLG5hbWU6XCJzb3VyY2VMYXllckluZGV4XCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcImJ1Y2tldEluZGV4XCJ9XSk7Y29uc3QgTGg9UnMoW3tuYW1lOlwiYV9wb3NcIixjb21wb25lbnRzOjMsdHlwZTpcIkludDE2XCJ9LHtuYW1lOlwiYV9hbmNob3JfcG9zXCIsY29tcG9uZW50czoyLHR5cGU6XCJJbnQxNlwifSx7bmFtZTpcImFfZXh0cnVkZVwiLGNvbXBvbmVudHM6Mix0eXBlOlwiSW50MTZcIn1dLDQpLEZoPVJzKFt7bmFtZTpcImFfcG9zXzJmXCIsY29tcG9uZW50czoyLHR5cGU6XCJGbG9hdDMyXCJ9LHtuYW1lOlwiYV9yYWRpdXNcIixjb21wb25lbnRzOjEsdHlwZTpcIkZsb2F0MzJcIn0se25hbWU6XCJhX2ZsYWdzXCIsY29tcG9uZW50czoyLHR5cGU6XCJJbnQxNlwifV0sNCk7UnMoW3tuYW1lOlwidHJpYW5nbGVcIixjb21wb25lbnRzOjMsdHlwZTpcIlVpbnQxNlwifV0pLFJzKFt7dHlwZTpcIkludDE2XCIsbmFtZTpcInByb2plY3RlZEFuY2hvclhcIn0se3R5cGU6XCJJbnQxNlwiLG5hbWU6XCJwcm9qZWN0ZWRBbmNob3JZXCJ9LHt0eXBlOlwiSW50MTZcIixuYW1lOlwicHJvamVjdGVkQW5jaG9yWlwifSx7dHlwZTpcIkZsb2F0MzJcIixuYW1lOlwidGlsZUFuY2hvclhcIn0se3R5cGU6XCJGbG9hdDMyXCIsbmFtZTpcInRpbGVBbmNob3JZXCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcImdseXBoU3RhcnRJbmRleFwifSx7dHlwZTpcIlVpbnQxNlwiLG5hbWU6XCJudW1HbHlwaHNcIn0se3R5cGU6XCJVaW50MzJcIixuYW1lOlwidmVydGV4U3RhcnRJbmRleFwifSx7dHlwZTpcIlVpbnQzMlwiLG5hbWU6XCJsaW5lU3RhcnRJbmRleFwifSx7dHlwZTpcIlVpbnQzMlwiLG5hbWU6XCJsaW5lTGVuZ3RoXCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcInNlZ21lbnRcIn0se3R5cGU6XCJVaW50MTZcIixuYW1lOlwibG93ZXJTaXplXCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcInVwcGVyU2l6ZVwifSx7dHlwZTpcIkZsb2F0MzJcIixuYW1lOlwibGluZU9mZnNldFhcIn0se3R5cGU6XCJGbG9hdDMyXCIsbmFtZTpcImxpbmVPZmZzZXRZXCJ9LHt0eXBlOlwiVWludDhcIixuYW1lOlwid3JpdGluZ01vZGVcIn0se3R5cGU6XCJVaW50OFwiLG5hbWU6XCJwbGFjZWRPcmllbnRhdGlvblwifSx7dHlwZTpcIlVpbnQ4XCIsbmFtZTpcImhpZGRlblwifSx7dHlwZTpcIlVpbnQzMlwiLG5hbWU6XCJjcm9zc1RpbGVJRFwifSx7dHlwZTpcIkludDE2XCIsbmFtZTpcImFzc29jaWF0ZWRJY29uSW5kZXhcIn0se3R5cGU6XCJVaW50OFwiLG5hbWU6XCJmbGlwU3RhdGVcIn1dKSxScyhbe3R5cGU6XCJJbnQxNlwiLG5hbWU6XCJwcm9qZWN0ZWRBbmNob3JYXCJ9LHt0eXBlOlwiSW50MTZcIixuYW1lOlwicHJvamVjdGVkQW5jaG9yWVwifSx7dHlwZTpcIkludDE2XCIsbmFtZTpcInByb2plY3RlZEFuY2hvclpcIn0se3R5cGU6XCJGbG9hdDMyXCIsbmFtZTpcInRpbGVBbmNob3JYXCJ9LHt0eXBlOlwiRmxvYXQzMlwiLG5hbWU6XCJ0aWxlQW5jaG9yWVwifSx7dHlwZTpcIkludDE2XCIsbmFtZTpcInJpZ2h0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4XCJ9LHt0eXBlOlwiSW50MTZcIixuYW1lOlwiY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4XCJ9LHt0eXBlOlwiSW50MTZcIixuYW1lOlwibGVmdEp1c3RpZmllZFRleHRTeW1ib2xJbmRleFwifSx7dHlwZTpcIkludDE2XCIsbmFtZTpcInZlcnRpY2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4XCJ9LHt0eXBlOlwiSW50MTZcIixuYW1lOlwicGxhY2VkSWNvblN5bWJvbEluZGV4XCJ9LHt0eXBlOlwiSW50MTZcIixuYW1lOlwidmVydGljYWxQbGFjZWRJY29uU3ltYm9sSW5kZXhcIn0se3R5cGU6XCJVaW50MTZcIixuYW1lOlwia2V5XCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcInRleHRCb3hTdGFydEluZGV4XCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcInRleHRCb3hFbmRJbmRleFwifSx7dHlwZTpcIlVpbnQxNlwiLG5hbWU6XCJ2ZXJ0aWNhbFRleHRCb3hTdGFydEluZGV4XCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcInZlcnRpY2FsVGV4dEJveEVuZEluZGV4XCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcImljb25Cb3hTdGFydEluZGV4XCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcImljb25Cb3hFbmRJbmRleFwifSx7dHlwZTpcIlVpbnQxNlwiLG5hbWU6XCJ2ZXJ0aWNhbEljb25Cb3hTdGFydEluZGV4XCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcInZlcnRpY2FsSWNvbkJveEVuZEluZGV4XCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcImZlYXR1cmVJbmRleFwifSx7dHlwZTpcIlVpbnQxNlwiLG5hbWU6XCJudW1Ib3Jpem9udGFsR2x5cGhWZXJ0aWNlc1wifSx7dHlwZTpcIlVpbnQxNlwiLG5hbWU6XCJudW1WZXJ0aWNhbEdseXBoVmVydGljZXNcIn0se3R5cGU6XCJVaW50MTZcIixuYW1lOlwibnVtSWNvblZlcnRpY2VzXCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcIm51bVZlcnRpY2FsSWNvblZlcnRpY2VzXCJ9LHt0eXBlOlwiVWludDE2XCIsbmFtZTpcInVzZVJ1bnRpbWVDb2xsaXNpb25DaXJjbGVzXCJ9LHt0eXBlOlwiVWludDMyXCIsbmFtZTpcImNyb3NzVGlsZUlEXCJ9LHt0eXBlOlwiRmxvYXQzMlwiLGNvbXBvbmVudHM6MixuYW1lOlwidGV4dE9mZnNldFwifSx7dHlwZTpcIkZsb2F0MzJcIixuYW1lOlwiY29sbGlzaW9uQ2lyY2xlRGlhbWV0ZXJcIn1dKSxScyhbe3R5cGU6XCJGbG9hdDMyXCIsbmFtZTpcIm9mZnNldFhcIn1dKSxScyhbe3R5cGU6XCJJbnQxNlwiLG5hbWU6XCJ4XCJ9LHt0eXBlOlwiSW50MTZcIixuYW1lOlwieVwifV0pO3ZhciBSaD0yNDtjb25zdCBVaD0xMjg7ZnVuY3Rpb24gJGgodCxlKXtjb25zdHtleHByZXNzaW9uOnJ9PWU7aWYoXCJjb25zdGFudFwiPT09ci5raW5kKXJldHVybiB7a2luZDpcImNvbnN0YW50XCIsbGF5b3V0U2l6ZTpyLmV2YWx1YXRlKG5ldyB3cyh0KzEpKX07aWYoXCJzb3VyY2VcIj09PXIua2luZClyZXR1cm4ge2tpbmQ6XCJzb3VyY2VcIn07e2NvbnN0e3pvb21TdG9wczplLGludGVycG9sYXRpb25UeXBlOm59PXI7bGV0IGk9MDtmb3IoO2k8ZS5sZW5ndGgmJmVbaV08PXQ7KWkrKztpPU1hdGgubWF4KDAsaS0xKTtsZXQgcz1pO2Zvcig7czxlLmxlbmd0aCYmZVtzXTx0KzE7KXMrKztzPU1hdGgubWluKGUubGVuZ3RoLTEscyk7Y29uc3QgYT1lW2ldLG89ZVtzXTtyZXR1cm4gXCJjb21wb3NpdGVcIj09PXIua2luZD97a2luZDpcImNvbXBvc2l0ZVwiLG1pblpvb206YSxtYXhab29tOm8saW50ZXJwb2xhdGlvblR5cGU6bn06e2tpbmQ6XCJjYW1lcmFcIixtaW5ab29tOmEsbWF4Wm9vbTpvLG1pblNpemU6ci5ldmFsdWF0ZShuZXcgd3MoYSkpLG1heFNpemU6ci5ldmFsdWF0ZShuZXcgd3MobykpLGludGVycG9sYXRpb25UeXBlOm59fX1mdW5jdGlvbiBqaCh0LHt1U2l6ZTplLHVTaXplVDpyfSx7bG93ZXJTaXplOm4sdXBwZXJTaXplOml9KXtyZXR1cm4gXCJzb3VyY2VcIj09PXQua2luZD9uL1VoOlwiY29tcG9zaXRlXCI9PT10LmtpbmQ/RXIobi9VaCxpL1VoLHIpOmV9ZnVuY3Rpb24gT2godCxlKXtsZXQgcj0wLG49MDtpZihcImNvbnN0YW50XCI9PT10LmtpbmQpbj10LmxheW91dFNpemU7ZWxzZSBpZihcInNvdXJjZVwiIT09dC5raW5kKXtjb25zdHtpbnRlcnBvbGF0aW9uVHlwZTppLG1pblpvb206cyxtYXhab29tOmF9PXQsbz1pP00oUXIuaW50ZXJwb2xhdGlvbkZhY3RvcihpLGUscyxhKSwwLDEpOjA7XCJjYW1lcmFcIj09PXQua2luZD9uPUVyKHQubWluU2l6ZSx0Lm1heFNpemUsbyk6cj1vO31yZXR1cm4ge3VTaXplVDpyLHVTaXplOm59fXZhciBxaD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxTSVpFX1BBQ0tfRkFDVE9SOlVoLGV2YWx1YXRlU2l6ZUZvckZlYXR1cmU6amgsZXZhbHVhdGVTaXplRm9yWm9vbTpPaCxnZXRTaXplRGF0YTokaH0pO2Z1bmN0aW9uIE5oKHQsZSxyKXtyZXR1cm4gdC5zZWN0aW9ucy5mb3JFYWNoKCh0PT57dC50ZXh0PWZ1bmN0aW9uKHQsZSxyKXtjb25zdCBuPWUubGF5b3V0LmdldChcInRleHQtdHJhbnNmb3JtXCIpLmV2YWx1YXRlKHIse30pO3JldHVybiBcInVwcGVyY2FzZVwiPT09bj90PXQudG9Mb2NhbGVVcHBlckNhc2UoKTpcImxvd2VyY2FzZVwiPT09biYmKHQ9dC50b0xvY2FsZUxvd2VyQ2FzZSgpKSxicy5hcHBseUFyYWJpY1NoYXBpbmcmJih0PWJzLmFwcGx5QXJhYmljU2hhcGluZyh0KSksdH0odC50ZXh0LGUscik7fSkpLHR9Y29uc3QgR2g9e1wiIVwiOlwi77iVXCIsXCIjXCI6XCLvvINcIiwkOlwi77yEXCIsXCIlXCI6XCLvvIVcIixcIiZcIjpcIu+8hlwiLFwiKFwiOlwi77i1XCIsXCIpXCI6XCLvuLZcIixcIipcIjpcIu+8ilwiLFwiK1wiOlwi77yLXCIsXCIsXCI6XCLvuJBcIixcIi1cIjpcIu+4slwiLFwiLlwiOlwi44O7XCIsXCIvXCI6XCLvvI9cIixcIjpcIjpcIu+4k1wiLFwiO1wiOlwi77iUXCIsXCI8XCI6XCLvuL9cIixcIj1cIjpcIu+8nVwiLFwiPlwiOlwi77mAXCIsXCI/XCI6XCLvuJZcIixcIkBcIjpcIu+8oFwiLFwiW1wiOlwi77mHXCIsXCJcXFxcXCI6XCLvvLxcIixcIl1cIjpcIu+5iFwiLFwiXlwiOlwi77y+XCIsXzpcIu+4s1wiLFwiYFwiOlwi772AXCIsXCJ7XCI6XCLvuLdcIixcInxcIjpcIuKAlVwiLFwifVwiOlwi77i4XCIsXCJ+XCI6XCLvvZ5cIixcIsKiXCI6XCLvv6BcIixcIsKjXCI6XCLvv6FcIixcIsKlXCI6XCLvv6VcIixcIsKmXCI6XCLvv6RcIixcIsKsXCI6XCLvv6JcIixcIsKvXCI6XCLvv6NcIixcIuKAk1wiOlwi77iyXCIsXCLigJRcIjpcIu+4sVwiLFwi4oCYXCI6XCLvuYNcIixcIuKAmVwiOlwi77mEXCIsXCLigJxcIjpcIu+5gVwiLFwi4oCdXCI6XCLvuYJcIixcIuKAplwiOlwi77iZXCIsXCLigKdcIjpcIuODu1wiLFwi4oKpXCI6XCLvv6ZcIixcIuOAgVwiOlwi77iRXCIsXCLjgIJcIjpcIu+4klwiLFwi44CIXCI6XCLvuL9cIixcIuOAiVwiOlwi77mAXCIsXCLjgIpcIjpcIu+4vVwiLFwi44CLXCI6XCLvuL5cIixcIuOAjFwiOlwi77mBXCIsXCLjgI1cIjpcIu+5glwiLFwi44COXCI6XCLvuYNcIixcIuOAj1wiOlwi77mEXCIsXCLjgJBcIjpcIu+4u1wiLFwi44CRXCI6XCLvuLxcIixcIuOAlFwiOlwi77i5XCIsXCLjgJVcIjpcIu+4ulwiLFwi44CWXCI6XCLvuJdcIixcIuOAl1wiOlwi77iYXCIsXCLvvIFcIjpcIu+4lVwiLFwi77yIXCI6XCLvuLVcIixcIu+8iVwiOlwi77i2XCIsXCLvvIxcIjpcIu+4kFwiLFwi77yNXCI6XCLvuLJcIixcIu+8jlwiOlwi44O7XCIsXCLvvJpcIjpcIu+4k1wiLFwi77ybXCI6XCLvuJRcIixcIu+8nFwiOlwi77i/XCIsXCLvvJ5cIjpcIu+5gFwiLFwi77yfXCI6XCLvuJZcIixcIu+8u1wiOlwi77mHXCIsXCLvvL1cIjpcIu+5iFwiLFwi77y/XCI6XCLvuLNcIixcIu+9m1wiOlwi77i3XCIsXCLvvZxcIjpcIuKAlVwiLFwi772dXCI6XCLvuLhcIixcIu+9n1wiOlwi77i1XCIsXCLvvaBcIjpcIu+4tlwiLFwi772hXCI6XCLvuJJcIixcIu+9olwiOlwi77mBXCIsXCLvvaNcIjpcIu+5glwiLFwi4oaQXCI6XCLihpFcIixcIuKGklwiOlwi4oaTXCJ9O2Z1bmN0aW9uIFpoKHQpe3JldHVybiBcIu+4tlwiPT09dHx8XCLvuYhcIj09PXR8fFwi77i4XCI9PT10fHxcIu+5hFwiPT09dHx8XCLvuYJcIj09PXR8fFwi77i+XCI9PT10fHxcIu+4vFwiPT09dHx8XCLvuLpcIj09PXR8fFwi77iYXCI9PT10fHxcIu+5gFwiPT09dHx8XCLvuJBcIj09PXR8fFwi77iTXCI9PT10fHxcIu+4lFwiPT09dHx8XCLvvYBcIj09PXR8fFwi77+jXCI9PT10fHxcIu+4kVwiPT09dHx8XCLvuJJcIj09PXR9ZnVuY3Rpb24gS2godCl7cmV0dXJuIFwi77i1XCI9PT10fHxcIu+5h1wiPT09dHx8XCLvuLdcIj09PXR8fFwi77mDXCI9PT10fHxcIu+5gVwiPT09dHx8XCLvuL1cIj09PXR8fFwi77i7XCI9PT10fHxcIu+4uVwiPT09dHx8XCLvuJdcIj09PXR8fFwi77i/XCI9PT10fXZhciBYaD1ZaCxKaD1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBzLGEsbz04Kmktbi0xLGw9KDE8PG8pLTEsdT1sPj4xLGM9LTcsaD1yP2ktMTowLHA9cj8tMToxLGQ9dFtlK2hdO2ZvcihoKz1wLHM9ZCYoMTw8LWMpLTEsZD4+PS1jLGMrPW87Yz4wO3M9MjU2KnMrdFtlK2hdLGgrPXAsYy09OCk7Zm9yKGE9cyYoMTw8LWMpLTEscz4+PS1jLGMrPW47Yz4wO2E9MjU2KmErdFtlK2hdLGgrPXAsYy09OCk7aWYoMD09PXMpcz0xLXU7ZWxzZSB7aWYocz09PWwpcmV0dXJuIGE/TmFOOjEvMCooZD8tMToxKTthKz1NYXRoLnBvdygyLG4pLHMtPXU7fXJldHVybiAoZD8tMToxKSphKk1hdGgucG93KDIscy1uKX0sSGg9ZnVuY3Rpb24odCxlLHIsbixpLHMpe3ZhciBhLG8sbCx1PTgqcy1pLTEsYz0oMTw8dSktMSxoPWM+PjEscD0yMz09PWk/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowLGQ9bj8wOnMtMSxmPW4/MTotMSx5PWU8MHx8MD09PWUmJjEvZTwwPzE6MDtmb3IoZT1NYXRoLmFicyhlKSxpc05hTihlKXx8ZT09PTEvMD8obz1pc05hTihlKT8xOjAsYT1jKTooYT1NYXRoLmZsb29yKE1hdGgubG9nKGUpL01hdGguTE4yKSxlKihsPU1hdGgucG93KDIsLWEpKTwxJiYoYS0tLGwqPTIpLChlKz1hK2g+PTE/cC9sOnAqTWF0aC5wb3coMiwxLWgpKSpsPj0yJiYoYSsrLGwvPTIpLGEraD49Yz8obz0wLGE9Yyk6YStoPj0xPyhvPShlKmwtMSkqTWF0aC5wb3coMixpKSxhKz1oKToobz1lKk1hdGgucG93KDIsaC0xKSpNYXRoLnBvdygyLGkpLGE9MCkpO2k+PTg7dFtyK2RdPTI1NSZvLGQrPWYsby89MjU2LGktPTgpO2ZvcihhPWE8PGl8byx1Kz1pO3U+MDt0W3IrZF09MjU1JmEsZCs9ZixhLz0yNTYsdS09OCk7dFtyK2QtZl18PTEyOCp5O307XG4vKiEgaWVlZTc1NC4gQlNELTMtQ2xhdXNlIExpY2Vuc2UuIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZy9vcGVuc291cmNlPiAqL2Z1bmN0aW9uIFloKHQpe3RoaXMuYnVmPUFycmF5QnVmZmVyLmlzVmlldyYmQXJyYXlCdWZmZXIuaXNWaWV3KHQpP3Q6bmV3IFVpbnQ4QXJyYXkodHx8MCksdGhpcy5wb3M9MCx0aGlzLnR5cGU9MCx0aGlzLmxlbmd0aD10aGlzLmJ1Zi5sZW5ndGg7fVloLlZhcmludD0wLFloLkZpeGVkNjQ9MSxZaC5CeXRlcz0yLFloLkZpeGVkMzI9NTt2YXIgV2g9NDI5NDk2NzI5NixRaD0xL1doLHRwPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBUZXh0RGVjb2Rlcj9udWxsOm5ldyBUZXh0RGVjb2RlcihcInV0ZjhcIik7ZnVuY3Rpb24gZXAodCl7cmV0dXJuIHQudHlwZT09PVloLkJ5dGVzP3QucmVhZFZhcmludCgpK3QucG9zOnQucG9zKzF9ZnVuY3Rpb24gcnAodCxlLHIpe3JldHVybiByPzQyOTQ5NjcyOTYqZSsodD4+PjApOjQyOTQ5NjcyOTYqKGU+Pj4wKSsodD4+PjApfWZ1bmN0aW9uIG5wKHQsZSxyKXt2YXIgbj1lPD0xNjM4Mz8xOmU8PTIwOTcxNTE/MjplPD0yNjg0MzU0NTU/MzpNYXRoLmZsb29yKE1hdGgubG9nKGUpLyg3Kk1hdGguTE4yKSk7ci5yZWFsbG9jKG4pO2Zvcih2YXIgaT1yLnBvcy0xO2k+PXQ7aS0tKXIuYnVmW2krbl09ci5idWZbaV07fWZ1bmN0aW9uIGlwKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0ZVZhcmludCh0W3JdKTt9ZnVuY3Rpb24gc3AodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllLndyaXRlU1ZhcmludCh0W3JdKTt9ZnVuY3Rpb24gYXAodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllLndyaXRlRmxvYXQodFtyXSk7fWZ1bmN0aW9uIG9wKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0ZURvdWJsZSh0W3JdKTt9ZnVuY3Rpb24gbHAodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllLndyaXRlQm9vbGVhbih0W3JdKTt9ZnVuY3Rpb24gdXAodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllLndyaXRlRml4ZWQzMih0W3JdKTt9ZnVuY3Rpb24gY3AodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllLndyaXRlU0ZpeGVkMzIodFtyXSk7fWZ1bmN0aW9uIGhwKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0ZUZpeGVkNjQodFtyXSk7fWZ1bmN0aW9uIHBwKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0ZVNGaXhlZDY0KHRbcl0pO31mdW5jdGlvbiBkcCh0LGUpe3JldHVybiAodFtlXXx0W2UrMV08PDh8dFtlKzJdPDwxNikrMTY3NzcyMTYqdFtlKzNdfWZ1bmN0aW9uIGZwKHQsZSxyKXt0W3JdPWUsdFtyKzFdPWU+Pj44LHRbcisyXT1lPj4+MTYsdFtyKzNdPWU+Pj4yNDt9ZnVuY3Rpb24geXAodCxlKXtyZXR1cm4gKHRbZV18dFtlKzFdPDw4fHRbZSsyXTw8MTYpKyh0W2UrM108PDI0KX1ZaC5wcm90b3R5cGU9e2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmJ1Zj1udWxsO30scmVhZEZpZWxkczpmdW5jdGlvbih0LGUscil7Zm9yKHI9cnx8dGhpcy5sZW5ndGg7dGhpcy5wb3M8cjspe3ZhciBuPXRoaXMucmVhZFZhcmludCgpLGk9bj4+MyxzPXRoaXMucG9zO3RoaXMudHlwZT03Jm4sdChpLGUsdGhpcyksdGhpcy5wb3M9PT1zJiZ0aGlzLnNraXAobik7fXJldHVybiBlfSxyZWFkTWVzc2FnZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlYWRGaWVsZHModCxlLHRoaXMucmVhZFZhcmludCgpK3RoaXMucG9zKX0scmVhZEZpeGVkMzI6ZnVuY3Rpb24oKXt2YXIgdD1kcCh0aGlzLmJ1Zix0aGlzLnBvcyk7cmV0dXJuIHRoaXMucG9zKz00LHR9LHJlYWRTRml4ZWQzMjpmdW5jdGlvbigpe3ZhciB0PXlwKHRoaXMuYnVmLHRoaXMucG9zKTtyZXR1cm4gdGhpcy5wb3MrPTQsdH0scmVhZEZpeGVkNjQ6ZnVuY3Rpb24oKXt2YXIgdD1kcCh0aGlzLmJ1Zix0aGlzLnBvcykrZHAodGhpcy5idWYsdGhpcy5wb3MrNCkqV2g7cmV0dXJuIHRoaXMucG9zKz04LHR9LHJlYWRTRml4ZWQ2NDpmdW5jdGlvbigpe3ZhciB0PWRwKHRoaXMuYnVmLHRoaXMucG9zKSt5cCh0aGlzLmJ1Zix0aGlzLnBvcys0KSpXaDtyZXR1cm4gdGhpcy5wb3MrPTgsdH0scmVhZEZsb2F0OmZ1bmN0aW9uKCl7dmFyIHQ9SmgodGhpcy5idWYsdGhpcy5wb3MsITAsMjMsNCk7cmV0dXJuIHRoaXMucG9zKz00LHR9LHJlYWREb3VibGU6ZnVuY3Rpb24oKXt2YXIgdD1KaCh0aGlzLmJ1Zix0aGlzLnBvcywhMCw1Miw4KTtyZXR1cm4gdGhpcy5wb3MrPTgsdH0scmVhZFZhcmludDpmdW5jdGlvbih0KXt2YXIgZSxyLG49dGhpcy5idWY7cmV0dXJuIGU9MTI3JihyPW5bdGhpcy5wb3MrK10pLHI8MTI4P2U6KGV8PSgxMjcmKHI9blt0aGlzLnBvcysrXSkpPDw3LHI8MTI4P2U6KGV8PSgxMjcmKHI9blt0aGlzLnBvcysrXSkpPDwxNCxyPDEyOD9lOihlfD0oMTI3JihyPW5bdGhpcy5wb3MrK10pKTw8MjEscjwxMjg/ZTpmdW5jdGlvbih0LGUscil7dmFyIG4saSxzPXIuYnVmO2lmKG49KDExMiYoaT1zW3IucG9zKytdKSk+PjQsaTwxMjgpcmV0dXJuIHJwKHQsbixlKTtpZihufD0oMTI3JihpPXNbci5wb3MrK10pKTw8MyxpPDEyOClyZXR1cm4gcnAodCxuLGUpO2lmKG58PSgxMjcmKGk9c1tyLnBvcysrXSkpPDwxMCxpPDEyOClyZXR1cm4gcnAodCxuLGUpO2lmKG58PSgxMjcmKGk9c1tyLnBvcysrXSkpPDwxNyxpPDEyOClyZXR1cm4gcnAodCxuLGUpO2lmKG58PSgxMjcmKGk9c1tyLnBvcysrXSkpPDwyNCxpPDEyOClyZXR1cm4gcnAodCxuLGUpO2lmKG58PSgxJihpPXNbci5wb3MrK10pKTw8MzEsaTwxMjgpcmV0dXJuIHJwKHQsbixlKTt0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCB2YXJpbnQgbm90IG1vcmUgdGhhbiAxMCBieXRlc1wiKX0oZXw9KDE1JihyPW5bdGhpcy5wb3NdKSk8PDI4LHQsdGhpcykpKSl9LHJlYWRWYXJpbnQ2NDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRWYXJpbnQoITApfSxyZWFkU1ZhcmludDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucmVhZFZhcmludCgpO3JldHVybiB0JTI9PTE/KHQrMSkvLTI6dC8yfSxyZWFkQm9vbGVhbjpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMucmVhZFZhcmludCgpKX0scmVhZFN0cmluZzpmdW5jdGlvbigpe3ZhciB0PXRoaXMucmVhZFZhcmludCgpK3RoaXMucG9zLGU9dGhpcy5wb3M7cmV0dXJuIHRoaXMucG9zPXQsdC1lPj0xMiYmdHA/ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0cC5kZWNvZGUodC5zdWJhcnJheShlLHIpKX0odGhpcy5idWYsZSx0KTpmdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPVwiXCIsaT1lO2k8cjspe3ZhciBzLGEsbyxsPXRbaV0sdT1udWxsLGM9bD4yMzk/NDpsPjIyMz8zOmw+MTkxPzI6MTtpZihpK2M+cilicmVhazsxPT09Yz9sPDEyOCYmKHU9bCk6Mj09PWM/MTI4PT0oMTkyJihzPXRbaSsxXSkpJiYodT0oMzEmbCk8PDZ8NjMmcyk8PTEyNyYmKHU9bnVsbCk6Mz09PWM/KGE9dFtpKzJdLDEyOD09KDE5MiYocz10W2krMV0pKSYmMTI4PT0oMTkyJmEpJiYoKHU9KDE1JmwpPDwxMnwoNjMmcyk8PDZ8NjMmYSk8PTIwNDd8fHU+PTU1Mjk2JiZ1PD01NzM0MykmJih1PW51bGwpKTo0PT09YyYmKGE9dFtpKzJdLG89dFtpKzNdLDEyOD09KDE5MiYocz10W2krMV0pKSYmMTI4PT0oMTkyJmEpJiYxMjg9PSgxOTImbykmJigodT0oMTUmbCk8PDE4fCg2MyZzKTw8MTJ8KDYzJmEpPDw2fDYzJm8pPD02NTUzNXx8dT49MTExNDExMikmJih1PW51bGwpKSxudWxsPT09dT8odT02NTUzMyxjPTEpOnU+NjU1MzUmJih1LT02NTUzNixuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHU+Pj4xMCYxMDIzfDU1Mjk2KSx1PTU2MzIwfDEwMjMmdSksbis9U3RyaW5nLmZyb21DaGFyQ29kZSh1KSxpKz1jO31yZXR1cm4gbn0odGhpcy5idWYsZSx0KX0scmVhZEJ5dGVzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yZWFkVmFyaW50KCkrdGhpcy5wb3MsZT10aGlzLmJ1Zi5zdWJhcnJheSh0aGlzLnBvcyx0KTtyZXR1cm4gdGhpcy5wb3M9dCxlfSxyZWFkUGFja2VkVmFyaW50OmZ1bmN0aW9uKHQsZSl7aWYodGhpcy50eXBlIT09WWguQnl0ZXMpcmV0dXJuIHQucHVzaCh0aGlzLnJlYWRWYXJpbnQoZSkpO3ZhciByPWVwKHRoaXMpO2Zvcih0PXR8fFtdO3RoaXMucG9zPHI7KXQucHVzaCh0aGlzLnJlYWRWYXJpbnQoZSkpO3JldHVybiB0fSxyZWFkUGFja2VkU1ZhcmludDpmdW5jdGlvbih0KXtpZih0aGlzLnR5cGUhPT1ZaC5CeXRlcylyZXR1cm4gdC5wdXNoKHRoaXMucmVhZFNWYXJpbnQoKSk7dmFyIGU9ZXAodGhpcyk7Zm9yKHQ9dHx8W107dGhpcy5wb3M8ZTspdC5wdXNoKHRoaXMucmVhZFNWYXJpbnQoKSk7cmV0dXJuIHR9LHJlYWRQYWNrZWRCb29sZWFuOmZ1bmN0aW9uKHQpe2lmKHRoaXMudHlwZSE9PVloLkJ5dGVzKXJldHVybiB0LnB1c2godGhpcy5yZWFkQm9vbGVhbigpKTt2YXIgZT1lcCh0aGlzKTtmb3IodD10fHxbXTt0aGlzLnBvczxlOyl0LnB1c2godGhpcy5yZWFkQm9vbGVhbigpKTtyZXR1cm4gdH0scmVhZFBhY2tlZEZsb2F0OmZ1bmN0aW9uKHQpe2lmKHRoaXMudHlwZSE9PVloLkJ5dGVzKXJldHVybiB0LnB1c2godGhpcy5yZWFkRmxvYXQoKSk7dmFyIGU9ZXAodGhpcyk7Zm9yKHQ9dHx8W107dGhpcy5wb3M8ZTspdC5wdXNoKHRoaXMucmVhZEZsb2F0KCkpO3JldHVybiB0fSxyZWFkUGFja2VkRG91YmxlOmZ1bmN0aW9uKHQpe2lmKHRoaXMudHlwZSE9PVloLkJ5dGVzKXJldHVybiB0LnB1c2godGhpcy5yZWFkRG91YmxlKCkpO3ZhciBlPWVwKHRoaXMpO2Zvcih0PXR8fFtdO3RoaXMucG9zPGU7KXQucHVzaCh0aGlzLnJlYWREb3VibGUoKSk7cmV0dXJuIHR9LHJlYWRQYWNrZWRGaXhlZDMyOmZ1bmN0aW9uKHQpe2lmKHRoaXMudHlwZSE9PVloLkJ5dGVzKXJldHVybiB0LnB1c2godGhpcy5yZWFkRml4ZWQzMigpKTt2YXIgZT1lcCh0aGlzKTtmb3IodD10fHxbXTt0aGlzLnBvczxlOyl0LnB1c2godGhpcy5yZWFkRml4ZWQzMigpKTtyZXR1cm4gdH0scmVhZFBhY2tlZFNGaXhlZDMyOmZ1bmN0aW9uKHQpe2lmKHRoaXMudHlwZSE9PVloLkJ5dGVzKXJldHVybiB0LnB1c2godGhpcy5yZWFkU0ZpeGVkMzIoKSk7dmFyIGU9ZXAodGhpcyk7Zm9yKHQ9dHx8W107dGhpcy5wb3M8ZTspdC5wdXNoKHRoaXMucmVhZFNGaXhlZDMyKCkpO3JldHVybiB0fSxyZWFkUGFja2VkRml4ZWQ2NDpmdW5jdGlvbih0KXtpZih0aGlzLnR5cGUhPT1ZaC5CeXRlcylyZXR1cm4gdC5wdXNoKHRoaXMucmVhZEZpeGVkNjQoKSk7dmFyIGU9ZXAodGhpcyk7Zm9yKHQ9dHx8W107dGhpcy5wb3M8ZTspdC5wdXNoKHRoaXMucmVhZEZpeGVkNjQoKSk7cmV0dXJuIHR9LHJlYWRQYWNrZWRTRml4ZWQ2NDpmdW5jdGlvbih0KXtpZih0aGlzLnR5cGUhPT1ZaC5CeXRlcylyZXR1cm4gdC5wdXNoKHRoaXMucmVhZFNGaXhlZDY0KCkpO3ZhciBlPWVwKHRoaXMpO2Zvcih0PXR8fFtdO3RoaXMucG9zPGU7KXQucHVzaCh0aGlzLnJlYWRTRml4ZWQ2NCgpKTtyZXR1cm4gdH0sc2tpcDpmdW5jdGlvbih0KXt2YXIgZT03JnQ7aWYoZT09PVloLlZhcmludClmb3IoO3RoaXMuYnVmW3RoaXMucG9zKytdPjEyNzspO2Vsc2UgaWYoZT09PVloLkJ5dGVzKXRoaXMucG9zPXRoaXMucmVhZFZhcmludCgpK3RoaXMucG9zO2Vsc2UgaWYoZT09PVloLkZpeGVkMzIpdGhpcy5wb3MrPTQ7ZWxzZSB7aWYoZSE9PVloLkZpeGVkNjQpdGhyb3cgbmV3IEVycm9yKFwiVW5pbXBsZW1lbnRlZCB0eXBlOiBcIitlKTt0aGlzLnBvcys9ODt9fSx3cml0ZVRhZzpmdW5jdGlvbih0LGUpe3RoaXMud3JpdGVWYXJpbnQodDw8M3xlKTt9LHJlYWxsb2M6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMubGVuZ3RofHwxNjtlPHRoaXMucG9zK3Q7KWUqPTI7aWYoZSE9PXRoaXMubGVuZ3RoKXt2YXIgcj1uZXcgVWludDhBcnJheShlKTtyLnNldCh0aGlzLmJ1ZiksdGhpcy5idWY9cix0aGlzLmxlbmd0aD1lO319LGZpbmlzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aD10aGlzLnBvcyx0aGlzLnBvcz0wLHRoaXMuYnVmLnN1YmFycmF5KDAsdGhpcy5sZW5ndGgpfSx3cml0ZUZpeGVkMzI6ZnVuY3Rpb24odCl7dGhpcy5yZWFsbG9jKDQpLGZwKHRoaXMuYnVmLHQsdGhpcy5wb3MpLHRoaXMucG9zKz00O30sd3JpdGVTRml4ZWQzMjpmdW5jdGlvbih0KXt0aGlzLnJlYWxsb2MoNCksZnAodGhpcy5idWYsdCx0aGlzLnBvcyksdGhpcy5wb3MrPTQ7fSx3cml0ZUZpeGVkNjQ6ZnVuY3Rpb24odCl7dGhpcy5yZWFsbG9jKDgpLGZwKHRoaXMuYnVmLC0xJnQsdGhpcy5wb3MpLGZwKHRoaXMuYnVmLE1hdGguZmxvb3IodCpRaCksdGhpcy5wb3MrNCksdGhpcy5wb3MrPTg7fSx3cml0ZVNGaXhlZDY0OmZ1bmN0aW9uKHQpe3RoaXMucmVhbGxvYyg4KSxmcCh0aGlzLmJ1ZiwtMSZ0LHRoaXMucG9zKSxmcCh0aGlzLmJ1ZixNYXRoLmZsb29yKHQqUWgpLHRoaXMucG9zKzQpLHRoaXMucG9zKz04O30sd3JpdGVWYXJpbnQ6ZnVuY3Rpb24odCl7KHQ9K3R8fDApPjI2ODQzNTQ1NXx8dDwwP2Z1bmN0aW9uKHQsZSl7dmFyIHIsbjtpZih0Pj0wPyhyPXQlNDI5NDk2NzI5NnwwLG49dC80Mjk0OTY3Mjk2fDApOihuPX4oLXQvNDI5NDk2NzI5NiksNDI5NDk2NzI5NV4ocj1+KC10JTQyOTQ5NjcyOTYpKT9yPXIrMXwwOihyPTAsbj1uKzF8MCkpLHQ+PTB4MTAwMDAwMDAwMDAwMDAwMDB8fHQ8LTB4MTAwMDAwMDAwMDAwMDAwMDApdGhyb3cgbmV3IEVycm9yKFwiR2l2ZW4gdmFyaW50IGRvZXNuJ3QgZml0IGludG8gMTAgYnl0ZXNcIik7ZS5yZWFsbG9jKDEwKSxmdW5jdGlvbih0LGUscil7ci5idWZbci5wb3MrK109MTI3JnR8MTI4LHQ+Pj49NyxyLmJ1ZltyLnBvcysrXT0xMjcmdHwxMjgsdD4+Pj03LHIuYnVmW3IucG9zKytdPTEyNyZ0fDEyOCx0Pj4+PTcsci5idWZbci5wb3MrK109MTI3JnR8MTI4LHIuYnVmW3IucG9zXT0xMjcmKHQ+Pj49Nyk7fShyLDAsZSksZnVuY3Rpb24odCxlKXt2YXIgcj0oNyZ0KTw8NDtlLmJ1ZltlLnBvcysrXXw9cnwoKHQ+Pj49Myk/MTI4OjApLHQmJihlLmJ1ZltlLnBvcysrXT0xMjcmdHwoKHQ+Pj49Nyk/MTI4OjApLHQmJihlLmJ1ZltlLnBvcysrXT0xMjcmdHwoKHQ+Pj49Nyk/MTI4OjApLHQmJihlLmJ1ZltlLnBvcysrXT0xMjcmdHwoKHQ+Pj49Nyk/MTI4OjApLHQmJihlLmJ1ZltlLnBvcysrXT0xMjcmdHwoKHQ+Pj49Nyk/MTI4OjApLHQmJihlLmJ1ZltlLnBvcysrXT0xMjcmdCkpKSkpO30obixlKTt9KHQsdGhpcyk6KHRoaXMucmVhbGxvYyg0KSx0aGlzLmJ1Zlt0aGlzLnBvcysrXT0xMjcmdHwodD4xMjc/MTI4OjApLHQ8PTEyN3x8KHRoaXMuYnVmW3RoaXMucG9zKytdPTEyNyYodD4+Pj03KXwodD4xMjc/MTI4OjApLHQ8PTEyN3x8KHRoaXMuYnVmW3RoaXMucG9zKytdPTEyNyYodD4+Pj03KXwodD4xMjc/MTI4OjApLHQ8PTEyN3x8KHRoaXMuYnVmW3RoaXMucG9zKytdPXQ+Pj43JjEyNykpKSk7fSx3cml0ZVNWYXJpbnQ6ZnVuY3Rpb24odCl7dGhpcy53cml0ZVZhcmludCh0PDA/MiotdC0xOjIqdCk7fSx3cml0ZUJvb2xlYW46ZnVuY3Rpb24odCl7dGhpcy53cml0ZVZhcmludChCb29sZWFuKHQpKTt9LHdyaXRlU3RyaW5nOmZ1bmN0aW9uKHQpe3Q9U3RyaW5nKHQpLHRoaXMucmVhbGxvYyg0KnQubGVuZ3RoKSx0aGlzLnBvcysrO3ZhciBlPXRoaXMucG9zO3RoaXMucG9zPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4saSxzPTA7czxlLmxlbmd0aDtzKyspe2lmKChuPWUuY2hhckNvZGVBdChzKSk+NTUyOTUmJm48NTczNDQpe2lmKCFpKXtuPjU2MzE5fHxzKzE9PT1lLmxlbmd0aD8odFtyKytdPTIzOSx0W3IrK109MTkxLHRbcisrXT0xODkpOmk9bjtjb250aW51ZX1pZihuPDU2MzIwKXt0W3IrK109MjM5LHRbcisrXT0xOTEsdFtyKytdPTE4OSxpPW47Y29udGludWV9bj1pLTU1Mjk2PDwxMHxuLTU2MzIwfDY1NTM2LGk9bnVsbDt9ZWxzZSBpJiYodFtyKytdPTIzOSx0W3IrK109MTkxLHRbcisrXT0xODksaT1udWxsKTtuPDEyOD90W3IrK109bjoobjwyMDQ4P3RbcisrXT1uPj42fDE5Mjoobjw2NTUzNj90W3IrK109bj4+MTJ8MjI0Oih0W3IrK109bj4+MTh8MjQwLHRbcisrXT1uPj4xMiY2M3wxMjgpLHRbcisrXT1uPj42JjYzfDEyOCksdFtyKytdPTYzJm58MTI4KTt9cmV0dXJuIHJ9KHRoaXMuYnVmLHQsdGhpcy5wb3MpO3ZhciByPXRoaXMucG9zLWU7cj49MTI4JiZucChlLHIsdGhpcyksdGhpcy5wb3M9ZS0xLHRoaXMud3JpdGVWYXJpbnQociksdGhpcy5wb3MrPXI7fSx3cml0ZUZsb2F0OmZ1bmN0aW9uKHQpe3RoaXMucmVhbGxvYyg0KSxIaCh0aGlzLmJ1Zix0LHRoaXMucG9zLCEwLDIzLDQpLHRoaXMucG9zKz00O30sd3JpdGVEb3VibGU6ZnVuY3Rpb24odCl7dGhpcy5yZWFsbG9jKDgpLEhoKHRoaXMuYnVmLHQsdGhpcy5wb3MsITAsNTIsOCksdGhpcy5wb3MrPTg7fSx3cml0ZUJ5dGVzOmZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoO3RoaXMud3JpdGVWYXJpbnQoZSksdGhpcy5yZWFsbG9jKGUpO2Zvcih2YXIgcj0wO3I8ZTtyKyspdGhpcy5idWZbdGhpcy5wb3MrK109dFtyXTt9LHdyaXRlUmF3TWVzc2FnZTpmdW5jdGlvbih0LGUpe3RoaXMucG9zKys7dmFyIHI9dGhpcy5wb3M7dChlLHRoaXMpO3ZhciBuPXRoaXMucG9zLXI7bj49MTI4JiZucChyLG4sdGhpcyksdGhpcy5wb3M9ci0xLHRoaXMud3JpdGVWYXJpbnQobiksdGhpcy5wb3MrPW47fSx3cml0ZU1lc3NhZ2U6ZnVuY3Rpb24odCxlLHIpe3RoaXMud3JpdGVUYWcodCxZaC5CeXRlcyksdGhpcy53cml0ZVJhd01lc3NhZ2UoZSxyKTt9LHdyaXRlUGFja2VkVmFyaW50OmZ1bmN0aW9uKHQsZSl7ZS5sZW5ndGgmJnRoaXMud3JpdGVNZXNzYWdlKHQsaXAsZSk7fSx3cml0ZVBhY2tlZFNWYXJpbnQ6ZnVuY3Rpb24odCxlKXtlLmxlbmd0aCYmdGhpcy53cml0ZU1lc3NhZ2UodCxzcCxlKTt9LHdyaXRlUGFja2VkQm9vbGVhbjpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0aGlzLndyaXRlTWVzc2FnZSh0LGxwLGUpO30sd3JpdGVQYWNrZWRGbG9hdDpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0aGlzLndyaXRlTWVzc2FnZSh0LGFwLGUpO30sd3JpdGVQYWNrZWREb3VibGU6ZnVuY3Rpb24odCxlKXtlLmxlbmd0aCYmdGhpcy53cml0ZU1lc3NhZ2UodCxvcCxlKTt9LHdyaXRlUGFja2VkRml4ZWQzMjpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0aGlzLndyaXRlTWVzc2FnZSh0LHVwLGUpO30sd3JpdGVQYWNrZWRTRml4ZWQzMjpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0aGlzLndyaXRlTWVzc2FnZSh0LGNwLGUpO30sd3JpdGVQYWNrZWRGaXhlZDY0OmZ1bmN0aW9uKHQsZSl7ZS5sZW5ndGgmJnRoaXMud3JpdGVNZXNzYWdlKHQsaHAsZSk7fSx3cml0ZVBhY2tlZFNGaXhlZDY0OmZ1bmN0aW9uKHQsZSl7ZS5sZW5ndGgmJnRoaXMud3JpdGVNZXNzYWdlKHQscHAsZSk7fSx3cml0ZUJ5dGVzRmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVGFnKHQsWWguQnl0ZXMpLHRoaXMud3JpdGVCeXRlcyhlKTt9LHdyaXRlRml4ZWQzMkZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53cml0ZVRhZyh0LFloLkZpeGVkMzIpLHRoaXMud3JpdGVGaXhlZDMyKGUpO30sd3JpdGVTRml4ZWQzMkZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53cml0ZVRhZyh0LFloLkZpeGVkMzIpLHRoaXMud3JpdGVTRml4ZWQzMihlKTt9LHdyaXRlRml4ZWQ2NEZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53cml0ZVRhZyh0LFloLkZpeGVkNjQpLHRoaXMud3JpdGVGaXhlZDY0KGUpO30sd3JpdGVTRml4ZWQ2NEZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53cml0ZVRhZyh0LFloLkZpeGVkNjQpLHRoaXMud3JpdGVTRml4ZWQ2NChlKTt9LHdyaXRlVmFyaW50RmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVGFnKHQsWWguVmFyaW50KSx0aGlzLndyaXRlVmFyaW50KGUpO30sd3JpdGVTVmFyaW50RmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVGFnKHQsWWguVmFyaW50KSx0aGlzLndyaXRlU1ZhcmludChlKTt9LHdyaXRlU3RyaW5nRmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVGFnKHQsWWguQnl0ZXMpLHRoaXMud3JpdGVTdHJpbmcoZSk7fSx3cml0ZUZsb2F0RmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVGFnKHQsWWguRml4ZWQzMiksdGhpcy53cml0ZUZsb2F0KGUpO30sd3JpdGVEb3VibGVGaWVsZDpmdW5jdGlvbih0LGUpe3RoaXMud3JpdGVUYWcodCxZaC5GaXhlZDY0KSx0aGlzLndyaXRlRG91YmxlKGUpO30sd3JpdGVCb29sZWFuRmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVmFyaW50RmllbGQodCxCb29sZWFuKGUpKTt9fTt2YXIgbXA9cChYaCk7Y29uc3QgZ3A9MztmdW5jdGlvbiB4cCh0LGUscil7ZS5nbHlwaHM9W10sMT09PXQmJnIucmVhZE1lc3NhZ2UodnAsZSk7fWZ1bmN0aW9uIHZwKHQsZSxyKXtpZigzPT09dCl7Y29uc3R7aWQ6dCxiaXRtYXA6bix3aWR0aDppLGhlaWdodDpzLGxlZnQ6YSx0b3A6byxhZHZhbmNlOmx9PXIucmVhZE1lc3NhZ2UoYnAse30pO2UuZ2x5cGhzLnB1c2goe2lkOnQsYml0bWFwOm5ldyBSdSh7d2lkdGg6aSsyKmdwLGhlaWdodDpzKzIqZ3B9LG4pLG1ldHJpY3M6e3dpZHRoOmksaGVpZ2h0OnMsbGVmdDphLHRvcDpvLGFkdmFuY2U6bH19KTt9ZWxzZSA0PT09dD9lLmFzY2VuZGVyPXIucmVhZFNWYXJpbnQoKTo1PT09dCYmKGUuZGVzY2VuZGVyPXIucmVhZFNWYXJpbnQoKSk7fWZ1bmN0aW9uIGJwKHQsZSxyKXsxPT09dD9lLmlkPXIucmVhZFZhcmludCgpOjI9PT10P2UuYml0bWFwPXIucmVhZEJ5dGVzKCk6Mz09PXQ/ZS53aWR0aD1yLnJlYWRWYXJpbnQoKTo0PT09dD9lLmhlaWdodD1yLnJlYWRWYXJpbnQoKTo1PT09dD9lLmxlZnQ9ci5yZWFkU1ZhcmludCgpOjY9PT10P2UudG9wPXIucmVhZFNWYXJpbnQoKTo3PT09dCYmKGUuYWR2YW5jZT1yLnJlYWRWYXJpbnQoKSk7fWNvbnN0IHdwPWdwO2Z1bmN0aW9uIF9wKHQpe2xldCBlPTAscj0wO2Zvcihjb25zdCBuIG9mIHQpZSs9bi53Km4uaCxyPU1hdGgubWF4KHIsbi53KTt0LnNvcnQoKCh0LGUpPT5lLmgtdC5oKSk7Y29uc3Qgbj1be3g6MCx5OjAsdzpNYXRoLm1heChNYXRoLmNlaWwoTWF0aC5zcXJ0KGUvLjk1KSksciksaDoxLzB9XTtsZXQgaT0wLHM9MDtmb3IoY29uc3QgZSBvZiB0KWZvcihsZXQgdD1uLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCByPW5bdF07aWYoIShlLnc+ci53fHxlLmg+ci5oKSl7aWYoZS54PXIueCxlLnk9ci55LHM9TWF0aC5tYXgocyxlLnkrZS5oKSxpPU1hdGgubWF4KGksZS54K2UudyksZS53PT09ci53JiZlLmg9PT1yLmgpe2NvbnN0IGU9bi5wb3AoKTt0PG4ubGVuZ3RoJiYoblt0XT1lKTt9ZWxzZSBlLmg9PT1yLmg/KHIueCs9ZS53LHIudy09ZS53KTplLnc9PT1yLnc/KHIueSs9ZS5oLHIuaC09ZS5oKToobi5wdXNoKHt4OnIueCtlLncseTpyLnksdzpyLnctZS53LGg6ZS5ofSksci55Kz1lLmgsci5oLT1lLmgpO2JyZWFrfX1yZXR1cm4ge3c6aSxoOnMsZmlsbDplLyhpKnMpfHwwfX1jb25zdCBBcD0xO2NsYXNzIFNwe2NvbnN0cnVjdG9yKHQse3BpeGVsUmF0aW86ZSx2ZXJzaW9uOnIsc3RyZXRjaFg6bixzdHJldGNoWTppLGNvbnRlbnQ6c30pe3RoaXMucGFkZGVkUmVjdD10LHRoaXMucGl4ZWxSYXRpbz1lLHRoaXMuc3RyZXRjaFg9bix0aGlzLnN0cmV0Y2hZPWksdGhpcy5jb250ZW50PXMsdGhpcy52ZXJzaW9uPXI7fWdldCB0bCgpe3JldHVybiBbdGhpcy5wYWRkZWRSZWN0LngrQXAsdGhpcy5wYWRkZWRSZWN0LnkrQXBdfWdldCBicigpe3JldHVybiBbdGhpcy5wYWRkZWRSZWN0LngrdGhpcy5wYWRkZWRSZWN0LnctQXAsdGhpcy5wYWRkZWRSZWN0LnkrdGhpcy5wYWRkZWRSZWN0LmgtQXBdfWdldCBkaXNwbGF5U2l6ZSgpe3JldHVybiBbKHRoaXMucGFkZGVkUmVjdC53LTIqQXApL3RoaXMucGl4ZWxSYXRpbywodGhpcy5wYWRkZWRSZWN0LmgtMipBcCkvdGhpcy5waXhlbFJhdGlvXX19Y2xhc3Mga3B7Y29uc3RydWN0b3IodCxlKXtjb25zdCByPXt9LG49e307dGhpcy5oYXZlUmVuZGVyQ2FsbGJhY2tzPVtdO2NvbnN0IGk9W107dGhpcy5hZGRJbWFnZXModCxyLGkpLHRoaXMuYWRkSW1hZ2VzKGUsbixpKTtjb25zdHt3OnMsaDphfT1fcChpKSxvPW5ldyBVdSh7d2lkdGg6c3x8MSxoZWlnaHQ6YXx8MX0pO2Zvcihjb25zdCBlIGluIHQpe2NvbnN0IG49dFtlXSxpPXJbZV0ucGFkZGVkUmVjdDtVdS5jb3B5KG4uZGF0YSxvLHt4OjAseTowfSx7eDppLngrQXAseTppLnkrQXB9LG4uZGF0YSk7fWZvcihjb25zdCB0IGluIGUpe2NvbnN0IHI9ZVt0XSxpPW5bdF0ucGFkZGVkUmVjdCxzPWkueCtBcCxhPWkueStBcCxsPXIuZGF0YS53aWR0aCx1PXIuZGF0YS5oZWlnaHQ7VXUuY29weShyLmRhdGEsbyx7eDowLHk6MH0se3g6cyx5OmF9LHIuZGF0YSksVXUuY29weShyLmRhdGEsbyx7eDowLHk6dS0xfSx7eDpzLHk6YS0xfSx7d2lkdGg6bCxoZWlnaHQ6MX0pLFV1LmNvcHkoci5kYXRhLG8se3g6MCx5OjB9LHt4OnMseTphK3V9LHt3aWR0aDpsLGhlaWdodDoxfSksVXUuY29weShyLmRhdGEsbyx7eDpsLTEseTowfSx7eDpzLTEseTphfSx7d2lkdGg6MSxoZWlnaHQ6dX0pLFV1LmNvcHkoci5kYXRhLG8se3g6MCx5OjB9LHt4OnMrbCx5OmF9LHt3aWR0aDoxLGhlaWdodDp1fSk7fXRoaXMuaW1hZ2U9byx0aGlzLmljb25Qb3NpdGlvbnM9cix0aGlzLnBhdHRlcm5Qb3NpdGlvbnM9bjt9YWRkSW1hZ2VzKHQsZSxyKXtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBpPXRbbl0scz17eDowLHk6MCx3OmkuZGF0YS53aWR0aCsyKkFwLGg6aS5kYXRhLmhlaWdodCsyKkFwfTtyLnB1c2gocyksZVtuXT1uZXcgU3AocyxpKSxpLmhhc1JlbmRlckNhbGxiYWNrJiZ0aGlzLmhhdmVSZW5kZXJDYWxsYmFja3MucHVzaChuKTt9fXBhdGNoVXBkYXRlZEltYWdlcyh0LGUpe3RoaXMuaGF2ZVJlbmRlckNhbGxiYWNrcz10aGlzLmhhdmVSZW5kZXJDYWxsYmFja3MuZmlsdGVyKChlPT50Lmhhc0ltYWdlKGUpKSksdC5kaXNwYXRjaFJlbmRlckNhbGxiYWNrcyh0aGlzLmhhdmVSZW5kZXJDYWxsYmFja3MpO2Zvcihjb25zdCByIGluIHQudXBkYXRlZEltYWdlcyl0aGlzLnBhdGNoVXBkYXRlZEltYWdlKHRoaXMuaWNvblBvc2l0aW9uc1tyXSx0LmdldEltYWdlKHIpLGUpLHRoaXMucGF0Y2hVcGRhdGVkSW1hZ2UodGhpcy5wYXR0ZXJuUG9zaXRpb25zW3JdLHQuZ2V0SW1hZ2UociksZSk7fXBhdGNoVXBkYXRlZEltYWdlKHQsZSxyKXtpZighdHx8IWUpcmV0dXJuO2lmKHQudmVyc2lvbj09PWUudmVyc2lvbilyZXR1cm47dC52ZXJzaW9uPWUudmVyc2lvbjtjb25zdFtuLGldPXQudGw7ci51cGRhdGUoZS5kYXRhLHZvaWQgMCx7eDpuLHk6aX0pO319SmkoU3AsXCJJbWFnZVBvc2l0aW9uXCIpLEppKGtwLFwiSW1hZ2VBdGxhc1wiKTtjb25zdCBJcD17aG9yaXpvbnRhbDoxLHZlcnRpY2FsOjIsaG9yaXpvbnRhbE9ubHk6M30sTXA9LTE3O2NsYXNzIFRwe2NvbnN0cnVjdG9yKCl7dGhpcy5zY2FsZT0xLHRoaXMuZm9udFN0YWNrPVwiXCIsdGhpcy5pbWFnZU5hbWU9bnVsbDt9c3RhdGljIGZvclRleHQodCxlKXtjb25zdCByPW5ldyBUcDtyZXR1cm4gci5zY2FsZT10fHwxLHIuZm9udFN0YWNrPWUscn1zdGF0aWMgZm9ySW1hZ2UodCl7Y29uc3QgZT1uZXcgVHA7cmV0dXJuIGUuaW1hZ2VOYW1lPXQsZX19Y2xhc3MgenB7Y29uc3RydWN0b3IoKXt0aGlzLnRleHQ9XCJcIix0aGlzLnNlY3Rpb25JbmRleD1bXSx0aGlzLnNlY3Rpb25zPVtdLHRoaXMuaW1hZ2VTZWN0aW9uSUQ9bnVsbDt9c3RhdGljIGZyb21GZWF0dXJlKHQsZSl7Y29uc3Qgcj1uZXcgenA7Zm9yKGxldCBuPTA7bjx0LnNlY3Rpb25zLmxlbmd0aDtuKyspe2NvbnN0IGk9dC5zZWN0aW9uc1tuXTtpLmltYWdlP3IuYWRkSW1hZ2VTZWN0aW9uKGkpOnIuYWRkVGV4dFNlY3Rpb24oaSxlKTt9cmV0dXJuIHJ9bGVuZ3RoKCl7cmV0dXJuIHRoaXMudGV4dC5sZW5ndGh9Z2V0U2VjdGlvbih0KXtyZXR1cm4gdGhpcy5zZWN0aW9uc1t0aGlzLnNlY3Rpb25JbmRleFt0XV19Z2V0U2VjdGlvbnMoKXtyZXR1cm4gdGhpcy5zZWN0aW9uc31nZXRTZWN0aW9uSW5kZXgodCl7cmV0dXJuIHRoaXMuc2VjdGlvbkluZGV4W3RdfWdldENoYXJDb2RlKHQpe3JldHVybiB0aGlzLnRleHQuY2hhckNvZGVBdCh0KX12ZXJ0aWNhbGl6ZVB1bmN0dWF0aW9uKHQpe3RoaXMudGV4dD1mdW5jdGlvbih0LGUpe2xldCByPVwiXCI7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IGk9dC5jaGFyQ29kZUF0KG4rMSl8fG51bGwscz10LmNoYXJDb2RlQXQobi0xKXx8bnVsbDtyKz0hZSYmKGkmJnNzKGkpJiYhR2hbdFtuKzFdXXx8cyYmc3MocykmJiFHaFt0W24tMV1dKXx8IUdoW3Rbbl1dP3Rbbl06R2hbdFtuXV07fXJldHVybiByfSh0aGlzLnRleHQsdCk7fXRyaW0oKXtsZXQgdD0wO2ZvcihsZXQgZT0wO2U8dGhpcy50ZXh0Lmxlbmd0aCYmRXBbdGhpcy50ZXh0LmNoYXJDb2RlQXQoZSldO2UrKyl0Kys7bGV0IGU9dGhpcy50ZXh0Lmxlbmd0aDtmb3IobGV0IHI9dGhpcy50ZXh0Lmxlbmd0aC0xO3I+PTAmJnI+PXQmJkVwW3RoaXMudGV4dC5jaGFyQ29kZUF0KHIpXTtyLS0pZS0tO3RoaXMudGV4dD10aGlzLnRleHQuc3Vic3RyaW5nKHQsZSksdGhpcy5zZWN0aW9uSW5kZXg9dGhpcy5zZWN0aW9uSW5kZXguc2xpY2UodCxlKTt9c3Vic3RyaW5nKHQsZSl7Y29uc3Qgcj1uZXcgenA7cmV0dXJuIHIudGV4dD10aGlzLnRleHQuc3Vic3RyaW5nKHQsZSksci5zZWN0aW9uSW5kZXg9dGhpcy5zZWN0aW9uSW5kZXguc2xpY2UodCxlKSxyLnNlY3Rpb25zPXRoaXMuc2VjdGlvbnMscn10b1N0cmluZygpe3JldHVybiB0aGlzLnRleHR9Z2V0TWF4U2NhbGUoKXtyZXR1cm4gdGhpcy5zZWN0aW9uSW5kZXgucmVkdWNlKCgodCxlKT0+TWF0aC5tYXgodCx0aGlzLnNlY3Rpb25zW2VdLnNjYWxlKSksMCl9YWRkVGV4dFNlY3Rpb24odCxlKXt0aGlzLnRleHQrPXQudGV4dCx0aGlzLnNlY3Rpb25zLnB1c2goVHAuZm9yVGV4dCh0LnNjYWxlLHQuZm9udFN0YWNrfHxlKSk7Y29uc3Qgcj10aGlzLnNlY3Rpb25zLmxlbmd0aC0xO2ZvcihsZXQgZT0wO2U8dC50ZXh0Lmxlbmd0aDsrK2UpdGhpcy5zZWN0aW9uSW5kZXgucHVzaChyKTt9YWRkSW1hZ2VTZWN0aW9uKHQpe2NvbnN0IGU9dC5pbWFnZT90LmltYWdlLm5hbWU6XCJcIjtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHZvaWQgTihcIkNhbid0IGFkZCBGb3JtYXR0ZWRTZWN0aW9uIHdpdGggYW4gZW1wdHkgaW1hZ2UuXCIpO2NvbnN0IHI9dGhpcy5nZXROZXh0SW1hZ2VTZWN0aW9uQ2hhckNvZGUoKTtyPyh0aGlzLnRleHQrPVN0cmluZy5mcm9tQ2hhckNvZGUociksdGhpcy5zZWN0aW9ucy5wdXNoKFRwLmZvckltYWdlKGUpKSx0aGlzLnNlY3Rpb25JbmRleC5wdXNoKHRoaXMuc2VjdGlvbnMubGVuZ3RoLTEpKTpOKFwiUmVhY2hlZCBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgNjQwMVwiKTt9Z2V0TmV4dEltYWdlU2VjdGlvbkNoYXJDb2RlKCl7cmV0dXJuIHRoaXMuaW1hZ2VTZWN0aW9uSUQ/dGhpcy5pbWFnZVNlY3Rpb25JRD49NjM3NDM/bnVsbDorK3RoaXMuaW1hZ2VTZWN0aW9uSUQ6KHRoaXMuaW1hZ2VTZWN0aW9uSUQ9NTczNDQsdGhpcy5pbWFnZVNlY3Rpb25JRCl9fWZ1bmN0aW9uIEJwKHQsZSxyLG4saSxzLGEsbyxsLHUsYyxoLHAsZCxmKXtjb25zdCB5PXpwLmZyb21GZWF0dXJlKHQsaSk7aD09PUlwLnZlcnRpY2FsJiZ5LnZlcnRpY2FsaXplUHVuY3R1YXRpb24ocCk7bGV0IG09W107Y29uc3QgZz1mdW5jdGlvbih0LGUscixuLGkscyl7aWYoIXQpcmV0dXJuIFtdO2NvbnN0IGE9W10sbz1mdW5jdGlvbih0LGUscixuLGkscyl7bGV0IGE9MDtmb3IobGV0IHI9MDtyPHQubGVuZ3RoKCk7cisrKXtjb25zdCBvPXQuZ2V0U2VjdGlvbihyKTthKz1QcCh0LmdldENoYXJDb2RlKHIpLG8sbixpLGUscyk7fXJldHVybiBhL01hdGgubWF4KDEsTWF0aC5jZWlsKGEvcikpfSh0LGUscixuLGkscyksbD10LnRleHQuaW5kZXhPZihcIuKAi1wiKT49MDtsZXQgdT0wO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGgoKTtyKyspe2NvbnN0IGg9dC5nZXRTZWN0aW9uKHIpLHA9dC5nZXRDaGFyQ29kZShyKTtpZihFcFtwXXx8KHUrPVBwKHAsaCxuLGksZSxzKSkscjx0Lmxlbmd0aCgpLTEpe2NvbnN0IGU9ISgoYz1wKTwxMTkwNHx8ISh0c1tcIkJvcG9tb2ZvIEV4dGVuZGVkXCJdKGMpfHx0cy5Cb3BvbW9mbyhjKXx8dHNbXCJDSksgQ29tcGF0aWJpbGl0eSBGb3Jtc1wiXShjKXx8dHNbXCJDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzXCJdKGMpfHx0c1tcIkNKSyBDb21wYXRpYmlsaXR5XCJdKGMpfHx0c1tcIkNKSyBSYWRpY2FscyBTdXBwbGVtZW50XCJdKGMpfHx0c1tcIkNKSyBTdHJva2VzXCJdKGMpfHx0c1tcIkNKSyBTeW1ib2xzIGFuZCBQdW5jdHVhdGlvblwiXShjKXx8dHNbXCJDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBBXCJdKGMpfHx0c1tcIkNKSyBVbmlmaWVkIElkZW9ncmFwaHNcIl0oYyl8fHRzW1wiRW5jbG9zZWQgQ0pLIExldHRlcnMgYW5kIE1vbnRoc1wiXShjKXx8dHNbXCJIYWxmd2lkdGggYW5kIEZ1bGx3aWR0aCBGb3Jtc1wiXShjKXx8dHMuSGlyYWdhbmEoYyl8fHRzW1wiSWRlb2dyYXBoaWMgRGVzY3JpcHRpb24gQ2hhcmFjdGVyc1wiXShjKXx8dHNbXCJLYW5neGkgUmFkaWNhbHNcIl0oYyl8fHRzW1wiS2F0YWthbmEgUGhvbmV0aWMgRXh0ZW5zaW9uc1wiXShjKXx8dHMuS2F0YWthbmEoYyl8fHRzW1wiVmVydGljYWwgRm9ybXNcIl0oYyl8fHRzW1wiWWkgUmFkaWNhbHNcIl0oYyl8fHRzW1wiWWkgU3lsbGFibGVzXCJdKGMpKSk7KENwW3BdfHxlfHxoLmltYWdlTmFtZSkmJmEucHVzaChMcChyKzEsdSxvLGEsVnAocCx0LmdldENoYXJDb2RlKHIrMSksZSYmbCksITEpKTt9fXZhciBjO3JldHVybiBGcChMcCh0Lmxlbmd0aCgpLHUsbyxhLDAsITApKX0oeSx1LHMsZSxuLGQpLHtwcm9jZXNzQmlkaXJlY3Rpb25hbFRleHQ6eCxwcm9jZXNzU3R5bGVkQmlkaXJlY3Rpb25hbFRleHQ6dn09YnM7aWYoeCYmMT09PXkuc2VjdGlvbnMubGVuZ3RoKXtjb25zdCB0PXgoeS50b1N0cmluZygpLGcpO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9bmV3IHpwO3QudGV4dD1lLHQuc2VjdGlvbnM9eS5zZWN0aW9ucztmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl0LnNlY3Rpb25JbmRleC5wdXNoKDApO20ucHVzaCh0KTt9fWVsc2UgaWYodil7Y29uc3QgdD12KHkudGV4dCx5LnNlY3Rpb25JbmRleCxnKTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PW5ldyB6cDt0LnRleHQ9ZVswXSx0LnNlY3Rpb25JbmRleD1lWzFdLHQuc2VjdGlvbnM9eS5zZWN0aW9ucyxtLnB1c2godCk7fX1lbHNlIG09ZnVuY3Rpb24odCxlKXtjb25zdCByPVtdLG49dC50ZXh0O2xldCBpPTA7Zm9yKGNvbnN0IG4gb2YgZSlyLnB1c2godC5zdWJzdHJpbmcoaSxuKSksaT1uO3JldHVybiBpPG4ubGVuZ3RoJiZyLnB1c2godC5zdWJzdHJpbmcoaSxuLmxlbmd0aCkpLHJ9KHksZyk7Y29uc3QgYj1bXSx3PXtwb3NpdGlvbmVkTGluZXM6Yix0ZXh0OnkudG9TdHJpbmcoKSx0b3A6Y1sxXSxib3R0b206Y1sxXSxsZWZ0OmNbMF0scmlnaHQ6Y1swXSx3cml0aW5nTW9kZTpoLGljb25zSW5UZXh0OiExLHZlcnRpY2FsaXphYmxlOiExLGhhc0Jhc2VsaW5lOiExfTtyZXR1cm4gZnVuY3Rpb24odCxlLHIsbixpLHMsYSxvLGwsdSxjLGgpe2xldCBwPTAsZD0wLGY9MDtjb25zdCB5PVwicmlnaHRcIj09PW8/MTpcImxlZnRcIj09PW8/MDouNTtsZXQgbT0hMTtmb3IoY29uc3QgdCBvZiBpKXtjb25zdCByPXQuZ2V0U2VjdGlvbnMoKTtmb3IoY29uc3QgdCBvZiByKXtpZih0LmltYWdlTmFtZSljb250aW51ZTtjb25zdCByPWVbdC5mb250U3RhY2tdO2lmKHImJihtPXZvaWQgMCE9PXIuYXNjZW5kZXImJnZvaWQgMCE9PXIuZGVzY2VuZGVyLCFtKSlicmVha31pZighbSlicmVha31sZXQgZz0wO2Zvcihjb25zdCBhIG9mIGkpe2EudHJpbSgpO2NvbnN0IGk9YS5nZXRNYXhTY2FsZSgpLG89KGktMSkqUmgsdj17cG9zaXRpb25lZEdseXBoczpbXSxsaW5lT2Zmc2V0OjB9O3QucG9zaXRpb25lZExpbmVzW2ddPXY7Y29uc3QgYj12LnBvc2l0aW9uZWRHbHlwaHM7bGV0IHc9MDtpZighYS5sZW5ndGgoKSl7ZCs9cywrK2c7Y29udGludWV9bGV0IF89MCxBPTA7Zm9yKGxldCBzPTA7czxhLmxlbmd0aCgpO3MrKyl7Y29uc3Qgbz1hLmdldFNlY3Rpb24ocyksZj1hLmdldFNlY3Rpb25JbmRleChzKSx5PWEuZ2V0Q2hhckNvZGUocyk7bGV0IGc9by5zY2FsZSx2PW51bGwsUz1udWxsLGs9bnVsbCxJPVJoLE09MDtjb25zdCBUPSEobD09PUlwLmhvcml6b250YWx8fCFjJiYhaXMoeSl8fGMmJihFcFt5XXx8KHg9eSx0cy5BcmFiaWMoeCl8fHRzW1wiQXJhYmljIFN1cHBsZW1lbnRcIl0oeCl8fHRzW1wiQXJhYmljIEV4dGVuZGVkLUFcIl0oeCl8fHRzW1wiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1BXCJdKHgpfHx0c1tcIkFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQlwiXSh4KSkpKTtpZihvLmltYWdlTmFtZSl7Y29uc3QgZT1uW28uaW1hZ2VOYW1lXTtpZighZSljb250aW51ZTtrPW8uaW1hZ2VOYW1lLHQuaWNvbnNJblRleHQ9dC5pY29uc0luVGV4dHx8ITAsUz1lLnBhZGRlZFJlY3Q7Y29uc3Qgcj1lLmRpc3BsYXlTaXplO2c9ZypSaC9oLHY9e3dpZHRoOnJbMF0saGVpZ2h0OnJbMV0sbGVmdDpBcCx0b3A6LXdwLGFkdmFuY2U6VD9yWzFdOnJbMF0sbG9jYWxHbHlwaDohMX0sTT1tPy12LmhlaWdodCpnOk1wK2kqUmgtclsxXSpnLEk9di5hZHZhbmNlO2NvbnN0IHM9KFQ/clswXTpyWzFdKSpnLVJoKmk7cz4wJiZzPncmJih3PXMpO31lbHNlIHtjb25zdCB0PXJbby5mb250U3RhY2tdO2lmKCF0KWNvbnRpbnVlO3RbeV0mJihTPXRbeV0pO2NvbnN0IG49ZVtvLmZvbnRTdGFja107aWYoIW4pY29udGludWU7Y29uc3Qgcz1uLmdseXBoc1t5XTtpZighcyljb250aW51ZTtpZih2PXMubWV0cmljcyxJPTgyMDMhPT15P1JoOjAsbSl7Y29uc3QgdD12b2lkIDAhPT1uLmFzY2VuZGVyP01hdGguYWJzKG4uYXNjZW5kZXIpOjAsZT12b2lkIDAhPT1uLmRlc2NlbmRlcj9NYXRoLmFicyhuLmRlc2NlbmRlcik6MCxyPSh0K2UpKmc7XzxyJiYoXz1yLEE9KHQtZSkvMipnKSxNPS10Kmc7fWVsc2UgTT1NcCsoaS1nKSpSaDt9VD8odC52ZXJ0aWNhbGl6YWJsZT0hMCxiLnB1c2goe2dseXBoOnksaW1hZ2VOYW1lOmsseDpwLHk6ZCtNLHZlcnRpY2FsOlQsc2NhbGU6Zyxsb2NhbEdseXBoOnYubG9jYWxHbHlwaCxmb250U3RhY2s6by5mb250U3RhY2ssc2VjdGlvbkluZGV4OmYsbWV0cmljczp2LHJlY3Q6U30pLHArPUkqZyt1KTooYi5wdXNoKHtnbHlwaDp5LGltYWdlTmFtZTprLHg6cCx5OmQrTSx2ZXJ0aWNhbDpULHNjYWxlOmcsbG9jYWxHbHlwaDp2LmxvY2FsR2x5cGgsZm9udFN0YWNrOm8uZm9udFN0YWNrLHNlY3Rpb25JbmRleDpmLG1ldHJpY3M6dixyZWN0OlN9KSxwKz12LmFkdmFuY2UqZyt1KTt9MCE9PWIubGVuZ3RoJiYoZj1NYXRoLm1heChwLXUsZiksbT9VcChiLHksdyxBLHMqaS8yKTpVcChiLHksdywwLHMvMikpLHA9MDtjb25zdCBTPXMqaSt3O3YubGluZU9mZnNldD1NYXRoLm1heCh3LG8pLGQrPVMsKytnO312YXIgeDtjb25zdCB2PWQse2hvcml6b250YWxBbGlnbjpiLHZlcnRpY2FsQWxpZ246d309UnAoYSk7KChmdW5jdGlvbih0LGUscixuLGkscyl7Y29uc3QgYT0oZS1yKSppLG89LXMqbjtmb3IoY29uc3QgZSBvZiB0KWZvcihjb25zdCB0IG9mIGUucG9zaXRpb25lZEdseXBocyl0LngrPWEsdC55Kz1vO30pKSh0LnBvc2l0aW9uZWRMaW5lcyx5LGIsdyxmLHYpLHQudG9wKz0tdyp2LHQuYm90dG9tPXQudG9wK3YsdC5sZWZ0Kz0tYipmLHQucmlnaHQ9dC5sZWZ0K2YsdC5oYXNCYXNlbGluZT1tO30odyxlLHIsbixtLGEsbyxsLGgsdSxwLGYpLCFmdW5jdGlvbih0KXtmb3IoY29uc3QgZSBvZiB0KWlmKDAhPT1lLnBvc2l0aW9uZWRHbHlwaHMubGVuZ3RoKXJldHVybiAhMTtyZXR1cm4gITB9KGIpJiZ3fWNvbnN0IEVwPXs5OiEwLDEwOiEwLDExOiEwLDEyOiEwLDEzOiEwLDMyOiEwfSxDcD17MTA6ITAsMzI6ITAsMzg6ITAsNDA6ITAsNDE6ITAsNDM6ITAsNDU6ITAsNDc6ITAsMTczOiEwLDE4MzohMCw4MjAzOiEwLDgyMDg6ITAsODIxMTohMCw4MjMxOiEwfTtmdW5jdGlvbiBQcCh0LGUscixuLGkscyl7aWYoZS5pbWFnZU5hbWUpe2NvbnN0IHQ9bltlLmltYWdlTmFtZV07cmV0dXJuIHQ/dC5kaXNwbGF5U2l6ZVswXSplLnNjYWxlKlJoL3MraTowfXtjb25zdCBuPXJbZS5mb250U3RhY2tdLHM9biYmbi5nbHlwaHNbdF07cmV0dXJuIHM/cy5tZXRyaWNzLmFkdmFuY2UqZS5zY2FsZStpOjB9fWZ1bmN0aW9uIERwKHQsZSxyLG4pe2NvbnN0IGk9TWF0aC5wb3codC1lLDIpO3JldHVybiBuP3Q8ZT9pLzI6MippOmkrTWF0aC5hYnMocikqcn1mdW5jdGlvbiBWcCh0LGUscil7bGV0IG49MDtyZXR1cm4gMTA9PT10JiYobi09MWU0KSxyJiYobis9MTUwKSw0MCE9PXQmJjY1Mjg4IT09dHx8KG4rPTUwKSw0MSE9PWUmJjY1Mjg5IT09ZXx8KG4rPTUwKSxufWZ1bmN0aW9uIExwKHQsZSxyLG4saSxzKXtsZXQgYT1udWxsLG89RHAoZSxyLGkscyk7Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3Qgbj1EcChlLXQueCxyLGkscykrdC5iYWRuZXNzO248PW8mJihhPXQsbz1uKTt9cmV0dXJuIHtpbmRleDp0LHg6ZSxwcmlvckJyZWFrOmEsYmFkbmVzczpvfX1mdW5jdGlvbiBGcCh0KXtyZXR1cm4gdD9GcCh0LnByaW9yQnJlYWspLmNvbmNhdCh0LmluZGV4KTpbXX1mdW5jdGlvbiBScCh0KXtsZXQgZT0uNSxyPS41O3N3aXRjaCh0KXtjYXNlXCJyaWdodFwiOmNhc2VcInRvcC1yaWdodFwiOmNhc2VcImJvdHRvbS1yaWdodFwiOmU9MTticmVhaztjYXNlXCJsZWZ0XCI6Y2FzZVwidG9wLWxlZnRcIjpjYXNlXCJib3R0b20tbGVmdFwiOmU9MDt9c3dpdGNoKHQpe2Nhc2VcImJvdHRvbVwiOmNhc2VcImJvdHRvbS1yaWdodFwiOmNhc2VcImJvdHRvbS1sZWZ0XCI6cj0xO2JyZWFrO2Nhc2VcInRvcFwiOmNhc2VcInRvcC1yaWdodFwiOmNhc2VcInRvcC1sZWZ0XCI6cj0wO31yZXR1cm4ge2hvcml6b250YWxBbGlnbjplLHZlcnRpY2FsQWxpZ246cn19ZnVuY3Rpb24gVXAodCxlLHIsbixpKXtpZighKGV8fHJ8fG58fGkpKXJldHVybjtjb25zdCBzPXQubGVuZ3RoLTEsYT10W3NdLG89KGEueCthLm1ldHJpY3MuYWR2YW5jZSphLnNjYWxlKSplO2ZvcihsZXQgZT0wO2U8PXM7ZSsrKXRbZV0ueC09byx0W2VdLnkrPXIrbitpO31mdW5jdGlvbiAkcCh0LGUscil7Y29uc3R7aG9yaXpvbnRhbEFsaWduOm4sdmVydGljYWxBbGlnbjppfT1ScChyKSxzPWVbMF0tdC5kaXNwbGF5U2l6ZVswXSpuLGE9ZVsxXS10LmRpc3BsYXlTaXplWzFdKmk7cmV0dXJuIHtpbWFnZTp0LHRvcDphLGJvdHRvbTphK3QuZGlzcGxheVNpemVbMV0sbGVmdDpzLHJpZ2h0OnMrdC5kaXNwbGF5U2l6ZVswXX19ZnVuY3Rpb24ganAodCxlLHIsbixpLHMpe2NvbnN0IGE9dC5pbWFnZTtsZXQgbztpZihhLmNvbnRlbnQpe2NvbnN0IHQ9YS5jb250ZW50LGU9YS5waXhlbFJhdGlvfHwxO289W3RbMF0vZSx0WzFdL2UsYS5kaXNwbGF5U2l6ZVswXS10WzJdL2UsYS5kaXNwbGF5U2l6ZVsxXS10WzNdL2VdO31jb25zdCBsPWUubGVmdCpzLHU9ZS5yaWdodCpzO2xldCBjLGgscCxkO1wid2lkdGhcIj09PXJ8fFwiYm90aFwiPT09cj8oZD1pWzBdK2wtblszXSxoPWlbMF0rdStuWzFdKTooZD1pWzBdKyhsK3UtYS5kaXNwbGF5U2l6ZVswXSkvMixoPWQrYS5kaXNwbGF5U2l6ZVswXSk7Y29uc3QgZj1lLnRvcCpzLHk9ZS5ib3R0b20qcztyZXR1cm4gXCJoZWlnaHRcIj09PXJ8fFwiYm90aFwiPT09cj8oYz1pWzFdK2YtblswXSxwPWlbMV0reStuWzJdKTooYz1pWzFdKyhmK3ktYS5kaXNwbGF5U2l6ZVsxXSkvMixwPWMrYS5kaXNwbGF5U2l6ZVsxXSkse2ltYWdlOmEsdG9wOmMscmlnaHQ6aCxib3R0b206cCxsZWZ0OmQsY29sbGlzaW9uUGFkZGluZzpvfX1jbGFzcyBPcCBleHRlbmRzIHh7Y29uc3RydWN0b3IodCxlLHIsbixpKXtzdXBlcih0LGUpLHRoaXMuYW5nbGU9bix0aGlzLno9cix2b2lkIDAhPT1pJiYodGhpcy5zZWdtZW50PWkpO31jbG9uZSgpe3JldHVybiBuZXcgT3AodGhpcy54LHRoaXMueSx0aGlzLnosdGhpcy5hbmdsZSx0aGlzLnNlZ21lbnQpfX1mdW5jdGlvbiBxcCh0LGUscixuLGkpe2lmKHZvaWQgMD09PWUuc2VnbWVudClyZXR1cm4gITA7bGV0IHM9ZSxhPWUuc2VnbWVudCsxLG89MDtmb3IoO28+LXIvMjspe2lmKGEtLSxhPDApcmV0dXJuICExO28tPXRbYV0uZGlzdChzKSxzPXRbYV07fW8rPXRbYV0uZGlzdCh0W2ErMV0pLGErKztjb25zdCBsPVtdO2xldCB1PTA7Zm9yKDtvPHIvMjspe2NvbnN0IGU9dFthXSxyPXRbYSsxXTtpZighcilyZXR1cm4gITE7bGV0IHM9dFthLTFdLmFuZ2xlVG8oZSktZS5hbmdsZVRvKHIpO2ZvcihzPU1hdGguYWJzKChzKzMqTWF0aC5QSSklKDIqTWF0aC5QSSktTWF0aC5QSSksbC5wdXNoKHtkaXN0YW5jZTpvLGFuZ2xlRGVsdGE6c30pLHUrPXM7by1sWzBdLmRpc3RhbmNlPm47KXUtPWwuc2hpZnQoKS5hbmdsZURlbHRhO2lmKHU+aSlyZXR1cm4gITE7YSsrLG8rPWUuZGlzdChyKTt9cmV0dXJuICEwfWZ1bmN0aW9uIE5wKHQpe2xldCBlPTA7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aC0xO3IrKyllKz10W3JdLmRpc3QodFtyKzFdKTtyZXR1cm4gZX1mdW5jdGlvbiBHcCh0LGUscil7cmV0dXJuIHQ/LjYqZSpyOjB9ZnVuY3Rpb24gWnAodCxlKXtyZXR1cm4gTWF0aC5tYXgodD90LnJpZ2h0LXQubGVmdDowLGU/ZS5yaWdodC1lLmxlZnQ6MCl9ZnVuY3Rpb24gS3AodCxlLHIsbixpLHMpe2NvbnN0IGE9R3AocixpLHMpLG89WnAocixuKSpzO2xldCBsPTA7Y29uc3QgdT1OcCh0KS8yO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGgtMTtyKyspe2NvbnN0IG49dFtyXSxpPXRbcisxXSxzPW4uZGlzdChpKTtpZihsK3M+dSl7Y29uc3QgYz0odS1sKS9zLGg9RXIobi54LGkueCxjKSxwPUVyKG4ueSxpLnksYyksZD1uZXcgT3AoaCxwLDAsaS5hbmdsZVRvKG4pLHIpO3JldHVybiAhYXx8cXAodCxkLG8sYSxlKT9kOnZvaWQgMH1sKz1zO319ZnVuY3Rpb24gWHAodCxlLHIsbixpLHMsYSxvLGwpe2NvbnN0IHU9R3AobixzLGEpLGM9WnAobixpKSxoPWMqYSxwPTA9PT10WzBdLnh8fHRbMF0ueD09PWx8fDA9PT10WzBdLnl8fHRbMF0ueT09PWw7cmV0dXJuIGUtaDxlLzQmJihlPWgrZS80KSxKcCh0LHA/ZS8yKm8lZTooYy8yKzIqcykqYSpvJWUsZSx1LHIsaCxwLCExLGwpfWZ1bmN0aW9uIEpwKHQsZSxyLG4saSxzLGEsbyxsKXtjb25zdCB1PXMvMixjPU5wKHQpO2xldCBoPTAscD1lLXIsZD1bXTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoLTE7ZSsrKXtjb25zdCBhPXRbZV0sbz10W2UrMV0sZj1hLmRpc3QobykseT1vLmFuZ2xlVG8oYSk7Zm9yKDtwK3I8aCtmOyl7cCs9cjtjb25zdCBtPShwLWgpL2YsZz1FcihhLngsby54LG0pLHg9RXIoYS55LG8ueSxtKTtpZihnPj0wJiZnPGwmJng+PTAmJng8bCYmcC11Pj0wJiZwK3U8PWMpe2NvbnN0IHI9bmV3IE9wKGcseCwwLHksZSk7ci5fcm91bmQoKSxuJiYhcXAodCxyLHMsbixpKXx8ZC5wdXNoKHIpO319aCs9Zjt9cmV0dXJuIG98fGQubGVuZ3RofHxhfHwoZD1KcCh0LGgvMixyLG4saSxzLGEsITAsbCkpLGR9ZnVuY3Rpb24gSHAodCxlLHIsbixpKXtjb25zdCBzPVtdO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKXtjb25zdCBvPXRbYV07bGV0IGw7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aC0xO3QrKyl7bGV0IGE9b1t0XSx1PW9bdCsxXTthLng8ZSYmdS54PGV8fChhLng8ZT9hPW5ldyB4KGUsYS55KyhlLWEueCkvKHUueC1hLngpKih1LnktYS55KSkuX3JvdW5kKCk6dS54PGUmJih1PW5ldyB4KGUsYS55KyhlLWEueCkvKHUueC1hLngpKih1LnktYS55KSkuX3JvdW5kKCkpLGEueTxyJiZ1Lnk8cnx8KGEueTxyP2E9bmV3IHgoYS54KyhyLWEueSkvKHUueS1hLnkpKih1LngtYS54KSxyKS5fcm91bmQoKTp1Lnk8ciYmKHU9bmV3IHgoYS54KyhyLWEueSkvKHUueS1hLnkpKih1LngtYS54KSxyKS5fcm91bmQoKSksYS54Pj1uJiZ1Lng+PW58fChhLng+PW4/YT1uZXcgeChuLGEueSsobi1hLngpLyh1LngtYS54KSoodS55LWEueSkpLl9yb3VuZCgpOnUueD49biYmKHU9bmV3IHgobixhLnkrKG4tYS54KS8odS54LWEueCkqKHUueS1hLnkpKS5fcm91bmQoKSksYS55Pj1pJiZ1Lnk+PWl8fChhLnk+PWk/YT1uZXcgeChhLngrKGktYS55KS8odS55LWEueSkqKHUueC1hLngpLGkpLl9yb3VuZCgpOnUueT49aSYmKHU9bmV3IHgoYS54KyhpLWEueSkvKHUueS1hLnkpKih1LngtYS54KSxpKS5fcm91bmQoKSksbCYmYS5lcXVhbHMobFtsLmxlbmd0aC0xXSl8fChsPVthXSxzLnB1c2gobCkpLGwucHVzaCh1KSkpKSk7fX1yZXR1cm4gc31KaShPcCxcIkFuY2hvclwiKTtjb25zdCBZcD0xZTIwO2Z1bmN0aW9uIFdwKHQsZSxyLG4saSxzLGEsbyxsKXtmb3IobGV0IHU9ZTt1PGUrbjt1KyspUXAodCxyKnMrdSxzLGksYSxvLGwpO2ZvcihsZXQgdT1yO3U8citpO3UrKylRcCh0LHUqcytlLDEsbixhLG8sbCk7fWZ1bmN0aW9uIFFwKHQsZSxyLG4saSxzLGEpe3NbMF09MCxhWzBdPS1ZcCxhWzFdPVlwLGlbMF09dFtlXTtmb3IobGV0IG89MSxsPTAsdT0wO288bjtvKyspe2lbb109dFtlK28qcl07Y29uc3Qgbj1vKm87ZG97Y29uc3QgdD1zW2xdO3U9KGlbb10taVt0XStuLXQqdCkvKG8tdCkvMjt9d2hpbGUodTw9YVtsXSYmLS1sPi0xKTtsKyssc1tsXT1vLGFbbF09dSxhW2wrMV09WXA7fWZvcihsZXQgbz0wLGw9MDtvPG47bysrKXtmb3IoO2FbbCsxXTxvOylsKys7Y29uc3Qgbj1zW2xdLHU9by1uO3RbZStvKnJdPWlbbl0rdSp1O319Y29uc3QgdGQ9MixlZD17bm9uZTowLGlkZW9ncmFwaHM6MSxhbGw6Mn07Y2xhc3MgcmR7Y29uc3RydWN0b3IodCxlLHIpe3RoaXMucmVxdWVzdE1hbmFnZXI9dCx0aGlzLmxvY2FsR2x5cGhNb2RlPWUsdGhpcy5sb2NhbEZvbnRGYW1pbHk9cix0aGlzLmVudHJpZXM9e30sdGhpcy5sb2NhbEdseXBocz17MjAwOnt9LDQwMDp7fSw1MDA6e30sOTAwOnt9fTt9c2V0VVJMKHQpe3RoaXMudXJsPXQ7fWdldEdseXBocyh0LGUpe2NvbnN0IHI9W107Zm9yKGNvbnN0IGUgaW4gdClmb3IoY29uc3QgbiBvZiB0W2VdKXIucHVzaCh7c3RhY2s6ZSxpZDpufSk7QihyLCgoe3N0YWNrOnQsaWQ6ZX0scik9PntsZXQgbj10aGlzLmVudHJpZXNbdF07bnx8KG49dGhpcy5lbnRyaWVzW3RdPXtnbHlwaHM6e30scmVxdWVzdHM6e30scmFuZ2VzOnt9LGFzY2VuZGVyOnZvaWQgMCxkZXNjZW5kZXI6dm9pZCAwfSk7bGV0IGk9bi5nbHlwaHNbZV07aWYodm9pZCAwIT09aSlyZXR1cm4gdm9pZCByKG51bGwse3N0YWNrOnQsaWQ6ZSxnbHlwaDppfSk7aWYoaT10aGlzLl90aW55U0RGKG4sdCxlKSxpKXJldHVybiBuLmdseXBoc1tlXT1pLHZvaWQgcihudWxsLHtzdGFjazp0LGlkOmUsZ2x5cGg6aX0pO2NvbnN0IHM9TWF0aC5mbG9vcihlLzI1Nik7aWYoMjU2KnM+NjU1MzUpcmV0dXJuIHZvaWQgcihuZXcgRXJyb3IoXCJnbHlwaHMgPiA2NTUzNSBub3Qgc3VwcG9ydGVkXCIpKTtpZihuLnJhbmdlc1tzXSlyZXR1cm4gdm9pZCByKG51bGwse3N0YWNrOnQsaWQ6ZSxnbHlwaDppfSk7bGV0IGE9bi5yZXF1ZXN0c1tzXTthfHwoYT1uLnJlcXVlc3RzW3NdPVtdLHJkLmxvYWRHbHlwaFJhbmdlKHQscyx0aGlzLnVybCx0aGlzLnJlcXVlc3RNYW5hZ2VyLCgodCxlKT0+e2lmKGUpe24uYXNjZW5kZXI9ZS5hc2NlbmRlcixuLmRlc2NlbmRlcj1lLmRlc2NlbmRlcjtmb3IoY29uc3QgdCBpbiBlLmdseXBocyl0aGlzLl9kb2VzQ2hhclN1cHBvcnRMb2NhbEdseXBoKCt0KXx8KG4uZ2x5cGhzWyt0XT1lLmdseXBoc1srdF0pO24ucmFuZ2VzW3NdPSEwO31mb3IoY29uc3QgciBvZiBhKXIodCxlKTtkZWxldGUgbi5yZXF1ZXN0c1tzXTt9KSkpLGEucHVzaCgoKG4saSk9PntuP3Iobik6aSYmcihudWxsLHtzdGFjazp0LGlkOmUsZ2x5cGg6aS5nbHlwaHNbZV18fG51bGx9KTt9KSk7fSksKCh0LHIpPT57aWYodCllKHQpO2Vsc2UgaWYocil7Y29uc3QgdD17fTtmb3IoY29uc3R7c3RhY2s6ZSxpZDpuLGdseXBoOml9b2Ygcil2b2lkIDA9PT10W2VdJiYodFtlXT17fSksdm9pZCAwPT09dFtlXS5nbHlwaHMmJih0W2VdLmdseXBocz17fSksdFtlXS5nbHlwaHNbbl09aSYme2lkOmkuaWQsYml0bWFwOmkuYml0bWFwLmNsb25lKCksbWV0cmljczppLm1ldHJpY3N9LHRbZV0uYXNjZW5kZXI9dGhpcy5lbnRyaWVzW2VdLmFzY2VuZGVyLHRbZV0uZGVzY2VuZGVyPXRoaXMuZW50cmllc1tlXS5kZXNjZW5kZXI7ZShudWxsLHQpO319KSk7fV9kb2VzQ2hhclN1cHBvcnRMb2NhbEdseXBoKHQpe3JldHVybiB0aGlzLmxvY2FsR2x5cGhNb2RlIT09ZWQubm9uZSYmKHRoaXMubG9jYWxHbHlwaE1vZGU9PT1lZC5hbGw/ISF0aGlzLmxvY2FsRm9udEZhbWlseTohIXRoaXMubG9jYWxGb250RmFtaWx5JiYodHNbXCJDSksgVW5pZmllZCBJZGVvZ3JhcGhzXCJdKHQpfHx0c1tcIkhhbmd1bCBTeWxsYWJsZXNcIl0odCl8fHRzLkhpcmFnYW5hKHQpfHx0cy5LYXRha2FuYSh0KXx8dHNbXCJDSksgU3ltYm9scyBhbmQgUHVuY3R1YXRpb25cIl0odCkpKX1fdGlueVNERih0LGUscil7Y29uc3Qgbj10aGlzLmxvY2FsRm9udEZhbWlseTtpZighbnx8IXRoaXMuX2RvZXNDaGFyU3VwcG9ydExvY2FsR2x5cGgocikpcmV0dXJuO2xldCBpPXQudGlueVNERjtpZighaSl7bGV0IHI9XCI0MDBcIjsvYm9sZC9pLnRlc3QoZSk/cj1cIjkwMFwiOi9tZWRpdW0vaS50ZXN0KGUpP3I9XCI1MDBcIjovbGlnaHQvaS50ZXN0KGUpJiYocj1cIjIwMFwiKSxpPXQudGlueVNERj1uZXcgcmQuVGlueVNERih7Zm9udEZhbWlseTpuLGZvbnRXZWlnaHQ6cixmb250U2l6ZToyNCp0ZCxidWZmZXI6Myp0ZCxyYWRpdXM6OCp0ZH0pLGkuZm9udFdlaWdodD1yO31pZih0aGlzLmxvY2FsR2x5cGhzW2kuZm9udFdlaWdodF1bcl0pcmV0dXJuIHRoaXMubG9jYWxHbHlwaHNbaS5mb250V2VpZ2h0XVtyXTtjb25zdCBzPVN0cmluZy5mcm9tQ2hhckNvZGUocikse2RhdGE6YSx3aWR0aDpvLGhlaWdodDpsLGdseXBoV2lkdGg6dSxnbHlwaEhlaWdodDpjLGdseXBoTGVmdDpoLGdseXBoVG9wOnAsZ2x5cGhBZHZhbmNlOmR9PWkuZHJhdyhzKTtyZXR1cm4gdGhpcy5sb2NhbEdseXBoc1tpLmZvbnRXZWlnaHRdW3JdPXtpZDpyLGJpdG1hcDpuZXcgUnUoe3dpZHRoOm8saGVpZ2h0Omx9LGEpLG1ldHJpY3M6e3dpZHRoOnUvdGQsaGVpZ2h0OmMvdGQsbGVmdDpoL3RkLHRvcDpwL3RkLTI3LGFkdmFuY2U6ZC90ZCxsb2NhbEdseXBoOiEwfX19fXJkLmxvYWRHbHlwaFJhbmdlPWZ1bmN0aW9uKHQsZSxyLG4saSl7Y29uc3Qgcz0yNTYqZSxhPXMrMjU1LG89bi50cmFuc2Zvcm1SZXF1ZXN0KG4ubm9ybWFsaXplR2x5cGhzVVJMKHIpLnJlcGxhY2UoXCJ7Zm9udHN0YWNrfVwiLHQpLnJlcGxhY2UoXCJ7cmFuZ2V9XCIsYCR7c30tJHthfWApLGx0LkdseXBocyk7cHQobywoKHQsZSk9PntpZih0KWkodCk7ZWxzZSBpZihlKXtjb25zdCB0PXt9LHI9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBtcCh0KS5yZWFkRmllbGRzKHhwLHt9KX0oZSk7Zm9yKGNvbnN0IGUgb2Ygci5nbHlwaHMpdFtlLmlkXT1lO2kobnVsbCx7Z2x5cGhzOnQsYXNjZW5kZXI6ci5hc2NlbmRlcixkZXNjZW5kZXI6ci5kZXNjZW5kZXJ9KTt9fSkpO30scmQuVGlueVNERj1jbGFzc3tjb25zdHJ1Y3Rvcih7Zm9udFNpemU6dD0yNCxidWZmZXI6ZT0zLHJhZGl1czpyPTgsY3V0b2ZmOm49LjI1LGZvbnRGYW1pbHk6aT1cInNhbnMtc2VyaWZcIixmb250V2VpZ2h0OnM9XCJub3JtYWxcIixmb250U3R5bGU6YT1cIm5vcm1hbFwifT17fSl7dGhpcy5idWZmZXI9ZSx0aGlzLmN1dG9mZj1uLHRoaXMucmFkaXVzPXI7Y29uc3Qgbz10aGlzLnNpemU9dCs0KmUsbD10aGlzLl9jcmVhdGVDYW52YXMobyksdT10aGlzLmN0eD1sLmdldENvbnRleHQoXCIyZFwiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KTt1LmZvbnQ9YCR7YX0gJHtzfSAke3R9cHggJHtpfWAsdS50ZXh0QmFzZWxpbmU9XCJhbHBoYWJldGljXCIsdS50ZXh0QWxpZ249XCJsZWZ0XCIsdS5maWxsU3R5bGU9XCJibGFja1wiLHRoaXMuZ3JpZE91dGVyPW5ldyBGbG9hdDY0QXJyYXkobypvKSx0aGlzLmdyaWRJbm5lcj1uZXcgRmxvYXQ2NEFycmF5KG8qbyksdGhpcy5mPW5ldyBGbG9hdDY0QXJyYXkobyksdGhpcy56PW5ldyBGbG9hdDY0QXJyYXkobysxKSx0aGlzLnY9bmV3IFVpbnQxNkFycmF5KG8pO31fY3JlYXRlQ2FudmFzKHQpe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtyZXR1cm4gZS53aWR0aD1lLmhlaWdodD10LGV9ZHJhdyh0KXtjb25zdHt3aWR0aDplLGFjdHVhbEJvdW5kaW5nQm94QXNjZW50OnIsYWN0dWFsQm91bmRpbmdCb3hEZXNjZW50Om4sYWN0dWFsQm91bmRpbmdCb3hMZWZ0OmksYWN0dWFsQm91bmRpbmdCb3hSaWdodDpzfT10aGlzLmN0eC5tZWFzdXJlVGV4dCh0KSxhPU1hdGguY2VpbChyKSxvPU1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5zaXplLXRoaXMuYnVmZmVyLE1hdGguY2VpbChzLWkpKSksbD1NYXRoLm1pbih0aGlzLnNpemUtdGhpcy5idWZmZXIsYStNYXRoLmNlaWwobikpLHU9bysyKnRoaXMuYnVmZmVyLGM9bCsyKnRoaXMuYnVmZmVyLGg9TWF0aC5tYXgodSpjLDApLHA9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGgpLGQ9e2RhdGE6cCx3aWR0aDp1LGhlaWdodDpjLGdseXBoV2lkdGg6byxnbHlwaEhlaWdodDpsLGdseXBoVG9wOmEsZ2x5cGhMZWZ0OjAsZ2x5cGhBZHZhbmNlOmV9O2lmKDA9PT1vfHwwPT09bClyZXR1cm4gZDtjb25zdHtjdHg6ZixidWZmZXI6eSxncmlkSW5uZXI6bSxncmlkT3V0ZXI6Z309dGhpcztmLmNsZWFyUmVjdCh5LHksbyxsKSxmLmZpbGxUZXh0KHQseSx5K2EpO2NvbnN0IHg9Zi5nZXRJbWFnZURhdGEoeSx5LG8sbCk7Zy5maWxsKFlwLDAsaCksbS5maWxsKDAsMCxoKTtmb3IobGV0IHQ9MDt0PGw7dCsrKWZvcihsZXQgZT0wO2U8bztlKyspe2NvbnN0IHI9eC5kYXRhWzQqKHQqbytlKSszXS8yNTU7aWYoMD09PXIpY29udGludWU7Y29uc3Qgbj0odCt5KSp1K2UreTtpZigxPT09cilnW25dPTAsbVtuXT1ZcDtlbHNlIHtjb25zdCB0PS41LXI7Z1tuXT10PjA/dCp0OjAsbVtuXT10PDA/dCp0OjA7fX1XcChnLDAsMCx1LGMsdSx0aGlzLmYsdGhpcy52LHRoaXMueiksV3AobSx5LHksbyxsLHUsdGhpcy5mLHRoaXMudix0aGlzLnopO2ZvcihsZXQgdD0wO3Q8aDt0Kyspe2NvbnN0IGU9TWF0aC5zcXJ0KGdbdF0pLU1hdGguc3FydChtW3RdKTtwW3RdPU1hdGgucm91bmQoMjU1LTI1NSooZS90aGlzLnJhZGl1cyt0aGlzLmN1dG9mZikpO31yZXR1cm4gZH19O2NvbnN0IG5kPUFwO2Z1bmN0aW9uIGlkKHQsZSxyLG4pe2NvbnN0IGk9W10scz10LmltYWdlLGE9cy5waXhlbFJhdGlvLG89cy5wYWRkZWRSZWN0LnctMipuZCxsPXMucGFkZGVkUmVjdC5oLTIqbmQsdT10LnJpZ2h0LXQubGVmdCxjPXQuYm90dG9tLXQudG9wLGg9cy5zdHJldGNoWHx8W1swLG9dXSxwPXMuc3RyZXRjaFl8fFtbMCxsXV0sZD0odCxlKT0+dCtlWzFdLWVbMF0sZj1oLnJlZHVjZShkLDApLHk9cC5yZWR1Y2UoZCwwKSxtPW8tZixnPWwteTtsZXQgdj0wLGI9Zix3PTAsXz15LEE9MCxTPW0saz0wLEk9ZztpZihzLmNvbnRlbnQmJm4pe2NvbnN0IHQ9cy5jb250ZW50O3Y9c2QoaCwwLHRbMF0pLHc9c2QocCwwLHRbMV0pLGI9c2QoaCx0WzBdLHRbMl0pLF89c2QocCx0WzFdLHRbM10pLEE9dFswXS12LGs9dFsxXS13LFM9dFsyXS10WzBdLWIsST10WzNdLXRbMV0tXzt9Y29uc3QgTT0obixpLG8sbCk9Pntjb25zdCBoPW9kKG4uc3RyZXRjaC12LGIsdSx0LmxlZnQpLHA9bGQobi5maXhlZC1BLFMsbi5zdHJldGNoLGYpLGQ9b2QoaS5zdHJldGNoLXcsXyxjLHQudG9wKSxtPWxkKGkuZml4ZWQtayxJLGkuc3RyZXRjaCx5KSxnPW9kKG8uc3RyZXRjaC12LGIsdSx0LmxlZnQpLE09bGQoby5maXhlZC1BLFMsby5zdHJldGNoLGYpLFQ9b2QobC5zdHJldGNoLXcsXyxjLHQudG9wKSx6PWxkKGwuZml4ZWQtayxJLGwuc3RyZXRjaCx5KSxCPW5ldyB4KGgsZCksRT1uZXcgeChnLGQpLEM9bmV3IHgoZyxUKSxQPW5ldyB4KGgsVCksRD1uZXcgeChwL2EsbS9hKSxWPW5ldyB4KE0vYSx6L2EpLEw9ZSpNYXRoLlBJLzE4MDtpZihMKXtjb25zdCB0PU1hdGguc2luKEwpLGU9TWF0aC5jb3MoTCkscj1bZSwtdCx0LGVdO0IuX21hdE11bHQociksRS5fbWF0TXVsdChyKSxQLl9tYXRNdWx0KHIpLEMuX21hdE11bHQocik7fWNvbnN0IEY9bi5zdHJldGNoK24uZml4ZWQsUj1pLnN0cmV0Y2graS5maXhlZDtyZXR1cm4ge3RsOkIsdHI6RSxibDpQLGJyOkMsdGV4Ont4OnMucGFkZGVkUmVjdC54K25kK0YseTpzLnBhZGRlZFJlY3QueStuZCtSLHc6by5zdHJldGNoK28uZml4ZWQtRixoOmwuc3RyZXRjaCtsLmZpeGVkLVJ9LHdyaXRpbmdNb2RlOnZvaWQgMCxnbHlwaE9mZnNldDpbMCwwXSxzZWN0aW9uSW5kZXg6MCxwaXhlbE9mZnNldFRMOkQscGl4ZWxPZmZzZXRCUjpWLG1pbkZvbnRTY2FsZVg6Uy9hL3UsbWluRm9udFNjYWxlWTpJL2EvYyxpc1NERjpyfX07aWYobiYmKHMuc3RyZXRjaFh8fHMuc3RyZXRjaFkpKXtjb25zdCB0PWFkKGgsbSxmKSxlPWFkKHAsZyx5KTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoLTE7cisrKXtjb25zdCBuPXRbcl0scz10W3IrMV07Zm9yKGxldCB0PTA7dDxlLmxlbmd0aC0xO3QrKylpLnB1c2goTShuLGVbdF0scyxlW3QrMV0pKTt9fWVsc2UgaS5wdXNoKE0oe2ZpeGVkOjAsc3RyZXRjaDotMX0se2ZpeGVkOjAsc3RyZXRjaDotMX0se2ZpeGVkOjAsc3RyZXRjaDpvKzF9LHtmaXhlZDowLHN0cmV0Y2g6bCsxfSkpO3JldHVybiBpfWZ1bmN0aW9uIHNkKHQsZSxyKXtsZXQgbj0wO2Zvcihjb25zdCBpIG9mIHQpbis9TWF0aC5tYXgoZSxNYXRoLm1pbihyLGlbMV0pKS1NYXRoLm1heChlLE1hdGgubWluKHIsaVswXSkpO3JldHVybiBufWZ1bmN0aW9uIGFkKHQsZSxyKXtjb25zdCBuPVt7Zml4ZWQ6LW5kLHN0cmV0Y2g6MH1dO2Zvcihjb25zdFtlLHJdb2YgdCl7Y29uc3QgdD1uW24ubGVuZ3RoLTFdO24ucHVzaCh7Zml4ZWQ6ZS10LnN0cmV0Y2gsc3RyZXRjaDp0LnN0cmV0Y2h9KSxuLnB1c2goe2ZpeGVkOmUtdC5zdHJldGNoLHN0cmV0Y2g6dC5zdHJldGNoKyhyLWUpfSk7fXJldHVybiBuLnB1c2goe2ZpeGVkOmUrbmQsc3RyZXRjaDpyfSksbn1mdW5jdGlvbiBvZCh0LGUscixuKXtyZXR1cm4gdC9lKnIrbn1mdW5jdGlvbiBsZCh0LGUscixuKXtyZXR1cm4gdC1lKnIvbn1mdW5jdGlvbiB1ZCh0LGUscixuKXtjb25zdCBpPWUrdC5wb3NpdGlvbmVkTGluZXNbbl0ubGluZU9mZnNldDtyZXR1cm4gMD09PW4/citpLzI6cisoaSsoZSt0LnBvc2l0aW9uZWRMaW5lc1tuLTFdLmxpbmVPZmZzZXQpKS8yfWNsYXNzIGNke2NvbnN0cnVjdG9yKHQ9W10sZT1oZCl7aWYodGhpcy5kYXRhPXQsdGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aCx0aGlzLmNvbXBhcmU9ZSx0aGlzLmxlbmd0aD4wKWZvcihsZXQgdD0odGhpcy5sZW5ndGg+PjEpLTE7dD49MDt0LS0pdGhpcy5fZG93bih0KTt9cHVzaCh0KXt0aGlzLmRhdGEucHVzaCh0KSx0aGlzLmxlbmd0aCsrLHRoaXMuX3VwKHRoaXMubGVuZ3RoLTEpO31wb3AoKXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuO2NvbnN0IHQ9dGhpcy5kYXRhWzBdLGU9dGhpcy5kYXRhLnBvcCgpO3JldHVybiB0aGlzLmxlbmd0aC0tLHRoaXMubGVuZ3RoPjAmJih0aGlzLmRhdGFbMF09ZSx0aGlzLl9kb3duKDApKSx0fXBlZWsoKXtyZXR1cm4gdGhpcy5kYXRhWzBdfV91cCh0KXtjb25zdHtkYXRhOmUsY29tcGFyZTpyfT10aGlzLG49ZVt0XTtmb3IoO3Q+MDspe2NvbnN0IGk9dC0xPj4xLHM9ZVtpXTtpZihyKG4scyk+PTApYnJlYWs7ZVt0XT1zLHQ9aTt9ZVt0XT1uO31fZG93bih0KXtjb25zdHtkYXRhOmUsY29tcGFyZTpyfT10aGlzLG49dGhpcy5sZW5ndGg+PjEsaT1lW3RdO2Zvcig7dDxuOyl7bGV0IG49MSsodDw8MSkscz1lW25dO2NvbnN0IGE9bisxO2lmKGE8dGhpcy5sZW5ndGgmJnIoZVthXSxzKTwwJiYobj1hLHM9ZVthXSkscihzLGkpPj0wKWJyZWFrO2VbdF09cyx0PW47fWVbdF09aTt9fWZ1bmN0aW9uIGhkKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTowfWZ1bmN0aW9uIHBkKHQsZT0xLHI9ITEpe2xldCBuPTEvMCxpPTEvMCxzPS0xLzAsYT0tMS8wO2NvbnN0IG89dFswXTtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7Y29uc3QgZT1vW3RdOyghdHx8ZS54PG4pJiYobj1lLngpLCghdHx8ZS55PGkpJiYoaT1lLnkpLCghdHx8ZS54PnMpJiYocz1lLngpLCghdHx8ZS55PmEpJiYoYT1lLnkpO31jb25zdCBsPU1hdGgubWluKHMtbixhLWkpO2xldCB1PWwvMjtjb25zdCBjPW5ldyBjZChbXSxkZCk7aWYoMD09PWwpcmV0dXJuIG5ldyB4KG4saSk7Zm9yKGxldCBlPW47ZTxzO2UrPWwpZm9yKGxldCByPWk7cjxhO3IrPWwpYy5wdXNoKG5ldyBmZChlK3Uscit1LHUsdCkpO2xldCBoPWZ1bmN0aW9uKHQpe2xldCBlPTAscj0wLG49MDtjb25zdCBpPXRbMF07Zm9yKGxldCB0PTAscz1pLmxlbmd0aCxhPXMtMTt0PHM7YT10Kyspe2NvbnN0IHM9aVt0XSxvPWlbYV0sbD1zLngqby55LW8ueCpzLnk7cis9KHMueCtvLngpKmwsbis9KHMueStvLnkpKmwsZSs9MypsO31yZXR1cm4gbmV3IGZkKHIvZSxuL2UsMCx0KX0odCkscD1jLmxlbmd0aDtmb3IoO2MubGVuZ3RoOyl7Y29uc3Qgbj1jLnBvcCgpOyhuLmQ+aC5kfHwhaC5kKSYmKGg9bixyJiZjb25zb2xlLmxvZyhcImZvdW5kIGJlc3QgJWQgYWZ0ZXIgJWQgcHJvYmVzXCIsTWF0aC5yb3VuZCgxZTQqbi5kKS8xZTQscCkpLG4ubWF4LWguZDw9ZXx8KHU9bi5oLzIsYy5wdXNoKG5ldyBmZChuLnAueC11LG4ucC55LXUsdSx0KSksYy5wdXNoKG5ldyBmZChuLnAueCt1LG4ucC55LXUsdSx0KSksYy5wdXNoKG5ldyBmZChuLnAueC11LG4ucC55K3UsdSx0KSksYy5wdXNoKG5ldyBmZChuLnAueCt1LG4ucC55K3UsdSx0KSkscCs9NCk7fXJldHVybiByJiYoY29uc29sZS5sb2coYG51bSBwcm9iZXM6ICR7cH1gKSxjb25zb2xlLmxvZyhgYmVzdCBkaXN0YW5jZTogJHtoLmR9YCkpLGgucH1mdW5jdGlvbiBkZCh0LGUpe3JldHVybiBlLm1heC10Lm1heH1jbGFzcyBmZHtjb25zdHJ1Y3Rvcih0LGUscixuKXt0aGlzLnA9bmV3IHgodCxlKSx0aGlzLmg9cix0aGlzLmQ9ZnVuY3Rpb24odCxlKXtsZXQgcj0hMSxuPTEvMDtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl7Y29uc3Qgcz1lW2ldO2ZvcihsZXQgZT0wLGk9cy5sZW5ndGgsYT1pLTE7ZTxpO2E9ZSsrKXtjb25zdCBpPXNbZV0sbz1zW2FdO2kueT50LnkhPW8ueT50LnkmJnQueDwoby54LWkueCkqKHQueS1pLnkpLyhvLnktaS55KStpLngmJihyPSFyKSxuPU1hdGgubWluKG4seHUodCxpLG8pKTt9fXJldHVybiAocj8xOi0xKSpNYXRoLnNxcnQobil9KHRoaXMucCxuKSx0aGlzLm1heD10aGlzLmQrdGhpcy5oKk1hdGguU1FSVDI7fX1jb25zdCB5ZD03LG1kPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxnZD1NYXRoLnNxcnQoMik7ZnVuY3Rpb24geGQodCxbZSxyXSl7bGV0IG49MCxpPTA7aWYocj09PW1kKXtlPDAmJihlPTApO2NvbnN0IHI9ZS9nZDtzd2l0Y2godCl7Y2FzZVwidG9wLXJpZ2h0XCI6Y2FzZVwidG9wLWxlZnRcIjppPXIteWQ7YnJlYWs7Y2FzZVwiYm90dG9tLXJpZ2h0XCI6Y2FzZVwiYm90dG9tLWxlZnRcIjppPS1yK3lkO2JyZWFrO2Nhc2VcImJvdHRvbVwiOmk9LWUreWQ7YnJlYWs7Y2FzZVwidG9wXCI6aT1lLXlkO31zd2l0Y2godCl7Y2FzZVwidG9wLXJpZ2h0XCI6Y2FzZVwiYm90dG9tLXJpZ2h0XCI6bj0tcjticmVhaztjYXNlXCJ0b3AtbGVmdFwiOmNhc2VcImJvdHRvbS1sZWZ0XCI6bj1yO2JyZWFrO2Nhc2VcImxlZnRcIjpuPWU7YnJlYWs7Y2FzZVwicmlnaHRcIjpuPS1lO319ZWxzZSB7c3dpdGNoKGU9TWF0aC5hYnMoZSkscj1NYXRoLmFicyhyKSx0KXtjYXNlXCJ0b3AtcmlnaHRcIjpjYXNlXCJ0b3AtbGVmdFwiOmNhc2VcInRvcFwiOmk9ci15ZDticmVhaztjYXNlXCJib3R0b20tcmlnaHRcIjpjYXNlXCJib3R0b20tbGVmdFwiOmNhc2VcImJvdHRvbVwiOmk9LXIreWQ7fXN3aXRjaCh0KXtjYXNlXCJ0b3AtcmlnaHRcIjpjYXNlXCJib3R0b20tcmlnaHRcIjpjYXNlXCJyaWdodFwiOm49LWU7YnJlYWs7Y2FzZVwidG9wLWxlZnRcIjpjYXNlXCJib3R0b20tbGVmdFwiOmNhc2VcImxlZnRcIjpuPWU7fX1yZXR1cm4gW24saV19ZnVuY3Rpb24gdmQodCxlLHIsbixpLHMsYSxvLGwsdSl7dC5jcmVhdGVBcnJheXMoKSx0LnRpbGVQaXhlbFJhdGlvPWFvLyg1MTIqdC5vdmVyc2NhbGluZyksdC5jb21wYXJlVGV4dD17fSx0Lmljb25zTmVlZExpbmVhcj0hMTtjb25zdCBjPXQubGF5ZXJzWzBdLmxheW91dCxoPXQubGF5ZXJzWzBdLl91bmV2YWx1YXRlZExheW91dC5fdmFsdWVzLHA9e307aWYoXCJjb21wb3NpdGVcIj09PXQudGV4dFNpemVEYXRhLmtpbmQpe2NvbnN0e21pblpvb206ZSxtYXhab29tOnJ9PXQudGV4dFNpemVEYXRhO3AuY29tcG9zaXRlVGV4dFNpemVzPVtoW1widGV4dC1zaXplXCJdLnBvc3NpYmx5RXZhbHVhdGUobmV3IHdzKGUpLG8pLGhbXCJ0ZXh0LXNpemVcIl0ucG9zc2libHlFdmFsdWF0ZShuZXcgd3MociksbyldO31pZihcImNvbXBvc2l0ZVwiPT09dC5pY29uU2l6ZURhdGEua2luZCl7Y29uc3R7bWluWm9vbTplLG1heFpvb206cn09dC5pY29uU2l6ZURhdGE7cC5jb21wb3NpdGVJY29uU2l6ZXM9W2hbXCJpY29uLXNpemVcIl0ucG9zc2libHlFdmFsdWF0ZShuZXcgd3MoZSksbyksaFtcImljb24tc2l6ZVwiXS5wb3NzaWJseUV2YWx1YXRlKG5ldyB3cyhyKSxvKV07fXAubGF5b3V0VGV4dFNpemU9aFtcInRleHQtc2l6ZVwiXS5wb3NzaWJseUV2YWx1YXRlKG5ldyB3cyhsKzEpLG8pLHAubGF5b3V0SWNvblNpemU9aFtcImljb24tc2l6ZVwiXS5wb3NzaWJseUV2YWx1YXRlKG5ldyB3cyhsKzEpLG8pLHAudGV4dE1heFNpemU9aFtcInRleHQtc2l6ZVwiXS5wb3NzaWJseUV2YWx1YXRlKG5ldyB3cygxOCksbyk7Y29uc3QgZD1cIm1hcFwiPT09Yy5nZXQoXCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudFwiKSYmXCJwb2ludFwiIT09Yy5nZXQoXCJzeW1ib2wtcGxhY2VtZW50XCIpLGY9Yy5nZXQoXCJ0ZXh0LXNpemVcIik7Zm9yKGNvbnN0IHMgb2YgdC5mZWF0dXJlcyl7Y29uc3QgbD1jLmdldChcInRleHQtZm9udFwiKS5ldmFsdWF0ZShzLHt9LG8pLmpvaW4oXCIsXCIpLGg9Zi5ldmFsdWF0ZShzLHt9LG8pLHk9cC5sYXlvdXRUZXh0U2l6ZS5ldmFsdWF0ZShzLHt9LG8pLG09KHAubGF5b3V0SWNvblNpemUuZXZhbHVhdGUocyx7fSxvKSx7aG9yaXpvbnRhbDp7fSx2ZXJ0aWNhbDp2b2lkIDB9KSxnPXMudGV4dDtsZXQgeCx2PVswLDBdO2lmKGcpe2NvbnN0IG49Zy50b1N0cmluZygpLGE9Yy5nZXQoXCJ0ZXh0LWxldHRlci1zcGFjaW5nXCIpLmV2YWx1YXRlKHMse30sbykqUmgsdT1jLmdldChcInRleHQtbGluZS1oZWlnaHRcIikuZXZhbHVhdGUocyx7fSxvKSpSaCxwPXJzKG4pP2E6MCxmPWMuZ2V0KFwidGV4dC1hbmNob3JcIikuZXZhbHVhdGUocyx7fSxvKSx4PWMuZ2V0KFwidGV4dC12YXJpYWJsZS1hbmNob3JcIik7aWYoIXgpe2NvbnN0IHQ9Yy5nZXQoXCJ0ZXh0LXJhZGlhbC1vZmZzZXRcIikuZXZhbHVhdGUocyx7fSxvKTt2PXQ/eGQoZixbdCpSaCxtZF0pOmMuZ2V0KFwidGV4dC1vZmZzZXRcIikuZXZhbHVhdGUocyx7fSxvKS5tYXAoKHQ9PnQqUmgpKTt9bGV0IGI9ZD9cImNlbnRlclwiOmMuZ2V0KFwidGV4dC1qdXN0aWZ5XCIpLmV2YWx1YXRlKHMse30sbyk7Y29uc3Qgdz1cInBvaW50XCI9PT1jLmdldChcInN5bWJvbC1wbGFjZW1lbnRcIiksXz13P2MuZ2V0KFwidGV4dC1tYXgtd2lkdGhcIikuZXZhbHVhdGUocyx7fSxvKSpSaDoxLzAsQT1zPT57dC5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiZlcyhuKSYmKG0udmVydGljYWw9QnAoZyxlLHIsaSxsLF8sdSxmLHMscCx2LElwLnZlcnRpY2FsLCEwLHksaCkpO307aWYoIWQmJngpe2NvbnN0IHQ9XCJhdXRvXCI9PT1iP3gubWFwKCh0PT5iZCh0KSkpOltiXTtsZXQgbj0hMTtmb3IobGV0IHM9MDtzPHQubGVuZ3RoO3MrKyl7Y29uc3QgYT10W3NdO2lmKCFtLmhvcml6b250YWxbYV0paWYobiltLmhvcml6b250YWxbYV09bS5ob3Jpem9udGFsWzBdO2Vsc2Uge2NvbnN0IHQ9QnAoZyxlLHIsaSxsLF8sdSxcImNlbnRlclwiLGEscCx2LElwLmhvcml6b250YWwsITEseSxoKTt0JiYobS5ob3Jpem9udGFsW2FdPXQsbj0xPT09dC5wb3NpdGlvbmVkTGluZXMubGVuZ3RoKTt9fUEoXCJsZWZ0XCIpO31lbHNlIHtpZihcImF1dG9cIj09PWImJihiPWJkKGYpKSx3fHxjLmdldChcInRleHQtd3JpdGluZy1tb2RlXCIpLmluZGV4T2YoXCJob3Jpem9udGFsXCIpPj0wfHwhZXMobikpe2NvbnN0IHQ9QnAoZyxlLHIsaSxsLF8sdSxmLGIscCx2LElwLmhvcml6b250YWwsITEseSxoKTt0JiYobS5ob3Jpem9udGFsW2JdPXQpO31BKHc/XCJsZWZ0XCI6Yik7fX1sZXQgYj0hMTtpZihzLmljb24mJnMuaWNvbi5uYW1lKXtjb25zdCBlPW5bcy5pY29uLm5hbWVdO2UmJih4PSRwKGlbcy5pY29uLm5hbWVdLGMuZ2V0KFwiaWNvbi1vZmZzZXRcIikuZXZhbHVhdGUocyx7fSxvKSxjLmdldChcImljb24tYW5jaG9yXCIpLmV2YWx1YXRlKHMse30sbykpLGI9ZS5zZGYsdm9pZCAwPT09dC5zZGZJY29ucz90LnNkZkljb25zPWUuc2RmOnQuc2RmSWNvbnMhPT1lLnNkZiYmTihcIlN0eWxlIHNoZWV0IHdhcm5pbmc6IENhbm5vdCBtaXggU0RGIGFuZCBub24tU0RGIGljb25zIGluIG9uZSBidWZmZXJcIiksKGUucGl4ZWxSYXRpbyE9PXQucGl4ZWxSYXRpb3x8MCE9PWMuZ2V0KFwiaWNvbi1yb3RhdGVcIikuY29uc3RhbnRPcigxKSkmJih0Lmljb25zTmVlZExpbmVhcj0hMCkpO31jb25zdCB3PWtkKG0uaG9yaXpvbnRhbCl8fG0udmVydGljYWw7dC5pY29uc0luVGV4dHx8KHQuaWNvbnNJblRleHQ9ISF3JiZ3Lmljb25zSW5UZXh0KSwod3x8eCkmJndkKHQscyxtLHgsbixwLHksMCx2LGIsYSxvLHUpO31zJiZ0LmdlbmVyYXRlQ29sbGlzaW9uRGVidWdCdWZmZXJzKGwsdC5jb2xsaXNpb25Cb3hBcnJheSk7fWZ1bmN0aW9uIGJkKHQpe3N3aXRjaCh0KXtjYXNlXCJyaWdodFwiOmNhc2VcInRvcC1yaWdodFwiOmNhc2VcImJvdHRvbS1yaWdodFwiOnJldHVybiBcInJpZ2h0XCI7Y2FzZVwibGVmdFwiOmNhc2VcInRvcC1sZWZ0XCI6Y2FzZVwiYm90dG9tLWxlZnRcIjpyZXR1cm4gXCJsZWZ0XCJ9cmV0dXJuIFwiY2VudGVyXCJ9ZnVuY3Rpb24gd2QodCxlLHIsbixpLHMsYSxvLGwsdSxjLGgscCl7bGV0IGQ9cy50ZXh0TWF4U2l6ZS5ldmFsdWF0ZShlLHt9LGgpO3ZvaWQgMD09PWQmJihkPWEpO2NvbnN0IGY9dC5sYXllcnNbMF0ubGF5b3V0LHk9Zi5nZXQoXCJpY29uLW9mZnNldFwiKS5ldmFsdWF0ZShlLHt9LGgpLG09a2Qoci5ob3Jpem9udGFsKXx8ci52ZXJ0aWNhbCxnPVwiZ2xvYmVcIj09PXAubmFtZSx4PVJoLHY9YS94LGI9dC50aWxlUGl4ZWxSYXRpbypkL3gsXz0oQj10Lm92ZXJzY2FsaW5nLHQuem9vbT4xOCYmQj4yJiYoQj4+PTEpLE1hdGgubWF4KGFvLyg1MTIqQiksMSkqZi5nZXQoXCJzeW1ib2wtc3BhY2luZ1wiKSksQT1mLmdldChcInRleHQtcGFkZGluZ1wiKSp0LnRpbGVQaXhlbFJhdGlvLFM9Zi5nZXQoXCJpY29uLXBhZGRpbmdcIikqdC50aWxlUGl4ZWxSYXRpbyxrPXcoZi5nZXQoXCJ0ZXh0LW1heC1hbmdsZVwiKSksST1cIm1hcFwiPT09Zi5nZXQoXCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudFwiKSYmXCJwb2ludFwiIT09Zi5nZXQoXCJzeW1ib2wtcGxhY2VtZW50XCIpLE09XCJtYXBcIj09PWYuZ2V0KFwiaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnRcIikmJlwicG9pbnRcIiE9PWYuZ2V0KFwic3ltYm9sLXBsYWNlbWVudFwiKSxUPWYuZ2V0KFwic3ltYm9sLXBsYWNlbWVudFwiKSx6PV8vMjt2YXIgQjtjb25zdCBFPWYuZ2V0KFwiaWNvbi10ZXh0LWZpdFwiKTtsZXQgQztuJiZcIm5vbmVcIiE9PUUmJih0LmFsbG93VmVydGljYWxQbGFjZW1lbnQmJnIudmVydGljYWwmJihDPWpwKG4sci52ZXJ0aWNhbCxFLGYuZ2V0KFwiaWNvbi10ZXh0LWZpdC1wYWRkaW5nXCIpLHksdikpLG0mJihuPWpwKG4sbSxFLGYuZ2V0KFwiaWNvbi10ZXh0LWZpdC1wYWRkaW5nXCIpLHksdikpKTtjb25zdCBQPShhLG8sZCk9PntpZihvLng8MHx8by54Pj1hb3x8by55PDB8fG8ueT49YW8pcmV0dXJuO2xldCBmPW51bGw7aWYoZyl7Y29uc3R7eDp0LHk6ZSx6OnJ9PXAucHJvamVjdFRpbGVQb2ludChvLngsby55LGQpO2Y9e2FuY2hvcjpuZXcgT3AodCxlLHIsMCx2b2lkIDApLHVwOnAudXBWZWN0b3IoZCxvLngsby55KX07fSFmdW5jdGlvbih0LGUscixuLGkscyxhLG8sbCx1LGMsaCxwLGQsZix5LG0sZyx4LHYsYix3LF8sQSxTKXtjb25zdCBrPXQuYWRkVG9MaW5lVmVydGV4QXJyYXkoZSxuKTtsZXQgSSxNLFQseixCLEUsQyxQPTAsRD0wLFY9MCxMPTAsRj0tMSxSPS0xO2NvbnN0IFU9e307bGV0ICQ9QmEoXCJcIik7Y29uc3Qgaj1yP3IuYW5jaG9yOmU7bGV0IE89MCxxPTA7aWYodm9pZCAwPT09bC5fdW5ldmFsdWF0ZWRMYXlvdXQuZ2V0VmFsdWUoXCJ0ZXh0LXJhZGlhbC1vZmZzZXRcIik/W08scV09bC5sYXlvdXQuZ2V0KFwidGV4dC1vZmZzZXRcIikuZXZhbHVhdGUoYix7fSxTKS5tYXAoKHQ9PnQqUmgpKTooTz1sLmxheW91dC5nZXQoXCJ0ZXh0LXJhZGlhbC1vZmZzZXRcIikuZXZhbHVhdGUoYix7fSxTKSpSaCxxPW1kKSx0LmFsbG93VmVydGljYWxQbGFjZW1lbnQmJmkudmVydGljYWwpe2NvbnN0IHQ9aS52ZXJ0aWNhbDtpZihmKUU9TWQodCksbyYmKEM9TWQobykpO2Vsc2Uge2NvbnN0IHI9bC5sYXlvdXQuZ2V0KFwidGV4dC1yb3RhdGVcIikuZXZhbHVhdGUoYix7fSxTKSs5MDtUPUlkKHUsaixlLGMsaCxwLHQsZCxyLHkpLG8mJih6PUlkKHUsaixlLGMsaCxwLG8sZyxyKSk7fX1pZihzKXtjb25zdCBuPWwubGF5b3V0LmdldChcImljb24tcm90YXRlXCIpLmV2YWx1YXRlKGIse30sUyksaT1cIm5vbmVcIiE9PWwubGF5b3V0LmdldChcImljb24tdGV4dC1maXRcIiksYT1pZChzLG4sXyxpKSxkPW8/aWQobyxuLF8saSk6dm9pZCAwO009SWQodSxqLGUsYyxoLHAscyxnLG4pLFA9NCphLmxlbmd0aDtjb25zdCBmPXQuaWNvblNpemVEYXRhO2xldCB5PW51bGw7XCJzb3VyY2VcIj09PWYua2luZD8oeT1bVWgqbC5sYXlvdXQuZ2V0KFwiaWNvbi1zaXplXCIpLmV2YWx1YXRlKGIse30sUyldLHlbMF0+QWQmJk4oYCR7dC5sYXllcklkc1swXX06IFZhbHVlIGZvciBcImljb24tc2l6ZVwiIGlzID49ICR7X2R9LiBSZWR1Y2UgeW91ciBcImljb24tc2l6ZVwiLmApKTpcImNvbXBvc2l0ZVwiPT09Zi5raW5kJiYoeT1bVWgqdy5jb21wb3NpdGVJY29uU2l6ZXNbMF0uZXZhbHVhdGUoYix7fSxTKSxVaCp3LmNvbXBvc2l0ZUljb25TaXplc1sxXS5ldmFsdWF0ZShiLHt9LFMpXSwoeVswXT5BZHx8eVsxXT5BZCkmJk4oYCR7dC5sYXllcklkc1swXX06IFZhbHVlIGZvciBcImljb24tc2l6ZVwiIGlzID49ICR7X2R9LiBSZWR1Y2UgeW91ciBcImljb24tc2l6ZVwiLmApKSx0LmFkZFN5bWJvbHModC5pY29uLGEseSx2LHgsYiwhMSxyLGUsay5saW5lU3RhcnRJbmRleCxrLmxpbmVMZW5ndGgsLTEsQSxTKSxGPXQuaWNvbi5wbGFjZWRTeW1ib2xBcnJheS5sZW5ndGgtMSxkJiYoRD00KmQubGVuZ3RoLHQuYWRkU3ltYm9scyh0Lmljb24sZCx5LHYseCxiLElwLnZlcnRpY2FsLHIsZSxrLmxpbmVTdGFydEluZGV4LGsubGluZUxlbmd0aCwtMSxBLFMpLFI9dC5pY29uLnBsYWNlZFN5bWJvbEFycmF5Lmxlbmd0aC0xKTt9Zm9yKGNvbnN0IG4gaW4gaS5ob3Jpem9udGFsKXtjb25zdCBzPWkuaG9yaXpvbnRhbFtuXTtJfHwoJD1CYShzLnRleHQpLGY/Qj1NZChzKTpJPUlkKHUsaixlLGMsaCxwLHMsZCxsLmxheW91dC5nZXQoXCJ0ZXh0LXJvdGF0ZVwiKS5ldmFsdWF0ZShiLHt9LFMpLHkpKTtjb25zdCBvPTE9PT1zLnBvc2l0aW9uZWRMaW5lcy5sZW5ndGg7aWYoVis9U2QodCxyLGUscyxhLGwsZixiLHksayxpLnZlcnRpY2FsP0lwLmhvcml6b250YWw6SXAuaG9yaXpvbnRhbE9ubHksbz9PYmplY3Qua2V5cyhpLmhvcml6b250YWwpOltuXSxVLEYsdyxBLFMpLG8pYnJlYWt9aS52ZXJ0aWNhbCYmKEwrPVNkKHQscixlLGkudmVydGljYWwsYSxsLGYsYix5LGssSXAudmVydGljYWwsW1widmVydGljYWxcIl0sVSxSLHcsQSxTKSk7bGV0IEc9LTE7Y29uc3QgWj0odCxlKT0+dD9NYXRoLm1heCh0LGUpOmU7Rz1aKEIsRyksRz1aKEUsRyksRz1aKEMsRyk7Y29uc3QgSz1HPi0xPzE6MDt0LmdseXBoT2Zmc2V0QXJyYXkubGVuZ3RoPj1vZi5NQVhfR0xZUEhTJiZOKFwiVG9vIG1hbnkgZ2x5cGhzIGJlaW5nIHJlbmRlcmVkIGluIGEgdGlsZS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvbWFwYm94LWdsLWpzL2lzc3Vlcy8yOTA3XCIpLHZvaWQgMCE9PWIuc29ydEtleSYmdC5hZGRUb1NvcnRLZXlSYW5nZXModC5zeW1ib2xJbnN0YW5jZXMubGVuZ3RoLGIuc29ydEtleSksdC5zeW1ib2xJbnN0YW5jZXMuZW1wbGFjZUJhY2soai54LGoueSxqLnosZS54LGUueSxVLnJpZ2h0Pj0wP1UucmlnaHQ6LTEsVS5jZW50ZXI+PTA/VS5jZW50ZXI6LTEsVS5sZWZ0Pj0wP1UubGVmdDotMSxVLnZlcnRpY2FsPj0wP1UudmVydGljYWw6LTEsRixSLCQsdm9pZCAwIT09ST9JOnQuY29sbGlzaW9uQm94QXJyYXkubGVuZ3RoLHZvaWQgMCE9PUk/SSsxOnQuY29sbGlzaW9uQm94QXJyYXkubGVuZ3RoLHZvaWQgMCE9PVQ/VDp0LmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aCx2b2lkIDAhPT1UP1QrMTp0LmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aCx2b2lkIDAhPT1NP006dC5jb2xsaXNpb25Cb3hBcnJheS5sZW5ndGgsdm9pZCAwIT09TT9NKzE6dC5jb2xsaXNpb25Cb3hBcnJheS5sZW5ndGgsenx8dC5jb2xsaXNpb25Cb3hBcnJheS5sZW5ndGgsej96KzE6dC5jb2xsaXNpb25Cb3hBcnJheS5sZW5ndGgsYyxWLEwsUCxELEssMCxPLHEsRyk7fSh0LG8sZixhLHIsbixpLEMsdC5sYXllcnNbMF0sdC5jb2xsaXNpb25Cb3hBcnJheSxlLmluZGV4LGUuc291cmNlTGF5ZXJJbmRleCx0LmluZGV4LEEsSSxsLDAsUyxNLHksZSxzLHUsYyxoKTt9O2lmKFwibGluZVwiPT09VClmb3IoY29uc3QgaSBvZiBIcChlLmdlb21ldHJ5LDAsMCxhbyxhbykpe2NvbnN0IGU9WHAoaSxfLGssci52ZXJ0aWNhbHx8bSxuLHgsYix0Lm92ZXJzY2FsaW5nLGFvKTtmb3IoY29uc3QgciBvZiBlKW0mJlRkKHQsbS50ZXh0LHoscil8fFAoaSxyLGgpO31lbHNlIGlmKFwibGluZS1jZW50ZXJcIj09PVQpe2Zvcihjb25zdCB0IG9mIGUuZ2VvbWV0cnkpaWYodC5sZW5ndGg+MSl7Y29uc3QgZT1LcCh0LGssci52ZXJ0aWNhbHx8bSxuLHgsYik7ZSYmUCh0LGUsaCk7fX1lbHNlIGlmKFwiUG9seWdvblwiPT09ZS50eXBlKWZvcihjb25zdCB0IG9mIEFjKGUuZ2VvbWV0cnksMCkpe2NvbnN0IGU9cGQodCwxNik7UCh0WzBdLG5ldyBPcChlLngsZS55LDAsMCx2b2lkIDApLGgpO31lbHNlIGlmKFwiTGluZVN0cmluZ1wiPT09ZS50eXBlKWZvcihjb25zdCB0IG9mIGUuZ2VvbWV0cnkpUCh0LG5ldyBPcCh0WzBdLngsdFswXS55LDAsMCx2b2lkIDApLGgpO2Vsc2UgaWYoXCJQb2ludFwiPT09ZS50eXBlKWZvcihjb25zdCB0IG9mIGUuZ2VvbWV0cnkpZm9yKGNvbnN0IGUgb2YgdClQKFtlXSxuZXcgT3AoZS54LGUueSwwLDAsdm9pZCAwKSxoKTt9Y29uc3QgX2Q9MjU1LEFkPV9kKlVoO2Z1bmN0aW9uIFNkKHQsZSxyLG4saSxzLGEsbyxsLHUsYyxoLHAsZCxmLHksbSl7Y29uc3QgZz1mdW5jdGlvbih0LGUscixuLGkscyxhLG8pe2NvbnN0IGw9W107aWYoMD09PWUucG9zaXRpb25lZExpbmVzLmxlbmd0aClyZXR1cm4gbDtjb25zdCB1PW4ubGF5b3V0LmdldChcInRleHQtcm90YXRlXCIpLmV2YWx1YXRlKHMse30pKk1hdGguUEkvMTgwLGM9ZnVuY3Rpb24odCl7Y29uc3QgZT10WzBdLHI9dFsxXSxuPWUqcjtyZXR1cm4gbj4wP1tlLC1yXTpuPDA/Wy1lLHJdOjA9PT1lP1tyLGVdOltyLC1lXX0ocik7bGV0IGg9TWF0aC5hYnMoZS50b3AtZS5ib3R0b20pO2Zvcihjb25zdCB0IG9mIGUucG9zaXRpb25lZExpbmVzKWgtPXQubGluZU9mZnNldDtjb25zdCBwPWUucG9zaXRpb25lZExpbmVzLmxlbmd0aCxkPWgvcDtsZXQgZj1lLnRvcC1yWzFdO2ZvcihsZXQgdD0wO3Q8cDsrK3Qpe2NvbnN0IG49ZS5wb3NpdGlvbmVkTGluZXNbdF07Zj11ZChlLGQsZix0KTtmb3IoY29uc3QgdCBvZiBuLnBvc2l0aW9uZWRHbHlwaHMpe2lmKCF0LnJlY3QpY29udGludWU7Y29uc3Qgbj10LnJlY3R8fHt9O2xldCBzPXdwKzEsaD0hMCxwPTEsZD0wO2lmKHQuaW1hZ2VOYW1lKXtjb25zdCBlPWFbdC5pbWFnZU5hbWVdO2lmKCFlKWNvbnRpbnVlO2lmKGUuc2RmKXtOKFwiU0RGIGltYWdlcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBmb3JtYXR0ZWQgdGV4dCBhbmQgd2lsbCBiZSBpZ25vcmVkLlwiKTtjb250aW51ZX1oPSExLHA9ZS5waXhlbFJhdGlvLHM9QXAvcDt9Y29uc3QgeT0oaXx8bykmJnQudmVydGljYWwsbT10Lm1ldHJpY3MuYWR2YW5jZSp0LnNjYWxlLzIsZz10Lm1ldHJpY3Msdj10LnJlY3Q7aWYobnVsbD09PXYpY29udGludWU7byYmZS52ZXJ0aWNhbGl6YWJsZSYmKGQ9dC5pbWFnZU5hbWU/bS10Lm1ldHJpY3Mud2lkdGgqdC5zY2FsZS8yOjApO2NvbnN0IGI9aT9bdC54K20sdC55XTpbMCwwXTtsZXQgdz1bMCwwXSxfPVswLDBdLEE9ITE7aXx8KHk/KF89W3QueCttK2NbMF0sdC55K2NbMV0tZF0sQT0hMCk6dz1bdC54K20rclswXSx0LnkrclsxXS1kXSk7Y29uc3QgUz12LncqdC5zY2FsZS8ocCoodC5sb2NhbEdseXBoP3RkOjEpKSxrPXYuaCp0LnNjYWxlLyhwKih0LmxvY2FsR2x5cGg/dGQ6MSkpO2xldCBJLE0sVCx6O2lmKHkpe2NvbnN0IGU9dC55LWYscj1uZXcgeCgtbSxtLWUpLG49LU1hdGguUEkvMixpPW5ldyB4KC4uLl8pO0k9bmV3IHgoLW0rd1swXSx3WzFdKSxJLl9yb3RhdGVBcm91bmQobixyKS5fYWRkKGkpLEkueCs9LWUrbSxJLnktPShnLmxlZnQtcykqdC5zY2FsZTtjb25zdCBhPXQuaW1hZ2VOYW1lP2cuYWR2YW5jZSp0LnNjYWxlOlJoKnQuc2NhbGUsbz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2x5cGgpO1poKG8pP0kueCs9KDEtcykqdC5zY2FsZTpLaChvKT9JLngrPWEtZy5oZWlnaHQqdC5zY2FsZSsoLXMtMSkqdC5zY2FsZTpJLngrPXQuaW1hZ2VOYW1lfHxnLndpZHRoKzIqcz09PXYudyYmZy5oZWlnaHQrMipzPT09di5oPyhhLWspLzI6KGEtKGcuaGVpZ2h0KzIqcykqdC5zY2FsZSkvMixNPW5ldyB4KEkueCxJLnktUyksVD1uZXcgeChJLngrayxJLnkpLHo9bmV3IHgoSS54K2ssSS55LVMpO31lbHNlIHtjb25zdCBlPShnLmxlZnQtcykqdC5zY2FsZS1tK3dbMF0scj0oLWcudG9wLXMpKnQuc2NhbGUrd1sxXSxuPWUrUyxpPXIraztJPW5ldyB4KGUsciksTT1uZXcgeChuLHIpLFQ9bmV3IHgoZSxpKSx6PW5ldyB4KG4saSk7fWlmKHUpe2xldCB0O3Q9aT9uZXcgeCgwLDApOkE/bmV3IHgoY1swXSxjWzFdKTpuZXcgeChyWzBdLHJbMV0pLEkuX3JvdGF0ZUFyb3VuZCh1LHQpLE0uX3JvdGF0ZUFyb3VuZCh1LHQpLFQuX3JvdGF0ZUFyb3VuZCh1LHQpLHouX3JvdGF0ZUFyb3VuZCh1LHQpO31jb25zdCBCPW5ldyB4KDAsMCksRT1uZXcgeCgwLDApO2wucHVzaCh7dGw6SSx0cjpNLGJsOlQsYnI6eix0ZXg6bix3cml0aW5nTW9kZTplLndyaXRpbmdNb2RlLGdseXBoT2Zmc2V0OmIsc2VjdGlvbkluZGV4OnQuc2VjdGlvbkluZGV4LGlzU0RGOmgscGl4ZWxPZmZzZXRUTDpCLHBpeGVsT2Zmc2V0QlI6RSxtaW5Gb250U2NhbGVYOjAsbWluRm9udFNjYWxlWTowfSk7fX1yZXR1cm4gbH0oMCxuLGwscyxhLG8saSx0LmFsbG93VmVydGljYWxQbGFjZW1lbnQpLHY9dC50ZXh0U2l6ZURhdGE7bGV0IGI9bnVsbDtcInNvdXJjZVwiPT09di5raW5kPyhiPVtVaCpzLmxheW91dC5nZXQoXCJ0ZXh0LXNpemVcIikuZXZhbHVhdGUobyx7fSxtKV0sYlswXT5BZCYmTihgJHt0LmxheWVySWRzWzBdfTogVmFsdWUgZm9yIFwidGV4dC1zaXplXCIgaXMgPj0gJHtfZH0uIFJlZHVjZSB5b3VyIFwidGV4dC1zaXplXCIuYCkpOlwiY29tcG9zaXRlXCI9PT12LmtpbmQmJihiPVtVaCpmLmNvbXBvc2l0ZVRleHRTaXplc1swXS5ldmFsdWF0ZShvLHt9LG0pLFVoKmYuY29tcG9zaXRlVGV4dFNpemVzWzFdLmV2YWx1YXRlKG8se30sbSldLChiWzBdPkFkfHxiWzFdPkFkKSYmTihgJHt0LmxheWVySWRzWzBdfTogVmFsdWUgZm9yIFwidGV4dC1zaXplXCIgaXMgPj0gJHtfZH0uIFJlZHVjZSB5b3VyIFwidGV4dC1zaXplXCIuYCkpLHQuYWRkU3ltYm9scyh0LnRleHQsZyxiLGwsYSxvLGMsZSxyLHUubGluZVN0YXJ0SW5kZXgsdS5saW5lTGVuZ3RoLGQseSxtKTtmb3IoY29uc3QgZSBvZiBoKXBbZV09dC50ZXh0LnBsYWNlZFN5bWJvbEFycmF5Lmxlbmd0aC0xO3JldHVybiA0KmcubGVuZ3RofWZ1bmN0aW9uIGtkKHQpe2Zvcihjb25zdCBlIGluIHQpcmV0dXJuIHRbZV07cmV0dXJuIG51bGx9ZnVuY3Rpb24gSWQodCxlLHIsbixpLHMsYSxvLGwsdSl7bGV0IGM9YS50b3AsaD1hLmJvdHRvbSxwPWEubGVmdCxkPWEucmlnaHQ7Y29uc3QgZj1hLmNvbGxpc2lvblBhZGRpbmc7aWYoZiYmKHAtPWZbMF0sYy09ZlsxXSxkKz1mWzJdLGgrPWZbM10pLGwpe2NvbnN0IHQ9bmV3IHgocCxjKSxlPW5ldyB4KGQsYykscj1uZXcgeChwLGgpLG49bmV3IHgoZCxoKSxpPXcobCk7bGV0IHM9bmV3IHgoMCwwKTt1JiYocz1uZXcgeCh1WzBdLHVbMV0pKSx0Ll9yb3RhdGVBcm91bmQoaSxzKSxlLl9yb3RhdGVBcm91bmQoaSxzKSxyLl9yb3RhdGVBcm91bmQoaSxzKSxuLl9yb3RhdGVBcm91bmQoaSxzKSxwPU1hdGgubWluKHQueCxlLngsci54LG4ueCksZD1NYXRoLm1heCh0LngsZS54LHIueCxuLngpLGM9TWF0aC5taW4odC55LGUueSxyLnksbi55KSxoPU1hdGgubWF4KHQueSxlLnksci55LG4ueSk7fXJldHVybiB0LmVtcGxhY2VCYWNrKGUueCxlLnksZS56LHIueCxyLnkscCxjLGQsaCxvLG4saSxzKSx0Lmxlbmd0aC0xfWZ1bmN0aW9uIE1kKHQpe3QuY29sbGlzaW9uUGFkZGluZyYmKHQudG9wLT10LmNvbGxpc2lvblBhZGRpbmdbMV0sdC5ib3R0b20rPXQuY29sbGlzaW9uUGFkZGluZ1szXSk7Y29uc3QgZT10LmJvdHRvbS10LnRvcDtyZXR1cm4gZT4wP01hdGgubWF4KDEwLGUpOm51bGx9ZnVuY3Rpb24gVGQodCxlLHIsbil7Y29uc3QgaT10LmNvbXBhcmVUZXh0O2lmKGUgaW4gaSl7Y29uc3QgdD1pW2VdO2ZvcihsZXQgZT10Lmxlbmd0aC0xO2U+PTA7ZS0tKWlmKG4uZGlzdCh0W2VdKTxyKXJldHVybiAhMH1lbHNlIGlbZV09W107cmV0dXJuIGlbZV0ucHVzaChuKSwhMX1mdW5jdGlvbiB6ZCh0LGUpe2NvbnN0IHI9dC5mb3ZBYm92ZUNlbnRlcixuPXQuZWxldmF0aW9uP3QuZWxldmF0aW9uLmdldE1pbkVsZXZhdGlvbkJlbG93TVNMKCkqZTowLGk9KHQuX2NhbWVyYS5wb3NpdGlvblsyXSp0LndvcmxkU2l6ZS1uKS9NYXRoLmNvcyh0Ll9waXRjaCkscz1NYXRoLnNpbihyKSppL01hdGguc2luKE1hdGgubWF4KE1hdGguUEkvMi10Ll9waXRjaC1yLC4wMSkpLGE9TWF0aC5zaW4odC5fcGl0Y2gpKnMraTtyZXR1cm4gTWF0aC5taW4oMS4wMSphLGkqKDEvdC5faG9yaXpvblNoaWZ0KSl9ZnVuY3Rpb24gQmQodCxlKXtpZighZS5pc1JlcHJvamVjdGVkSW5UaWxlU3BhY2UpcmV0dXJuIHtzY2FsZToxPDx0LnoseDp0LngseTp0LnkseDI6dC54KzEseTI6dC55KzEscHJvamVjdGlvbjplfTtjb25zdCByPU1hdGgucG93KDIsLXQueiksbj10LngqcixpPSh0LngrMSkqcixzPXQueSpyLGE9KHQueSsxKSpyLG89S2wobiksbD1LbChpKSx1PVhsKHMpLGM9WGwoYSksaD1lLnByb2plY3Qobyx1KSxwPWUucHJvamVjdChsLHUpLGQ9ZS5wcm9qZWN0KGwsYyksZj1lLnByb2plY3QobyxjKTtsZXQgeT1NYXRoLm1pbihoLngscC54LGQueCxmLngpLG09TWF0aC5taW4oaC55LHAueSxkLnksZi55KSxnPU1hdGgubWF4KGgueCxwLngsZC54LGYueCkseD1NYXRoLm1heChoLnkscC55LGQueSxmLnkpO2NvbnN0IHY9ci8xNjtmdW5jdGlvbiBiKHQscixuLGkscyxhKXtjb25zdCBvPShuK3MpLzIsbD0oaSthKS8yLHU9ZS5wcm9qZWN0KEtsKG8pLFhsKGwpKSxjPU1hdGgubWF4KDAseS11LngsbS11LnksdS54LWcsdS55LXgpO3k9TWF0aC5taW4oeSx1LngpLGc9TWF0aC5tYXgoZyx1LngpLG09TWF0aC5taW4obSx1LnkpLHg9TWF0aC5tYXgoeCx1LnkpLGM+diYmKGIodCx1LG4saSxvLGwpLGIodSxyLG8sbCxzLGEpKTt9YihoLHAsbixzLGkscyksYihwLGQsaSxzLGksYSksYihkLGYsaSxhLG4sYSksYihmLGgsbixhLG4scykseS09dixtLT12LGcrPXYseCs9djtjb25zdCB3PTEvTWF0aC5tYXgoZy15LHgtbSk7cmV0dXJuIHtzY2FsZTp3LHg6eSp3LHk6bSp3LHgyOmcqdyx5Mjp4KncscHJvamVjdGlvbjplfX1jb25zdCBFZD1wbyhuZXcgRmxvYXQzMkFycmF5KDE2KSk7Y2xhc3MgQ2R7Y29uc3RydWN0b3IodCl7dGhpcy5zcGVjPXQsdGhpcy5uYW1lPXQubmFtZSx0aGlzLndyYXA9ITEsdGhpcy5yZXF1aXJlc0RyYXBpbmc9ITEsdGhpcy5zdXBwb3J0c1dvcmxkQ29waWVzPSExLHRoaXMuc3VwcG9ydHNUZXJyYWluPSExLHRoaXMuc3VwcG9ydHNGb2c9ITEsdGhpcy5zdXBwb3J0c0ZyZWVDYW1lcmE9ITEsdGhpcy56QXhpc1VuaXQ9XCJtZXRlcnNcIix0aGlzLmlzUmVwcm9qZWN0ZWRJblRpbGVTcGFjZT0hMCx0aGlzLnVuc3VwcG9ydGVkTGF5ZXJzPVtcImN1c3RvbVwiXSx0aGlzLmNlbnRlcj1bMCwwXSx0aGlzLnJhbmdlPVszLjUsN107fXByb2plY3QodCxlKXtyZXR1cm4ge3g6MCx5OjAsejowfX11bnByb2plY3QodCxlKXtyZXR1cm4gbmV3IE9sKDAsMCl9cHJvamVjdFRpbGVQb2ludCh0LGUscil7cmV0dXJuIHt4OnQseTplLHo6MH19bG9jYXRpb25Qb2ludCh0LGUscj0hMCl7cmV0dXJuIHQuX2Nvb3JkaW5hdGVQb2ludCh0LmxvY2F0aW9uQ29vcmRpbmF0ZShlKSxyKX1waXhlbHNQZXJNZXRlcih0LGUpe3JldHVybiBabCgxLHQpKmV9cGl4ZWxTcGFjZUNvbnZlcnNpb24odCxlLHIpe3JldHVybiAxfWZhcnRoZXN0UGl4ZWxEaXN0YW5jZSh0KXtyZXR1cm4gemQodCx0LnBpeGVsc1Blck1ldGVyKX1wb2ludENvb3JkaW5hdGUodCxlLHIsbil7Y29uc3QgaT10Lmhvcml6b25MaW5lRnJvbVRvcCghMSkscz1uZXcgeChlLE1hdGgubWF4KGkscikpO3JldHVybiB0LnJheUludGVyc2VjdGlvbkNvb3JkaW5hdGUodC5wb2ludFJheUludGVyc2VjdGlvbihzLG4pKX1wb2ludENvb3JkaW5hdGUzRCh0LGUscil7Y29uc3Qgbj1uZXcgeChlLHIpO2lmKHQuZWxldmF0aW9uKXJldHVybiB0LmVsZXZhdGlvbi5wb2ludENvb3JkaW5hdGUobik7e2NvbnN0IGU9dGhpcy5wb2ludENvb3JkaW5hdGUodCxuLngsbi55LDApO3JldHVybiBbZS54LGUueSxlLnpdfX1pc1BvaW50QWJvdmVIb3Jpem9uKHQsZSl7aWYodC5lbGV2YXRpb24pcmV0dXJuICF0aGlzLnBvaW50Q29vcmRpbmF0ZTNEKHQsZS54LGUueSk7Y29uc3Qgcj10Lmhvcml6b25MaW5lRnJvbVRvcCgpO3JldHVybiBlLnk8cn1jcmVhdGVJbnZlcnNpb25NYXRyaXgodCxlKXtyZXR1cm4gRWR9Y3JlYXRlVGlsZU1hdHJpeCh0LGUscil7bGV0IG4saSxzO2NvbnN0IGE9ci5jYW5vbmljYWwsbz1wbyhuZXcgRmxvYXQ2NEFycmF5KDE2KSk7aWYodGhpcy5pc1JlcHJvamVjdGVkSW5UaWxlU3BhY2Upe2NvbnN0IGw9QmQoYSx0aGlzKTtuPTEsaT1sLngrci53cmFwKmwuc2NhbGUscz1sLnksZ28obyxvLFtuL2wuc2NhbGUsbi9sLnNjYWxlLHQucGl4ZWxzUGVyTWV0ZXIvZV0pO31lbHNlIG49ZS90Lnpvb21TY2FsZShhLnopLGk9KGEueCtNYXRoLnBvdygyLGEueikqci53cmFwKSpuLHM9YS55Km47cmV0dXJuIG1vKG8sbyxbaSxzLDBdKSxnbyhvLG8sW24vYW8sbi9hbywxXSksb311cFZlY3Rvcih0LGUscil7cmV0dXJuIFswLDAsMV19dXBWZWN0b3JTY2FsZSh0LGUscil7cmV0dXJuIHttZXRlcnNUb1RpbGU6MX19fWNsYXNzIFBkIGV4dGVuZHMgQ2R7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5yYW5nZT1bNCw3XSx0aGlzLmNlbnRlcj10LmNlbnRlcnx8Wy05NiwzNy41XTtjb25zdFtlLHJdPXRoaXMucGFyYWxsZWxzPXQucGFyYWxsZWxzfHxbMjkuNSw0NS41XSxuPU1hdGguc2luKHcoZSkpO3RoaXMubj0obitNYXRoLnNpbih3KHIpKSkvMix0aGlzLmM9MStuKigyKnRoaXMubi1uKSx0aGlzLnIwPU1hdGguc3FydCh0aGlzLmMpL3RoaXMubjt9cHJvamVjdCh0LGUpe2NvbnN0e246cixjOm4scjA6aX09dGhpcyxzPXcodC10aGlzLmNlbnRlclswXSksYT13KGUpLG89TWF0aC5zcXJ0KG4tMipyKk1hdGguc2luKGEpKS9yO3JldHVybiB7eDpvKk1hdGguc2luKHMqcikseTpvKk1hdGguY29zKHMqciktaSx6OjB9fXVucHJvamVjdCh0LGUpe2NvbnN0e246cixjOm4scjA6aX09dGhpcyxzPWkrZTtsZXQgYT1NYXRoLmF0YW4yKHQsTWF0aC5hYnMocykpKk1hdGguc2lnbihzKTtzKnI8MCYmKGEtPU1hdGguUEkqTWF0aC5zaWduKHQpKk1hdGguc2lnbihzKSk7Y29uc3Qgbz13KHRoaXMuY2VudGVyWzBdKSpyO2E9eihhLC1NYXRoLlBJLW8sTWF0aC5QSS1vKTtjb25zdCBsPU0oXyhhL3IpK3RoaXMuY2VudGVyWzBdLC0xODAsMTgwKSx1PU1hdGguYXNpbihNKChuLSh0KnQrcypzKSpyKnIpLygyKnIpLC0xLDEpKSxjPU0oXyh1KSwtSGwsSGwpO3JldHVybiBuZXcgT2wobCxjKX19Y29uc3QgRGQ9MS4zNDAyNjQsVmQ9LS4wODExMDYsTGQ9ODkzZS02LEZkPS4wMDM3OTYsUmQ9TWF0aC5zcXJ0KDMpLzI7Y2xhc3MgVWQgZXh0ZW5kcyBDZHtwcm9qZWN0KHQsZSl7ZT1lLzE4MCpNYXRoLlBJLHQ9dC8xODAqTWF0aC5QSTtjb25zdCByPU1hdGguYXNpbihSZCpNYXRoLnNpbihlKSksbj1yKnIsaT1uKm4qbjtyZXR1cm4ge3g6LjUqKHQqTWF0aC5jb3MocikvKFJkKihEZCszKlZkKm4raSooNypMZCs5KkZkKm4pKSkvTWF0aC5QSSsuNSkseToxLS41KihyKihEZCtWZCpuK2kqKExkK0ZkKm4pKS9NYXRoLlBJKzEpLHo6MH19dW5wcm9qZWN0KHQsZSl7dD0oMip0LS41KSpNYXRoLlBJO2xldCByPWU9KDIqKDEtZSktMSkqTWF0aC5QSSxuPXIqcixpPW4qbipuO2ZvcihsZXQgdCxzLGEsbz0wO288MTImJihzPXIqKERkK1ZkKm4raSooTGQrRmQqbikpLWUsYT1EZCszKlZkKm4raSooNypMZCs5KkZkKm4pLHQ9cy9hLHI9TShyLXQsLU1hdGguUEkvMyxNYXRoLlBJLzMpLG49cipyLGk9bipuKm4sIShNYXRoLmFicyh0KTwxZS0xMikpOysrbyk7Y29uc3Qgcz1SZCp0KihEZCszKlZkKm4raSooNypMZCs5KkZkKm4pKS9NYXRoLmNvcyhyKSxhPU1hdGguYXNpbihNYXRoLnNpbihyKS9SZCksbz1NKDE4MCpzL01hdGguUEksLTE4MCwxODApLGw9TSgxODAqYS9NYXRoLlBJLC1IbCxIbCk7cmV0dXJuIG5ldyBPbChvLGwpfX1jbGFzcyAkZCBleHRlbmRzIENke2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMud3JhcD0hMCx0aGlzLnN1cHBvcnRzV29ybGRDb3BpZXM9ITA7fXByb2plY3QodCxlKXtyZXR1cm4ge3g6LjUrdC8zNjAseTouNS1lLzM2MCx6OjB9fXVucHJvamVjdCh0LGUpe2NvbnN0IHI9MzYwKih0LS41KSxuPU0oMzYwKiguNS1lKSwtSGwsSGwpO3JldHVybiBuZXcgT2wocixuKX19Y29uc3QgamQ9TWF0aC5QSS8yO2Z1bmN0aW9uIE9kKHQpe3JldHVybiBNYXRoLnRhbigoamQrdCkvMil9Y2xhc3MgcWQgZXh0ZW5kcyBDZHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLmNlbnRlcj10LmNlbnRlcnx8WzAsMzBdO2NvbnN0W2Uscl09dGhpcy5wYXJhbGxlbHM9dC5wYXJhbGxlbHN8fFszMCwzMF07bGV0IG49dyhlKSxpPXcocik7dGhpcy5zb3V0aGVybkNlbnRlcj1uK2k8MCx0aGlzLnNvdXRoZXJuQ2VudGVyJiYobj0tbixpPS1pKTtjb25zdCBzPU1hdGguY29zKG4pLGE9T2Qobik7dGhpcy5uPW49PT1pP01hdGguc2luKG4pOk1hdGgubG9nKHMvTWF0aC5jb3MoaSkpL01hdGgubG9nKE9kKGkpL2EpLHRoaXMuZj1zKk1hdGgucG93KE9kKG4pLHRoaXMubikvdGhpcy5uO31wcm9qZWN0KHQsZSl7ZT13KGUpLHRoaXMuc291dGhlcm5DZW50ZXImJihlPS1lKSx0PXcodC10aGlzLmNlbnRlclswXSk7Y29uc3Qgcj0xZS02LHtuOm4sZjppfT10aGlzO2k+MD9lPC1qZCtyJiYoZT0tamQrcik6ZT5qZC1yJiYoZT1qZC1yKTtjb25zdCBzPWkvTWF0aC5wb3coT2QoZSksbik7bGV0IGE9cypNYXRoLnNpbihuKnQpLG89aS1zKk1hdGguY29zKG4qdCk7cmV0dXJuIGE9LjUqKGEvTWF0aC5QSSsuNSksbz0uNSooby9NYXRoLlBJKy41KSx7eDphLHk6dGhpcy5zb3V0aGVybkNlbnRlcj9vOjEtbyx6OjB9fXVucHJvamVjdCh0LGUpe3Q9KDIqdC0uNSkqTWF0aC5QSSx0aGlzLnNvdXRoZXJuQ2VudGVyJiYoZT0xLWUpLGU9KDIqKDEtZSktLjUpKk1hdGguUEk7Y29uc3R7bjpyLGY6bn09dGhpcyxpPW4tZSxzPU1hdGguc2lnbihpKSxhPU1hdGguc2lnbihyKSpNYXRoLnNxcnQodCp0K2kqaSk7bGV0IG89TWF0aC5hdGFuMih0LE1hdGguYWJzKGkpKSpzO2kqcjwwJiYoby09TWF0aC5QSSpNYXRoLnNpZ24odCkqcyk7Y29uc3QgbD1NKF8oby9yKSt0aGlzLmNlbnRlclswXSwtMTgwLDE4MCksdT1NKF8oMipNYXRoLmF0YW4oTWF0aC5wb3cobi9hLDEvcikpLWpkKSwtSGwsSGwpO3JldHVybiBuZXcgT2wobCx0aGlzLnNvdXRoZXJuQ2VudGVyPy11OnUpfX1jbGFzcyBOZCBleHRlbmRzIENke2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMud3JhcD0hMCx0aGlzLnN1cHBvcnRzV29ybGRDb3BpZXM9ITAsdGhpcy5zdXBwb3J0c1RlcnJhaW49ITAsdGhpcy5zdXBwb3J0c0ZvZz0hMCx0aGlzLnN1cHBvcnRzRnJlZUNhbWVyYT0hMCx0aGlzLmlzUmVwcm9qZWN0ZWRJblRpbGVTcGFjZT0hMSx0aGlzLnVuc3VwcG9ydGVkTGF5ZXJzPVtdLHRoaXMucmFuZ2U9bnVsbDt9cHJvamVjdCh0LGUpe3JldHVybiB7eDpObCh0KSx5OkdsKGUpLHo6MH19dW5wcm9qZWN0KHQsZSl7Y29uc3Qgcj1LbCh0KSxuPVhsKGUpO3JldHVybiBuZXcgT2wocixuKX19Y29uc3QgR2Q9dyhIbCk7Y2xhc3MgWmQgZXh0ZW5kcyBDZHtwcm9qZWN0KHQsZSl7Y29uc3Qgcj0oZT13KGUpKSplLG49cipyO3JldHVybiB7eDouNSooKHQ9dyh0KSkqKC44NzA3LS4xMzE5NzkqcituKihuKiguMDAzOTcxKnItLjAwMTUyOSpuKS0uMDEzNzkxKSkvTWF0aC5QSSsuNSkseToxLS41KihlKigxLjAwNzIyNityKiguMDE1MDg1K24qKC4wMjg4NzQqci0uMDQ0NDc1LS4wMDU5MTYqbikpKS9NYXRoLlBJKzEpLHo6MH19dW5wcm9qZWN0KHQsZSl7dD0oMip0LS41KSpNYXRoLlBJO2xldCByPWU9KDIqKDEtZSktMSkqTWF0aC5QSSxuPTI1LGk9MCxzPXIqcjtkb3tzPXIqcjtjb25zdCB0PXMqcztpPShyKigxLjAwNzIyNitzKiguMDE1MDg1K3QqKC4wMjg4NzQqcy0uMDQ0NDc1LS4wMDU5MTYqdCkpKS1lKS8oMS4wMDcyMjYrcyooLjA0NTI1NSt0KiguMjU5ODY2KnMtLjMxMTMyNS0uMDA1OTE2KjExKnQpKSkscj1NKHItaSwtR2QsR2QpO313aGlsZShNYXRoLmFicyhpKT4xZS02JiYtLW4+MCk7cz1yKnI7Y29uc3QgYT1NKF8odC8oLjg3MDcrcyoocyoocypzKnMqKC4wMDM5NzEtLjAwMTUyOSpzKS0uMDEzNzkxKS0uMTMxOTc5KSkpLC0xODAsMTgwKSxvPV8ocik7cmV0dXJuIG5ldyBPbChhLG8pfX1jb25zdCBLZD13KEhsKTtjbGFzcyBYZCBleHRlbmRzIENke3Byb2plY3QodCxlKXtlPXcoZSksdD13KHQpO2NvbnN0IHI9TWF0aC5jb3MoZSksbj0yL01hdGguUEksaT1NYXRoLmFjb3MocipNYXRoLmNvcyh0LzIpKSxzPU1hdGguc2luKGkpL2ksYT0uNSoodCpuKzIqcipNYXRoLnNpbih0LzIpL3MpfHwwLG89LjUqKGUrTWF0aC5zaW4oZSkvcyl8fDA7cmV0dXJuIHt4Oi41KihhL01hdGguUEkrLjUpLHk6MS0uNSooby9NYXRoLlBJKzEpLHo6MH19dW5wcm9qZWN0KHQsZSl7bGV0IHI9dD0oMip0LS41KSpNYXRoLlBJLG49ZT0oMiooMS1lKS0xKSpNYXRoLlBJLGk9MjU7Y29uc3Qgcz0xZS02O2xldCBhPTAsbz0wO2Rve2NvbnN0IGk9TWF0aC5jb3Mobikscz1NYXRoLnNpbihuKSxsPTIqcyppLHU9cypzLGM9aSppLGg9TWF0aC5jb3Moci8yKSxwPU1hdGguc2luKHIvMiksZD0yKmgqcCxmPXAqcCx5PTEtYypoKmgsbT15PzEveTowLGc9eT9NYXRoLmFjb3MoaSpoKSpNYXRoLnNxcnQoMS95KTowLHg9LjUqKDIqZyppKnArMipyL01hdGguUEkpLXQsdj0uNSooZypzK24pLWUsYj0uNSptKihjKmYrZyppKmgqdSkrMS9NYXRoLlBJLHc9bSooZCpsLzQtZypzKnApLF89LjEyNSptKihsKnAtZypzKmMqZCksQT0uNSptKih1KmgrZypmKmkpKy41LFM9dypfLUEqYjthPSh2KncteCpBKS9TLG89KHgqXy12KmIpL1Mscj1NKHItYSwtTWF0aC5QSSxNYXRoLlBJKSxuPU0obi1vLC1LZCxLZCk7fXdoaWxlKChNYXRoLmFicyhhKT5zfHxNYXRoLmFicyhvKT5zKSYmLS1pPjApO3JldHVybiBuZXcgT2woXyhyKSxfKG4pKX19Y2xhc3MgSmQgZXh0ZW5kcyBDZHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLmNlbnRlcj10LmNlbnRlcnx8WzAsMF0sdGhpcy5wYXJhbGxlbHM9dC5wYXJhbGxlbHN8fFswLDBdLHRoaXMuY29zUGhpPU1hdGgubWF4KC4wMSxNYXRoLmNvcyh3KHRoaXMucGFyYWxsZWxzWzBdKSkpLHRoaXMuc2NhbGU9MS8oMipNYXRoLm1heChNYXRoLlBJKnRoaXMuY29zUGhpLDEvdGhpcy5jb3NQaGkpKSx0aGlzLndyYXA9ITAsdGhpcy5zdXBwb3J0c1dvcmxkQ29waWVzPSEwO31wcm9qZWN0KHQsZSl7Y29uc3R7c2NhbGU6cixjb3NQaGk6bn09dGhpcztyZXR1cm4ge3g6dyh0KSpuKnIrLjUseTotTWF0aC5zaW4odyhlKSkvbipyKy41LHo6MH19dW5wcm9qZWN0KHQsZSl7Y29uc3R7c2NhbGU6cixjb3NQaGk6bn09dGhpcyxpPS0oZS0uNSkvcixzPU0oXygodC0uNSkvcikvbiwtMTgwLDE4MCksYT1NYXRoLmFzaW4oTShpKm4sLTEsMSkpLG89TShfKGEpLC1IbCxIbCk7cmV0dXJuIG5ldyBPbChzLG8pfX1jbGFzcyBIZCBleHRlbmRzIE5ke2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMucmVxdWlyZXNEcmFwaW5nPSEwLHRoaXMuc3VwcG9ydHNXb3JsZENvcGllcz0hMSx0aGlzLnN1cHBvcnRzRm9nPSEwLHRoaXMuekF4aXNVbml0PVwicGl4ZWxzXCIsdGhpcy51bnN1cHBvcnRlZExheWVycz1bXCJkZWJ1Z1wiXSx0aGlzLnJhbmdlPVszLDVdO31wcm9qZWN0VGlsZVBvaW50KHQsZSxyKXtjb25zdCBuPU1sKHQsZSxyKTtyZXR1cm4gRm8obixuLEJsKHhsKHIpKSkse3g6blswXSx5Om5bMV0sejpuWzJdfX1sb2NhdGlvblBvaW50KHQsZSl7Y29uc3Qgcj1JbChlLmxhdCxlLmxuZyksbj1EbyhbXSxyKSxpPXQuZWxldmF0aW9uP3QuZWxldmF0aW9uLmdldEF0UG9pbnRPclplcm8odC5sb2NhdGlvbkNvb3JkaW5hdGUoZSksdC5fY2VudGVyQWx0aXR1ZGUpOnQuX2NlbnRlckFsdGl0dWRlO1BvKHIscixuLFpsKDEsMCkqYW8qaSk7Y29uc3Qgcz1wbyhuZXcgRmxvYXQ2NEFycmF5KDE2KSk7cmV0dXJuIHlvKHMsdC5waXhlbE1hdHJpeCx0Lmdsb2JlTWF0cml4KSxGbyhyLHIscyksbmV3IHgoclswXSxyWzFdKX1waXhlbHNQZXJNZXRlcih0LGUpe3JldHVybiBabCgxLDApKmV9cGl4ZWxTcGFjZUNvbnZlcnNpb24odCxlLHIpe2NvbnN0IG49WmwoMSx0KSplLGk9RXIoWmwoMSw0NSkqZSxuLHIpO3JldHVybiB0aGlzLnBpeGVsc1Blck1ldGVyKHQsZSkvaX1jcmVhdGVUaWxlTWF0cml4KHQsZSxyKXtjb25zdCBuPUVsKHhsKHIuY2Fub25pY2FsKSk7cmV0dXJuIHlvKG5ldyBGbG9hdDY0QXJyYXkoMTYpLHQuZ2xvYmVNYXRyaXgsbil9Y3JlYXRlSW52ZXJzaW9uTWF0cml4KHQsZSl7Y29uc3R7Y2VudGVyOnJ9PXQsbj1CbCh4bChlKSk7cmV0dXJuIHZvKG4sbix3KHIubG5nKSkseG8obixuLHcoci5sYXQpKSxnbyhuLG4sW3QuX3BpeGVsc1Blck1lcmNhdG9yUGl4ZWwsdC5fcGl4ZWxzUGVyTWVyY2F0b3JQaXhlbCwxXSksRmxvYXQzMkFycmF5LmZyb20obil9cG9pbnRDb29yZGluYXRlKHQsZSxyLG4pe3JldHVybiB5bCh0LGUsciwhMCl8fG5ldyBXbCgwLDApfXBvaW50Q29vcmRpbmF0ZTNEKHQsZSxyKXtjb25zdCBuPXRoaXMucG9pbnRDb29yZGluYXRlKHQsZSxyLDApO3JldHVybiBbbi54LG4ueSxuLnpdfWlzUG9pbnRBYm92ZUhvcml6b24odCxlKXtyZXR1cm4gIXlsKHQsZS54LGUueSwhMSl9ZmFydGhlc3RQaXhlbERpc3RhbmNlKHQpe2NvbnN0IGU9ZnVuY3Rpb24odCxlKXtjb25zdCByPXQuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSxuPXQuX2NlbnRlckFsdGl0dWRlKmUsaT10Ll9jYW1lcmEscz10Ll9jYW1lcmEuZm9yd2FyZCgpLGE9TW8oW10sQ28oW10scywtciksWzAsMCxuXSksbz10LndvcmxkU2l6ZS8oMipNYXRoLlBJKSxsPVswLDAsLW9dLHU9dC53aWR0aC90LmhlaWdodCxjPU1hdGgudGFuKHQuZm92QWJvdmVDZW50ZXIpLGg9Q28oW10saS51cCgpLGMpLHA9Q28oW10saS5yaWdodCgpLGMqdSksZD1EbyhbXSxNbyhbXSxNbyhbXSxzLGgpLHApKSxmPVtdO2xldCB5O2lmKG5ldyBlbChhLGQpLmNsb3Nlc3RQb2ludE9uU3BoZXJlKGwsbyxmKSl7Y29uc3QgZT1NbyhbXSxmLGwpLHI9JG8oW10sZSxhKTt5PU1hdGguY29zKHQuZm92QWJvdmVDZW50ZXIpKmtvKHIpO31lbHNlIHtjb25zdCB0PSRvKFtdLGEsbCksZT0kbyhbXSxsLGEpO0RvKGUsZSk7Y29uc3Qgcj1rbyh0KS1vO3k9TWF0aC5zcXJ0KHIqKHIrMipvKSk7Y29uc3Qgbj1NYXRoLmFjb3MoeS8obytyKSktTWF0aC5hY29zKFZvKHMsZSkpO3kqPU1hdGguY29zKG4pO31yZXR1cm4gMS4wMSp5fSh0LHRoaXMucGl4ZWxzUGVyTWV0ZXIodC5jZW50ZXIubGF0LHQud29ybGRTaXplKSkscj1QbCh0Lnpvb20pO2lmKHI+MCl7Y29uc3Qgbj16ZCh0LFpsKDEsdC5jZW50ZXIubGF0KSp0LndvcmxkU2l6ZSksaT10LndvcmxkU2l6ZS8oMipNYXRoLlBJKSxzPU1hdGgubWF4KHQud2lkdGgsdC5oZWlnaHQpL3Qud29ybGRTaXplKk1hdGguUEk7cmV0dXJuIEVyKGUsbitpKigxLU1hdGguY29zKHMpKSxNYXRoLnBvdyhyLDEwKSl9cmV0dXJuIGV9dXBWZWN0b3IodCxlLHIpe3JldHVybiBNbChlLHIsdCwxKX11cFZlY3RvclNjYWxlKHQpe3JldHVybiB7bWV0ZXJzVG9UaWxlOmZsKFRsKHhsKHQpKSl9fX1mdW5jdGlvbiBZZCh0KXtjb25zdCBlPXQucGFyYWxsZWxzLHI9ISFlJiZNYXRoLmFicyhlWzBdK2VbMV0pPC4wMTtzd2l0Y2godC5uYW1lKXtjYXNlXCJtZXJjYXRvclwiOnJldHVybiBuZXcgTmQodCk7Y2FzZVwiZXF1aXJlY3Rhbmd1bGFyXCI6cmV0dXJuIG5ldyAkZCh0KTtjYXNlXCJuYXR1cmFsRWFydGhcIjpyZXR1cm4gbmV3IFpkKHQpO2Nhc2VcImVxdWFsRWFydGhcIjpyZXR1cm4gbmV3IFVkKHQpO2Nhc2VcIndpbmtlbFRyaXBlbFwiOnJldHVybiBuZXcgWGQodCk7Y2FzZVwiYWxiZXJzXCI6cmV0dXJuIHI/bmV3IEpkKHQpOm5ldyBQZCh0KTtjYXNlXCJsYW1iZXJ0Q29uZm9ybWFsQ29uaWNcIjpyZXR1cm4gcj9uZXcgSmQodCk6bmV3IHFkKHQpO2Nhc2VcImdsb2JlXCI6cmV0dXJuIG5ldyBIZCh0KX10aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHJvamVjdGlvbiBuYW1lOiAke3QubmFtZX1gKX1jb25zdCBXZD1LYy50eXBlcyxRZD1be25hbWU6XCJhX2ZhZGVfb3BhY2l0eVwiLGNvbXBvbmVudHM6MSx0eXBlOlwiVWludDhcIixvZmZzZXQ6MH1dO2Z1bmN0aW9uIHRmKHQsZSxyLG4saSxzLGEsbyxsLHUsYyxoLHApe2NvbnN0IGQ9bz9NYXRoLm1pbihBZCxNYXRoLnJvdW5kKG9bMF0pKTowLGY9bz9NYXRoLm1pbihBZCxNYXRoLnJvdW5kKG9bMV0pKTowO3QuZW1wbGFjZUJhY2soZSxyLE1hdGgucm91bmQoMzIqbiksTWF0aC5yb3VuZCgzMippKSxzLGEsKGQ8PDEpKyhsPzE6MCksZiwxNip1LDE2KmMsMjU2KmgsMjU2KnApO31mdW5jdGlvbiBlZih0LGUscixuLGkscyxhKXt0LmVtcGxhY2VCYWNrKGUscixuLGkscyxhKTt9ZnVuY3Rpb24gcmYodCxlLHIsbixpKXt0LmVtcGxhY2VCYWNrKGUscixuLGkpLHQuZW1wbGFjZUJhY2soZSxyLG4saSksdC5lbXBsYWNlQmFjayhlLHIsbixpKSx0LmVtcGxhY2VCYWNrKGUscixuLGkpO31mdW5jdGlvbiBuZih0KXtmb3IoY29uc3QgZSBvZiB0LnNlY3Rpb25zKWlmKGxzKGUudGV4dCkpcmV0dXJuICEwO3JldHVybiAhMX1jbGFzcyBzZntjb25zdHJ1Y3Rvcih0KXt0aGlzLmxheW91dFZlcnRleEFycmF5PW5ldyBYcyx0aGlzLmluZGV4QXJyYXk9bmV3IHJhLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zPXQsdGhpcy5zZWdtZW50cz1uZXcgc28sdGhpcy5keW5hbWljTGF5b3V0VmVydGV4QXJyYXk9bmV3IE5zLHRoaXMub3BhY2l0eVZlcnRleEFycmF5PW5ldyBIcyx0aGlzLnBsYWNlZFN5bWJvbEFycmF5PW5ldyBmYSx0aGlzLmdsb2JlRXh0VmVydGV4QXJyYXk9bmV3IEpzO31pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLmxheW91dFZlcnRleEFycmF5Lmxlbmd0aCYmMD09PXRoaXMuaW5kZXhBcnJheS5sZW5ndGgmJjA9PT10aGlzLmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGgmJjA9PT10aGlzLm9wYWNpdHlWZXJ0ZXhBcnJheS5sZW5ndGh9dXBsb2FkKHQsZSxyLG4pe3RoaXMuaXNFbXB0eSgpfHwociYmKHRoaXMubGF5b3V0VmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMubGF5b3V0VmVydGV4QXJyYXksRWgubWVtYmVycyksdGhpcy5pbmRleEJ1ZmZlcj10LmNyZWF0ZUluZGV4QnVmZmVyKHRoaXMuaW5kZXhBcnJheSxlKSx0aGlzLmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5keW5hbWljTGF5b3V0VmVydGV4QXJyYXksUGgubWVtYmVycywhMCksdGhpcy5vcGFjaXR5VmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMub3BhY2l0eVZlcnRleEFycmF5LFFkLCEwKSx0aGlzLmdsb2JlRXh0VmVydGV4QXJyYXkubGVuZ3RoPjAmJih0aGlzLmdsb2JlRXh0VmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMuZ2xvYmVFeHRWZXJ0ZXhBcnJheSxDaC5tZW1iZXJzLCEwKSksdGhpcy5vcGFjaXR5VmVydGV4QnVmZmVyLml0ZW1TaXplPTEpLChyfHxuKSYmdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMudXBsb2FkKHQpKTt9ZGVzdHJveSgpe3RoaXMubGF5b3V0VmVydGV4QnVmZmVyJiYodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuaW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmRlc3Ryb3koKSx0aGlzLnNlZ21lbnRzLmRlc3Ryb3koKSx0aGlzLmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMub3BhY2l0eVZlcnRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5nbG9iZUV4dFZlcnRleEJ1ZmZlciYmdGhpcy5nbG9iZUV4dFZlcnRleEJ1ZmZlci5kZXN0cm95KCkpO319Smkoc2YsXCJTeW1ib2xCdWZmZXJzXCIpO2NsYXNzIGFme2NvbnN0cnVjdG9yKHQsZSxyKXt0aGlzLmxheW91dFZlcnRleEFycmF5PW5ldyB0LHRoaXMubGF5b3V0QXR0cmlidXRlcz1lLHRoaXMuaW5kZXhBcnJheT1uZXcgcix0aGlzLnNlZ21lbnRzPW5ldyBzbyx0aGlzLmNvbGxpc2lvblZlcnRleEFycmF5PW5ldyB0YSx0aGlzLmNvbGxpc2lvblZlcnRleEFycmF5RXh0PW5ldyBlYTt9dXBsb2FkKHQpe3RoaXMubGF5b3V0VmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMubGF5b3V0VmVydGV4QXJyYXksdGhpcy5sYXlvdXRBdHRyaWJ1dGVzKSx0aGlzLmluZGV4QnVmZmVyPXQuY3JlYXRlSW5kZXhCdWZmZXIodGhpcy5pbmRleEFycmF5KSx0aGlzLmNvbGxpc2lvblZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLmNvbGxpc2lvblZlcnRleEFycmF5LERoLm1lbWJlcnMsITApLHRoaXMuY29sbGlzaW9uVmVydGV4QnVmZmVyRXh0PXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMuY29sbGlzaW9uVmVydGV4QXJyYXlFeHQsVmgubWVtYmVycywhMCk7fWRlc3Ryb3koKXt0aGlzLmxheW91dFZlcnRleEJ1ZmZlciYmKHRoaXMubGF5b3V0VmVydGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLmluZGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLnNlZ21lbnRzLmRlc3Ryb3koKSx0aGlzLmNvbGxpc2lvblZlcnRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5jb2xsaXNpb25WZXJ0ZXhCdWZmZXJFeHQuZGVzdHJveSgpKTt9fUppKGFmLFwiQ29sbGlzaW9uQnVmZmVyc1wiKTtjbGFzcyBvZntjb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbGxpc2lvbkJveEFycmF5PXQuY29sbGlzaW9uQm94QXJyYXksdGhpcy56b29tPXQuem9vbSx0aGlzLm92ZXJzY2FsaW5nPXQub3ZlcnNjYWxpbmcsdGhpcy5sYXllcnM9dC5sYXllcnMsdGhpcy5sYXllcklkcz10aGlzLmxheWVycy5tYXAoKHQ9PnQuaWQpKSx0aGlzLmluZGV4PXQuaW5kZXgsdGhpcy5waXhlbFJhdGlvPXQucGl4ZWxSYXRpbyx0aGlzLnNvdXJjZUxheWVySW5kZXg9dC5zb3VyY2VMYXllckluZGV4LHRoaXMuaGFzUGF0dGVybj0hMSx0aGlzLmhhc1JUTFRleHQ9ITEsdGhpcy5mdWxseUNsaXBwZWQ9ITEsdGhpcy5zb3J0S2V5UmFuZ2VzPVtdLHRoaXMuY29sbGlzaW9uQ2lyY2xlQXJyYXk9W10sdGhpcy5wbGFjZW1lbnRJbnZQcm9qTWF0cml4PXBvKFtdKSx0aGlzLnBsYWNlbWVudFZpZXdwb3J0TWF0cml4PXBvKFtdKTtjb25zdCBlPXRoaXMubGF5ZXJzWzBdLl91bmV2YWx1YXRlZExheW91dC5fdmFsdWVzO3RoaXMudGV4dFNpemVEYXRhPSRoKHRoaXMuem9vbSxlW1widGV4dC1zaXplXCJdKSx0aGlzLmljb25TaXplRGF0YT0kaCh0aGlzLnpvb20sZVtcImljb24tc2l6ZVwiXSk7Y29uc3Qgcj10aGlzLmxheWVyc1swXS5sYXlvdXQsbj1yLmdldChcInN5bWJvbC1zb3J0LWtleVwiKSxpPXIuZ2V0KFwic3ltYm9sLXotb3JkZXJcIik7dGhpcy5jYW5PdmVybGFwPXIuZ2V0KFwidGV4dC1hbGxvdy1vdmVybGFwXCIpfHxyLmdldChcImljb24tYWxsb3ctb3ZlcmxhcFwiKXx8ci5nZXQoXCJ0ZXh0LWlnbm9yZS1wbGFjZW1lbnRcIil8fHIuZ2V0KFwiaWNvbi1pZ25vcmUtcGxhY2VtZW50XCIpLHRoaXMuc29ydEZlYXR1cmVzQnlLZXk9XCJ2aWV3cG9ydC15XCIhPT1pJiZ2b2lkIDAhPT1uLmNvbnN0YW50T3IoMSksdGhpcy5zb3J0RmVhdHVyZXNCeVk9KFwidmlld3BvcnQteVwiPT09aXx8XCJhdXRvXCI9PT1pJiYhdGhpcy5zb3J0RmVhdHVyZXNCeUtleSkmJnRoaXMuY2FuT3ZlcmxhcCx0aGlzLndyaXRpbmdNb2Rlcz1yLmdldChcInRleHQtd3JpdGluZy1tb2RlXCIpLm1hcCgodD0+SXBbdF0pKSx0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJJZHM9dGhpcy5sYXllcnMuZmlsdGVyKCh0PT50LmlzU3RhdGVEZXBlbmRlbnQoKSkpLm1hcCgodD0+dC5pZCkpLHRoaXMuc291cmNlSUQ9dC5zb3VyY2VJRCx0aGlzLnByb2plY3Rpb249dC5wcm9qZWN0aW9uO31jcmVhdGVBcnJheXMoKXt0aGlzLnRleHQ9bmV3IHNmKG5ldyBKYSh0aGlzLmxheWVycyx0aGlzLnpvb20sKHQ9Pi9edGV4dC8udGVzdCh0KSkpKSx0aGlzLmljb249bmV3IHNmKG5ldyBKYSh0aGlzLmxheWVycyx0aGlzLnpvb20sKHQ9Pi9eaWNvbi8udGVzdCh0KSkpKSx0aGlzLmdseXBoT2Zmc2V0QXJyYXk9bmV3IGdhLHRoaXMubGluZVZlcnRleEFycmF5PW5ldyB4YSx0aGlzLnN5bWJvbEluc3RhbmNlcz1uZXcgbWE7fWNhbGN1bGF0ZUdseXBoRGVwZW5kZW5jaWVzKHQsZSxyLG4saSl7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspaWYoZVt0LmNoYXJDb2RlQXQocildPSEwLG4mJmkpe2NvbnN0IG49R2hbdC5jaGFyQXQocildO24mJihlW24uY2hhckNvZGVBdCgwKV09ITApO319cG9wdWxhdGUodCxlLHIsbil7Y29uc3QgaT10aGlzLmxheWVyc1swXSxzPWkubGF5b3V0LGE9XCJnbG9iZVwiPT09dGhpcy5wcm9qZWN0aW9uLm5hbWUsbz1zLmdldChcInRleHQtZm9udFwiKSxsPXMuZ2V0KFwidGV4dC1maWVsZFwiKSx1PXMuZ2V0KFwiaWNvbi1pbWFnZVwiKSxjPShcImNvbnN0YW50XCIhPT1sLnZhbHVlLmtpbmR8fGwudmFsdWUudmFsdWUgaW5zdGFuY2VvZiBEZSYmIWwudmFsdWUudmFsdWUuaXNFbXB0eSgpfHxsLnZhbHVlLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoPjApJiYoXCJjb25zdGFudFwiIT09by52YWx1ZS5raW5kfHxvLnZhbHVlLnZhbHVlLmxlbmd0aD4wKSxoPVwiY29uc3RhbnRcIiE9PXUudmFsdWUua2luZHx8ISF1LnZhbHVlLnZhbHVlfHxPYmplY3Qua2V5cyh1LnBhcmFtZXRlcnMpLmxlbmd0aD4wLHA9cy5nZXQoXCJzeW1ib2wtc29ydC1rZXlcIik7aWYodGhpcy5mZWF0dXJlcz1bXSwhYyYmIWgpcmV0dXJuO2NvbnN0IGQ9ZS5pY29uRGVwZW5kZW5jaWVzLGY9ZS5nbHlwaERlcGVuZGVuY2llcyx5PWUuYXZhaWxhYmxlSW1hZ2VzLG09bmV3IHdzKHRoaXMuem9vbSk7Zm9yKGNvbnN0e2ZlYXR1cmU6ZSxpZDpsLGluZGV4OnUsc291cmNlTGF5ZXJJbmRleDpnfW9mIHQpe2NvbnN0IHQ9aS5fZmVhdHVyZUZpbHRlci5uZWVkR2VvbWV0cnkseD1vdShlLHQpO2lmKCFpLl9mZWF0dXJlRmlsdGVyLmZpbHRlcihtLHgscikpY29udGludWU7aWYodHx8KHguZ2VvbWV0cnk9YXUoZSxyLG4pKSxhJiYxIT09ZS50eXBlJiZyLno8PTUpe2NvbnN0IHQ9eC5nZW9tZXRyeSxlPS45ODA3ODUyODA1NixuPSh0LG4pPT5WbyhNbCh0LngsdC55LHIsMSksTWwobi54LG4ueSxyLDEpKTxlO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV09cnUodFtlXSxuKTt9bGV0IHYsYjtpZihjKXtjb25zdCB0PWkuZ2V0VmFsdWVBbmRSZXNvbHZlVG9rZW5zKFwidGV4dC1maWVsZFwiLHgscix5KSxlPURlLmZhY3RvcnkodCk7bmYoZSkmJih0aGlzLmhhc1JUTFRleHQ9ITApLCghdGhpcy5oYXNSVExUZXh0fHxcInVuYXZhaWxhYmxlXCI9PT14cygpfHx0aGlzLmhhc1JUTFRleHQmJmJzLmlzUGFyc2VkKCkpJiYodj1OaChlLGkseCkpO31pZihoKXtjb25zdCB0PWkuZ2V0VmFsdWVBbmRSZXNvbHZlVG9rZW5zKFwiaWNvbi1pbWFnZVwiLHgscix5KTtiPXQgaW5zdGFuY2VvZiBWZT90OlZlLmZyb21TdHJpbmcodCk7fWlmKCF2JiYhYiljb250aW51ZTtjb25zdCB3PXRoaXMuc29ydEZlYXR1cmVzQnlLZXk/cC5ldmFsdWF0ZSh4LHt9LHIpOnZvaWQgMDtpZih0aGlzLmZlYXR1cmVzLnB1c2goe2lkOmwsdGV4dDp2LGljb246YixpbmRleDp1LHNvdXJjZUxheWVySW5kZXg6ZyxnZW9tZXRyeTp4Lmdlb21ldHJ5LHByb3BlcnRpZXM6ZS5wcm9wZXJ0aWVzLHR5cGU6V2RbZS50eXBlXSxzb3J0S2V5Ond9KSxiJiYoZFtiLm5hbWVdPSEwKSx2KXtjb25zdCB0PW8uZXZhbHVhdGUoeCx7fSxyKS5qb2luKFwiLFwiKSxlPVwibWFwXCI9PT1zLmdldChcInRleHQtcm90YXRpb24tYWxpZ25tZW50XCIpJiZcInBvaW50XCIhPT1zLmdldChcInN5bWJvbC1wbGFjZW1lbnRcIik7dGhpcy5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50PXRoaXMud3JpdGluZ01vZGVzJiZ0aGlzLndyaXRpbmdNb2Rlcy5pbmRleE9mKElwLnZlcnRpY2FsKT49MDtmb3IoY29uc3QgciBvZiB2LnNlY3Rpb25zKWlmKHIuaW1hZ2UpZFtyLmltYWdlLm5hbWVdPSEwO2Vsc2Uge2NvbnN0IG49ZXModi50b1N0cmluZygpKSxpPXIuZm9udFN0YWNrfHx0LHM9ZltpXT1mW2ldfHx7fTt0aGlzLmNhbGN1bGF0ZUdseXBoRGVwZW5kZW5jaWVzKHIudGV4dCxzLGUsdGhpcy5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50LG4pO319fVwibGluZVwiPT09cy5nZXQoXCJzeW1ib2wtcGxhY2VtZW50XCIpJiYodGhpcy5mZWF0dXJlcz1mdW5jdGlvbih0KXtjb25zdCBlPXt9LHI9e30sbj1bXTtsZXQgaT0wO2Z1bmN0aW9uIHMoZSl7bi5wdXNoKHRbZV0pLGkrKzt9ZnVuY3Rpb24gYSh0LGUsaSl7Y29uc3Qgcz1yW3RdO3JldHVybiBkZWxldGUgclt0XSxyW2VdPXMsbltzXS5nZW9tZXRyeVswXS5wb3AoKSxuW3NdLmdlb21ldHJ5WzBdPW5bc10uZ2VvbWV0cnlbMF0uY29uY2F0KGlbMF0pLHN9ZnVuY3Rpb24gbyh0LHIsaSl7Y29uc3Qgcz1lW3JdO3JldHVybiBkZWxldGUgZVtyXSxlW3RdPXMsbltzXS5nZW9tZXRyeVswXS5zaGlmdCgpLG5bc10uZ2VvbWV0cnlbMF09aVswXS5jb25jYXQobltzXS5nZW9tZXRyeVswXSksc31mdW5jdGlvbiBsKHQsZSxyKXtjb25zdCBuPXI/ZVswXVtlWzBdLmxlbmd0aC0xXTplWzBdWzBdO3JldHVybiBgJHt0fToke24ueH06JHtuLnl9YH1mb3IobGV0IHU9MDt1PHQubGVuZ3RoO3UrKyl7Y29uc3QgYz10W3VdLGg9Yy5nZW9tZXRyeSxwPWMudGV4dD9jLnRleHQudG9TdHJpbmcoKTpudWxsO2lmKCFwKXtzKHUpO2NvbnRpbnVlfWNvbnN0IGQ9bChwLGgpLGY9bChwLGgsITApO2lmKGQgaW4gciYmZiBpbiBlJiZyW2RdIT09ZVtmXSl7Y29uc3QgdD1vKGQsZixoKSxpPWEoZCxmLG5bdF0uZ2VvbWV0cnkpO2RlbGV0ZSBlW2RdLGRlbGV0ZSByW2ZdLHJbbChwLG5baV0uZ2VvbWV0cnksITApXT1pLG5bdF0uZ2VvbWV0cnk9bnVsbDt9ZWxzZSBkIGluIHI/YShkLGYsaCk6ZiBpbiBlP28oZCxmLGgpOihzKHUpLGVbZF09aS0xLHJbZl09aS0xKTt9cmV0dXJuIG4uZmlsdGVyKCh0PT50Lmdlb21ldHJ5KSl9KHRoaXMuZmVhdHVyZXMpKSx0aGlzLnNvcnRGZWF0dXJlc0J5S2V5JiZ0aGlzLmZlYXR1cmVzLnNvcnQoKCh0LGUpPT50LnNvcnRLZXktZS5zb3J0S2V5KSk7fXVwZGF0ZSh0LGUscixuKXt0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJzLmxlbmd0aCYmKHRoaXMudGV4dC5wcm9ncmFtQ29uZmlndXJhdGlvbnMudXBkYXRlUGFpbnRBcnJheXModCxlLHRoaXMubGF5ZXJzLHIsbiksdGhpcy5pY29uLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGRhdGVQYWludEFycmF5cyh0LGUsdGhpcy5sYXllcnMscixuKSk7fWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMuc3ltYm9sSW5zdGFuY2VzLmxlbmd0aCYmIXRoaXMuaGFzUlRMVGV4dH11cGxvYWRQZW5kaW5nKCl7cmV0dXJuICF0aGlzLnVwbG9hZGVkfHx0aGlzLnRleHQucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLm5lZWRzVXBsb2FkfHx0aGlzLmljb24ucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLm5lZWRzVXBsb2FkfXVwbG9hZCh0KXshdGhpcy51cGxvYWRlZCYmdGhpcy5oYXNEZWJ1Z0RhdGEoKSYmKHRoaXMudGV4dENvbGxpc2lvbkJveC51cGxvYWQodCksdGhpcy5pY29uQ29sbGlzaW9uQm94LnVwbG9hZCh0KSksdGhpcy50ZXh0LnVwbG9hZCh0LHRoaXMuc29ydEZlYXR1cmVzQnlZLCF0aGlzLnVwbG9hZGVkLHRoaXMudGV4dC5wcm9ncmFtQ29uZmlndXJhdGlvbnMubmVlZHNVcGxvYWQpLHRoaXMuaWNvbi51cGxvYWQodCx0aGlzLnNvcnRGZWF0dXJlc0J5WSwhdGhpcy51cGxvYWRlZCx0aGlzLmljb24ucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLm5lZWRzVXBsb2FkKSx0aGlzLnVwbG9hZGVkPSEwO31kZXN0cm95RGVidWdEYXRhKCl7dGhpcy50ZXh0Q29sbGlzaW9uQm94LmRlc3Ryb3koKSx0aGlzLmljb25Db2xsaXNpb25Cb3guZGVzdHJveSgpO31nZXRQcm9qZWN0aW9uKCl7cmV0dXJuIHRoaXMucHJvamVjdGlvbkluc3RhbmNlfHwodGhpcy5wcm9qZWN0aW9uSW5zdGFuY2U9WWQodGhpcy5wcm9qZWN0aW9uKSksdGhpcy5wcm9qZWN0aW9uSW5zdGFuY2V9ZGVzdHJveSgpe3RoaXMudGV4dC5kZXN0cm95KCksdGhpcy5pY29uLmRlc3Ryb3koKSx0aGlzLmhhc0RlYnVnRGF0YSgpJiZ0aGlzLmRlc3Ryb3lEZWJ1Z0RhdGEoKTt9YWRkVG9MaW5lVmVydGV4QXJyYXkodCxlKXtjb25zdCByPXRoaXMubGluZVZlcnRleEFycmF5Lmxlbmd0aDtpZih2b2lkIDAhPT10LnNlZ21lbnQpZm9yKGNvbnN0e3g6dCx5OnJ9b2YgZSl0aGlzLmxpbmVWZXJ0ZXhBcnJheS5lbXBsYWNlQmFjayh0LHIpO3JldHVybiB7bGluZVN0YXJ0SW5kZXg6cixsaW5lTGVuZ3RoOnRoaXMubGluZVZlcnRleEFycmF5Lmxlbmd0aC1yfX1hZGRTeW1ib2xzKHQsZSxyLG4saSxzLGEsbyxsLHUsYyxoLHAsZCl7Y29uc3QgZj10LmluZGV4QXJyYXkseT10LmxheW91dFZlcnRleEFycmF5LG09dC5nbG9iZUV4dFZlcnRleEFycmF5LGc9dC5zZWdtZW50cy5wcmVwYXJlU2VnbWVudCg0KmUubGVuZ3RoLHksZix0aGlzLmNhbk92ZXJsYXA/cy5zb3J0S2V5OnZvaWQgMCkseD10aGlzLmdseXBoT2Zmc2V0QXJyYXkubGVuZ3RoLHY9Zy52ZXJ0ZXhMZW5ndGgsYj10aGlzLmFsbG93VmVydGljYWxQbGFjZW1lbnQmJmE9PT1JcC52ZXJ0aWNhbD9NYXRoLlBJLzI6MCx3PXMudGV4dCYmcy50ZXh0LnNlY3Rpb25zO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdHt0bDppLHRyOmEsYmw6dSxicjpjLHRleDpoLHBpeGVsT2Zmc2V0VEw6eCxwaXhlbE9mZnNldEJSOnYsbWluRm9udFNjYWxlWDpfLG1pbkZvbnRTY2FsZVk6QSxnbHlwaE9mZnNldDpTLGlzU0RGOmssc2VjdGlvbkluZGV4Okl9PWVbbl0sTT1nLnZlcnRleExlbmd0aCxUPVNbMV07aWYodGYoeSxsLngsbC55LGkueCxUK2kueSxoLngsaC55LHIsayx4LngseC55LF8sQSksdGYoeSxsLngsbC55LGEueCxUK2EueSxoLngraC53LGgueSxyLGssdi54LHgueSxfLEEpLHRmKHksbC54LGwueSx1LngsVCt1LnksaC54LGgueStoLmgscixrLHgueCx2LnksXyxBKSx0Zih5LGwueCxsLnksYy54LFQrYy55LGgueCtoLncsaC55K2guaCxyLGssdi54LHYueSxfLEEpLG8pe2NvbnN0e3g6ZSx5OnIsejpufT1vLmFuY2hvcixbaSxzLGFdPW8udXA7ZWYobSxlLHIsbixpLHMsYSksZWYobSxlLHIsbixpLHMsYSksZWYobSxlLHIsbixpLHMsYSksZWYobSxlLHIsbixpLHMsYSkscmYodC5keW5hbWljTGF5b3V0VmVydGV4QXJyYXksZSxyLG4sYik7fWVsc2UgcmYodC5keW5hbWljTGF5b3V0VmVydGV4QXJyYXksbC54LGwueSxsLnosYik7Zi5lbXBsYWNlQmFjayhNLE0rMSxNKzIpLGYuZW1wbGFjZUJhY2soTSsxLE0rMixNKzMpLGcudmVydGV4TGVuZ3RoKz00LGcucHJpbWl0aXZlTGVuZ3RoKz0yLHRoaXMuZ2x5cGhPZmZzZXRBcnJheS5lbXBsYWNlQmFjayhTWzBdKSxuIT09ZS5sZW5ndGgtMSYmST09PWVbbisxXS5zZWN0aW9uSW5kZXh8fHQucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnBvcHVsYXRlUGFpbnRBcnJheXMoeS5sZW5ndGgscyxzLmluZGV4LHt9LHAsZCx3JiZ3W0ldKTt9Y29uc3QgXz1vP28uYW5jaG9yOmw7dC5wbGFjZWRTeW1ib2xBcnJheS5lbXBsYWNlQmFjayhfLngsXy55LF8ueixsLngsbC55LHgsdGhpcy5nbHlwaE9mZnNldEFycmF5Lmxlbmd0aC14LHYsdSxjLGwuc2VnbWVudCxyP3JbMF06MCxyP3JbMV06MCxuWzBdLG5bMV0sYSwwLCExLDAsaCwwKTt9X2NvbW1pdExheW91dFZlcnRleCh0LGUscixuLGkscyxhKXt0LmVtcGxhY2VCYWNrKGUscixuLGkscyxNYXRoLnJvdW5kKGEueCksTWF0aC5yb3VuZChhLnkpKTt9X2FkZENvbGxpc2lvbkRlYnVnVmVydGljZXModCxlLHIsbixpLHMsYSl7Y29uc3Qgbz1yLnNlZ21lbnRzLnByZXBhcmVTZWdtZW50KDQsci5sYXlvdXRWZXJ0ZXhBcnJheSxyLmluZGV4QXJyYXkpLGw9by52ZXJ0ZXhMZW5ndGgsdT1hLnRpbGVBbmNob3JYLGM9YS50aWxlQW5jaG9yWTtmb3IobGV0IHQ9MDt0PDQ7dCsrKXIuY29sbGlzaW9uVmVydGV4QXJyYXkuZW1wbGFjZUJhY2soMCwwLDAsMCk7ci5jb2xsaXNpb25WZXJ0ZXhBcnJheUV4dC5lbXBsYWNlQmFjayhlLC10LnBhZGRpbmcsLXQucGFkZGluZyksci5jb2xsaXNpb25WZXJ0ZXhBcnJheUV4dC5lbXBsYWNlQmFjayhlLHQucGFkZGluZywtdC5wYWRkaW5nKSxyLmNvbGxpc2lvblZlcnRleEFycmF5RXh0LmVtcGxhY2VCYWNrKGUsdC5wYWRkaW5nLHQucGFkZGluZyksci5jb2xsaXNpb25WZXJ0ZXhBcnJheUV4dC5lbXBsYWNlQmFjayhlLC10LnBhZGRpbmcsdC5wYWRkaW5nKSx0aGlzLl9jb21taXRMYXlvdXRWZXJ0ZXgoci5sYXlvdXRWZXJ0ZXhBcnJheSxuLGkscyx1LGMsbmV3IHgodC54MSx0LnkxKSksdGhpcy5fY29tbWl0TGF5b3V0VmVydGV4KHIubGF5b3V0VmVydGV4QXJyYXksbixpLHMsdSxjLG5ldyB4KHQueDIsdC55MSkpLHRoaXMuX2NvbW1pdExheW91dFZlcnRleChyLmxheW91dFZlcnRleEFycmF5LG4saSxzLHUsYyxuZXcgeCh0LngyLHQueTIpKSx0aGlzLl9jb21taXRMYXlvdXRWZXJ0ZXgoci5sYXlvdXRWZXJ0ZXhBcnJheSxuLGkscyx1LGMsbmV3IHgodC54MSx0LnkyKSksby52ZXJ0ZXhMZW5ndGgrPTQ7Y29uc3QgaD1yLmluZGV4QXJyYXk7aC5lbXBsYWNlQmFjayhsLGwrMSksaC5lbXBsYWNlQmFjayhsKzEsbCsyKSxoLmVtcGxhY2VCYWNrKGwrMixsKzMpLGguZW1wbGFjZUJhY2sobCszLGwpLG8ucHJpbWl0aXZlTGVuZ3RoKz00O31fYWRkVGV4dERlYnVnQ29sbGlzaW9uQm94ZXModCxlLHIsbixpLHMpe2ZvcihsZXQgYT1uO2E8aTthKyspe2NvbnN0IG49ci5nZXQoYSksaT10aGlzLmdldFN5bWJvbEluc3RhbmNlVGV4dFNpemUodCxzLGUsYSk7dGhpcy5fYWRkQ29sbGlzaW9uRGVidWdWZXJ0aWNlcyhuLGksdGhpcy50ZXh0Q29sbGlzaW9uQm94LG4ucHJvamVjdGVkQW5jaG9yWCxuLnByb2plY3RlZEFuY2hvclksbi5wcm9qZWN0ZWRBbmNob3JaLHMpO319X2FkZEljb25EZWJ1Z0NvbGxpc2lvbkJveGVzKHQsZSxyLG4saSxzKXtmb3IobGV0IGE9bjthPGk7YSsrKXtjb25zdCBuPXIuZ2V0KGEpLGk9dGhpcy5nZXRTeW1ib2xJbnN0YW5jZUljb25TaXplKHQsZSxzLnBsYWNlZEljb25TeW1ib2xJbmRleCk7dGhpcy5fYWRkQ29sbGlzaW9uRGVidWdWZXJ0aWNlcyhuLGksdGhpcy5pY29uQ29sbGlzaW9uQm94LG4ucHJvamVjdGVkQW5jaG9yWCxuLnByb2plY3RlZEFuY2hvclksbi5wcm9qZWN0ZWRBbmNob3JaLHMpO319Z2VuZXJhdGVDb2xsaXNpb25EZWJ1Z0J1ZmZlcnModCxlKXt0aGlzLmhhc0RlYnVnRGF0YSgpJiZ0aGlzLmRlc3Ryb3lEZWJ1Z0RhdGEoKSx0aGlzLnRleHRDb2xsaXNpb25Cb3g9bmV3IGFmKFdzLExoLm1lbWJlcnMsbGEpLHRoaXMuaWNvbkNvbGxpc2lvbkJveD1uZXcgYWYoV3MsTGgubWVtYmVycyxsYSk7Y29uc3Qgcj1PaCh0aGlzLmljb25TaXplRGF0YSx0KSxuPU9oKHRoaXMudGV4dFNpemVEYXRhLHQpO2ZvcihsZXQgaT0wO2k8dGhpcy5zeW1ib2xJbnN0YW5jZXMubGVuZ3RoO2krKyl7Y29uc3Qgcz10aGlzLnN5bWJvbEluc3RhbmNlcy5nZXQoaSk7dGhpcy5fYWRkVGV4dERlYnVnQ29sbGlzaW9uQm94ZXMobix0LGUscy50ZXh0Qm94U3RhcnRJbmRleCxzLnRleHRCb3hFbmRJbmRleCxzKSx0aGlzLl9hZGRUZXh0RGVidWdDb2xsaXNpb25Cb3hlcyhuLHQsZSxzLnZlcnRpY2FsVGV4dEJveFN0YXJ0SW5kZXgscy52ZXJ0aWNhbFRleHRCb3hFbmRJbmRleCxzKSx0aGlzLl9hZGRJY29uRGVidWdDb2xsaXNpb25Cb3hlcyhyLHQsZSxzLmljb25Cb3hTdGFydEluZGV4LHMuaWNvbkJveEVuZEluZGV4LHMpLHRoaXMuX2FkZEljb25EZWJ1Z0NvbGxpc2lvbkJveGVzKHIsdCxlLHMudmVydGljYWxJY29uQm94U3RhcnRJbmRleCxzLnZlcnRpY2FsSWNvbkJveEVuZEluZGV4LHMpO319Z2V0U3ltYm9sSW5zdGFuY2VUZXh0U2l6ZSh0LGUscixuKXtjb25zdCBpPXRoaXMudGV4dC5wbGFjZWRTeW1ib2xBcnJheS5nZXQoZS5yaWdodEp1c3RpZmllZFRleHRTeW1ib2xJbmRleD49MD9lLnJpZ2h0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4OmUuY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4Pj0wP2UuY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4OmUubGVmdEp1c3RpZmllZFRleHRTeW1ib2xJbmRleD49MD9lLmxlZnRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXg6ZS52ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleD49MD9lLnZlcnRpY2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4Om4pLHM9amgodGhpcy50ZXh0U2l6ZURhdGEsdCxpKS9SaDtyZXR1cm4gdGhpcy50aWxlUGl4ZWxSYXRpbypzfWdldFN5bWJvbEluc3RhbmNlSWNvblNpemUodCxlLHIpe2NvbnN0IG49dGhpcy5pY29uLnBsYWNlZFN5bWJvbEFycmF5LmdldChyKSxpPWpoKHRoaXMuaWNvblNpemVEYXRhLHQsbik7cmV0dXJuIHRoaXMudGlsZVBpeGVsUmF0aW8qaX1fY29tbWl0RGVidWdDb2xsaXNpb25WZXJ0ZXhVcGRhdGUodCxlLHIpe3QuZW1wbGFjZUJhY2soZSwtciwtciksdC5lbXBsYWNlQmFjayhlLHIsLXIpLHQuZW1wbGFjZUJhY2soZSxyLHIpLHQuZW1wbGFjZUJhY2soZSwtcixyKTt9X3VwZGF0ZVRleHREZWJ1Z0NvbGxpc2lvbkJveGVzKHQsZSxyLG4saSxzKXtmb3IobGV0IGE9bjthPGk7YSsrKXtjb25zdCBuPXIuZ2V0KGEpLGk9dGhpcy5nZXRTeW1ib2xJbnN0YW5jZVRleHRTaXplKHQscyxlLGEpO3RoaXMuX2NvbW1pdERlYnVnQ29sbGlzaW9uVmVydGV4VXBkYXRlKHRoaXMudGV4dENvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhBcnJheUV4dCxpLG4ucGFkZGluZyk7fX1fdXBkYXRlSWNvbkRlYnVnQ29sbGlzaW9uQm94ZXModCxlLHIsbixpLHMpe2ZvcihsZXQgYT1uO2E8aTthKyspe2NvbnN0IG49ci5nZXQoYSksaT10aGlzLmdldFN5bWJvbEluc3RhbmNlSWNvblNpemUodCxlLHMpO3RoaXMuX2NvbW1pdERlYnVnQ29sbGlzaW9uVmVydGV4VXBkYXRlKHRoaXMuaWNvbkNvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhBcnJheUV4dCxpLG4ucGFkZGluZyk7fX11cGRhdGVDb2xsaXNpb25EZWJ1Z0J1ZmZlcnModCxlKXtpZighdGhpcy5oYXNEZWJ1Z0RhdGEoKSlyZXR1cm47dGhpcy5oYXNUZXh0Q29sbGlzaW9uQm94RGF0YSgpJiZ0aGlzLnRleHRDb2xsaXNpb25Cb3guY29sbGlzaW9uVmVydGV4QXJyYXlFeHQuY2xlYXIoKSx0aGlzLmhhc0ljb25Db2xsaXNpb25Cb3hEYXRhKCkmJnRoaXMuaWNvbkNvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhBcnJheUV4dC5jbGVhcigpO2NvbnN0IHI9T2godGhpcy5pY29uU2l6ZURhdGEsdCksbj1PaCh0aGlzLnRleHRTaXplRGF0YSx0KTtmb3IobGV0IGk9MDtpPHRoaXMuc3ltYm9sSW5zdGFuY2VzLmxlbmd0aDtpKyspe2NvbnN0IHM9dGhpcy5zeW1ib2xJbnN0YW5jZXMuZ2V0KGkpO3RoaXMuX3VwZGF0ZVRleHREZWJ1Z0NvbGxpc2lvbkJveGVzKG4sdCxlLHMudGV4dEJveFN0YXJ0SW5kZXgscy50ZXh0Qm94RW5kSW5kZXgscyksdGhpcy5fdXBkYXRlVGV4dERlYnVnQ29sbGlzaW9uQm94ZXMobix0LGUscy52ZXJ0aWNhbFRleHRCb3hTdGFydEluZGV4LHMudmVydGljYWxUZXh0Qm94RW5kSW5kZXgscyksdGhpcy5fdXBkYXRlSWNvbkRlYnVnQ29sbGlzaW9uQm94ZXMocix0LGUscy5pY29uQm94U3RhcnRJbmRleCxzLmljb25Cb3hFbmRJbmRleCxzLnBsYWNlZEljb25TeW1ib2xJbmRleCksdGhpcy5fdXBkYXRlSWNvbkRlYnVnQ29sbGlzaW9uQm94ZXMocix0LGUscy52ZXJ0aWNhbEljb25Cb3hTdGFydEluZGV4LHMudmVydGljYWxJY29uQm94RW5kSW5kZXgscy5wbGFjZWRJY29uU3ltYm9sSW5kZXgpO310aGlzLmhhc1RleHRDb2xsaXNpb25Cb3hEYXRhKCkmJnRoaXMudGV4dENvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhCdWZmZXJFeHQmJnRoaXMudGV4dENvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhCdWZmZXJFeHQudXBkYXRlRGF0YSh0aGlzLnRleHRDb2xsaXNpb25Cb3guY29sbGlzaW9uVmVydGV4QXJyYXlFeHQpLHRoaXMuaGFzSWNvbkNvbGxpc2lvbkJveERhdGEoKSYmdGhpcy5pY29uQ29sbGlzaW9uQm94LmNvbGxpc2lvblZlcnRleEJ1ZmZlckV4dCYmdGhpcy5pY29uQ29sbGlzaW9uQm94LmNvbGxpc2lvblZlcnRleEJ1ZmZlckV4dC51cGRhdGVEYXRhKHRoaXMuaWNvbkNvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhBcnJheUV4dCk7fV9kZXNlcmlhbGl6ZUNvbGxpc2lvbkJveGVzRm9yU3ltYm9sKHQsZSxyLG4saSxzLGEsbyxsKXtjb25zdCB1PXt9O2lmKGU8cil7Y29uc3R7eDE6cix5MTpuLHgyOmkseTI6cyxwYWRkaW5nOmEscHJvamVjdGVkQW5jaG9yWDpvLHByb2plY3RlZEFuY2hvclk6bCxwcm9qZWN0ZWRBbmNob3JaOmMsdGlsZUFuY2hvclg6aCx0aWxlQW5jaG9yWTpwLGZlYXR1cmVJbmRleDpkfT10LmdldChlKTt1LnRleHRCb3g9e3gxOnIseTE6bix4MjppLHkyOnMscGFkZGluZzphLHByb2plY3RlZEFuY2hvclg6byxwcm9qZWN0ZWRBbmNob3JZOmwscHJvamVjdGVkQW5jaG9yWjpjLHRpbGVBbmNob3JYOmgsdGlsZUFuY2hvclk6cH0sdS50ZXh0RmVhdHVyZUluZGV4PWQ7fWlmKG48aSl7Y29uc3R7eDE6ZSx5MTpyLHgyOmkseTI6cyxwYWRkaW5nOmEscHJvamVjdGVkQW5jaG9yWDpvLHByb2plY3RlZEFuY2hvclk6bCxwcm9qZWN0ZWRBbmNob3JaOmMsdGlsZUFuY2hvclg6aCx0aWxlQW5jaG9yWTpwLGZlYXR1cmVJbmRleDpkfT10LmdldChuKTt1LnZlcnRpY2FsVGV4dEJveD17eDE6ZSx5MTpyLHgyOmkseTI6cyxwYWRkaW5nOmEscHJvamVjdGVkQW5jaG9yWDpvLHByb2plY3RlZEFuY2hvclk6bCxwcm9qZWN0ZWRBbmNob3JaOmMsdGlsZUFuY2hvclg6aCx0aWxlQW5jaG9yWTpwfSx1LnZlcnRpY2FsVGV4dEZlYXR1cmVJbmRleD1kO31pZihzPGEpe2NvbnN0e3gxOmUseTE6cix4MjpuLHkyOmkscGFkZGluZzphLHByb2plY3RlZEFuY2hvclg6byxwcm9qZWN0ZWRBbmNob3JZOmwscHJvamVjdGVkQW5jaG9yWjpjLHRpbGVBbmNob3JYOmgsdGlsZUFuY2hvclk6cCxmZWF0dXJlSW5kZXg6ZH09dC5nZXQocyk7dS5pY29uQm94PXt4MTplLHkxOnIseDI6bix5MjppLHBhZGRpbmc6YSxwcm9qZWN0ZWRBbmNob3JYOm8scHJvamVjdGVkQW5jaG9yWTpsLHByb2plY3RlZEFuY2hvclo6Yyx0aWxlQW5jaG9yWDpoLHRpbGVBbmNob3JZOnB9LHUuaWNvbkZlYXR1cmVJbmRleD1kO31pZihvPGwpe2NvbnN0e3gxOmUseTE6cix4MjpuLHkyOmkscGFkZGluZzpzLHByb2plY3RlZEFuY2hvclg6YSxwcm9qZWN0ZWRBbmNob3JZOmwscHJvamVjdGVkQW5jaG9yWjpjLHRpbGVBbmNob3JYOmgsdGlsZUFuY2hvclk6cCxmZWF0dXJlSW5kZXg6ZH09dC5nZXQobyk7dS52ZXJ0aWNhbEljb25Cb3g9e3gxOmUseTE6cix4MjpuLHkyOmkscGFkZGluZzpzLHByb2plY3RlZEFuY2hvclg6YSxwcm9qZWN0ZWRBbmNob3JZOmwscHJvamVjdGVkQW5jaG9yWjpjLHRpbGVBbmNob3JYOmgsdGlsZUFuY2hvclk6cH0sdS52ZXJ0aWNhbEljb25GZWF0dXJlSW5kZXg9ZDt9cmV0dXJuIHV9ZGVzZXJpYWxpemVDb2xsaXNpb25Cb3hlcyh0KXt0aGlzLmNvbGxpc2lvbkFycmF5cz1bXTtmb3IobGV0IGU9MDtlPHRoaXMuc3ltYm9sSW5zdGFuY2VzLmxlbmd0aDtlKyspe2NvbnN0IHI9dGhpcy5zeW1ib2xJbnN0YW5jZXMuZ2V0KGUpO3RoaXMuY29sbGlzaW9uQXJyYXlzLnB1c2godGhpcy5fZGVzZXJpYWxpemVDb2xsaXNpb25Cb3hlc0ZvclN5bWJvbCh0LHIudGV4dEJveFN0YXJ0SW5kZXgsci50ZXh0Qm94RW5kSW5kZXgsci52ZXJ0aWNhbFRleHRCb3hTdGFydEluZGV4LHIudmVydGljYWxUZXh0Qm94RW5kSW5kZXgsci5pY29uQm94U3RhcnRJbmRleCxyLmljb25Cb3hFbmRJbmRleCxyLnZlcnRpY2FsSWNvbkJveFN0YXJ0SW5kZXgsci52ZXJ0aWNhbEljb25Cb3hFbmRJbmRleCkpO319aGFzVGV4dERhdGEoKXtyZXR1cm4gdGhpcy50ZXh0LnNlZ21lbnRzLmdldCgpLmxlbmd0aD4wfWhhc0ljb25EYXRhKCl7cmV0dXJuIHRoaXMuaWNvbi5zZWdtZW50cy5nZXQoKS5sZW5ndGg+MH1oYXNEZWJ1Z0RhdGEoKXtyZXR1cm4gdGhpcy50ZXh0Q29sbGlzaW9uQm94JiZ0aGlzLmljb25Db2xsaXNpb25Cb3h9aGFzVGV4dENvbGxpc2lvbkJveERhdGEoKXtyZXR1cm4gdGhpcy5oYXNEZWJ1Z0RhdGEoKSYmdGhpcy50ZXh0Q29sbGlzaW9uQm94LnNlZ21lbnRzLmdldCgpLmxlbmd0aD4wfWhhc0ljb25Db2xsaXNpb25Cb3hEYXRhKCl7cmV0dXJuIHRoaXMuaGFzRGVidWdEYXRhKCkmJnRoaXMuaWNvbkNvbGxpc2lvbkJveC5zZWdtZW50cy5nZXQoKS5sZW5ndGg+MH1hZGRJbmRpY2VzRm9yUGxhY2VkU3ltYm9sKHQsZSl7Y29uc3Qgcj10LnBsYWNlZFN5bWJvbEFycmF5LmdldChlKSxuPXIudmVydGV4U3RhcnRJbmRleCs0KnIubnVtR2x5cGhzO2ZvcihsZXQgZT1yLnZlcnRleFN0YXJ0SW5kZXg7ZTxuO2UrPTQpdC5pbmRleEFycmF5LmVtcGxhY2VCYWNrKGUsZSsxLGUrMiksdC5pbmRleEFycmF5LmVtcGxhY2VCYWNrKGUrMSxlKzIsZSszKTt9Z2V0U29ydGVkU3ltYm9sSW5kZXhlcyh0KXtpZih0aGlzLnNvcnRlZEFuZ2xlPT09dCYmdm9pZCAwIT09dGhpcy5zeW1ib2xJbnN0YW5jZUluZGV4ZXMpcmV0dXJuIHRoaXMuc3ltYm9sSW5zdGFuY2VJbmRleGVzO2NvbnN0IGU9TWF0aC5zaW4odCkscj1NYXRoLmNvcyh0KSxuPVtdLGk9W10scz1bXTtmb3IobGV0IHQ9MDt0PHRoaXMuc3ltYm9sSW5zdGFuY2VzLmxlbmd0aDsrK3Qpe3MucHVzaCh0KTtjb25zdCBhPXRoaXMuc3ltYm9sSW5zdGFuY2VzLmdldCh0KTtuLnB1c2goMHxNYXRoLnJvdW5kKGUqYS50aWxlQW5jaG9yWCtyKmEudGlsZUFuY2hvclkpKSxpLnB1c2goYS5mZWF0dXJlSW5kZXgpO31yZXR1cm4gcy5zb3J0KCgodCxlKT0+blt0XS1uW2VdfHxpW2VdLWlbdF0pKSxzfWFkZFRvU29ydEtleVJhbmdlcyh0LGUpe2NvbnN0IHI9dGhpcy5zb3J0S2V5UmFuZ2VzW3RoaXMuc29ydEtleVJhbmdlcy5sZW5ndGgtMV07ciYmci5zb3J0S2V5PT09ZT9yLnN5bWJvbEluc3RhbmNlRW5kPXQrMTp0aGlzLnNvcnRLZXlSYW5nZXMucHVzaCh7c29ydEtleTplLHN5bWJvbEluc3RhbmNlU3RhcnQ6dCxzeW1ib2xJbnN0YW5jZUVuZDp0KzF9KTt9c29ydEZlYXR1cmVzKHQpe2lmKHRoaXMuc29ydEZlYXR1cmVzQnlZJiZ0aGlzLnNvcnRlZEFuZ2xlIT09dCYmISh0aGlzLnRleHQuc2VnbWVudHMuZ2V0KCkubGVuZ3RoPjF8fHRoaXMuaWNvbi5zZWdtZW50cy5nZXQoKS5sZW5ndGg+MSkpe3RoaXMuc3ltYm9sSW5zdGFuY2VJbmRleGVzPXRoaXMuZ2V0U29ydGVkU3ltYm9sSW5kZXhlcyh0KSx0aGlzLnNvcnRlZEFuZ2xlPXQsdGhpcy50ZXh0LmluZGV4QXJyYXkuY2xlYXIoKSx0aGlzLmljb24uaW5kZXhBcnJheS5jbGVhcigpLHRoaXMuZmVhdHVyZVNvcnRPcmRlcj1bXTtmb3IoY29uc3QgdCBvZiB0aGlzLnN5bWJvbEluc3RhbmNlSW5kZXhlcyl7Y29uc3QgZT10aGlzLnN5bWJvbEluc3RhbmNlcy5nZXQodCk7dGhpcy5mZWF0dXJlU29ydE9yZGVyLnB1c2goZS5mZWF0dXJlSW5kZXgpO2NvbnN0e3JpZ2h0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4OnIsY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4Om4sbGVmdEp1c3RpZmllZFRleHRTeW1ib2xJbmRleDppLHZlcnRpY2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4OnMscGxhY2VkSWNvblN5bWJvbEluZGV4OmEsdmVydGljYWxQbGFjZWRJY29uU3ltYm9sSW5kZXg6b309ZTtyPj0wJiZ0aGlzLmFkZEluZGljZXNGb3JQbGFjZWRTeW1ib2wodGhpcy50ZXh0LHIpLG4+PTAmJm4hPT1yJiZ0aGlzLmFkZEluZGljZXNGb3JQbGFjZWRTeW1ib2wodGhpcy50ZXh0LG4pLGk+PTAmJmkhPT1uJiZpIT09ciYmdGhpcy5hZGRJbmRpY2VzRm9yUGxhY2VkU3ltYm9sKHRoaXMudGV4dCxpKSxzPj0wJiZ0aGlzLmFkZEluZGljZXNGb3JQbGFjZWRTeW1ib2wodGhpcy50ZXh0LHMpLGE+PTAmJnRoaXMuYWRkSW5kaWNlc0ZvclBsYWNlZFN5bWJvbCh0aGlzLmljb24sYSksbz49MCYmdGhpcy5hZGRJbmRpY2VzRm9yUGxhY2VkU3ltYm9sKHRoaXMuaWNvbixvKTt9dGhpcy50ZXh0LmluZGV4QnVmZmVyJiZ0aGlzLnRleHQuaW5kZXhCdWZmZXIudXBkYXRlRGF0YSh0aGlzLnRleHQuaW5kZXhBcnJheSksdGhpcy5pY29uLmluZGV4QnVmZmVyJiZ0aGlzLmljb24uaW5kZXhCdWZmZXIudXBkYXRlRGF0YSh0aGlzLmljb24uaW5kZXhBcnJheSk7fX19Smkob2YsXCJTeW1ib2xCdWNrZXRcIix7b21pdDpbXCJsYXllcnNcIixcImNvbGxpc2lvbkJveEFycmF5XCIsXCJmZWF0dXJlc1wiLFwiY29tcGFyZVRleHRcIl19KSxvZi5NQVhfR0xZUEhTPTY1NTM1LG9mLmFkZER5bmFtaWNBdHRyaWJ1dGVzPXJmO2NvbnN0IGxmPW5ldyBQcyh7XCJzeW1ib2wtcGxhY2VtZW50XCI6bmV3IEJzKHRlLmxheW91dF9zeW1ib2xbXCJzeW1ib2wtcGxhY2VtZW50XCJdKSxcInN5bWJvbC1zcGFjaW5nXCI6bmV3IEJzKHRlLmxheW91dF9zeW1ib2xbXCJzeW1ib2wtc3BhY2luZ1wiXSksXCJzeW1ib2wtYXZvaWQtZWRnZXNcIjpuZXcgQnModGUubGF5b3V0X3N5bWJvbFtcInN5bWJvbC1hdm9pZC1lZGdlc1wiXSksXCJzeW1ib2wtc29ydC1rZXlcIjpuZXcgRXModGUubGF5b3V0X3N5bWJvbFtcInN5bWJvbC1zb3J0LWtleVwiXSksXCJzeW1ib2wtei1vcmRlclwiOm5ldyBCcyh0ZS5sYXlvdXRfc3ltYm9sW1wic3ltYm9sLXotb3JkZXJcIl0pLFwiaWNvbi1hbGxvdy1vdmVybGFwXCI6bmV3IEJzKHRlLmxheW91dF9zeW1ib2xbXCJpY29uLWFsbG93LW92ZXJsYXBcIl0pLFwiaWNvbi1pZ25vcmUtcGxhY2VtZW50XCI6bmV3IEJzKHRlLmxheW91dF9zeW1ib2xbXCJpY29uLWlnbm9yZS1wbGFjZW1lbnRcIl0pLFwiaWNvbi1vcHRpb25hbFwiOm5ldyBCcyh0ZS5sYXlvdXRfc3ltYm9sW1wiaWNvbi1vcHRpb25hbFwiXSksXCJpY29uLXJvdGF0aW9uLWFsaWdubWVudFwiOm5ldyBCcyh0ZS5sYXlvdXRfc3ltYm9sW1wiaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnRcIl0pLFwiaWNvbi1zaXplXCI6bmV3IEVzKHRlLmxheW91dF9zeW1ib2xbXCJpY29uLXNpemVcIl0pLFwiaWNvbi10ZXh0LWZpdFwiOm5ldyBCcyh0ZS5sYXlvdXRfc3ltYm9sW1wiaWNvbi10ZXh0LWZpdFwiXSksXCJpY29uLXRleHQtZml0LXBhZGRpbmdcIjpuZXcgQnModGUubGF5b3V0X3N5bWJvbFtcImljb24tdGV4dC1maXQtcGFkZGluZ1wiXSksXCJpY29uLWltYWdlXCI6bmV3IEVzKHRlLmxheW91dF9zeW1ib2xbXCJpY29uLWltYWdlXCJdKSxcImljb24tcm90YXRlXCI6bmV3IEVzKHRlLmxheW91dF9zeW1ib2xbXCJpY29uLXJvdGF0ZVwiXSksXCJpY29uLXBhZGRpbmdcIjpuZXcgQnModGUubGF5b3V0X3N5bWJvbFtcImljb24tcGFkZGluZ1wiXSksXCJpY29uLWtlZXAtdXByaWdodFwiOm5ldyBCcyh0ZS5sYXlvdXRfc3ltYm9sW1wiaWNvbi1rZWVwLXVwcmlnaHRcIl0pLFwiaWNvbi1vZmZzZXRcIjpuZXcgRXModGUubGF5b3V0X3N5bWJvbFtcImljb24tb2Zmc2V0XCJdKSxcImljb24tYW5jaG9yXCI6bmV3IEVzKHRlLmxheW91dF9zeW1ib2xbXCJpY29uLWFuY2hvclwiXSksXCJpY29uLXBpdGNoLWFsaWdubWVudFwiOm5ldyBCcyh0ZS5sYXlvdXRfc3ltYm9sW1wiaWNvbi1waXRjaC1hbGlnbm1lbnRcIl0pLFwidGV4dC1waXRjaC1hbGlnbm1lbnRcIjpuZXcgQnModGUubGF5b3V0X3N5bWJvbFtcInRleHQtcGl0Y2gtYWxpZ25tZW50XCJdKSxcInRleHQtcm90YXRpb24tYWxpZ25tZW50XCI6bmV3IEJzKHRlLmxheW91dF9zeW1ib2xbXCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudFwiXSksXCJ0ZXh0LWZpZWxkXCI6bmV3IEVzKHRlLmxheW91dF9zeW1ib2xbXCJ0ZXh0LWZpZWxkXCJdKSxcInRleHQtZm9udFwiOm5ldyBFcyh0ZS5sYXlvdXRfc3ltYm9sW1widGV4dC1mb250XCJdKSxcInRleHQtc2l6ZVwiOm5ldyBFcyh0ZS5sYXlvdXRfc3ltYm9sW1widGV4dC1zaXplXCJdKSxcInRleHQtbWF4LXdpZHRoXCI6bmV3IEVzKHRlLmxheW91dF9zeW1ib2xbXCJ0ZXh0LW1heC13aWR0aFwiXSksXCJ0ZXh0LWxpbmUtaGVpZ2h0XCI6bmV3IEVzKHRlLmxheW91dF9zeW1ib2xbXCJ0ZXh0LWxpbmUtaGVpZ2h0XCJdKSxcInRleHQtbGV0dGVyLXNwYWNpbmdcIjpuZXcgRXModGUubGF5b3V0X3N5bWJvbFtcInRleHQtbGV0dGVyLXNwYWNpbmdcIl0pLFwidGV4dC1qdXN0aWZ5XCI6bmV3IEVzKHRlLmxheW91dF9zeW1ib2xbXCJ0ZXh0LWp1c3RpZnlcIl0pLFwidGV4dC1yYWRpYWwtb2Zmc2V0XCI6bmV3IEVzKHRlLmxheW91dF9zeW1ib2xbXCJ0ZXh0LXJhZGlhbC1vZmZzZXRcIl0pLFwidGV4dC12YXJpYWJsZS1hbmNob3JcIjpuZXcgQnModGUubGF5b3V0X3N5bWJvbFtcInRleHQtdmFyaWFibGUtYW5jaG9yXCJdKSxcInRleHQtYW5jaG9yXCI6bmV3IEVzKHRlLmxheW91dF9zeW1ib2xbXCJ0ZXh0LWFuY2hvclwiXSksXCJ0ZXh0LW1heC1hbmdsZVwiOm5ldyBCcyh0ZS5sYXlvdXRfc3ltYm9sW1widGV4dC1tYXgtYW5nbGVcIl0pLFwidGV4dC13cml0aW5nLW1vZGVcIjpuZXcgQnModGUubGF5b3V0X3N5bWJvbFtcInRleHQtd3JpdGluZy1tb2RlXCJdKSxcInRleHQtcm90YXRlXCI6bmV3IEVzKHRlLmxheW91dF9zeW1ib2xbXCJ0ZXh0LXJvdGF0ZVwiXSksXCJ0ZXh0LXBhZGRpbmdcIjpuZXcgQnModGUubGF5b3V0X3N5bWJvbFtcInRleHQtcGFkZGluZ1wiXSksXCJ0ZXh0LWtlZXAtdXByaWdodFwiOm5ldyBCcyh0ZS5sYXlvdXRfc3ltYm9sW1widGV4dC1rZWVwLXVwcmlnaHRcIl0pLFwidGV4dC10cmFuc2Zvcm1cIjpuZXcgRXModGUubGF5b3V0X3N5bWJvbFtcInRleHQtdHJhbnNmb3JtXCJdKSxcInRleHQtb2Zmc2V0XCI6bmV3IEVzKHRlLmxheW91dF9zeW1ib2xbXCJ0ZXh0LW9mZnNldFwiXSksXCJ0ZXh0LWFsbG93LW92ZXJsYXBcIjpuZXcgQnModGUubGF5b3V0X3N5bWJvbFtcInRleHQtYWxsb3ctb3ZlcmxhcFwiXSksXCJ0ZXh0LWlnbm9yZS1wbGFjZW1lbnRcIjpuZXcgQnModGUubGF5b3V0X3N5bWJvbFtcInRleHQtaWdub3JlLXBsYWNlbWVudFwiXSksXCJ0ZXh0LW9wdGlvbmFsXCI6bmV3IEJzKHRlLmxheW91dF9zeW1ib2xbXCJ0ZXh0LW9wdGlvbmFsXCJdKX0pO3ZhciB1Zj17cGFpbnQ6bmV3IFBzKHtcImljb24tb3BhY2l0eVwiOm5ldyBFcyh0ZS5wYWludF9zeW1ib2xbXCJpY29uLW9wYWNpdHlcIl0pLFwiaWNvbi1jb2xvclwiOm5ldyBFcyh0ZS5wYWludF9zeW1ib2xbXCJpY29uLWNvbG9yXCJdKSxcImljb24taGFsby1jb2xvclwiOm5ldyBFcyh0ZS5wYWludF9zeW1ib2xbXCJpY29uLWhhbG8tY29sb3JcIl0pLFwiaWNvbi1oYWxvLXdpZHRoXCI6bmV3IEVzKHRlLnBhaW50X3N5bWJvbFtcImljb24taGFsby13aWR0aFwiXSksXCJpY29uLWhhbG8tYmx1clwiOm5ldyBFcyh0ZS5wYWludF9zeW1ib2xbXCJpY29uLWhhbG8tYmx1clwiXSksXCJpY29uLXRyYW5zbGF0ZVwiOm5ldyBCcyh0ZS5wYWludF9zeW1ib2xbXCJpY29uLXRyYW5zbGF0ZVwiXSksXCJpY29uLXRyYW5zbGF0ZS1hbmNob3JcIjpuZXcgQnModGUucGFpbnRfc3ltYm9sW1wiaWNvbi10cmFuc2xhdGUtYW5jaG9yXCJdKSxcInRleHQtb3BhY2l0eVwiOm5ldyBFcyh0ZS5wYWludF9zeW1ib2xbXCJ0ZXh0LW9wYWNpdHlcIl0pLFwidGV4dC1jb2xvclwiOm5ldyBFcyh0ZS5wYWludF9zeW1ib2xbXCJ0ZXh0LWNvbG9yXCJdLHtydW50aW1lVHlwZTpwZSxnZXRPdmVycmlkZTp0PT50LnRleHRDb2xvcixoYXNPdmVycmlkZTp0PT4hIXQudGV4dENvbG9yfSksXCJ0ZXh0LWhhbG8tY29sb3JcIjpuZXcgRXModGUucGFpbnRfc3ltYm9sW1widGV4dC1oYWxvLWNvbG9yXCJdKSxcInRleHQtaGFsby13aWR0aFwiOm5ldyBFcyh0ZS5wYWludF9zeW1ib2xbXCJ0ZXh0LWhhbG8td2lkdGhcIl0pLFwidGV4dC1oYWxvLWJsdXJcIjpuZXcgRXModGUucGFpbnRfc3ltYm9sW1widGV4dC1oYWxvLWJsdXJcIl0pLFwidGV4dC10cmFuc2xhdGVcIjpuZXcgQnModGUucGFpbnRfc3ltYm9sW1widGV4dC10cmFuc2xhdGVcIl0pLFwidGV4dC10cmFuc2xhdGUtYW5jaG9yXCI6bmV3IEJzKHRlLnBhaW50X3N5bWJvbFtcInRleHQtdHJhbnNsYXRlLWFuY2hvclwiXSl9KSxsYXlvdXQ6bGZ9O2NsYXNzIGNme2NvbnN0cnVjdG9yKHQpe3RoaXMudHlwZT10LnByb3BlcnR5Lm92ZXJyaWRlcz90LnByb3BlcnR5Lm92ZXJyaWRlcy5ydW50aW1lVHlwZTpsZSx0aGlzLmRlZmF1bHRWYWx1ZT10O31ldmFsdWF0ZSh0KXtpZih0LmZvcm1hdHRlZFNlY3Rpb24pe2NvbnN0IGU9dGhpcy5kZWZhdWx0VmFsdWUucHJvcGVydHkub3ZlcnJpZGVzO2lmKGUmJmUuaGFzT3ZlcnJpZGUodC5mb3JtYXR0ZWRTZWN0aW9uKSlyZXR1cm4gZS5nZXRPdmVycmlkZSh0LmZvcm1hdHRlZFNlY3Rpb24pfXJldHVybiB0LmZlYXR1cmUmJnQuZmVhdHVyZVN0YXRlP3RoaXMuZGVmYXVsdFZhbHVlLmV2YWx1YXRlKHQuZmVhdHVyZSx0LmZlYXR1cmVTdGF0ZSk6dGhpcy5kZWZhdWx0VmFsdWUucHJvcGVydHkuc3BlY2lmaWNhdGlvbi5kZWZhdWx0fWVhY2hDaGlsZCh0KXt0aGlzLmRlZmF1bHRWYWx1ZS5pc0NvbnN0YW50KCl8fHQodGhpcy5kZWZhdWx0VmFsdWUudmFsdWUuX3N0eWxlRXhwcmVzc2lvbi5leHByZXNzaW9uKTt9b3V0cHV0RGVmaW5lZCgpe3JldHVybiAhMX1zZXJpYWxpemUoKXtyZXR1cm4gbnVsbH19SmkoY2YsXCJGb3JtYXRTZWN0aW9uT3ZlcnJpZGVcIix7b21pdDpbXCJkZWZhdWx0VmFsdWVcIl19KTtjbGFzcyBoZiBleHRlbmRzIHJve2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsdWYpO31yZWNhbGN1bGF0ZSh0LGUpe3N1cGVyLnJlY2FsY3VsYXRlKHQsZSksXCJhdXRvXCI9PT10aGlzLmxheW91dC5nZXQoXCJpY29uLXJvdGF0aW9uLWFsaWdubWVudFwiKSYmKHRoaXMubGF5b3V0Ll92YWx1ZXNbXCJpY29uLXJvdGF0aW9uLWFsaWdubWVudFwiXT1cInBvaW50XCIhPT10aGlzLmxheW91dC5nZXQoXCJzeW1ib2wtcGxhY2VtZW50XCIpP1wibWFwXCI6XCJ2aWV3cG9ydFwiKSxcImF1dG9cIj09PXRoaXMubGF5b3V0LmdldChcInRleHQtcm90YXRpb24tYWxpZ25tZW50XCIpJiYodGhpcy5sYXlvdXQuX3ZhbHVlc1tcInRleHQtcm90YXRpb24tYWxpZ25tZW50XCJdPVwicG9pbnRcIiE9PXRoaXMubGF5b3V0LmdldChcInN5bWJvbC1wbGFjZW1lbnRcIik/XCJtYXBcIjpcInZpZXdwb3J0XCIpLFwiYXV0b1wiPT09dGhpcy5sYXlvdXQuZ2V0KFwidGV4dC1waXRjaC1hbGlnbm1lbnRcIikmJih0aGlzLmxheW91dC5fdmFsdWVzW1widGV4dC1waXRjaC1hbGlnbm1lbnRcIl09dGhpcy5sYXlvdXQuZ2V0KFwidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnRcIikpLFwiYXV0b1wiPT09dGhpcy5sYXlvdXQuZ2V0KFwiaWNvbi1waXRjaC1hbGlnbm1lbnRcIikmJih0aGlzLmxheW91dC5fdmFsdWVzW1wiaWNvbi1waXRjaC1hbGlnbm1lbnRcIl09dGhpcy5sYXlvdXQuZ2V0KFwiaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnRcIikpO2NvbnN0IHI9dGhpcy5sYXlvdXQuZ2V0KFwidGV4dC13cml0aW5nLW1vZGVcIik7aWYocil7Y29uc3QgdD1bXTtmb3IoY29uc3QgZSBvZiByKXQuaW5kZXhPZihlKTwwJiZ0LnB1c2goZSk7dGhpcy5sYXlvdXQuX3ZhbHVlc1tcInRleHQtd3JpdGluZy1tb2RlXCJdPXQ7fWVsc2UgdGhpcy5sYXlvdXQuX3ZhbHVlc1tcInRleHQtd3JpdGluZy1tb2RlXCJdPVwicG9pbnRcIj09PXRoaXMubGF5b3V0LmdldChcInN5bWJvbC1wbGFjZW1lbnRcIik/W1wiaG9yaXpvbnRhbFwiXTpbXCJob3Jpem9udGFsXCIsXCJ2ZXJ0aWNhbFwiXTt0aGlzLl9zZXRQYWludE92ZXJyaWRlcygpO31nZXRWYWx1ZUFuZFJlc29sdmVUb2tlbnModCxlLHIsbil7Y29uc3QgaT10aGlzLmxheW91dC5nZXQodCkuZXZhbHVhdGUoZSx7fSxyLG4pLHM9dGhpcy5fdW5ldmFsdWF0ZWRMYXlvdXQuX3ZhbHVlc1t0XTtyZXR1cm4gcy5pc0RhdGFEcml2ZW4oKXx8Sm4ocy52YWx1ZSl8fCFpP2k6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5yZXBsYWNlKC97KFtee31dKyl9L2csKChlLHIpPT5yIGluIHQ/U3RyaW5nKHRbcl0pOlwiXCIpKX0oZS5wcm9wZXJ0aWVzLGkpfWNyZWF0ZUJ1Y2tldCh0KXtyZXR1cm4gbmV3IG9mKHQpfXF1ZXJ5UmFkaXVzKCl7cmV0dXJuIDB9cXVlcnlJbnRlcnNlY3RzRmVhdHVyZSgpe3JldHVybiAhMX1fc2V0UGFpbnRPdmVycmlkZXMoKXtmb3IoY29uc3QgdCBvZiB1Zi5wYWludC5vdmVycmlkYWJsZVByb3BlcnRpZXMpe2lmKCFoZi5oYXNQYWludE92ZXJyaWRlKHRoaXMubGF5b3V0LHQpKWNvbnRpbnVlO2NvbnN0IGU9dGhpcy5wYWludC5nZXQodCkscj1uZXcgY2YoZSksbj1uZXcgWG4ocixlLnByb3BlcnR5LnNwZWNpZmljYXRpb24pO2xldCBpPW51bGw7aT1cImNvbnN0YW50XCI9PT1lLnZhbHVlLmtpbmR8fFwic291cmNlXCI9PT1lLnZhbHVlLmtpbmQ/bmV3IFluKFwic291cmNlXCIsbik6bmV3IFduKFwiY29tcG9zaXRlXCIsbixlLnZhbHVlLnpvb21TdG9wcyxlLnZhbHVlLl9pbnRlcnBvbGF0aW9uVHlwZSksdGhpcy5wYWludC5fdmFsdWVzW3RdPW5ldyBUcyhlLnByb3BlcnR5LGksZS5wYXJhbWV0ZXJzKTt9fV9oYW5kbGVPdmVycmlkYWJsZVBhaW50UHJvcGVydHlVcGRhdGUodCxlLHIpe3JldHVybiAhKCF0aGlzLmxheW91dHx8ZS5pc0RhdGFEcml2ZW4oKXx8ci5pc0RhdGFEcml2ZW4oKSkmJmhmLmhhc1BhaW50T3ZlcnJpZGUodGhpcy5sYXlvdXQsdCl9c3RhdGljIGhhc1BhaW50T3ZlcnJpZGUodCxlKXtjb25zdCByPXQuZ2V0KFwidGV4dC1maWVsZFwiKSxuPXVmLnBhaW50LnByb3BlcnRpZXNbZV07bGV0IGk9ITE7Y29uc3Qgcz10PT57Zm9yKGNvbnN0IGUgb2YgdClpZihuLm92ZXJyaWRlcyYmbi5vdmVycmlkZXMuaGFzT3ZlcnJpZGUoZSkpcmV0dXJuIHZvaWQoaT0hMCl9O2lmKFwiY29uc3RhbnRcIj09PXIudmFsdWUua2luZCYmci52YWx1ZS52YWx1ZSBpbnN0YW5jZW9mIERlKXMoci52YWx1ZS52YWx1ZS5zZWN0aW9ucyk7ZWxzZSBpZihcInNvdXJjZVwiPT09ci52YWx1ZS5raW5kKXtjb25zdCB0PWU9PntpfHwoZSBpbnN0YW5jZW9mIGplJiZSZShlLnZhbHVlKT09PW1lP3MoZS52YWx1ZS5zZWN0aW9ucyk6ZSBpbnN0YW5jZW9mIFplP3MoZS5zZWN0aW9ucyk6ZS5lYWNoQ2hpbGQodCkpO30sZT1yLnZhbHVlO2UuX3N0eWxlRXhwcmVzc2lvbiYmdChlLl9zdHlsZUV4cHJlc3Npb24uZXhwcmVzc2lvbik7fXJldHVybiBpfWdldFByb2dyYW1Db25maWd1cmF0aW9uKHQpe3JldHVybiBuZXcgWGEodGhpcyx0KX19dmFyIHBmPXtwYWludDpuZXcgUHMoe1wiYmFja2dyb3VuZC1jb2xvclwiOm5ldyBCcyh0ZS5wYWludF9iYWNrZ3JvdW5kW1wiYmFja2dyb3VuZC1jb2xvclwiXSksXCJiYWNrZ3JvdW5kLXBhdHRlcm5cIjpuZXcgQnModGUucGFpbnRfYmFja2dyb3VuZFtcImJhY2tncm91bmQtcGF0dGVyblwiXSksXCJiYWNrZ3JvdW5kLW9wYWNpdHlcIjpuZXcgQnModGUucGFpbnRfYmFja2dyb3VuZFtcImJhY2tncm91bmQtb3BhY2l0eVwiXSl9KX0sZGY9e3BhaW50Om5ldyBQcyh7XCJyYXN0ZXItb3BhY2l0eVwiOm5ldyBCcyh0ZS5wYWludF9yYXN0ZXJbXCJyYXN0ZXItb3BhY2l0eVwiXSksXCJyYXN0ZXItaHVlLXJvdGF0ZVwiOm5ldyBCcyh0ZS5wYWludF9yYXN0ZXJbXCJyYXN0ZXItaHVlLXJvdGF0ZVwiXSksXCJyYXN0ZXItYnJpZ2h0bmVzcy1taW5cIjpuZXcgQnModGUucGFpbnRfcmFzdGVyW1wicmFzdGVyLWJyaWdodG5lc3MtbWluXCJdKSxcInJhc3Rlci1icmlnaHRuZXNzLW1heFwiOm5ldyBCcyh0ZS5wYWludF9yYXN0ZXJbXCJyYXN0ZXItYnJpZ2h0bmVzcy1tYXhcIl0pLFwicmFzdGVyLXNhdHVyYXRpb25cIjpuZXcgQnModGUucGFpbnRfcmFzdGVyW1wicmFzdGVyLXNhdHVyYXRpb25cIl0pLFwicmFzdGVyLWNvbnRyYXN0XCI6bmV3IEJzKHRlLnBhaW50X3Jhc3RlcltcInJhc3Rlci1jb250cmFzdFwiXSksXCJyYXN0ZXItcmVzYW1wbGluZ1wiOm5ldyBCcyh0ZS5wYWludF9yYXN0ZXJbXCJyYXN0ZXItcmVzYW1wbGluZ1wiXSksXCJyYXN0ZXItZmFkZS1kdXJhdGlvblwiOm5ldyBCcyh0ZS5wYWludF9yYXN0ZXJbXCJyYXN0ZXItZmFkZS1kdXJhdGlvblwiXSl9KX07Y2xhc3MgZmYgZXh0ZW5kcyByb3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHt9KSx0aGlzLmltcGxlbWVudGF0aW9uPXQ7fWlzM0QoKXtyZXR1cm4gXCIzZFwiPT09dGhpcy5pbXBsZW1lbnRhdGlvbi5yZW5kZXJpbmdNb2RlfWhhc09mZnNjcmVlblBhc3MoKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5pbXBsZW1lbnRhdGlvbi5wcmVyZW5kZXJ9aXNMYXllckRyYXBlZCgpe3JldHVybiB2b2lkIDAhPT10aGlzLmltcGxlbWVudGF0aW9uLnJlbmRlclRvVGlsZX1zaG91bGRSZWRyYXBlKCl7cmV0dXJuICEhdGhpcy5pbXBsZW1lbnRhdGlvbi5zaG91bGRSZXJlbmRlclRpbGVzJiZ0aGlzLmltcGxlbWVudGF0aW9uLnNob3VsZFJlcmVuZGVyVGlsZXMoKX1yZWNhbGN1bGF0ZSgpe311cGRhdGVUcmFuc2l0aW9ucygpe31oYXNUcmFuc2l0aW9uKCl7cmV0dXJuICExfXNlcmlhbGl6ZSgpe31vbkFkZCh0KXt0aGlzLmltcGxlbWVudGF0aW9uLm9uQWRkJiZ0aGlzLmltcGxlbWVudGF0aW9uLm9uQWRkKHQsdC5wYWludGVyLmNvbnRleHQuZ2wpO31vblJlbW92ZSh0KXt0aGlzLmltcGxlbWVudGF0aW9uLm9uUmVtb3ZlJiZ0aGlzLmltcGxlbWVudGF0aW9uLm9uUmVtb3ZlKHQsdC5wYWludGVyLmNvbnRleHQuZ2wpO319dmFyIHlmPXtwYWludDpuZXcgUHMoe1wic2t5LXR5cGVcIjpuZXcgQnModGUucGFpbnRfc2t5W1wic2t5LXR5cGVcIl0pLFwic2t5LWF0bW9zcGhlcmUtc3VuXCI6bmV3IEJzKHRlLnBhaW50X3NreVtcInNreS1hdG1vc3BoZXJlLXN1blwiXSksXCJza3ktYXRtb3NwaGVyZS1zdW4taW50ZW5zaXR5XCI6bmV3IEJzKHRlLnBhaW50X3NreVtcInNreS1hdG1vc3BoZXJlLXN1bi1pbnRlbnNpdHlcIl0pLFwic2t5LWdyYWRpZW50LWNlbnRlclwiOm5ldyBCcyh0ZS5wYWludF9za3lbXCJza3ktZ3JhZGllbnQtY2VudGVyXCJdKSxcInNreS1ncmFkaWVudC1yYWRpdXNcIjpuZXcgQnModGUucGFpbnRfc2t5W1wic2t5LWdyYWRpZW50LXJhZGl1c1wiXSksXCJza3ktZ3JhZGllbnRcIjpuZXcgQ3ModGUucGFpbnRfc2t5W1wic2t5LWdyYWRpZW50XCJdKSxcInNreS1hdG1vc3BoZXJlLWhhbG8tY29sb3JcIjpuZXcgQnModGUucGFpbnRfc2t5W1wic2t5LWF0bW9zcGhlcmUtaGFsby1jb2xvclwiXSksXCJza3ktYXRtb3NwaGVyZS1jb2xvclwiOm5ldyBCcyh0ZS5wYWludF9za3lbXCJza3ktYXRtb3NwaGVyZS1jb2xvclwiXSksXCJza3ktb3BhY2l0eVwiOm5ldyBCcyh0ZS5wYWludF9za3lbXCJza3ktb3BhY2l0eVwiXSl9KX07ZnVuY3Rpb24gbWYodCxlLHIpe2NvbnN0IG49WzAsMCwxXSxpPUtvKFtdKTtyZXR1cm4gSm8oaSxpLHI/LXcodCkrTWF0aC5QSTp3KHQpKSxYbyhpLGksLXcoZSkpLFJvKG4sbixpKSxEbyhuLG4pfWNvbnN0IGdmPXtjaXJjbGU6Y2xhc3MgZXh0ZW5kcyByb3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LFR1KTt9Y3JlYXRlQnVja2V0KHQpe3JldHVybiBuZXcgY3UodCl9cXVlcnlSYWRpdXModCl7Y29uc3QgZT10O3JldHVybiBBdShcImNpcmNsZS1yYWRpdXNcIix0aGlzLGUpK0F1KFwiY2lyY2xlLXN0cm9rZS13aWR0aFwiLHRoaXMsZSkrU3UodGhpcy5wYWludC5nZXQoXCJjaXJjbGUtdHJhbnNsYXRlXCIpKX1xdWVyeUludGVyc2VjdHNGZWF0dXJlKHQsZSxyLG4saSxzLGEsbyl7Y29uc3QgbD1JdSh0aGlzLnBhaW50LmdldChcImNpcmNsZS10cmFuc2xhdGVcIiksdGhpcy5wYWludC5nZXQoXCJjaXJjbGUtdHJhbnNsYXRlLWFuY2hvclwiKSxzLmFuZ2xlLHQucGl4ZWxUb1RpbGVVbml0c0ZhY3RvciksdT10aGlzLnBhaW50LmdldChcImNpcmNsZS1yYWRpdXNcIikuZXZhbHVhdGUoZSxyKSt0aGlzLnBhaW50LmdldChcImNpcmNsZS1zdHJva2Utd2lkdGhcIikuZXZhbHVhdGUoZSxyKTtyZXR1cm4genUodCxuLHMsYSxvLFwibWFwXCI9PT10aGlzLnBhaW50LmdldChcImNpcmNsZS1waXRjaC1hbGlnbm1lbnRcIiksXCJtYXBcIj09PXRoaXMucGFpbnQuZ2V0KFwiY2lyY2xlLXBpdGNoLXNjYWxlXCIpLGwsdSl9Z2V0UHJvZ3JhbUlkcygpe3JldHVybiBbXCJjaXJjbGVcIl19Z2V0UHJvZ3JhbUNvbmZpZ3VyYXRpb24odCl7cmV0dXJuIG5ldyBYYSh0aGlzLHQpfX0saGVhdG1hcDpjbGFzcyBleHRlbmRzIHJve2NyZWF0ZUJ1Y2tldCh0KXtyZXR1cm4gbmV3IER1KHQpfWNvbnN0cnVjdG9yKHQpe3N1cGVyKHQsJHUpLHRoaXMuX3VwZGF0ZUNvbG9yUmFtcCgpO31faGFuZGxlU3BlY2lhbFBhaW50UHJvcGVydHlVcGRhdGUodCl7XCJoZWF0bWFwLWNvbG9yXCI9PT10JiZ0aGlzLl91cGRhdGVDb2xvclJhbXAoKTt9X3VwZGF0ZUNvbG9yUmFtcCgpe3RoaXMuY29sb3JSYW1wPWp1KHtleHByZXNzaW9uOnRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQuX3ZhbHVlc1tcImhlYXRtYXAtY29sb3JcIl0udmFsdWUuZXhwcmVzc2lvbixldmFsdWF0aW9uS2V5OlwiaGVhdG1hcERlbnNpdHlcIixpbWFnZTp0aGlzLmNvbG9yUmFtcH0pLHRoaXMuY29sb3JSYW1wVGV4dHVyZT1udWxsO31yZXNpemUoKXt0aGlzLmhlYXRtYXBGYm8mJih0aGlzLmhlYXRtYXBGYm8uZGVzdHJveSgpLHRoaXMuaGVhdG1hcEZibz1udWxsKTt9cXVlcnlSYWRpdXModCl7cmV0dXJuIEF1KFwiaGVhdG1hcC1yYWRpdXNcIix0aGlzLHQpfXF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmUodCxlLHIsbixpLHMsYSxvKXtjb25zdCBsPXRoaXMucGFpbnQuZ2V0KFwiaGVhdG1hcC1yYWRpdXNcIikuZXZhbHVhdGUoZSxyKTtyZXR1cm4genUodCxuLHMsYSxvLCEwLCEwLG5ldyB4KDAsMCksbCl9aGFzT2Zmc2NyZWVuUGFzcygpe3JldHVybiAwIT09dGhpcy5wYWludC5nZXQoXCJoZWF0bWFwLW9wYWNpdHlcIikmJlwibm9uZVwiIT09dGhpcy52aXNpYmlsaXR5fWdldFByb2dyYW1JZHMoKXtyZXR1cm4gW1wiaGVhdG1hcFwiLFwiaGVhdG1hcFRleHR1cmVcIl19Z2V0UHJvZ3JhbUNvbmZpZ3VyYXRpb24odCl7cmV0dXJuIG5ldyBYYSh0aGlzLHQpfX0saGlsbHNoYWRlOmNsYXNzIGV4dGVuZHMgcm97Y29uc3RydWN0b3IodCl7c3VwZXIodCxPdSk7fWhhc09mZnNjcmVlblBhc3MoKXtyZXR1cm4gMCE9PXRoaXMucGFpbnQuZ2V0KFwiaGlsbHNoYWRlLWV4YWdnZXJhdGlvblwiKSYmXCJub25lXCIhPT10aGlzLnZpc2liaWxpdHl9Z2V0UHJvZ3JhbUlkcygpe3JldHVybiBbXCJoaWxsc2hhZGVcIixcImhpbGxzaGFkZVByZXBhcmVcIl19fSxmaWxsOmNsYXNzIGV4dGVuZHMgcm97Y29uc3RydWN0b3IodCl7c3VwZXIodCx6Yyk7fWdldFByb2dyYW1JZHMoKXtjb25zdCB0PXRoaXMucGFpbnQuZ2V0KFwiZmlsbC1wYXR0ZXJuXCIpLGU9dCYmdC5jb25zdGFudE9yKDEpLHI9W2U/XCJmaWxsUGF0dGVyblwiOlwiZmlsbFwiXTtyZXR1cm4gdGhpcy5wYWludC5nZXQoXCJmaWxsLWFudGlhbGlhc1wiKSYmci5wdXNoKGUmJiF0aGlzLmdldFBhaW50UHJvcGVydHkoXCJmaWxsLW91dGxpbmUtY29sb3JcIik/XCJmaWxsT3V0bGluZVBhdHRlcm5cIjpcImZpbGxPdXRsaW5lXCIpLHJ9Z2V0UHJvZ3JhbUNvbmZpZ3VyYXRpb24odCl7cmV0dXJuIG5ldyBYYSh0aGlzLHQpfXJlY2FsY3VsYXRlKHQsZSl7c3VwZXIucmVjYWxjdWxhdGUodCxlKTtjb25zdCByPXRoaXMucGFpbnQuX3ZhbHVlc1tcImZpbGwtb3V0bGluZS1jb2xvclwiXTtcImNvbnN0YW50XCI9PT1yLnZhbHVlLmtpbmQmJnZvaWQgMD09PXIudmFsdWUudmFsdWUmJih0aGlzLnBhaW50Ll92YWx1ZXNbXCJmaWxsLW91dGxpbmUtY29sb3JcIl09dGhpcy5wYWludC5fdmFsdWVzW1wiZmlsbC1jb2xvclwiXSk7fWNyZWF0ZUJ1Y2tldCh0KXtyZXR1cm4gbmV3IE1jKHQpfXF1ZXJ5UmFkaXVzKCl7cmV0dXJuIFN1KHRoaXMucGFpbnQuZ2V0KFwiZmlsbC10cmFuc2xhdGVcIikpfXF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmUodCxlLHIsbixpLHMpe3JldHVybiAhdC5xdWVyeUdlb21ldHJ5LmlzQWJvdmVIb3Jpem9uJiZkdShrdSh0LnRpbGVzcGFjZUdlb21ldHJ5LHRoaXMucGFpbnQuZ2V0KFwiZmlsbC10cmFuc2xhdGVcIiksdGhpcy5wYWludC5nZXQoXCJmaWxsLXRyYW5zbGF0ZS1hbmNob3JcIikscy5hbmdsZSx0LnBpeGVsVG9UaWxlVW5pdHNGYWN0b3IpLG4pfWlzVGlsZUNsaXBwZWQoKXtyZXR1cm4gITB9fSxcImZpbGwtZXh0cnVzaW9uXCI6Y2xhc3MgZXh0ZW5kcyByb3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LGNoKTt9Y3JlYXRlQnVja2V0KHQpe3JldHVybiBuZXcgdGgodCl9cXVlcnlSYWRpdXMoKXtyZXR1cm4gU3UodGhpcy5wYWludC5nZXQoXCJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGVcIikpfWlzM0QoKXtyZXR1cm4gITB9Z2V0UHJvZ3JhbUlkcygpe3JldHVybiBbdGhpcy5wYWludC5nZXQoXCJmaWxsLWV4dHJ1c2lvbi1wYXR0ZXJuXCIpLmNvbnN0YW50T3IoMSk/XCJmaWxsRXh0cnVzaW9uUGF0dGVyblwiOlwiZmlsbEV4dHJ1c2lvblwiXX1nZXRQcm9ncmFtQ29uZmlndXJhdGlvbih0KXtyZXR1cm4gbmV3IFhhKHRoaXMsdCl9cXVlcnlJbnRlcnNlY3RzRmVhdHVyZSh0LGUscixuLGkscyxhLG8sbCl7Y29uc3QgdT1JdSh0aGlzLnBhaW50LmdldChcImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZVwiKSx0aGlzLnBhaW50LmdldChcImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZS1hbmNob3JcIikscy5hbmdsZSx0LnBpeGVsVG9UaWxlVW5pdHNGYWN0b3IpLGM9dGhpcy5wYWludC5nZXQoXCJmaWxsLWV4dHJ1c2lvbi1oZWlnaHRcIikuZXZhbHVhdGUoZSxyKSxoPXRoaXMucGFpbnQuZ2V0KFwiZmlsbC1leHRydXNpb24tYmFzZVwiKS5ldmFsdWF0ZShlLHIpLHA9WzAsMF0sZD1vJiZzLmVsZXZhdGlvbixmPXMuZWxldmF0aW9uP3MuZWxldmF0aW9uLmV4YWdnZXJhdGlvbigpOjEseT10LnRpbGUuZ2V0QnVja2V0KHRoaXMpO2lmKGQmJnkgaW5zdGFuY2VvZiB0aCl7Y29uc3QgdD15LmNlbnRyb2lkVmVydGV4QXJyYXksZT1sKzE7ZTx0Lmxlbmd0aCYmKHBbMF09dC5nZXRhX2NlbnRyb2lkX3BvczAoZSkscFsxXT10LmdldGFfY2VudHJvaWRfcG9zMShlKSk7fWlmKDA9PT1wWzBdJiYxPT09cFsxXSlyZXR1cm4gITE7XCJnbG9iZVwiPT09cy5wcm9qZWN0aW9uLm5hbWUmJihuPWxoKFtuXSxbbmV3IHgoMCwwKSxuZXcgeChhbyxhbyldLHQudGlsZUlELmNhbm9uaWNhbCkubWFwKCh0PT50LnBvbHlnb24pKS5mbGF0KCkpO2NvbnN0IG09ZD9vOm51bGwsW2csdl09ZnVuY3Rpb24odCxlLHIsbixpLHMsYSxvLGwsdSxjKXtyZXR1cm4gXCJnbG9iZVwiPT09dC5wcm9qZWN0aW9uLm5hbWU/ZnVuY3Rpb24odCxlLHIsbixpLHMsYSxvLGwsdSxjKXtjb25zdCBoPVtdLHA9W10sZD10LnByb2plY3Rpb24udXBWZWN0b3JTY2FsZShjLHQuY2VudGVyLmxhdCx0LndvcmxkU2l6ZSkubWV0ZXJzVG9UaWxlLGY9WzAsMCwwLDFdLHk9WzAsMCwwLDFdLG09KHQsZSxyLG4pPT57dFswXT1lLHRbMV09cix0WzJdPW4sdFszXT0xO30sZz1vaCgpO3I+MCYmKHIrPWcpLG4rPWc7Zm9yKGNvbnN0IGcgb2YgZSl7Y29uc3QgZT1bXSx4PVtdO2Zvcihjb25zdCBoIG9mIGcpe2NvbnN0IHA9aC54K2kueCxnPWgueStpLnksdj10LnByb2plY3Rpb24ucHJvamVjdFRpbGVQb2ludChwLGcsYyksYj10LnByb2plY3Rpb24udXBWZWN0b3IoYyxoLngsaC55KTtsZXQgdz1yLF89bjtpZihhKXtjb25zdCB0PXZoKHAsZyxyLG4sYSxvLGwsdSk7dys9dC5iYXNlLF8rPXQudG9wO30wIT09cj9tKGYsdi54K2JbMF0qZCp3LHYueStiWzFdKmQqdyx2LnorYlsyXSpkKncpOm0oZix2Lngsdi55LHYueiksbSh5LHYueCtiWzBdKmQqXyx2LnkrYlsxXSpkKl8sdi56K2JbMl0qZCpfKSxGbyhmLGYscyksRm8oeSx5LHMpLGUucHVzaChuZXcgbWgoZlswXSxmWzFdLGZbMl0pKSx4LnB1c2gobmV3IG1oKHlbMF0seVsxXSx5WzJdKSk7fWgucHVzaChlKSxwLnB1c2goeCk7fXJldHVybiBbaCxwXX0odCxlLHIsbixpLHMsYSxvLGwsdSxjKTphP2Z1bmN0aW9uKHQsZSxyLG4saSxzLGEsbyxsKXtjb25zdCB1PVtdLGM9W10saD1bMCwwLDAsMV07Zm9yKGNvbnN0IHAgb2YgdCl7Y29uc3QgdD1bXSxkPVtdO2Zvcihjb25zdCB1IG9mIHApe2NvbnN0IGM9dS54K24ueCxwPXUueStuLnksZj12aChjLHAsZSxyLHMsYSxvLGwpO2hbMF09YyxoWzFdPXAsaFsyXT1mLmJhc2UsaFszXT0xLEdvKGgsaCxpKSxoWzNdPU1hdGgubWF4KGhbM10sMWUtNSk7Y29uc3QgeT1uZXcgbWgoaFswXS9oWzNdLGhbMV0vaFszXSxoWzJdL2hbM10pO2hbMF09YyxoWzFdPXAsaFsyXT1mLnRvcCxoWzNdPTEsR28oaCxoLGkpLGhbM109TWF0aC5tYXgoaFszXSwxZS01KTtjb25zdCBtPW5ldyBtaChoWzBdL2hbM10saFsxXS9oWzNdLGhbMl0vaFszXSk7dC5wdXNoKHkpLGQucHVzaChtKTt9dS5wdXNoKHQpLGMucHVzaChkKTt9cmV0dXJuIFt1LGNdfShlLHIsbixpLHMsYSxvLGwsdSk6ZnVuY3Rpb24odCxlLHIsbixpKXtjb25zdCBzPVtdLGE9W10sbz1pWzhdKmUsbD1pWzldKmUsdT1pWzEwXSplLGM9aVsxMV0qZSxoPWlbOF0qcixwPWlbOV0qcixkPWlbMTBdKnIsZj1pWzExXSpyO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9W10scj1bXTtmb3IoY29uc3QgcyBvZiBlKXtjb25zdCBlPXMueCtuLngsYT1zLnkrbi55LHk9aVswXSplK2lbNF0qYStpWzEyXSxtPWlbMV0qZStpWzVdKmEraVsxM10sZz1pWzJdKmUraVs2XSphK2lbMTRdLHg9aVszXSplK2lbN10qYStpWzE1XSx2PXkrbyxiPW0rbCx3PWcrdSxfPU1hdGgubWF4KHgrYywxZS01KSxBPXkraCxTPW0rcCxrPWcrZCxJPU1hdGgubWF4KHgrZiwxZS01KTt0LnB1c2gobmV3IG1oKHYvXyxiL18sdy9fKSksci5wdXNoKG5ldyBtaChBL0ksUy9JLGsvSSkpO31zLnB1c2godCksYS5wdXNoKHIpO31yZXR1cm4gW3MsYV19KGUscixuLGkscyl9KHMsbixoLGMsdSxhLG0scCxmLHMuY2VudGVyLmxhdCx0LnRpbGVJRC5jYW5vbmljYWwpLGI9dC5xdWVyeUdlb21ldHJ5O3JldHVybiBmdW5jdGlvbih0LGUscil7bGV0IG49MS8wO2R1KHIsZSkmJihuPXhoKHIsZVswXSkpO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXtjb25zdCBzPWVbaV0sYT10W2ldO2ZvcihsZXQgdD0wO3Q8cy5sZW5ndGgtMTt0Kyspe2NvbnN0IGU9c1t0XSxpPVtlLHNbdCsxXSxhW3QrMV0sYVt0XSxlXTtodShyLGkpJiYobj1NYXRoLm1pbihuLHhoKHIsaSkpKTt9fXJldHVybiBuIT09MS8wJiZufShnLHYsYi5pc1BvaW50UXVlcnkoKT9iLnNjcmVlbkJvdW5kczpiLnNjcmVlbkdlb21ldHJ5KX19LGxpbmU6Y2xhc3MgZXh0ZW5kcyByb3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LFRoKSx0aGlzLmdyYWRpZW50VmVyc2lvbj0wO31faGFuZGxlU3BlY2lhbFBhaW50UHJvcGVydHlVcGRhdGUodCl7aWYoXCJsaW5lLWdyYWRpZW50XCI9PT10KXtjb25zdCB0PXRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQuX3ZhbHVlc1tcImxpbmUtZ3JhZGllbnRcIl0udmFsdWUuZXhwcmVzc2lvbjt0aGlzLnN0ZXBJbnRlcnBvbGFudD10Ll9zdHlsZUV4cHJlc3Npb24mJnQuX3N0eWxlRXhwcmVzc2lvbi5leHByZXNzaW9uIGluc3RhbmNlb2YgQnIsdGhpcy5ncmFkaWVudFZlcnNpb249KHRoaXMuZ3JhZGllbnRWZXJzaW9uKzEpJU51bWJlci5NQVhfU0FGRV9JTlRFR0VSO319Z3JhZGllbnRFeHByZXNzaW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQuX3ZhbHVlc1tcImxpbmUtZ3JhZGllbnRcIl0udmFsdWUuZXhwcmVzc2lvbn13aWR0aEV4cHJlc3Npb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbmFibGVQYWludC5fdmFsdWVzW1wibGluZS13aWR0aFwiXS52YWx1ZS5leHByZXNzaW9ufXJlY2FsY3VsYXRlKHQsZSl7c3VwZXIucmVjYWxjdWxhdGUodCxlKSx0aGlzLnBhaW50Ll92YWx1ZXNbXCJsaW5lLWZsb29yd2lkdGhcIl09emgucG9zc2libHlFdmFsdWF0ZSh0aGlzLl90cmFuc2l0aW9uaW5nUGFpbnQuX3ZhbHVlc1tcImxpbmUtd2lkdGhcIl0udmFsdWUsdCk7fWNyZWF0ZUJ1Y2tldCh0KXtyZXR1cm4gbmV3IEloKHQpfWdldFByb2dyYW1JZHMoKXtyZXR1cm4gW3RoaXMucGFpbnQuZ2V0KFwibGluZS1wYXR0ZXJuXCIpLmNvbnN0YW50T3IoMSk/XCJsaW5lUGF0dGVyblwiOlwibGluZVwiXX1nZXRQcm9ncmFtQ29uZmlndXJhdGlvbih0KXtyZXR1cm4gbmV3IFhhKHRoaXMsdCl9cXVlcnlSYWRpdXModCl7Y29uc3QgZT10LHI9QmgoQXUoXCJsaW5lLXdpZHRoXCIsdGhpcyxlKSxBdShcImxpbmUtZ2FwLXdpZHRoXCIsdGhpcyxlKSksbj1BdShcImxpbmUtb2Zmc2V0XCIsdGhpcyxlKTtyZXR1cm4gci8yK01hdGguYWJzKG4pK1N1KHRoaXMucGFpbnQuZ2V0KFwibGluZS10cmFuc2xhdGVcIikpfXF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmUodCxlLHIsbixpLHMpe2lmKHQucXVlcnlHZW9tZXRyeS5pc0Fib3ZlSG9yaXpvbilyZXR1cm4gITE7Y29uc3QgYT1rdSh0LnRpbGVzcGFjZUdlb21ldHJ5LHRoaXMucGFpbnQuZ2V0KFwibGluZS10cmFuc2xhdGVcIiksdGhpcy5wYWludC5nZXQoXCJsaW5lLXRyYW5zbGF0ZS1hbmNob3JcIikscy5hbmdsZSx0LnBpeGVsVG9UaWxlVW5pdHNGYWN0b3IpLG89dC5waXhlbFRvVGlsZVVuaXRzRmFjdG9yLzIqQmgodGhpcy5wYWludC5nZXQoXCJsaW5lLXdpZHRoXCIpLmV2YWx1YXRlKGUsciksdGhpcy5wYWludC5nZXQoXCJsaW5lLWdhcC13aWR0aFwiKS5ldmFsdWF0ZShlLHIpKSxsPXRoaXMucGFpbnQuZ2V0KFwibGluZS1vZmZzZXRcIikuZXZhbHVhdGUoZSxyKTtyZXR1cm4gbCYmKG49ZnVuY3Rpb24odCxlKXtjb25zdCByPVtdLG49bmV3IHgoMCwwKTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7Y29uc3Qgcz10W2ldLGE9W107Zm9yKGxldCB0PTA7dDxzLmxlbmd0aDt0Kyspe2NvbnN0IHI9c1t0XSxpPXNbdCsxXSxvPTA9PT10P246ci5zdWIoc1t0LTFdKS5fdW5pdCgpLl9wZXJwKCksbD10PT09cy5sZW5ndGgtMT9uOmkuc3ViKHIpLl91bml0KCkuX3BlcnAoKSx1PW8uX2FkZChsKS5fdW5pdCgpO3UuX211bHQoMS8odS54KmwueCt1LnkqbC55KSksYS5wdXNoKHUuX211bHQoZSkuX2FkZChyKSk7fXIucHVzaChhKTt9cmV0dXJuIHJ9KG4sbCp0LnBpeGVsVG9UaWxlVW5pdHNGYWN0b3IpKSxmdW5jdGlvbih0LGUscil7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IGk9ZVtuXTtpZih0Lmxlbmd0aD49Mylmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrKylpZihidSh0LGlbZV0pKXJldHVybiAhMDtpZihmdSh0LGkscikpcmV0dXJuICEwfXJldHVybiAhMX0oYSxuLG8pfWlzVGlsZUNsaXBwZWQoKXtyZXR1cm4gITB9fSxzeW1ib2w6aGYsYmFja2dyb3VuZDpjbGFzcyBleHRlbmRzIHJve2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQscGYpO31nZXRQcm9ncmFtSWRzKCl7cmV0dXJuIFt0aGlzLnBhaW50LmdldChcImJhY2tncm91bmQtcGF0dGVyblwiKT9cImJhY2tncm91bmRQYXR0ZXJuXCI6XCJiYWNrZ3JvdW5kXCJdfX0scmFzdGVyOmNsYXNzIGV4dGVuZHMgcm97Y29uc3RydWN0b3IodCl7c3VwZXIodCxkZik7fWdldFByb2dyYW1JZHMoKXtyZXR1cm4gW1wicmFzdGVyXCJdfX0sc2t5OmNsYXNzIGV4dGVuZHMgcm97Y29uc3RydWN0b3IodCl7c3VwZXIodCx5ZiksdGhpcy5fdXBkYXRlQ29sb3JSYW1wKCk7fV9oYW5kbGVTcGVjaWFsUGFpbnRQcm9wZXJ0eVVwZGF0ZSh0KXtcInNreS1ncmFkaWVudFwiPT09dD90aGlzLl91cGRhdGVDb2xvclJhbXAoKTpcInNreS1hdG1vc3BoZXJlLXN1blwiIT09dCYmXCJza3ktYXRtb3NwaGVyZS1oYWxvLWNvbG9yXCIhPT10JiZcInNreS1hdG1vc3BoZXJlLWNvbG9yXCIhPT10JiZcInNreS1hdG1vc3BoZXJlLXN1bi1pbnRlbnNpdHlcIiE9PXR8fCh0aGlzLl9za3lib3hJbnZhbGlkYXRlZD0hMCk7fV91cGRhdGVDb2xvclJhbXAoKXt0aGlzLmNvbG9yUmFtcD1qdSh7ZXhwcmVzc2lvbjp0aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50Ll92YWx1ZXNbXCJza3ktZ3JhZGllbnRcIl0udmFsdWUuZXhwcmVzc2lvbixldmFsdWF0aW9uS2V5Olwic2t5UmFkaWFsUHJvZ3Jlc3NcIn0pLHRoaXMuY29sb3JSYW1wVGV4dHVyZSYmKHRoaXMuY29sb3JSYW1wVGV4dHVyZS5kZXN0cm95KCksdGhpcy5jb2xvclJhbXBUZXh0dXJlPW51bGwpO31uZWVkc1NreWJveENhcHR1cmUodCl7aWYodGhpcy5fc2t5Ym94SW52YWxpZGF0ZWR8fCF0aGlzLnNreWJveFRleHR1cmV8fCF0aGlzLnNreWJveEdlb21ldHJ5KXJldHVybiAhMDtpZighdGhpcy5wYWludC5nZXQoXCJza3ktYXRtb3NwaGVyZS1zdW5cIikpe2NvbnN0IGU9dC5zdHlsZS5saWdodC5wcm9wZXJ0aWVzLmdldChcInBvc2l0aW9uXCIpO3JldHVybiB0aGlzLl9saWdodFBvc2l0aW9uLmF6aW11dGhhbCE9PWUuYXppbXV0aGFsfHx0aGlzLl9saWdodFBvc2l0aW9uLnBvbGFyIT09ZS5wb2xhcn1yZXR1cm4gITF9Z2V0Q2VudGVyKHQsZSl7aWYoXCJhdG1vc3BoZXJlXCI9PT10aGlzLnBhaW50LmdldChcInNreS10eXBlXCIpKXtjb25zdCByPXRoaXMucGFpbnQuZ2V0KFwic2t5LWF0bW9zcGhlcmUtc3VuXCIpLG49IXIsaT10LnN0eWxlLmxpZ2h0LHM9aS5wcm9wZXJ0aWVzLmdldChcInBvc2l0aW9uXCIpO3JldHVybiBuJiZcInZpZXdwb3J0XCI9PT1pLnByb3BlcnRpZXMuZ2V0KFwiYW5jaG9yXCIpJiZOKFwiVGhlIHN1biBkaXJlY3Rpb24gaXMgYXR0YWNoZWQgdG8gYSBsaWdodCB3aXRoIHZpZXdwb3J0IGFuY2hvciwgbGlnaHRpbmcgbWF5IGJlaGF2ZSB1bmV4cGVjdGVkbHkuXCIpLG4/bWYocy5hemltdXRoYWwsOTAtcy5wb2xhcixlKTptZihyWzBdLDkwLXJbMV0sZSl9Y29uc3Qgcj10aGlzLnBhaW50LmdldChcInNreS1ncmFkaWVudC1jZW50ZXJcIik7cmV0dXJuIG1mKHJbMF0sOTAtclsxXSxlKX1pczNEKCl7cmV0dXJuICExfWlzU2t5KCl7cmV0dXJuICEwfW1hcmtTa3lib3hWYWxpZCh0KXt0aGlzLl9za3lib3hJbnZhbGlkYXRlZD0hMSx0aGlzLl9saWdodFBvc2l0aW9uPXQuc3R5bGUubGlnaHQucHJvcGVydGllcy5nZXQoXCJwb3NpdGlvblwiKTt9aGFzT2Zmc2NyZWVuUGFzcygpe3JldHVybiAhMH1nZXRQcm9ncmFtSWRzKCl7Y29uc3QgdD10aGlzLnBhaW50LmdldChcInNreS10eXBlXCIpO3JldHVybiBcImF0bW9zcGhlcmVcIj09PXQ/W1wic2t5Ym94Q2FwdHVyZVwiLFwic2t5Ym94XCJdOlwiZ3JhZGllbnRcIj09PXQ/W1wic2t5Ym94R3JhZGllbnRcIl06bnVsbH19fTtjbGFzcyB4Zntjb25zdHJ1Y3Rvcih0LGUscixuKXt0aGlzLmNvbnRleHQ9dCx0aGlzLmZvcm1hdD1yLHRoaXMudGV4dHVyZT10LmdsLmNyZWF0ZVRleHR1cmUoKSx0aGlzLnVwZGF0ZShlLG4pO311cGRhdGUodCxyLG4pe2NvbnN0e3dpZHRoOmksaGVpZ2h0OnN9PXQse2NvbnRleHQ6YX09dGhpcyx7Z2w6b309YSx7SFRNTEltYWdlRWxlbWVudDpsLEhUTUxDYW52YXNFbGVtZW50OnUsSFRNTFZpZGVvRWxlbWVudDpjLEltYWdlRGF0YTpoLEltYWdlQml0bWFwOnB9PWU7aWYoby5iaW5kVGV4dHVyZShvLlRFWFRVUkVfMkQsdGhpcy50ZXh0dXJlKSxhLnBpeGVsU3RvcmVVbnBhY2tGbGlwWS5zZXQoITEpLGEucGl4ZWxTdG9yZVVucGFjay5zZXQoMSksYS5waXhlbFN0b3JlVW5wYWNrUHJlbXVsdGlwbHlBbHBoYS5zZXQodGhpcy5mb3JtYXQ9PT1vLlJHQkEmJighcnx8ITEhPT1yLnByZW11bHRpcGx5KSksbnx8dGhpcy5zaXplJiZ0aGlzLnNpemVbMF09PT1pJiZ0aGlzLnNpemVbMV09PT1zKXtjb25zdHt4OmUseTpyfT1ufHx7eDowLHk6MH07dCBpbnN0YW5jZW9mIGx8fHQgaW5zdGFuY2VvZiB1fHx0IGluc3RhbmNlb2YgY3x8dCBpbnN0YW5jZW9mIGh8fHAmJnQgaW5zdGFuY2VvZiBwP28udGV4U3ViSW1hZ2UyRChvLlRFWFRVUkVfMkQsMCxlLHIsby5SR0JBLG8uVU5TSUdORURfQllURSx0KTpvLnRleFN1YkltYWdlMkQoby5URVhUVVJFXzJELDAsZSxyLGkscyxvLlJHQkEsby5VTlNJR05FRF9CWVRFLHQuZGF0YSk7fWVsc2UgdGhpcy5zaXplPVtpLHNdLHQgaW5zdGFuY2VvZiBsfHx0IGluc3RhbmNlb2YgdXx8dCBpbnN0YW5jZW9mIGN8fHQgaW5zdGFuY2VvZiBofHxwJiZ0IGluc3RhbmNlb2YgcD9vLnRleEltYWdlMkQoby5URVhUVVJFXzJELDAsdGhpcy5mb3JtYXQsdGhpcy5mb3JtYXQsby5VTlNJR05FRF9CWVRFLHQpOm8udGV4SW1hZ2UyRChvLlRFWFRVUkVfMkQsMCx0aGlzLmZvcm1hdCxpLHMsMCx0aGlzLmZvcm1hdCxvLlVOU0lHTkVEX0JZVEUsdC5kYXRhKTt0aGlzLnVzZU1pcG1hcD1Cb29sZWFuKHImJnIudXNlTWlwbWFwJiZ0aGlzLmlzU2l6ZVBvd2VyT2ZUd28oKSksdGhpcy51c2VNaXBtYXAmJm8uZ2VuZXJhdGVNaXBtYXAoby5URVhUVVJFXzJEKTt9YmluZCh0LGUpe2NvbnN0e2NvbnRleHQ6cn09dGhpcyx7Z2w6bn09cjtuLmJpbmRUZXh0dXJlKG4uVEVYVFVSRV8yRCx0aGlzLnRleHR1cmUpLHQhPT10aGlzLmZpbHRlciYmKG4udGV4UGFyYW1ldGVyaShuLlRFWFRVUkVfMkQsbi5URVhUVVJFX01BR19GSUxURVIsdCksbi50ZXhQYXJhbWV0ZXJpKG4uVEVYVFVSRV8yRCxuLlRFWFRVUkVfTUlOX0ZJTFRFUix0aGlzLnVzZU1pcG1hcD90PT09bi5ORUFSRVNUP24uTkVBUkVTVF9NSVBNQVBfTkVBUkVTVDpuLkxJTkVBUl9NSVBNQVBfTkVBUkVTVDp0KSx0aGlzLmZpbHRlcj10KSxlIT09dGhpcy53cmFwJiYobi50ZXhQYXJhbWV0ZXJpKG4uVEVYVFVSRV8yRCxuLlRFWFRVUkVfV1JBUF9TLGUpLG4udGV4UGFyYW1ldGVyaShuLlRFWFRVUkVfMkQsbi5URVhUVVJFX1dSQVBfVCxlKSx0aGlzLndyYXA9ZSk7fWlzU2l6ZVBvd2VyT2ZUd28oKXtyZXR1cm4gdGhpcy5zaXplWzBdPT09dGhpcy5zaXplWzFdJiZNYXRoLmxvZyh0aGlzLnNpemVbMF0pL01hdGguTE4yJTE9PTB9ZGVzdHJveSgpe2NvbnN0e2dsOnR9PXRoaXMuY29udGV4dDt0LmRlbGV0ZVRleHR1cmUodGhpcy50ZXh0dXJlKSx0aGlzLnRleHR1cmU9bnVsbDt9fWNsYXNzIHZme2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NhbGxiYWNrPXQsdGhpcy5fdHJpZ2dlcmVkPSExLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCYmKHRoaXMuX2NoYW5uZWw9bmV3IE1lc3NhZ2VDaGFubmVsLHRoaXMuX2NoYW5uZWwucG9ydDIub25tZXNzYWdlPSgpPT57dGhpcy5fdHJpZ2dlcmVkPSExLHRoaXMuX2NhbGxiYWNrKCk7fSk7fXRyaWdnZXIoKXt0aGlzLl90cmlnZ2VyZWR8fCh0aGlzLl90cmlnZ2VyZWQ9ITAsdGhpcy5fY2hhbm5lbD90aGlzLl9jaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCEwKTpzZXRUaW1lb3V0KCgoKT0+e3RoaXMuX3RyaWdnZXJlZD0hMSx0aGlzLl9jYWxsYmFjaygpO30pLDApKTt9cmVtb3ZlKCl7dGhpcy5fY2hhbm5lbD12b2lkIDAsdGhpcy5fY2FsbGJhY2s9KCk9Pnt9O319Y2xhc3MgYmZ7Y29uc3RydWN0b3IoKXt0aGlzLnRhc2tzPXt9LHRoaXMudGFza1F1ZXVlPVtdLFIoW1wicHJvY2Vzc1wiXSx0aGlzKSx0aGlzLmludm9rZXI9bmV3IHZmKHRoaXMucHJvY2VzcyksdGhpcy5uZXh0SWQ9MDt9YWRkKHQsZSl7Y29uc3Qgcj10aGlzLm5leHRJZCsrLG49ZnVuY3Rpb24oe3R5cGU6dCxpc1N5bWJvbFRpbGU6ZSx6b29tOnJ9KXtyZXR1cm4gcj1yfHwwLFwibWVzc2FnZVwiPT09dD8wOlwibWF5YmVQcmVwYXJlXCIhPT10fHxlP1wicGFyc2VUaWxlXCIhPT10fHxlP1wicGFyc2VUaWxlXCI9PT10JiZlPzMwMC1yOlwibWF5YmVQcmVwYXJlXCI9PT10JiZlPzQwMC1yOjUwMDoyMDAtcjoxMDAtcn0oZSk7aWYoMD09PW4pe0soKTt0cnl7dCgpO31maW5hbGx5e31yZXR1cm4ge2NhbmNlbDooKT0+e319fXJldHVybiB0aGlzLnRhc2tzW3JdPXtmbjp0LG1ldGFkYXRhOmUscHJpb3JpdHk6bixpZDpyfSx0aGlzLnRhc2tRdWV1ZS5wdXNoKHIpLHRoaXMuaW52b2tlci50cmlnZ2VyKCkse2NhbmNlbDooKT0+e2RlbGV0ZSB0aGlzLnRhc2tzW3JdO319fXByb2Nlc3MoKXtLKCk7dHJ5e2lmKHRoaXMudGFza1F1ZXVlPXRoaXMudGFza1F1ZXVlLmZpbHRlcigodD0+ISF0aGlzLnRhc2tzW3RdKSksIXRoaXMudGFza1F1ZXVlLmxlbmd0aClyZXR1cm47Y29uc3QgdD10aGlzLnBpY2soKTtpZihudWxsPT09dClyZXR1cm47Y29uc3QgZT10aGlzLnRhc2tzW3RdO2lmKGRlbGV0ZSB0aGlzLnRhc2tzW3RdLHRoaXMudGFza1F1ZXVlLmxlbmd0aCYmdGhpcy5pbnZva2VyLnRyaWdnZXIoKSwhZSlyZXR1cm47ZS5mbigpO31maW5hbGx5e319cGljaygpe2xldCB0PW51bGwsZT0xLzA7Zm9yKGxldCByPTA7cjx0aGlzLnRhc2tRdWV1ZS5sZW5ndGg7cisrKXtjb25zdCBuPXRoaXMudGFza3NbdGhpcy50YXNrUXVldWVbcl1dO24ucHJpb3JpdHk8ZSYmKGU9bi5wcmlvcml0eSx0PXIpO31pZihudWxsPT09dClyZXR1cm4gbnVsbDtjb25zdCByPXRoaXMudGFza1F1ZXVlW3RdO3JldHVybiB0aGlzLnRhc2tRdWV1ZS5zcGxpY2UodCwxKSxyfXJlbW92ZSgpe3RoaXMuaW52b2tlci5yZW1vdmUoKTt9fWNsYXNzIHdme2NvbnN0cnVjdG9yKHQpe3RoaXMuX3N0cmluZ1RvTnVtYmVyPXt9LHRoaXMuX251bWJlclRvU3RyaW5nPVtdO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtjb25zdCByPXRbZV07dGhpcy5fc3RyaW5nVG9OdW1iZXJbcl09ZSx0aGlzLl9udW1iZXJUb1N0cmluZ1tlXT1yO319ZW5jb2RlKHQpe3JldHVybiB0aGlzLl9zdHJpbmdUb051bWJlclt0XX1kZWNvZGUodCl7cmV0dXJuIHRoaXMuX251bWJlclRvU3RyaW5nW3RdfX1jb25zdCBfZj1bXCJ0aWxlXCIsXCJsYXllclwiLFwic291cmNlXCIsXCJzb3VyY2VMYXllclwiLFwic3RhdGVcIl07Y2xhc3MgQWZ7Y29uc3RydWN0b3IodCxlLHIsbixpKXt0aGlzLnR5cGU9XCJGZWF0dXJlXCIsdGhpcy5fdmVjdG9yVGlsZUZlYXR1cmU9dCx0aGlzLl96PWUsdGhpcy5feD1yLHRoaXMuX3k9bix0aGlzLnByb3BlcnRpZXM9dC5wcm9wZXJ0aWVzLHRoaXMuaWQ9aTt9Z2V0IGdlb21ldHJ5KCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX2dlb21ldHJ5JiYodGhpcy5fZ2VvbWV0cnk9dGhpcy5fdmVjdG9yVGlsZUZlYXR1cmUudG9HZW9KU09OKHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KS5nZW9tZXRyeSksdGhpcy5fZ2VvbWV0cnl9c2V0IGdlb21ldHJ5KHQpe3RoaXMuX2dlb21ldHJ5PXQ7fXRvSlNPTigpe2NvbnN0IHQ9e3R5cGU6XCJGZWF0dXJlXCIsc3RhdGU6dm9pZCAwLGdlb21ldHJ5OnRoaXMuZ2VvbWV0cnkscHJvcGVydGllczp0aGlzLnByb3BlcnRpZXN9O3ZvaWQgMCE9PXRoaXMuaWQmJih0LmlkPXRoaXMuaWQpO2Zvcihjb25zdCBlIG9mIF9mKXZvaWQgMCE9PXRoaXNbZV0mJih0W2VdPXRoaXNbZV0pO3JldHVybiB0fX1jb25zdCBTZj0zMixrZj0zMyxJZj1uZXcgVWludDE2QXJyYXkoODE4NCk7Zm9yKGxldCB0PTA7dDwyMDQ2O3QrKyl7bGV0IGU9dCsyLHI9MCxuPTAsaT0wLHM9MCxhPTAsbz0wO2ZvcigxJmU/aT1zPWE9U2Y6cj1uPW89U2Y7KGU+Pj0xKT4xOyl7Y29uc3QgdD1yK2k+PjEsbD1uK3M+PjE7MSZlPyhpPXIscz1uLHI9YSxuPW8pOihyPWksbj1zLGk9YSxzPW8pLGE9dCxvPWw7fWNvbnN0IGw9NCp0O0lmW2wrMF09cixJZltsKzFdPW4sSWZbbCsyXT1pLElmW2wrM109czt9Y29uc3QgTWY9bmV3IFVpbnQxNkFycmF5KDIxNzgpLFRmPW5ldyBVaW50OEFycmF5KDEwODkpLHpmPW5ldyBVaW50MTZBcnJheSgxMDg5KTtmdW5jdGlvbiBCZih0KXtyZXR1cm4gMD09PXQ/LS4wMzEyNTozMj09PXQ/LjAzMTI1OjB9dmFyIEVmPVJzKFt7bmFtZTpcImFfcG9zXCIsdHlwZTpcIkludDE2XCIsY29tcG9uZW50czoyfSx7bmFtZTpcImFfdGV4dHVyZV9wb3NcIix0eXBlOlwiSW50MTZcIixjb21wb25lbnRzOjJ9XSk7Y29uc3QgQ2Y9e3R5cGU6MixleHRlbnQ6YW8sbG9hZEdlb21ldHJ5OigpPT5bW25ldyB4KDAsMCksbmV3IHgoYW8rMSwwKSxuZXcgeChhbysxLGFvKzEpLG5ldyB4KDAsYW8rMSksbmV3IHgoMCwwKV1dfTtjbGFzcyBQZntjb25zdHJ1Y3Rvcih0LGUscixuLGkpe3RoaXMudGlsZUlEPXQsdGhpcy51aWQ9RCgpLHRoaXMudXNlcz0wLHRoaXMudGlsZVNpemU9ZSx0aGlzLnRpbGVab29tPXIsdGhpcy5idWNrZXRzPXt9LHRoaXMuZXhwaXJhdGlvblRpbWU9bnVsbCx0aGlzLnF1ZXJ5UGFkZGluZz0wLHRoaXMuaGFzU3ltYm9sQnVja2V0cz0hMSx0aGlzLmhhc1JUTFRleHQ9ITEsdGhpcy5kZXBlbmRlbmNpZXM9e30sdGhpcy5pc1Jhc3Rlcj1pLHRoaXMuZXhwaXJlZFJlcXVlc3RDb3VudD0wLHRoaXMuc3RhdGU9XCJsb2FkaW5nXCIsbiYmbi50cmFuc2Zvcm0mJih0aGlzLnByb2plY3Rpb249bi50cmFuc2Zvcm0ucHJvamVjdGlvbik7fXJlZ2lzdGVyRmFkZUR1cmF0aW9uKHQpe2NvbnN0IGU9dCt0aGlzLnRpbWVBZGRlZDtlPFh0Lm5vdygpfHx0aGlzLmZhZGVFbmRUaW1lJiZlPHRoaXMuZmFkZUVuZFRpbWV8fCh0aGlzLmZhZGVFbmRUaW1lPWUpO313YXNSZXF1ZXN0ZWQoKXtyZXR1cm4gXCJlcnJvcmVkXCI9PT10aGlzLnN0YXRlfHxcImxvYWRlZFwiPT09dGhpcy5zdGF0ZXx8XCJyZWxvYWRpbmdcIj09PXRoaXMuc3RhdGV9Z2V0IHRpbGVUcmFuc2Zvcm0oKXtyZXR1cm4gdGhpcy5fdGlsZVRyYW5zZm9ybXx8KHRoaXMuX3RpbGVUcmFuc2Zvcm09QmQodGhpcy50aWxlSUQuY2Fub25pY2FsLHRoaXMucHJvamVjdGlvbikpLHRoaXMuX3RpbGVUcmFuc2Zvcm19bG9hZFZlY3RvckRhdGEodCxlLHIpe2lmKHRoaXMudW5sb2FkVmVjdG9yRGF0YSgpLHRoaXMuc3RhdGU9XCJsb2FkZWRcIix0KXt0LmZlYXR1cmVJbmRleCYmKHRoaXMubGF0ZXN0RmVhdHVyZUluZGV4PXQuZmVhdHVyZUluZGV4LHQucmF3VGlsZURhdGE/KHRoaXMubGF0ZXN0UmF3VGlsZURhdGE9dC5yYXdUaWxlRGF0YSx0aGlzLmxhdGVzdEZlYXR1cmVJbmRleC5yYXdUaWxlRGF0YT10LnJhd1RpbGVEYXRhKTp0aGlzLmxhdGVzdFJhd1RpbGVEYXRhJiYodGhpcy5sYXRlc3RGZWF0dXJlSW5kZXgucmF3VGlsZURhdGE9dGhpcy5sYXRlc3RSYXdUaWxlRGF0YSkpLHRoaXMuY29sbGlzaW9uQm94QXJyYXk9dC5jb2xsaXNpb25Cb3hBcnJheSx0aGlzLmJ1Y2tldHM9ZnVuY3Rpb24odCxlKXtjb25zdCByPXt9O2lmKCFlKXJldHVybiByO2Zvcihjb25zdCBuIG9mIHQpe2NvbnN0IHQ9bi5sYXllcklkcy5tYXAoKHQ9PmUuZ2V0TGF5ZXIodCkpKS5maWx0ZXIoQm9vbGVhbik7aWYoMCE9PXQubGVuZ3RoKXtuLmxheWVycz10LG4uc3RhdGVEZXBlbmRlbnRMYXllcklkcyYmKG4uc3RhdGVEZXBlbmRlbnRMYXllcnM9bi5zdGF0ZURlcGVuZGVudExheWVySWRzLm1hcCgoZT0+dC5maWx0ZXIoKHQ9PnQuaWQ9PT1lKSlbMF0pKSk7Zm9yKGNvbnN0IGUgb2YgdClyW2UuaWRdPW47fX1yZXR1cm4gcn0odC5idWNrZXRzLGUuc3R5bGUpLHRoaXMuaGFzU3ltYm9sQnVja2V0cz0hMTtmb3IoY29uc3QgdCBpbiB0aGlzLmJ1Y2tldHMpe2NvbnN0IGU9dGhpcy5idWNrZXRzW3RdO2lmKGUgaW5zdGFuY2VvZiBvZil7aWYodGhpcy5oYXNTeW1ib2xCdWNrZXRzPSEwLCFyKWJyZWFrO2UuanVzdFJlbG9hZGVkPSEwO319aWYodGhpcy5oYXNSVExUZXh0PSExLHRoaXMuaGFzU3ltYm9sQnVja2V0cylmb3IoY29uc3QgdCBpbiB0aGlzLmJ1Y2tldHMpe2NvbnN0IGU9dGhpcy5idWNrZXRzW3RdO2lmKGUgaW5zdGFuY2VvZiBvZiYmZS5oYXNSVExUZXh0KXt0aGlzLmhhc1JUTFRleHQ9ITAsYnMuaXNMb2FkaW5nKCl8fGJzLmlzTG9hZGVkKCl8fFwiZGVmZXJyZWRcIiE9PXhzKCl8fHZzKCk7YnJlYWt9fXRoaXMucXVlcnlQYWRkaW5nPTA7Zm9yKGNvbnN0IHQgaW4gdGhpcy5idWNrZXRzKXtjb25zdCByPXRoaXMuYnVja2V0c1t0XTt0aGlzLnF1ZXJ5UGFkZGluZz1NYXRoLm1heCh0aGlzLnF1ZXJ5UGFkZGluZyxlLnN0eWxlLmdldExheWVyKHQpLnF1ZXJ5UmFkaXVzKHIpKTt9dC5pbWFnZUF0bGFzJiYodGhpcy5pbWFnZUF0bGFzPXQuaW1hZ2VBdGxhcyksdC5nbHlwaEF0bGFzSW1hZ2UmJih0aGlzLmdseXBoQXRsYXNJbWFnZT10LmdseXBoQXRsYXNJbWFnZSksdC5saW5lQXRsYXMmJih0aGlzLmxpbmVBdGxhcz10LmxpbmVBdGxhcyk7fWVsc2UgdGhpcy5jb2xsaXNpb25Cb3hBcnJheT1uZXcgcGE7fXVubG9hZFZlY3RvckRhdGEoKXtpZih0aGlzLmhhc0RhdGEoKSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5idWNrZXRzKXRoaXMuYnVja2V0c1t0XS5kZXN0cm95KCk7dGhpcy5idWNrZXRzPXt9LHRoaXMuaW1hZ2VBdGxhcyYmKHRoaXMuaW1hZ2VBdGxhcz1udWxsKSx0aGlzLmxpbmVBdGxhcyYmKHRoaXMubGluZUF0bGFzPW51bGwpLHRoaXMuaW1hZ2VBdGxhc1RleHR1cmUmJnRoaXMuaW1hZ2VBdGxhc1RleHR1cmUuZGVzdHJveSgpLHRoaXMuZ2x5cGhBdGxhc1RleHR1cmUmJnRoaXMuZ2x5cGhBdGxhc1RleHR1cmUuZGVzdHJveSgpLHRoaXMubGluZUF0bGFzVGV4dHVyZSYmdGhpcy5saW5lQXRsYXNUZXh0dXJlLmRlc3Ryb3koKSx0aGlzLl90aWxlQm91bmRzQnVmZmVyJiYodGhpcy5fdGlsZUJvdW5kc0J1ZmZlci5kZXN0cm95KCksdGhpcy5fdGlsZUJvdW5kc0luZGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLl90aWxlQm91bmRzU2VnbWVudHMuZGVzdHJveSgpLHRoaXMuX3RpbGVCb3VuZHNCdWZmZXI9bnVsbCksdGhpcy5fdGlsZURlYnVnQnVmZmVyJiYodGhpcy5fdGlsZURlYnVnQnVmZmVyLmRlc3Ryb3koKSx0aGlzLl90aWxlRGVidWdTZWdtZW50cy5kZXN0cm95KCksdGhpcy5fdGlsZURlYnVnQnVmZmVyPW51bGwpLHRoaXMuX3RpbGVEZWJ1Z0luZGV4QnVmZmVyJiYodGhpcy5fdGlsZURlYnVnSW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuX3RpbGVEZWJ1Z0luZGV4QnVmZmVyPW51bGwpLHRoaXMuX2dsb2JlVGlsZURlYnVnQm9yZGVyQnVmZmVyJiYodGhpcy5fZ2xvYmVUaWxlRGVidWdCb3JkZXJCdWZmZXIuZGVzdHJveSgpLHRoaXMuX2dsb2JlVGlsZURlYnVnQm9yZGVyQnVmZmVyPW51bGwpLHRoaXMuX3RpbGVEZWJ1Z1RleHRCdWZmZXImJih0aGlzLl90aWxlRGVidWdUZXh0QnVmZmVyLmRlc3Ryb3koKSx0aGlzLl90aWxlRGVidWdUZXh0U2VnbWVudHMuZGVzdHJveSgpLHRoaXMuX3RpbGVEZWJ1Z1RleHRJbmRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5fdGlsZURlYnVnVGV4dEJ1ZmZlcj1udWxsKSx0aGlzLl9nbG9iZVRpbGVEZWJ1Z1RleHRCdWZmZXImJih0aGlzLl9nbG9iZVRpbGVEZWJ1Z1RleHRCdWZmZXIuZGVzdHJveSgpLHRoaXMuX2dsb2JlVGlsZURlYnVnVGV4dEJ1ZmZlcj1udWxsKSx0aGlzLmxhdGVzdEZlYXR1cmVJbmRleD1udWxsLHRoaXMuc3RhdGU9XCJ1bmxvYWRlZFwiO319Z2V0QnVja2V0KHQpe3JldHVybiB0aGlzLmJ1Y2tldHNbdC5pZF19dXBsb2FkKHQpe2Zvcihjb25zdCBlIGluIHRoaXMuYnVja2V0cyl7Y29uc3Qgcj10aGlzLmJ1Y2tldHNbZV07ci51cGxvYWRQZW5kaW5nKCkmJnIudXBsb2FkKHQpO31jb25zdCBlPXQuZ2w7dGhpcy5pbWFnZUF0bGFzJiYhdGhpcy5pbWFnZUF0bGFzLnVwbG9hZGVkJiYodGhpcy5pbWFnZUF0bGFzVGV4dHVyZT1uZXcgeGYodCx0aGlzLmltYWdlQXRsYXMuaW1hZ2UsZS5SR0JBKSx0aGlzLmltYWdlQXRsYXMudXBsb2FkZWQ9ITApLHRoaXMuZ2x5cGhBdGxhc0ltYWdlJiYodGhpcy5nbHlwaEF0bGFzVGV4dHVyZT1uZXcgeGYodCx0aGlzLmdseXBoQXRsYXNJbWFnZSxlLkFMUEhBKSx0aGlzLmdseXBoQXRsYXNJbWFnZT1udWxsKSx0aGlzLmxpbmVBdGxhcyYmIXRoaXMubGluZUF0bGFzLnVwbG9hZGVkJiYodGhpcy5saW5lQXRsYXNUZXh0dXJlPW5ldyB4Zih0LHRoaXMubGluZUF0bGFzLmltYWdlLGUuQUxQSEEpLHRoaXMubGluZUF0bGFzLnVwbG9hZGVkPSEwKTt9cHJlcGFyZSh0KXt0aGlzLmltYWdlQXRsYXMmJnRoaXMuaW1hZ2VBdGxhcy5wYXRjaFVwZGF0ZWRJbWFnZXModCx0aGlzLmltYWdlQXRsYXNUZXh0dXJlKTt9cXVlcnlSZW5kZXJlZEZlYXR1cmVzKHQsZSxyLG4saSxzLGEsbyl7cmV0dXJuIHRoaXMubGF0ZXN0RmVhdHVyZUluZGV4JiZ0aGlzLmxhdGVzdEZlYXR1cmVJbmRleC5yYXdUaWxlRGF0YT90aGlzLmxhdGVzdEZlYXR1cmVJbmRleC5xdWVyeSh7dGlsZVJlc3VsdDpuLHBpeGVsUG9zTWF0cml4OmEsdHJhbnNmb3JtOnMscGFyYW1zOmksdGlsZVRyYW5zZm9ybTp0aGlzLnRpbGVUcmFuc2Zvcm19LHQsZSxyKTp7fX1xdWVyeVNvdXJjZUZlYXR1cmVzKHQsZSl7Y29uc3Qgcj10aGlzLmxhdGVzdEZlYXR1cmVJbmRleDtpZighcnx8IXIucmF3VGlsZURhdGEpcmV0dXJuO2NvbnN0IG49ci5sb2FkVlRMYXllcnMoKSxpPWU/ZS5zb3VyY2VMYXllcjpcIlwiLHM9bi5fZ2VvanNvblRpbGVMYXllcnx8bltpXTtpZighcylyZXR1cm47Y29uc3QgYT1oaShlJiZlLmZpbHRlcikse3o6byx4OmwseTp1fT10aGlzLnRpbGVJRC5jYW5vbmljYWwsYz17ejpvLHg6bCx5OnV9O2ZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKXtjb25zdCBuPXMuZmVhdHVyZShlKTtpZihhLm5lZWRHZW9tZXRyeSl7Y29uc3QgdD1vdShuLCEwKTtpZighYS5maWx0ZXIobmV3IHdzKHRoaXMudGlsZUlELm92ZXJzY2FsZWRaKSx0LHRoaXMudGlsZUlELmNhbm9uaWNhbCkpY29udGludWV9ZWxzZSBpZighYS5maWx0ZXIobmV3IHdzKHRoaXMudGlsZUlELm92ZXJzY2FsZWRaKSxuKSljb250aW51ZTtjb25zdCBoPXIuZ2V0SWQobixpKSxwPW5ldyBBZihuLG8sbCx1LGgpO3AudGlsZT1jLHQucHVzaChwKTt9fWhhc0RhdGEoKXtyZXR1cm4gXCJsb2FkZWRcIj09PXRoaXMuc3RhdGV8fFwicmVsb2FkaW5nXCI9PT10aGlzLnN0YXRlfHxcImV4cGlyZWRcIj09PXRoaXMuc3RhdGV9cGF0dGVybnNMb2FkZWQoKXtyZXR1cm4gISF0aGlzLmltYWdlQXRsYXMmJiEhT2JqZWN0LmtleXModGhpcy5pbWFnZUF0bGFzLnBhdHRlcm5Qb3NpdGlvbnMpLmxlbmd0aH1zZXRFeHBpcnlEYXRhKHQpe2NvbnN0IGU9dGhpcy5leHBpcmF0aW9uVGltZTtpZih0LmNhY2hlQ29udHJvbCl7Y29uc3QgZT1YKHQuY2FjaGVDb250cm9sKTtlW1wibWF4LWFnZVwiXSYmKHRoaXMuZXhwaXJhdGlvblRpbWU9RGF0ZS5ub3coKSsxZTMqZVtcIm1heC1hZ2VcIl0pO31lbHNlIHQuZXhwaXJlcyYmKHRoaXMuZXhwaXJhdGlvblRpbWU9bmV3IERhdGUodC5leHBpcmVzKS5nZXRUaW1lKCkpO2lmKHRoaXMuZXhwaXJhdGlvblRpbWUpe2NvbnN0IHQ9RGF0ZS5ub3coKTtsZXQgcj0hMTtpZih0aGlzLmV4cGlyYXRpb25UaW1lPnQpcj0hMTtlbHNlIGlmKGUpaWYodGhpcy5leHBpcmF0aW9uVGltZTxlKXI9ITA7ZWxzZSB7Y29uc3Qgbj10aGlzLmV4cGlyYXRpb25UaW1lLWU7bj90aGlzLmV4cGlyYXRpb25UaW1lPXQrTWF0aC5tYXgobiwzZTQpOnI9ITA7fWVsc2Ugcj0hMDtyPyh0aGlzLmV4cGlyZWRSZXF1ZXN0Q291bnQrKyx0aGlzLnN0YXRlPVwiZXhwaXJlZFwiKTp0aGlzLmV4cGlyZWRSZXF1ZXN0Q291bnQ9MDt9fWdldEV4cGlyeVRpbWVvdXQoKXtpZih0aGlzLmV4cGlyYXRpb25UaW1lKXJldHVybiB0aGlzLmV4cGlyZWRSZXF1ZXN0Q291bnQ/MWUzKigxPDxNYXRoLm1pbih0aGlzLmV4cGlyZWRSZXF1ZXN0Q291bnQtMSwzMSkpOk1hdGgubWluKHRoaXMuZXhwaXJhdGlvblRpbWUtKG5ldyBEYXRlKS5nZXRUaW1lKCksTWF0aC5wb3coMiwzMSktMSl9c2V0RmVhdHVyZVN0YXRlKHQsZSl7aWYoIXRoaXMubGF0ZXN0RmVhdHVyZUluZGV4fHwhdGhpcy5sYXRlc3RGZWF0dXJlSW5kZXgucmF3VGlsZURhdGF8fDA9PT1PYmplY3Qua2V5cyh0KS5sZW5ndGh8fCFlKXJldHVybjtjb25zdCByPXRoaXMubGF0ZXN0RmVhdHVyZUluZGV4LmxvYWRWVExheWVycygpLG49ZS5zdHlsZS5saXN0SW1hZ2VzKCk7Zm9yKGNvbnN0IGkgaW4gdGhpcy5idWNrZXRzKXtpZighZS5zdHlsZS5oYXNMYXllcihpKSljb250aW51ZTtjb25zdCBzPXRoaXMuYnVja2V0c1tpXSxhPXMubGF5ZXJzWzBdLnNvdXJjZUxheWVyfHxcIl9nZW9qc29uVGlsZUxheWVyXCIsbz1yW2FdLGw9dFthXTtpZighb3x8IWx8fDA9PT1PYmplY3Qua2V5cyhsKS5sZW5ndGgpY29udGludWU7aWYocy51cGRhdGUobCxvLG4sdGhpcy5pbWFnZUF0bGFzJiZ0aGlzLmltYWdlQXRsYXMucGF0dGVyblBvc2l0aW9uc3x8e30pLHMgaW5zdGFuY2VvZiBJaHx8cyBpbnN0YW5jZW9mIE1jKXtjb25zdCB0PWUuc3R5bGUuX2dldFNvdXJjZUNhY2hlKHMubGF5ZXJzWzBdLnNvdXJjZSk7ZS5fdGVycmFpbiYmZS5fdGVycmFpbi5lbmFibGVkJiZ0JiZzLnByb2dyYW1Db25maWd1cmF0aW9ucy5uZWVkc1VwbG9hZCYmZS5fdGVycmFpbi5fY2xlYXJSZW5kZXJDYWNoZUZvclRpbGUodC5pZCx0aGlzLnRpbGVJRCk7fWNvbnN0IHU9ZSYmZS5zdHlsZSYmZS5zdHlsZS5nZXRMYXllcihpKTt1JiYodGhpcy5xdWVyeVBhZGRpbmc9TWF0aC5tYXgodGhpcy5xdWVyeVBhZGRpbmcsdS5xdWVyeVJhZGl1cyhzKSkpO319aG9sZGluZ0ZvckZhZGUoKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5zeW1ib2xGYWRlSG9sZFVudGlsfXN5bWJvbEZhZGVGaW5pc2hlZCgpe3JldHVybiAhdGhpcy5zeW1ib2xGYWRlSG9sZFVudGlsfHx0aGlzLnN5bWJvbEZhZGVIb2xkVW50aWw8WHQubm93KCl9Y2xlYXJGYWRlSG9sZCgpe3RoaXMuc3ltYm9sRmFkZUhvbGRVbnRpbD12b2lkIDA7fXNldEhvbGREdXJhdGlvbih0KXt0aGlzLnN5bWJvbEZhZGVIb2xkVW50aWw9WHQubm93KCkrdDt9c2V0VGV4dHVyZSh0LGUpe2NvbnN0IHI9ZS5jb250ZXh0LG49ci5nbDt0aGlzLnRleHR1cmU9dGhpcy50ZXh0dXJlfHxlLmdldFRpbGVUZXh0dXJlKHQud2lkdGgpLHRoaXMudGV4dHVyZT90aGlzLnRleHR1cmUudXBkYXRlKHQse3VzZU1pcG1hcDohMH0pOih0aGlzLnRleHR1cmU9bmV3IHhmKHIsdCxuLlJHQkEse3VzZU1pcG1hcDohMH0pLHRoaXMudGV4dHVyZS5iaW5kKG4uTElORUFSLG4uQ0xBTVBfVE9fRURHRSkpO31zZXREZXBlbmRlbmNpZXModCxlKXtjb25zdCByPXt9O2Zvcihjb25zdCB0IG9mIGUpclt0XT0hMDt0aGlzLmRlcGVuZGVuY2llc1t0XT1yO31oYXNEZXBlbmRlbmN5KHQsZSl7Zm9yKGNvbnN0IHIgb2YgdCl7Y29uc3QgdD10aGlzLmRlcGVuZGVuY2llc1tyXTtpZih0KWZvcihjb25zdCByIG9mIGUpaWYodFtyXSlyZXR1cm4gITB9cmV0dXJuICExfWNsZWFyUXVlcnlEZWJ1Z1Zpeigpe31fbWFrZURlYnVnVGlsZUJvdW5kc0J1ZmZlcnModCxlKXtpZighZXx8XCJtZXJjYXRvclwiPT09ZS5uYW1lfHx0aGlzLl90aWxlRGVidWdCdWZmZXIpcmV0dXJuO2NvbnN0IHI9YXUoQ2YsdGhpcy50aWxlSUQuY2Fub25pY2FsLHRoaXMudGlsZVRyYW5zZm9ybSlbMF0sbj1uZXcgJHMsaT1uZXcgdWE7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kyspe2NvbnN0e3g6ZSx5OnN9PXJbdF07bi5lbXBsYWNlQmFjayhlLHMpLGkuZW1wbGFjZUJhY2sodCk7fWkuZW1wbGFjZUJhY2soMCksdGhpcy5fdGlsZURlYnVnSW5kZXhCdWZmZXI9dC5jcmVhdGVJbmRleEJ1ZmZlcihpKSx0aGlzLl90aWxlRGVidWdCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIobix0bC5tZW1iZXJzKSx0aGlzLl90aWxlRGVidWdTZWdtZW50cz1zby5zaW1wbGVTZWdtZW50KDAsMCxuLmxlbmd0aCxpLmxlbmd0aCk7fV9tYWtlVGlsZUJvdW5kc0J1ZmZlcnModCxlKXtpZih0aGlzLl90aWxlQm91bmRzQnVmZmVyfHwhZXx8XCJtZXJjYXRvclwiPT09ZS5uYW1lKXJldHVybjtjb25zdCByPWF1KENmLHRoaXMudGlsZUlELmNhbm9uaWNhbCx0aGlzLnRpbGVUcmFuc2Zvcm0pWzBdO2xldCBuLGk7aWYodGhpcy5pc1Jhc3Rlcil7Y29uc3QgdD1mdW5jdGlvbih0LGUpe2NvbnN0IHI9QmQodCxlKSxuPU1hdGgucG93KDIsdC56KTtmb3IobGV0IGk9MDtpPGtmO2krKylmb3IobGV0IHM9MDtzPGtmO3MrKyl7Y29uc3QgYT1LbCgodC54KyhzK0JmKHMpKS9TZikvbiksbz1YbCgodC55KyhpK0JmKGkpKS9TZikvbiksbD1lLnByb2plY3QoYSxvKSx1PWkqa2YrcztNZlsyKnUrMF09TWF0aC5yb3VuZCgobC54KnIuc2NhbGUtci54KSphbyksTWZbMip1KzFdPU1hdGgucm91bmQoKGwueSpyLnNjYWxlLXIueSkqYW8pO31UZi5maWxsKDApLHpmLmZpbGwoMCk7Zm9yKGxldCB0PTIwNDU7dD49MDt0LS0pe2NvbnN0IGU9NCp0LHI9SWZbZSswXSxuPUlmW2UrMV0saT1JZltlKzJdLHM9SWZbZSszXSxhPXIraT4+MSxvPW4rcz4+MSxsPWErby1uLHU9bytyLWEsYz1uKmtmK3IsaD1zKmtmK2kscD1vKmtmK2EsZD1NYXRoLmh5cG90KChNZlsyKmMrMF0rTWZbMipoKzBdKS8yLU1mWzIqcCswXSwoTWZbMipjKzFdK01mWzIqaCsxXSkvMi1NZlsyKnArMV0pPj0xNjtUZltwXT1UZltwXXx8KGQ/MTowKSx0PDEwMjImJihUZltwXT1UZltwXXx8VGZbKG4rdT4+MSkqa2YrKHIrbD4+MSldfHxUZlsocyt1Pj4xKSprZisoaStsPj4xKV0pO31jb25zdCBpPW5ldyBPcyxzPW5ldyByYTtsZXQgYT0wO2Z1bmN0aW9uIG8odCxlKXtjb25zdCByPWUqa2YrdDtyZXR1cm4gMD09PXpmW3JdJiYoaS5lbXBsYWNlQmFjayhNZlsyKnIrMF0sTWZbMipyKzFdLHQqYW8vU2YsZSphby9TZiksemZbcl09KythKSx6ZltyXS0xfWZ1bmN0aW9uIGwodCxlLHIsbixpLGEpe2NvbnN0IHU9dCtyPj4xLGM9ZStuPj4xO2lmKE1hdGguYWJzKHQtaSkrTWF0aC5hYnMoZS1hKT4xJiZUZltjKmtmK3VdKWwoaSxhLHQsZSx1LGMpLGwocixuLGksYSx1LGMpO2Vsc2Uge2NvbnN0IGw9byh0LGUpLHU9byhyLG4pLGM9byhpLGEpO3MuZW1wbGFjZUJhY2sobCx1LGMpO319cmV0dXJuIGwoMCwwLFNmLFNmLFNmLDApLGwoU2YsU2YsMCwwLDAsU2YpLHt2ZXJ0aWNlczppLGluZGljZXM6c319KHRoaXMudGlsZUlELmNhbm9uaWNhbCxlKTtuPXQudmVydGljZXMsaT10LmluZGljZXM7fWVsc2Uge249bmV3IE9zLGk9bmV3IHJhO2Zvcihjb25zdHt4OnQseTplfW9mIHIpbi5lbXBsYWNlQmFjayh0LGUsMCwwKTtjb25zdCB0PXhjKG4uaW50MTYsdm9pZCAwLDQpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9MylpLmVtcGxhY2VCYWNrKHRbZV0sdFtlKzFdLHRbZSsyXSk7fXRoaXMuX3RpbGVCb3VuZHNCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIobixFZi5tZW1iZXJzKSx0aGlzLl90aWxlQm91bmRzSW5kZXhCdWZmZXI9dC5jcmVhdGVJbmRleEJ1ZmZlcihpKSx0aGlzLl90aWxlQm91bmRzU2VnbWVudHM9c28uc2ltcGxlU2VnbWVudCgwLDAsbi5sZW5ndGgsaS5sZW5ndGgpO31fbWFrZUdsb2JlVGlsZURlYnVnQnVmZmVycyh0LGUpe2NvbnN0IHI9ZS5wcm9qZWN0aW9uO2lmKCFyfHxcImdsb2JlXCIhPT1yLm5hbWV8fGUuZnJlZXplVGlsZUNvdmVyYWdlKXJldHVybjtjb25zdCBuPXRoaXMudGlsZUlELmNhbm9uaWNhbCxpPUJsKGJsKG4sZSkpLHM9UGwoZS56b29tKTtsZXQgYTtzPjAmJihhPWZvKG5ldyBGbG9hdDY0QXJyYXkoMTYpLGUuZ2xvYmVNYXRyaXgpKSx0aGlzLl9tYWtlR2xvYmVUaWxlRGVidWdCb3JkZXJCdWZmZXIodCxuLGUsaSxhLHMpLHRoaXMuX21ha2VHbG9iZVRpbGVEZWJ1Z1RleHRCdWZmZXIodCxuLGUsaSxhLHMpO31fZ2xvYmVQb2ludCh0LGUscixuLGkscyxhKXtsZXQgbz1NbCh0LGUscik7aWYocyl7Y29uc3QgaT0xPDxyLnosbD1ObChuLmNlbnRlci5sbmcpLHU9R2wobi5jZW50ZXIubGF0KSxjPShyLngrLjUpL2ktbDtsZXQgaD0wO2M+LjU/aD0tMTpjPC0uNSYmKGg9MSk7bGV0IHA9KHQvYW8rci54KS9pK2gsZD0oZS9hbytyLnkpL2k7cD0ocC1sKSpuLl9waXhlbHNQZXJNZXJjYXRvclBpeGVsK2wsZD0oZC11KSpuLl9waXhlbHNQZXJNZXJjYXRvclBpeGVsK3U7Y29uc3QgZj1bcCpuLndvcmxkU2l6ZSxkKm4ud29ybGRTaXplLDBdO0ZvKGYsZixzKSxvPXZsKG8sZixhKTt9cmV0dXJuIEZvKG8sbyxpKX1fbWFrZUdsb2JlVGlsZURlYnVnQm9yZGVyQnVmZmVyKHQsZSxyLG4saSxzKXtjb25zdCBhPW5ldyAkcyxvPW5ldyB1YSxsPW5ldyBqcyx1PSh0LHUsYyxoLHApPT57Y29uc3QgZD0oYy10KS8ocC0xKSxmPShoLXUpLyhwLTEpLHk9YS5sZW5ndGg7Zm9yKGxldCBjPTA7YzxwO2MrKyl7Y29uc3QgaD10K2MqZCxwPXUrYypmO2EuZW1wbGFjZUJhY2soaCxwKTtjb25zdCBtPXRoaXMuX2dsb2JlUG9pbnQoaCxwLGUscixuLGkscyk7bC5lbXBsYWNlQmFjayhtWzBdLG1bMV0sbVsyXSksby5lbXBsYWNlQmFjayh5K2MpO319LGM9YW87dSgwLDAsYywwLDE2KSx1KGMsMCxjLGMsMTYpLHUoYyxjLDAsYywxNiksdSgwLGMsMCwwLDE2KSx0aGlzLl90aWxlRGVidWdJbmRleEJ1ZmZlcj10LmNyZWF0ZUluZGV4QnVmZmVyKG8pLHRoaXMuX3RpbGVEZWJ1Z0J1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcihhLHRsLm1lbWJlcnMpLHRoaXMuX2dsb2JlVGlsZURlYnVnQm9yZGVyQnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKGwsUW8ubWVtYmVycyksdGhpcy5fdGlsZURlYnVnU2VnbWVudHM9c28uc2ltcGxlU2VnbWVudCgwLDAsYS5sZW5ndGgsby5sZW5ndGgpO31fbWFrZUdsb2JlVGlsZURlYnVnVGV4dEJ1ZmZlcih0LGUscixuLGkscyl7Y29uc3QgYT1hby80LG89bmV3ICRzLGw9bmV3IHJhLHU9bmV3IGpzLGM9MjU7bC5yZXNlcnZlKDMyKSxvLnJlc2VydmUoYyksdS5yZXNlcnZlKGMpO2NvbnN0IGg9KHQsZSk9PmMqdCtlO2ZvcihsZXQgdD0wO3Q8Yzt0Kyspe2NvbnN0IGw9dCphO2ZvcihsZXQgdD0wO3Q8Yzt0Kyspe2NvbnN0IGM9dCphO28uZW1wbGFjZUJhY2soYyxsKTtjb25zdCBoPXRoaXMuX2dsb2JlUG9pbnQoYyxsLGUscixuLGkscyk7dS5lbXBsYWNlQmFjayhoWzBdLGhbMV0saFsyXSk7fX1mb3IobGV0IHQ9MDt0PDQ7dCsrKWZvcihsZXQgZT0wO2U8NDtlKyspe2NvbnN0IHI9aCh0LGUpLG49aCh0LGUrMSksaT1oKHQrMSxlKSxzPWgodCsxLGUrMSk7bC5lbXBsYWNlQmFjayhyLG4saSksbC5lbXBsYWNlQmFjayhpLG4scyk7fXRoaXMuX3RpbGVEZWJ1Z1RleHRJbmRleEJ1ZmZlcj10LmNyZWF0ZUluZGV4QnVmZmVyKGwpLHRoaXMuX3RpbGVEZWJ1Z1RleHRCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIobyx0bC5tZW1iZXJzKSx0aGlzLl9nbG9iZVRpbGVEZWJ1Z1RleHRCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodSxRby5tZW1iZXJzKSx0aGlzLl90aWxlRGVidWdUZXh0U2VnbWVudHM9c28uc2ltcGxlU2VnbWVudCgwLDAsYywzMik7fX1jbGFzcyBEZntjb25zdHJ1Y3Rvcigpe3RoaXMuc3RhdGU9e30sdGhpcy5zdGF0ZUNoYW5nZXM9e30sdGhpcy5kZWxldGVkU3RhdGVzPXt9O311cGRhdGVTdGF0ZSh0LGUscil7Y29uc3Qgbj1TdHJpbmcoZSk7aWYodGhpcy5zdGF0ZUNoYW5nZXNbdF09dGhpcy5zdGF0ZUNoYW5nZXNbdF18fHt9LHRoaXMuc3RhdGVDaGFuZ2VzW3RdW25dPXRoaXMuc3RhdGVDaGFuZ2VzW3RdW25dfHx7fSxDKHRoaXMuc3RhdGVDaGFuZ2VzW3RdW25dLHIpLG51bGw9PT10aGlzLmRlbGV0ZWRTdGF0ZXNbdF0pe3RoaXMuZGVsZXRlZFN0YXRlc1t0XT17fTtmb3IoY29uc3QgZSBpbiB0aGlzLnN0YXRlW3RdKWUhPT1uJiYodGhpcy5kZWxldGVkU3RhdGVzW3RdW2VdPW51bGwpO31lbHNlIGlmKHRoaXMuZGVsZXRlZFN0YXRlc1t0XSYmbnVsbD09PXRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXSl7dGhpcy5kZWxldGVkU3RhdGVzW3RdW25dPXt9O2Zvcihjb25zdCBlIGluIHRoaXMuc3RhdGVbdF1bbl0pcltlXXx8KHRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXVtlXT1udWxsKTt9ZWxzZSBmb3IoY29uc3QgZSBpbiByKXRoaXMuZGVsZXRlZFN0YXRlc1t0XSYmdGhpcy5kZWxldGVkU3RhdGVzW3RdW25dJiZudWxsPT09dGhpcy5kZWxldGVkU3RhdGVzW3RdW25dW2VdJiZkZWxldGUgdGhpcy5kZWxldGVkU3RhdGVzW3RdW25dW2VdO31yZW1vdmVGZWF0dXJlU3RhdGUodCxlLHIpe2lmKG51bGw9PT10aGlzLmRlbGV0ZWRTdGF0ZXNbdF0pcmV0dXJuO2NvbnN0IG49U3RyaW5nKGUpO2lmKHRoaXMuZGVsZXRlZFN0YXRlc1t0XT10aGlzLmRlbGV0ZWRTdGF0ZXNbdF18fHt9LHImJnZvaWQgMCE9PWUpbnVsbCE9PXRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXSYmKHRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXT10aGlzLmRlbGV0ZWRTdGF0ZXNbdF1bbl18fHt9LHRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXVtyXT1udWxsKTtlbHNlIGlmKHZvaWQgMCE9PWUpaWYodGhpcy5zdGF0ZUNoYW5nZXNbdF0mJnRoaXMuc3RhdGVDaGFuZ2VzW3RdW25dKWZvcihyIGluIHRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXT17fSx0aGlzLnN0YXRlQ2hhbmdlc1t0XVtuXSl0aGlzLmRlbGV0ZWRTdGF0ZXNbdF1bbl1bcl09bnVsbDtlbHNlIHRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXT1udWxsO2Vsc2UgdGhpcy5kZWxldGVkU3RhdGVzW3RdPW51bGw7fWdldFN0YXRlKHQsZSl7Y29uc3Qgcj1TdHJpbmcoZSksbj1DKHt9LCh0aGlzLnN0YXRlW3RdfHx7fSlbcl0sKHRoaXMuc3RhdGVDaGFuZ2VzW3RdfHx7fSlbcl0pO2lmKG51bGw9PT10aGlzLmRlbGV0ZWRTdGF0ZXNbdF0pcmV0dXJuIHt9O2lmKHRoaXMuZGVsZXRlZFN0YXRlc1t0XSl7Y29uc3Qgcj10aGlzLmRlbGV0ZWRTdGF0ZXNbdF1bZV07aWYobnVsbD09PXIpcmV0dXJuIHt9O2Zvcihjb25zdCB0IGluIHIpZGVsZXRlIG5bdF07fXJldHVybiBufWluaXRpYWxpemVUaWxlU3RhdGUodCxlKXt0LnNldEZlYXR1cmVTdGF0ZSh0aGlzLnN0YXRlLGUpO31jb2FsZXNjZUNoYW5nZXModCxlKXtjb25zdCByPXt9O2Zvcihjb25zdCB0IGluIHRoaXMuc3RhdGVDaGFuZ2VzKXt0aGlzLnN0YXRlW3RdPXRoaXMuc3RhdGVbdF18fHt9O2NvbnN0IGU9e307Zm9yKGNvbnN0IHIgaW4gdGhpcy5zdGF0ZUNoYW5nZXNbdF0pdGhpcy5zdGF0ZVt0XVtyXXx8KHRoaXMuc3RhdGVbdF1bcl09e30pLEModGhpcy5zdGF0ZVt0XVtyXSx0aGlzLnN0YXRlQ2hhbmdlc1t0XVtyXSksZVtyXT10aGlzLnN0YXRlW3RdW3JdO3JbdF09ZTt9Zm9yKGNvbnN0IHQgaW4gdGhpcy5kZWxldGVkU3RhdGVzKXt0aGlzLnN0YXRlW3RdPXRoaXMuc3RhdGVbdF18fHt9O2NvbnN0IGU9e307aWYobnVsbD09PXRoaXMuZGVsZXRlZFN0YXRlc1t0XSlmb3IoY29uc3QgciBpbiB0aGlzLnN0YXRlW3RdKWVbcl09e30sdGhpcy5zdGF0ZVt0XVtyXT17fTtlbHNlIGZvcihjb25zdCByIGluIHRoaXMuZGVsZXRlZFN0YXRlc1t0XSl7aWYobnVsbD09PXRoaXMuZGVsZXRlZFN0YXRlc1t0XVtyXSl0aGlzLnN0YXRlW3RdW3JdPXt9O2Vsc2UgaWYodGhpcy5zdGF0ZVt0XVtyXSlmb3IoY29uc3QgZSBvZiBPYmplY3Qua2V5cyh0aGlzLmRlbGV0ZWRTdGF0ZXNbdF1bcl0pKWRlbGV0ZSB0aGlzLnN0YXRlW3RdW3JdW2VdO2Vbcl09dGhpcy5zdGF0ZVt0XVtyXTt9clt0XT1yW3RdfHx7fSxDKHJbdF0sZSk7fWlmKHRoaXMuc3RhdGVDaGFuZ2VzPXt9LHRoaXMuZGVsZXRlZFN0YXRlcz17fSwwIT09T2JqZWN0LmtleXMocikubGVuZ3RoKWZvcihjb25zdCBuIGluIHQpdFtuXS5zZXRGZWF0dXJlU3RhdGUocixlKTt9fWNsYXNzIFZme2NvbnN0cnVjdG9yKHQpe3RoaXMuc2l6ZT10LHRoaXMubWluaW11bXM9W10sdGhpcy5tYXhpbXVtcz1bXSx0aGlzLmxlYXZlcz1bXTt9Z2V0RWxldmF0aW9uKHQsZSl7Y29uc3Qgcj10aGlzLnRvSWR4KHQsZSk7cmV0dXJuIHttaW46dGhpcy5taW5pbXVtc1tyXSxtYXg6dGhpcy5tYXhpbXVtc1tyXX19aXNMZWFmKHQsZSl7cmV0dXJuIHRoaXMubGVhdmVzW3RoaXMudG9JZHgodCxlKV19dG9JZHgodCxlKXtyZXR1cm4gZSp0aGlzLnNpemUrdH19ZnVuY3Rpb24gTGYodCxlLHIsbil7bGV0IGk9MCxzPU51bWJlci5NQVhfVkFMVUU7Zm9yKGxldCBhPTA7YTwzO2ErKylpZihNYXRoLmFicyhuW2FdKTwxZS0xNSl7aWYoclthXTx0W2FdfHxyW2FdPmVbYV0pcmV0dXJuIG51bGx9ZWxzZSB7Y29uc3Qgbz0xL25bYV07bGV0IGw9KHRbYV0tclthXSkqbyx1PShlW2FdLXJbYV0pKm87aWYobD51KXtjb25zdCB0PWw7bD11LHU9dDt9aWYobD5pJiYoaT1sKSx1PHMmJihzPXUpLGk+cylyZXR1cm4gbnVsbH1yZXR1cm4gaX1mdW5jdGlvbiBGZih0LGUscixuLGkscyxhLG8sbCx1LGMpe2NvbnN0IGg9bi10LHA9aS1lLGQ9cy1yLGY9YS10LHk9by1lLG09bC1yLGc9Y1sxXSptLWNbMl0qeSx4PWNbMl0qZi1jWzBdKm0sdj1jWzBdKnktY1sxXSpmLGI9aCpnK3AqeCtkKnY7aWYoTWF0aC5hYnMoYik8MWUtMTUpcmV0dXJuIG51bGw7Y29uc3Qgdz0xL2IsXz11WzBdLXQsQT11WzFdLWUsUz11WzJdLXIsaz0oXypnK0EqeCtTKnYpKnc7aWYoazwwfHxrPjEpcmV0dXJuIG51bGw7Y29uc3QgST1BKmQtUypwLE09UypoLV8qZCxUPV8qcC1BKmgsej0oY1swXSpJK2NbMV0qTStjWzJdKlQpKnc7cmV0dXJuIHo8MHx8ayt6PjE/bnVsbDooZipJK3kqTSttKlQpKnd9ZnVuY3Rpb24gUmYodCxlLHIpe3JldHVybiAodC1lKS8oci1lKX1mdW5jdGlvbiBVZih0LGUscixuLGkscyxhLG8sbCl7Y29uc3QgdT0xPDxyLGM9cy1uLGg9YS1pLHA9KHQrMSkvdSpjK24sZD0oZSswKS91KmgraSxmPShlKzEpL3UqaCtpO29bMF09KHQrMCkvdSpjK24sb1sxXT1kLGxbMF09cCxsWzFdPWY7fWNsYXNzICRme2NvbnN0cnVjdG9yKHQpe2lmKHRoaXMubWF4aW11bXM9W10sdGhpcy5taW5pbXVtcz1bXSx0aGlzLmxlYXZlcz1bXSx0aGlzLmNoaWxkT2Zmc2V0cz1bXSx0aGlzLm5vZGVDb3VudD0wLHRoaXMuZGVtPXQsdGhpcy5fc2libGluZ09mZnNldD1bWzAsMF0sWzEsMF0sWzAsMV0sWzEsMV1dLCF0aGlzLmRlbSlyZXR1cm47Y29uc3QgZT1mdW5jdGlvbih0KXtjb25zdCBlPU1hdGguY2VpbChNYXRoLmxvZzIodC5kaW0vOCkpLHI9W107bGV0IG49TWF0aC5jZWlsKE1hdGgucG93KDIsZSkpO2NvbnN0IGk9MS9uLHM9KHQsZSxyLG4saSk9Pntjb25zdCBzPW4/MTowLGE9KHQrMSkqci1zLG89ZSpyLGw9KGUrMSkqci1zO2lbMF09dCpyLGlbMV09byxpWzJdPWEsaVszXT1sO307bGV0IGE9bmV3IFZmKG4pO2NvbnN0IG89W107Zm9yKGxldCBlPTA7ZTxuKm47ZSsrKXtzKGUlbixNYXRoLmZsb29yKGUvbiksaSwhMSxvKTtjb25zdCByPU9mKG9bMF0sb1sxXSx0KSxsPU9mKG9bMl0sb1sxXSx0KSx1PU9mKG9bMl0sb1szXSx0KSxjPU9mKG9bMF0sb1szXSx0KTthLm1pbmltdW1zLnB1c2goTWF0aC5taW4ocixsLHUsYykpLGEubWF4aW11bXMucHVzaChNYXRoLm1heChyLGwsdSxjKSksYS5sZWF2ZXMucHVzaCgxKTt9Zm9yKHIucHVzaChhKSxuLz0yO24+PTE7bi89Mil7Y29uc3QgdD1yW3IubGVuZ3RoLTFdO2E9bmV3IFZmKG4pO2ZvcihsZXQgZT0wO2U8bipuO2UrKyl7cyhlJW4sTWF0aC5mbG9vcihlL24pLDIsITAsbyk7Y29uc3Qgcj10LmdldEVsZXZhdGlvbihvWzBdLG9bMV0pLGk9dC5nZXRFbGV2YXRpb24ob1syXSxvWzFdKSxsPXQuZ2V0RWxldmF0aW9uKG9bMl0sb1szXSksdT10LmdldEVsZXZhdGlvbihvWzBdLG9bM10pLGM9dC5pc0xlYWYob1swXSxvWzFdKSxoPXQuaXNMZWFmKG9bMl0sb1sxXSkscD10LmlzTGVhZihvWzJdLG9bM10pLGQ9dC5pc0xlYWYob1swXSxvWzNdKSxmPU1hdGgubWluKHIubWluLGkubWluLGwubWluLHUubWluKSx5PU1hdGgubWF4KHIubWF4LGkubWF4LGwubWF4LHUubWF4KSxtPWMmJmgmJnAmJmQ7YS5tYXhpbXVtcy5wdXNoKHkpLGEubWluaW11bXMucHVzaChmKSxhLmxlYXZlcy5wdXNoKHktZjw9NSYmbT8xOjApO31yLnB1c2goYSk7fXJldHVybiByfSh0aGlzLmRlbSkscj1lLmxlbmd0aC0xLG49ZVtyXTt0aGlzLl9hZGROb2RlKG4ubWluaW11bXNbMF0sbi5tYXhpbXVtc1swXSxuLmxlYXZlc1swXSksdGhpcy5fY29uc3RydWN0KGUsMCwwLHIsMCk7fXJheWNhc3RSb290KHQsZSxyLG4saSxzLGE9MSl7cmV0dXJuIExmKFt0LGUsLTEwMF0sW3Isbix0aGlzLm1heGltdW1zWzBdKmFdLGkscyl9cmF5Y2FzdCh0LGUscixuLGkscyxhPTEpe2lmKCF0aGlzLm5vZGVDb3VudClyZXR1cm4gbnVsbDtjb25zdCBvPXRoaXMucmF5Y2FzdFJvb3QodCxlLHIsbixpLHMsYSk7aWYobnVsbD09bylyZXR1cm4gbnVsbDtjb25zdCBsPVtdLHU9W10sYz1bXSxoPVtdLHA9W3tpZHg6MCx0Om8sbm9kZXg6MCxub2RleTowLGRlcHRoOjB9XTtmb3IoO3AubGVuZ3RoPjA7KXtjb25zdHtpZHg6byx0OmQsbm9kZXg6Zixub2RleTp5LGRlcHRoOm19PXAucG9wKCk7aWYodGhpcy5sZWF2ZXNbb10pe1VmKGYseSxtLHQsZSxyLG4sYyxoKTtjb25zdCBvPTE8PG0sbD0oZiswKS9vLHU9KGYrMSkvbyxwPSh5KzApL28sZz0oeSsxKS9vLHg9T2YobCxwLHRoaXMuZGVtKSphLHY9T2YodSxwLHRoaXMuZGVtKSphLGI9T2YodSxnLHRoaXMuZGVtKSphLHc9T2YobCxnLHRoaXMuZGVtKSphLF89RmYoY1swXSxjWzFdLHgsaFswXSxjWzFdLHYsaFswXSxoWzFdLGIsaSxzKSxBPUZmKGhbMF0saFsxXSxiLGNbMF0saFsxXSx3LGNbMF0sY1sxXSx4LGkscyksUz1NYXRoLm1pbihudWxsIT09Xz9fOk51bWJlci5NQVhfVkFMVUUsbnVsbCE9PUE/QTpOdW1iZXIuTUFYX1ZBTFVFKTtpZihTIT09TnVtYmVyLk1BWF9WQUxVRSlyZXR1cm4gUzt7Y29uc3QgdD1QbyhbXSxpLHMsZCk7aWYoamYoeCx2LHcsYixSZih0WzBdLGNbMF0saFswXSksUmYodFsxXSxjWzFdLGhbMV0pKT49dFsyXSlyZXR1cm4gZH1jb250aW51ZX1sZXQgZz0wO2ZvcihsZXQgcD0wO3A8dGhpcy5fc2libGluZ09mZnNldC5sZW5ndGg7cCsrKXtVZigoZjw8MSkrdGhpcy5fc2libGluZ09mZnNldFtwXVswXSwoeTw8MSkrdGhpcy5fc2libGluZ09mZnNldFtwXVsxXSxtKzEsdCxlLHIsbixjLGgpLGNbMl09LTEwMCxoWzJdPXRoaXMubWF4aW11bXNbdGhpcy5jaGlsZE9mZnNldHNbb10rcF0qYTtjb25zdCBkPUxmKGMsaCxpLHMpO2lmKG51bGwhPWQpe2NvbnN0IHQ9ZDtsW3BdPXQ7bGV0IGU9ITE7Zm9yKGxldCByPTA7cjxnJiYhZTtyKyspdD49bFt1W3JdXSYmKHUuc3BsaWNlKHIsMCxwKSxlPSEwKTtlfHwodVtnXT1wKSxnKys7fX1mb3IobGV0IHQ9MDt0PGc7dCsrKXtjb25zdCBlPXVbdF07cC5wdXNoKHtpZHg6dGhpcy5jaGlsZE9mZnNldHNbb10rZSx0OmxbZV0sbm9kZXg6KGY8PDEpK3RoaXMuX3NpYmxpbmdPZmZzZXRbZV1bMF0sbm9kZXk6KHk8PDEpK3RoaXMuX3NpYmxpbmdPZmZzZXRbZV1bMV0sZGVwdGg6bSsxfSk7fX1yZXR1cm4gbnVsbH1fYWRkTm9kZSh0LGUscil7cmV0dXJuIHRoaXMubWluaW11bXMucHVzaCh0KSx0aGlzLm1heGltdW1zLnB1c2goZSksdGhpcy5sZWF2ZXMucHVzaChyKSx0aGlzLmNoaWxkT2Zmc2V0cy5wdXNoKDApLHRoaXMubm9kZUNvdW50Kyt9X2NvbnN0cnVjdCh0LGUscixuLGkpe2lmKDE9PT10W25dLmlzTGVhZihlLHIpKXJldHVybjt0aGlzLmNoaWxkT2Zmc2V0c1tpXXx8KHRoaXMuY2hpbGRPZmZzZXRzW2ldPXRoaXMubm9kZUNvdW50KTtjb25zdCBzPW4tMSxhPXRbc107bGV0IG89MCxsPTA7Zm9yKGxldCB0PTA7dDx0aGlzLl9zaWJsaW5nT2Zmc2V0Lmxlbmd0aDt0Kyspe2NvbnN0IG49MiplK3RoaXMuX3NpYmxpbmdPZmZzZXRbdF1bMF0saT0yKnIrdGhpcy5fc2libGluZ09mZnNldFt0XVsxXSxzPWEuZ2V0RWxldmF0aW9uKG4saSksdT1hLmlzTGVhZihuLGkpLGM9dGhpcy5fYWRkTm9kZShzLm1pbixzLm1heCx1KTt1JiYob3w9MTw8dCksbHx8KGw9Yyk7fWZvcihsZXQgbj0wO248dGhpcy5fc2libGluZ09mZnNldC5sZW5ndGg7bisrKW8mMTw8bnx8dGhpcy5fY29uc3RydWN0KHQsMiplK3RoaXMuX3NpYmxpbmdPZmZzZXRbbl1bMF0sMipyK3RoaXMuX3NpYmxpbmdPZmZzZXRbbl1bMV0scyxsK24pO319ZnVuY3Rpb24gamYodCxlLHIsbixpLHMpe3JldHVybiBFcihFcih0LHIscyksRXIoZSxuLHMpLGkpfWZ1bmN0aW9uIE9mKHQsZSxyKXtjb25zdCBuPXIuZGltLGk9TSh0Km4tLjUsMCxuLTEpLHM9TShlKm4tLjUsMCxuLTEpLGE9TWF0aC5mbG9vcihpKSxvPU1hdGguZmxvb3IocyksbD1NYXRoLm1pbihhKzEsbi0xKSx1PU1hdGgubWluKG8rMSxuLTEpO3JldHVybiBqZihyLmdldChhLG8pLHIuZ2V0KGwsbyksci5nZXQoYSx1KSxyLmdldChsLHUpLGktYSxzLW8pfWNvbnN0IHFmPXttYXBib3g6WzY1NTMuNiwyNS42LC4xLDFlNF0sdGVycmFyaXVtOlsyNTYsMSwxLzI1NiwzMjc2OF19O2Z1bmN0aW9uIE5mKHQsZSxyKXtyZXR1cm4gKDI1Nip0KjI1NisyNTYqZStyKS8xMC0xZTR9ZnVuY3Rpb24gR2YodCxlLHIpe3JldHVybiAyNTYqdCtlK3IvMjU2LTMyNzY4fWNsYXNzIFpme2dldCB0cmVlKCl7cmV0dXJuIHRoaXMuX3RyZWV8fHRoaXMuX2J1aWxkUXVhZFRyZWUoKSx0aGlzLl90cmVlfWNvbnN0cnVjdG9yKHQsZSxyLG49ITEsaT0hMSl7aWYodGhpcy51aWQ9dCxlLmhlaWdodCE9PWUud2lkdGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJERU0gdGlsZXMgbXVzdCBiZSBzcXVhcmVcIik7aWYociYmXCJtYXBib3hcIiE9PXImJlwidGVycmFyaXVtXCIhPT1yKXJldHVybiBOKGBcIiR7cn1cIiBpcyBub3QgYSB2YWxpZCBlbmNvZGluZyB0eXBlLiBWYWxpZCB0eXBlcyBpbmNsdWRlIFwibWFwYm94XCIgYW5kIFwidGVycmFyaXVtXCIuYCk7dGhpcy5zdHJpZGU9ZS5oZWlnaHQ7Y29uc3Qgcz10aGlzLmRpbT1lLmhlaWdodC0yLGE9bmV3IFVpbnQzMkFycmF5KGUuZGF0YS5idWZmZXIpO2lmKHRoaXMucGl4ZWxzPW5ldyBVaW50OEFycmF5KGUuZGF0YS5idWZmZXIpLHRoaXMuZW5jb2Rpbmc9cnx8XCJtYXBib3hcIix0aGlzLmJvcmRlclJlYWR5PW4sIW4pe2ZvcihsZXQgdD0wO3Q8czt0KyspYVt0aGlzLl9pZHgoLTEsdCldPWFbdGhpcy5faWR4KDAsdCldLGFbdGhpcy5faWR4KHMsdCldPWFbdGhpcy5faWR4KHMtMSx0KV0sYVt0aGlzLl9pZHgodCwtMSldPWFbdGhpcy5faWR4KHQsMCldLGFbdGhpcy5faWR4KHQscyldPWFbdGhpcy5faWR4KHQscy0xKV07YVt0aGlzLl9pZHgoLTEsLTEpXT1hW3RoaXMuX2lkeCgwLDApXSxhW3RoaXMuX2lkeChzLC0xKV09YVt0aGlzLl9pZHgocy0xLDApXSxhW3RoaXMuX2lkeCgtMSxzKV09YVt0aGlzLl9pZHgoMCxzLTEpXSxhW3RoaXMuX2lkeChzLHMpXT1hW3RoaXMuX2lkeChzLTEscy0xKV0saSYmdGhpcy5fYnVpbGRRdWFkVHJlZSgpO319X2J1aWxkUXVhZFRyZWUoKXt0aGlzLl90cmVlPW5ldyAkZih0aGlzKTt9Z2V0KHQsZSxyPSExKXtyJiYodD1NKHQsLTEsdGhpcy5kaW0pLGU9TShlLC0xLHRoaXMuZGltKSk7Y29uc3Qgbj00KnRoaXMuX2lkeCh0LGUpO3JldHVybiAoXCJ0ZXJyYXJpdW1cIj09PXRoaXMuZW5jb2Rpbmc/R2Y6TmYpKHRoaXMucGl4ZWxzW25dLHRoaXMucGl4ZWxzW24rMV0sdGhpcy5waXhlbHNbbisyXSl9c3RhdGljIGdldFVucGFja1ZlY3Rvcih0KXtyZXR1cm4gcWZbdF19Z2V0IHVucGFja1ZlY3Rvcigpe3JldHVybiBxZlt0aGlzLmVuY29kaW5nXX1faWR4KHQsZSl7aWYodDwtMXx8dD49dGhpcy5kaW0rMXx8ZTwtMXx8ZT49dGhpcy5kaW0rMSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIm91dCBvZiByYW5nZSBzb3VyY2UgY29vcmRpbmF0ZXMgZm9yIERFTSBkYXRhXCIpO3JldHVybiAoZSsxKSp0aGlzLnN0cmlkZSsodCsxKX1zdGF0aWMgcGFjayh0LGUpe2NvbnN0IHI9WzAsMCwwLDBdLG49WmYuZ2V0VW5wYWNrVmVjdG9yKGUpO2xldCBpPU1hdGguZmxvb3IoKHQrblszXSkvblsyXSk7cmV0dXJuIHJbMl09aSUyNTYsaT1NYXRoLmZsb29yKGkvMjU2KSxyWzFdPWklMjU2LGk9TWF0aC5mbG9vcihpLzI1NiksclswXT1pLHJ9Z2V0UGl4ZWxzKCl7cmV0dXJuIG5ldyBVdSh7d2lkdGg6dGhpcy5zdHJpZGUsaGVpZ2h0OnRoaXMuc3RyaWRlfSx0aGlzLnBpeGVscyl9YmFja2ZpbGxCb3JkZXIodCxlLHIpe2lmKHRoaXMuZGltIT09dC5kaW0pdGhyb3cgbmV3IEVycm9yKFwiZGVtIGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtsZXQgbj1lKnRoaXMuZGltLGk9ZSp0aGlzLmRpbSt0aGlzLmRpbSxzPXIqdGhpcy5kaW0sYT1yKnRoaXMuZGltK3RoaXMuZGltO3N3aXRjaChlKXtjYXNlLTE6bj1pLTE7YnJlYWs7Y2FzZSAxOmk9bisxO31zd2l0Y2gocil7Y2FzZS0xOnM9YS0xO2JyZWFrO2Nhc2UgMTphPXMrMTt9Y29uc3Qgbz0tZSp0aGlzLmRpbSxsPS1yKnRoaXMuZGltO2ZvcihsZXQgZT1zO2U8YTtlKyspZm9yKGxldCByPW47cjxpO3IrKyl7Y29uc3Qgbj00KnRoaXMuX2lkeChyLGUpLGk9NCp0aGlzLl9pZHgocitvLGUrbCk7dGhpcy5waXhlbHNbbiswXT10LnBpeGVsc1tpKzBdLHRoaXMucGl4ZWxzW24rMV09dC5waXhlbHNbaSsxXSx0aGlzLnBpeGVsc1tuKzJdPXQucGl4ZWxzW2krMl0sdGhpcy5waXhlbHNbbiszXT10LnBpeGVsc1tpKzNdO319b25EZXNlcmlhbGl6ZSgpe3RoaXMuX3RyZWUmJih0aGlzLl90cmVlLmRlbT10aGlzKTt9fUppKFpmLFwiREVNRGF0YVwiKSxKaSgkZixcIkRlbU1pbk1heFF1YWRUcmVlXCIse29taXQ6W1wiZGVtXCJdfSk7Y2xhc3MgS2Z7Y29uc3RydWN0b3IodCxlKXt0aGlzLm1heD10LHRoaXMub25SZW1vdmU9ZSx0aGlzLnJlc2V0KCk7fXJlc2V0KCl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5kYXRhKWZvcihjb25zdCBlIG9mIHRoaXMuZGF0YVt0XSllLnRpbWVvdXQmJmNsZWFyVGltZW91dChlLnRpbWVvdXQpLHRoaXMub25SZW1vdmUoZS52YWx1ZSk7cmV0dXJuIHRoaXMuZGF0YT17fSx0aGlzLm9yZGVyPVtdLHRoaXN9YWRkKHQsZSxyKXtjb25zdCBuPXQud3JhcHBlZCgpLmtleTt2b2lkIDA9PT10aGlzLmRhdGFbbl0mJih0aGlzLmRhdGFbbl09W10pO2NvbnN0IGk9e3ZhbHVlOmUsdGltZW91dDp2b2lkIDB9O2lmKHZvaWQgMCE9PXImJihpLnRpbWVvdXQ9c2V0VGltZW91dCgoKCk9Pnt0aGlzLnJlbW92ZSh0LGkpO30pLHIpKSx0aGlzLmRhdGFbbl0ucHVzaChpKSx0aGlzLm9yZGVyLnB1c2gobiksdGhpcy5vcmRlci5sZW5ndGg+dGhpcy5tYXgpe2NvbnN0IHQ9dGhpcy5fZ2V0QW5kUmVtb3ZlQnlLZXkodGhpcy5vcmRlclswXSk7dCYmdGhpcy5vblJlbW92ZSh0KTt9cmV0dXJuIHRoaXN9aGFzKHQpe3JldHVybiB0LndyYXBwZWQoKS5rZXkgaW4gdGhpcy5kYXRhfWdldEFuZFJlbW92ZSh0KXtyZXR1cm4gdGhpcy5oYXModCk/dGhpcy5fZ2V0QW5kUmVtb3ZlQnlLZXkodC53cmFwcGVkKCkua2V5KTpudWxsfV9nZXRBbmRSZW1vdmVCeUtleSh0KXtjb25zdCBlPXRoaXMuZGF0YVt0XS5zaGlmdCgpO3JldHVybiBlLnRpbWVvdXQmJmNsZWFyVGltZW91dChlLnRpbWVvdXQpLDA9PT10aGlzLmRhdGFbdF0ubGVuZ3RoJiZkZWxldGUgdGhpcy5kYXRhW3RdLHRoaXMub3JkZXIuc3BsaWNlKHRoaXMub3JkZXIuaW5kZXhPZih0KSwxKSxlLnZhbHVlfWdldEJ5S2V5KHQpe2NvbnN0IGU9dGhpcy5kYXRhW3RdO3JldHVybiBlP2VbMF0udmFsdWU6bnVsbH1nZXQodCl7cmV0dXJuIHRoaXMuaGFzKHQpP3RoaXMuZGF0YVt0LndyYXBwZWQoKS5rZXldWzBdLnZhbHVlOm51bGx9cmVtb3ZlKHQsZSl7aWYoIXRoaXMuaGFzKHQpKXJldHVybiB0aGlzO2NvbnN0IHI9dC53cmFwcGVkKCkua2V5LG49dm9pZCAwPT09ZT8wOnRoaXMuZGF0YVtyXS5pbmRleE9mKGUpLGk9dGhpcy5kYXRhW3JdW25dO3JldHVybiB0aGlzLmRhdGFbcl0uc3BsaWNlKG4sMSksaS50aW1lb3V0JiZjbGVhclRpbWVvdXQoaS50aW1lb3V0KSwwPT09dGhpcy5kYXRhW3JdLmxlbmd0aCYmZGVsZXRlIHRoaXMuZGF0YVtyXSx0aGlzLm9uUmVtb3ZlKGkudmFsdWUpLHRoaXMub3JkZXIuc3BsaWNlKHRoaXMub3JkZXIuaW5kZXhPZihyKSwxKSx0aGlzfXNldE1heFNpemUodCl7Zm9yKHRoaXMubWF4PXQ7dGhpcy5vcmRlci5sZW5ndGg+dGhpcy5tYXg7KXtjb25zdCB0PXRoaXMuX2dldEFuZFJlbW92ZUJ5S2V5KHRoaXMub3JkZXJbMF0pO3QmJnRoaXMub25SZW1vdmUodCk7fXJldHVybiB0aGlzfWZpbHRlcih0KXtjb25zdCBlPVtdO2Zvcihjb25zdCByIGluIHRoaXMuZGF0YSlmb3IoY29uc3QgbiBvZiB0aGlzLmRhdGFbcl0pdChuLnZhbHVlKXx8ZS5wdXNoKG4pO2Zvcihjb25zdCB0IG9mIGUpdGhpcy5yZW1vdmUodC52YWx1ZS50aWxlSUQsdCk7fX1jbGFzcyBYZntjb25zdHJ1Y3Rvcih0LGUscil7dGhpcy5mdW5jPXQsdGhpcy5tYXNrPWUsdGhpcy5yYW5nZT1yO319WGYuUmVhZE9ubHk9ITEsWGYuUmVhZFdyaXRlPSEwLFhmLmRpc2FibGVkPW5ldyBYZig1MTksWGYuUmVhZE9ubHksWzAsMV0pO2NvbnN0IEpmPTc2ODA7Y2xhc3MgSGZ7Y29uc3RydWN0b3IodCxlLHIsbixpLHMpe3RoaXMudGVzdD10LHRoaXMucmVmPWUsdGhpcy5tYXNrPXIsdGhpcy5mYWlsPW4sdGhpcy5kZXB0aEZhaWw9aSx0aGlzLnBhc3M9czt9fUhmLmRpc2FibGVkPW5ldyBIZih7ZnVuYzo1MTksbWFzazowfSwwLDAsSmYsSmYsSmYpO2NsYXNzIFlme2NvbnN0cnVjdG9yKHQsZSxyKXt0aGlzLmJsZW5kRnVuY3Rpb249dCx0aGlzLmJsZW5kQ29sb3I9ZSx0aGlzLm1hc2s9cjt9fVlmLlJlcGxhY2U9WzEsMF0sWWYuZGlzYWJsZWQ9bmV3IFlmKFlmLlJlcGxhY2UsRWUudHJhbnNwYXJlbnQsWyExLCExLCExLCExXSksWWYudW5ibGVuZGVkPW5ldyBZZihZZi5SZXBsYWNlLEVlLnRyYW5zcGFyZW50LFshMCwhMCwhMCwhMF0pLFlmLmFscGhhQmxlbmRlZD1uZXcgWWYoWzEsNzcxXSxFZS50cmFuc3BhcmVudCxbITAsITAsITAsITBdKTtjb25zdCBXZj0xMDI5LFFmPTIzMDU7Y2xhc3MgdHl7Y29uc3RydWN0b3IodCxlLHIpe3RoaXMuZW5hYmxlPXQsdGhpcy5tb2RlPWUsdGhpcy5mcm9udEZhY2U9cjt9fXR5LmRpc2FibGVkPW5ldyB0eSghMSxXZixRZiksdHkuYmFja0NDVz1uZXcgdHkoITAsV2YsUWYpLHR5LmJhY2tDVz1uZXcgdHkoITAsV2YsMjMwNCksdHkuZnJvbnRDVz1uZXcgdHkoITAsMTAyOCwyMzA0KSx0eS5mcm9udENDVz1uZXcgdHkoITAsMTAyOCxRZik7Y2xhc3MgZXkgZXh0ZW5kcyBRdHtjb25zdHJ1Y3Rvcih0LGUscil7c3VwZXIoKSx0aGlzLmlkPXQsdGhpcy5fb25seVN5bWJvbHM9cixlLm9uKFwiZGF0YVwiLCh0PT57XCJzb3VyY2VcIj09PXQuZGF0YVR5cGUmJlwibWV0YWRhdGFcIj09PXQuc291cmNlRGF0YVR5cGUmJih0aGlzLl9zb3VyY2VMb2FkZWQ9ITApLHRoaXMuX3NvdXJjZUxvYWRlZCYmIXRoaXMuX3BhdXNlZCYmXCJzb3VyY2VcIj09PXQuZGF0YVR5cGUmJlwiY29udGVudFwiPT09dC5zb3VyY2VEYXRhVHlwZSYmKHRoaXMucmVsb2FkKCksdGhpcy50cmFuc2Zvcm0mJnRoaXMudXBkYXRlKHRoaXMudHJhbnNmb3JtKSk7fSkpLGUub24oXCJlcnJvclwiLCgoKT0+e3RoaXMuX3NvdXJjZUVycm9yZWQ9ITA7fSkpLHRoaXMuX3NvdXJjZT1lLHRoaXMuX3RpbGVzPXt9LHRoaXMuX2NhY2hlPW5ldyBLZigwLHRoaXMuX3VubG9hZFRpbGUuYmluZCh0aGlzKSksdGhpcy5fdGltZXJzPXt9LHRoaXMuX2NhY2hlVGltZXJzPXt9LHRoaXMuX21pblRpbGVDYWNoZVNpemU9ZS5taW5UaWxlQ2FjaGVTaXplLHRoaXMuX21heFRpbGVDYWNoZVNpemU9ZS5tYXhUaWxlQ2FjaGVTaXplLHRoaXMuX2xvYWRlZFBhcmVudFRpbGVzPXt9LHRoaXMuX2NvdmVyZWRUaWxlcz17fSx0aGlzLl9zdGF0ZT1uZXcgRGYsdGhpcy5faXNSYXN0ZXI9XCJyYXN0ZXJcIj09PXRoaXMuX3NvdXJjZS50eXBlfHxcInJhc3Rlci1kZW1cIj09PXRoaXMuX3NvdXJjZS50eXBlfHxcImN1c3RvbVwiPT09dGhpcy5fc291cmNlLnR5cGUmJlwicmFzdGVyXCI9PT10aGlzLl9zb3VyY2UuX2RhdGFUeXBlO31vbkFkZCh0KXt0aGlzLm1hcD10LHRoaXMuX21pblRpbGVDYWNoZVNpemU9dm9pZCAwPT09dGhpcy5fbWluVGlsZUNhY2hlU2l6ZSYmdD90Ll9taW5UaWxlQ2FjaGVTaXplOnRoaXMuX21pblRpbGVDYWNoZVNpemUsdGhpcy5fbWF4VGlsZUNhY2hlU2l6ZT12b2lkIDA9PT10aGlzLl9tYXhUaWxlQ2FjaGVTaXplJiZ0P3QuX21heFRpbGVDYWNoZVNpemU6dGhpcy5fbWF4VGlsZUNhY2hlU2l6ZTt9bG9hZGVkKCl7aWYodGhpcy5fc291cmNlRXJyb3JlZClyZXR1cm4gITA7aWYoIXRoaXMuX3NvdXJjZUxvYWRlZClyZXR1cm4gITE7aWYoIXRoaXMuX3NvdXJjZS5sb2FkZWQoKSlyZXR1cm4gITE7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fdGlsZXMpe2NvbnN0IGU9dGhpcy5fdGlsZXNbdF07aWYoXCJsb2FkZWRcIiE9PWUuc3RhdGUmJlwiZXJyb3JlZFwiIT09ZS5zdGF0ZSlyZXR1cm4gITF9cmV0dXJuICEwfWdldFNvdXJjZSgpe3JldHVybiB0aGlzLl9zb3VyY2V9cGF1c2UoKXt0aGlzLl9wYXVzZWQ9ITA7fXJlc3VtZSgpe2lmKCF0aGlzLl9wYXVzZWQpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fc2hvdWxkUmVsb2FkT25SZXN1bWU7dGhpcy5fcGF1c2VkPSExLHRoaXMuX3Nob3VsZFJlbG9hZE9uUmVzdW1lPSExLHQmJnRoaXMucmVsb2FkKCksdGhpcy50cmFuc2Zvcm0mJnRoaXMudXBkYXRlKHRoaXMudHJhbnNmb3JtKTt9X2xvYWRUaWxlKHQsZSl7cmV0dXJuIHQuaXNTeW1ib2xUaWxlPXRoaXMuX29ubHlTeW1ib2xzLHRoaXMuX3NvdXJjZS5sb2FkVGlsZSh0LGUpfV91bmxvYWRUaWxlKHQpe2lmKHRoaXMuX3NvdXJjZS51bmxvYWRUaWxlKXJldHVybiB0aGlzLl9zb3VyY2UudW5sb2FkVGlsZSh0LCgoKT0+e30pKX1fYWJvcnRUaWxlKHQpe2lmKHRoaXMuX3NvdXJjZS5hYm9ydFRpbGUpcmV0dXJuIHRoaXMuX3NvdXJjZS5hYm9ydFRpbGUodCwoKCk9Pnt9KSl9c2VyaWFsaXplKCl7cmV0dXJuIHRoaXMuX3NvdXJjZS5zZXJpYWxpemUoKX1wcmVwYXJlKHQpe3RoaXMuX3NvdXJjZS5wcmVwYXJlJiZ0aGlzLl9zb3VyY2UucHJlcGFyZSgpLHRoaXMuX3N0YXRlLmNvYWxlc2NlQ2hhbmdlcyh0aGlzLl90aWxlcyx0aGlzLm1hcD90aGlzLm1hcC5wYWludGVyOm51bGwpO2Zvcihjb25zdCBlIGluIHRoaXMuX3RpbGVzKXtjb25zdCByPXRoaXMuX3RpbGVzW2VdO3IudXBsb2FkKHQpLHIucHJlcGFyZSh0aGlzLm1hcC5zdHlsZS5pbWFnZU1hbmFnZXIpO319Z2V0SWRzKCl7cmV0dXJuIEUodGhpcy5fdGlsZXMpLm1hcCgodD0+dC50aWxlSUQpKS5zb3J0KHJ5KS5tYXAoKHQ9PnQua2V5KSl9Z2V0UmVuZGVyYWJsZUlkcyh0KXtjb25zdCBlPVtdO2Zvcihjb25zdCByIGluIHRoaXMuX3RpbGVzKXRoaXMuX2lzSWRSZW5kZXJhYmxlKCtyLHQpJiZlLnB1c2godGhpcy5fdGlsZXNbcl0pO3JldHVybiB0P2Uuc29ydCgoKHQsZSk9Pntjb25zdCByPXQudGlsZUlELG49ZS50aWxlSUQsaT1uZXcgeChyLmNhbm9uaWNhbC54LHIuY2Fub25pY2FsLnkpLl9yb3RhdGUodGhpcy50cmFuc2Zvcm0uYW5nbGUpLHM9bmV3IHgobi5jYW5vbmljYWwueCxuLmNhbm9uaWNhbC55KS5fcm90YXRlKHRoaXMudHJhbnNmb3JtLmFuZ2xlKTtyZXR1cm4gci5vdmVyc2NhbGVkWi1uLm92ZXJzY2FsZWRafHxzLnktaS55fHxzLngtaS54fSkpLm1hcCgodD0+dC50aWxlSUQua2V5KSk6ZS5tYXAoKHQ9PnQudGlsZUlEKSkuc29ydChyeSkubWFwKCh0PT50LmtleSkpfWhhc1JlbmRlcmFibGVQYXJlbnQodCl7Y29uc3QgZT10aGlzLmZpbmRMb2FkZWRQYXJlbnQodCwwKTtyZXR1cm4gISFlJiZ0aGlzLl9pc0lkUmVuZGVyYWJsZShlLnRpbGVJRC5rZXkpfV9pc0lkUmVuZGVyYWJsZSh0LGUpe3JldHVybiB0aGlzLl90aWxlc1t0XSYmdGhpcy5fdGlsZXNbdF0uaGFzRGF0YSgpJiYhdGhpcy5fY292ZXJlZFRpbGVzW3RdJiYoZXx8IXRoaXMuX3RpbGVzW3RdLmhvbGRpbmdGb3JGYWRlKCkpfXJlbG9hZCgpe2lmKHRoaXMuX3BhdXNlZCl0aGlzLl9zaG91bGRSZWxvYWRPblJlc3VtZT0hMDtlbHNlIHt0aGlzLl9jYWNoZS5yZXNldCgpO2Zvcihjb25zdCB0IGluIHRoaXMuX3RpbGVzKVwiZXJyb3JlZFwiIT09dGhpcy5fdGlsZXNbdF0uc3RhdGUmJnRoaXMuX3JlbG9hZFRpbGUoK3QsXCJyZWxvYWRpbmdcIik7fX1fcmVsb2FkVGlsZSh0LGUpe2NvbnN0IHI9dGhpcy5fdGlsZXNbdF07ciYmKFwibG9hZGluZ1wiIT09ci5zdGF0ZSYmKHIuc3RhdGU9ZSksdGhpcy5fbG9hZFRpbGUocix0aGlzLl90aWxlTG9hZGVkLmJpbmQodGhpcyxyLHQsZSkpKTt9X3RpbGVMb2FkZWQodCxlLHIsbil7aWYobilpZih0LnN0YXRlPVwiZXJyb3JlZFwiLDQwNCE9PW4uc3RhdHVzKXRoaXMuX3NvdXJjZS5maXJlKG5ldyBXdChuLHt0aWxlOnR9KSk7ZWxzZSBpZihcInJhc3Rlci1kZW1cIj09PXRoaXMuX3NvdXJjZS50eXBlJiZ0aGlzLnVzZWRGb3JUZXJyYWluJiZ0aGlzLm1hcC5wYWludGVyLnRlcnJhaW4pe2NvbnN0IHQ9dGhpcy5tYXAucGFpbnRlci50ZXJyYWluO3RoaXMudXBkYXRlKHRoaXMudHJhbnNmb3JtLHQuZ2V0U2NhbGVkRGVtVGlsZVNpemUoKSwhMCksdC5yZXNldFRpbGVMb29rdXBDYWNoZSh0aGlzLmlkKTt9ZWxzZSB0aGlzLnVwZGF0ZSh0aGlzLnRyYW5zZm9ybSk7ZWxzZSB0LnRpbWVBZGRlZD1YdC5ub3coKSxcImV4cGlyZWRcIj09PXImJih0LnJlZnJlc2hlZFVwb25FeHBpcmF0aW9uPSEwKSx0aGlzLl9zZXRUaWxlUmVsb2FkVGltZXIoZSx0KSxcInJhc3Rlci1kZW1cIj09PXRoaXMuX3NvdXJjZS50eXBlJiZ0LmRlbSYmdGhpcy5fYmFja2ZpbGxERU0odCksdGhpcy5fc3RhdGUuaW5pdGlhbGl6ZVRpbGVTdGF0ZSh0LHRoaXMubWFwP3RoaXMubWFwLnBhaW50ZXI6bnVsbCksdGhpcy5fc291cmNlLmZpcmUobmV3IFl0KFwiZGF0YVwiLHtkYXRhVHlwZTpcInNvdXJjZVwiLHRpbGU6dCxjb29yZDp0LnRpbGVJRCxzb3VyY2VDYWNoZUlkOnRoaXMuaWR9KSk7fV9iYWNrZmlsbERFTSh0KXtjb25zdCBlPXRoaXMuZ2V0UmVuZGVyYWJsZUlkcygpO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCBpPWVbbl07aWYodC5uZWlnaGJvcmluZ1RpbGVzJiZ0Lm5laWdoYm9yaW5nVGlsZXNbaV0pe2NvbnN0IGU9dGhpcy5nZXRUaWxlQnlJRChpKTtyKHQsZSkscihlLHQpO319ZnVuY3Rpb24gcih0LGUpe2lmKCF0LmRlbXx8dC5kZW0uYm9yZGVyUmVhZHkpcmV0dXJuO3QubmVlZHNIaWxsc2hhZGVQcmVwYXJlPSEwLHQubmVlZHNERU1UZXh0dXJlVXBsb2FkPSEwO2xldCByPWUudGlsZUlELmNhbm9uaWNhbC54LXQudGlsZUlELmNhbm9uaWNhbC54O2NvbnN0IG49ZS50aWxlSUQuY2Fub25pY2FsLnktdC50aWxlSUQuY2Fub25pY2FsLnksaT1NYXRoLnBvdygyLHQudGlsZUlELmNhbm9uaWNhbC56KSxzPWUudGlsZUlELmtleTswPT09ciYmMD09PW58fE1hdGguYWJzKG4pPjF8fChNYXRoLmFicyhyKT4xJiYoMT09PU1hdGguYWJzKHIraSk/cis9aToxPT09TWF0aC5hYnMoci1pKSYmKHItPWkpKSxlLmRlbSYmdC5kZW0mJih0LmRlbS5iYWNrZmlsbEJvcmRlcihlLmRlbSxyLG4pLHQubmVpZ2hib3JpbmdUaWxlcyYmdC5uZWlnaGJvcmluZ1RpbGVzW3NdJiYodC5uZWlnaGJvcmluZ1RpbGVzW3NdLmJhY2tmaWxsZWQ9ITApKSk7fX1nZXRUaWxlKHQpe3JldHVybiB0aGlzLmdldFRpbGVCeUlEKHQua2V5KX1nZXRUaWxlQnlJRCh0KXtyZXR1cm4gdGhpcy5fdGlsZXNbdF19X3JldGFpbkxvYWRlZENoaWxkcmVuKHQsZSxyLG4pe2Zvcihjb25zdCBpIGluIHRoaXMuX3RpbGVzKXtsZXQgcz10aGlzLl90aWxlc1tpXTtpZihuW2ldfHwhcy5oYXNEYXRhKCl8fHMudGlsZUlELm92ZXJzY2FsZWRaPD1lfHxzLnRpbGVJRC5vdmVyc2NhbGVkWj5yKWNvbnRpbnVlO2xldCBhPXMudGlsZUlEO2Zvcig7cyYmcy50aWxlSUQub3ZlcnNjYWxlZFo+ZSsxOyl7Y29uc3QgdD1zLnRpbGVJRC5zY2FsZWRUbyhzLnRpbGVJRC5vdmVyc2NhbGVkWi0xKTtzPXRoaXMuX3RpbGVzW3Qua2V5XSxzJiZzLmhhc0RhdGEoKSYmKGE9dCk7fWxldCBvPWE7Zm9yKDtvLm92ZXJzY2FsZWRaPmU7KWlmKG89by5zY2FsZWRUbyhvLm92ZXJzY2FsZWRaLTEpLHRbby5rZXldKXtuW2Eua2V5XT1hO2JyZWFrfX19ZmluZExvYWRlZFBhcmVudCh0LGUpe2lmKHQua2V5IGluIHRoaXMuX2xvYWRlZFBhcmVudFRpbGVzKXtjb25zdCByPXRoaXMuX2xvYWRlZFBhcmVudFRpbGVzW3Qua2V5XTtyZXR1cm4gciYmci50aWxlSUQub3ZlcnNjYWxlZFo+PWU/cjpudWxsfWZvcihsZXQgcj10Lm92ZXJzY2FsZWRaLTE7cj49ZTtyLS0pe2NvbnN0IGU9dC5zY2FsZWRUbyhyKSxuPXRoaXMuX2dldExvYWRlZFRpbGUoZSk7aWYobilyZXR1cm4gbn19X2dldExvYWRlZFRpbGUodCl7Y29uc3QgZT10aGlzLl90aWxlc1t0LmtleV07cmV0dXJuIGUmJmUuaGFzRGF0YSgpP2U6dGhpcy5fY2FjaGUuZ2V0QnlLZXkodGhpcy5fc291cmNlLnJlcGFyc2VPdmVyc2NhbGVkP3Qud3JhcHBlZCgpLmtleTp0LmNhbm9uaWNhbC5rZXkpfXVwZGF0ZUNhY2hlU2l6ZSh0LGUpe2U9ZXx8dGhpcy5fc291cmNlLnRpbGVTaXplO2NvbnN0IHI9TWF0aC5jZWlsKHQud2lkdGgvZSkrMSxuPU1hdGguY2VpbCh0LmhlaWdodC9lKSsxLGk9TWF0aC5mbG9vcihyKm4qNSkscz1cIm51bWJlclwiPT10eXBlb2YgdGhpcy5fbWluVGlsZUNhY2hlU2l6ZT9NYXRoLm1heCh0aGlzLl9taW5UaWxlQ2FjaGVTaXplLGkpOmksYT1cIm51bWJlclwiPT10eXBlb2YgdGhpcy5fbWF4VGlsZUNhY2hlU2l6ZT9NYXRoLm1pbih0aGlzLl9tYXhUaWxlQ2FjaGVTaXplLHMpOnM7dGhpcy5fY2FjaGUuc2V0TWF4U2l6ZShhKTt9aGFuZGxlV3JhcEp1bXAodCl7Y29uc3QgZT1NYXRoLnJvdW5kKCh0LSh2b2lkIDA9PT10aGlzLl9wcmV2TG5nP3Q6dGhpcy5fcHJldkxuZykpLzM2MCk7aWYodGhpcy5fcHJldkxuZz10LGUpe2NvbnN0IHQ9e307Zm9yKGNvbnN0IHIgaW4gdGhpcy5fdGlsZXMpe2NvbnN0IG49dGhpcy5fdGlsZXNbcl07bi50aWxlSUQ9bi50aWxlSUQudW53cmFwVG8obi50aWxlSUQud3JhcCtlKSx0W24udGlsZUlELmtleV09bjt9dGhpcy5fdGlsZXM9dDtmb3IoY29uc3QgdCBpbiB0aGlzLl90aW1lcnMpY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyc1t0XSksZGVsZXRlIHRoaXMuX3RpbWVyc1t0XTtmb3IoY29uc3QgdCBpbiB0aGlzLl90aWxlcyl0aGlzLl9zZXRUaWxlUmVsb2FkVGltZXIoK3QsdGhpcy5fdGlsZXNbdF0pO319dXBkYXRlKHQsZSxyKXtpZih0aGlzLnRyYW5zZm9ybT10LCF0aGlzLl9zb3VyY2VMb2FkZWR8fHRoaXMuX3BhdXNlZHx8dGhpcy50cmFuc2Zvcm0uZnJlZXplVGlsZUNvdmVyYWdlKXJldHVybjtpZih0aGlzLnVzZWRGb3JUZXJyYWluJiYhcilyZXR1cm47bGV0IG47dGhpcy51cGRhdGVDYWNoZVNpemUodCxlKSxcImdsb2JlXCIhPT10aGlzLnRyYW5zZm9ybS5wcm9qZWN0aW9uLm5hbWUmJnRoaXMuaGFuZGxlV3JhcEp1bXAodGhpcy50cmFuc2Zvcm0uY2VudGVyLmxuZyksdGhpcy5fY292ZXJlZFRpbGVzPXt9LHRoaXMudXNlZHx8dGhpcy51c2VkRm9yVGVycmFpbj90aGlzLl9zb3VyY2UudGlsZUlEP249dC5nZXRWaXNpYmxlVW53cmFwcGVkQ29vcmRpbmF0ZXModGhpcy5fc291cmNlLnRpbGVJRCkubWFwKCh0PT5uZXcgZmgodC5jYW5vbmljYWwueix0LndyYXAsdC5jYW5vbmljYWwueix0LmNhbm9uaWNhbC54LHQuY2Fub25pY2FsLnkpKSk6KG49dC5jb3ZlcmluZ1RpbGVzKHt0aWxlU2l6ZTplfHx0aGlzLl9zb3VyY2UudGlsZVNpemUsbWluem9vbTp0aGlzLl9zb3VyY2UubWluem9vbSxtYXh6b29tOnRoaXMuX3NvdXJjZS5tYXh6b29tLHJvdW5kWm9vbTp0aGlzLl9zb3VyY2Uucm91bmRab29tJiYhcixyZXBhcnNlT3ZlcnNjYWxlZDp0aGlzLl9zb3VyY2UucmVwYXJzZU92ZXJzY2FsZWQsaXNUZXJyYWluREVNOnRoaXMudXNlZEZvclRlcnJhaW59KSx0aGlzLl9zb3VyY2UuaGFzVGlsZSYmKG49bi5maWx0ZXIoKHQ9PnRoaXMuX3NvdXJjZS5oYXNUaWxlKHQpKSkpKTpuPVtdO2NvbnN0IGk9dGhpcy5fdXBkYXRlUmV0YWluZWRUaWxlcyhuKTtpZihueSh0aGlzLl9zb3VyY2UudHlwZSkmJjAhPT1uLmxlbmd0aCl7Y29uc3QgdD17fSxlPXt9LHI9T2JqZWN0LmtleXMoaSk7Zm9yKGNvbnN0IG4gb2Ygcil7Y29uc3Qgcj1pW25dLHM9dGhpcy5fdGlsZXNbbl07aWYoIXN8fHMuZmFkZUVuZFRpbWUmJnMuZmFkZUVuZFRpbWU8PVh0Lm5vdygpKWNvbnRpbnVlO2NvbnN0IGE9dGhpcy5maW5kTG9hZGVkUGFyZW50KHIsTWF0aC5tYXgoci5vdmVyc2NhbGVkWi1leS5tYXhPdmVyem9vbWluZyx0aGlzLl9zb3VyY2UubWluem9vbSkpO2EmJih0aGlzLl9hZGRUaWxlKGEudGlsZUlEKSx0W2EudGlsZUlELmtleV09YS50aWxlSUQpLGVbbl09cjt9Y29uc3Qgcz1uW24ubGVuZ3RoLTFdLm92ZXJzY2FsZWRaO2Zvcihjb25zdCB0IGluIHRoaXMuX3RpbGVzKXtjb25zdCByPXRoaXMuX3RpbGVzW3RdO2lmKGlbdF18fCFyLmhhc0RhdGEoKSljb250aW51ZTtsZXQgbj1yLnRpbGVJRDtmb3IoO24ub3ZlcnNjYWxlZFo+czspe249bi5zY2FsZWRUbyhuLm92ZXJzY2FsZWRaLTEpO2NvbnN0IHM9dGhpcy5fdGlsZXNbbi5rZXldO2lmKHMmJnMuaGFzRGF0YSgpJiZlW24ua2V5XSl7aVt0XT1yLnRpbGVJRDticmVha319fWZvcihjb25zdCBlIGluIHQpaVtlXXx8KHRoaXMuX2NvdmVyZWRUaWxlc1tlXT0hMCxpW2VdPXRbZV0pO31mb3IoY29uc3QgdCBpbiBpKXRoaXMuX3RpbGVzW3RdLmNsZWFyRmFkZUhvbGQoKTtjb25zdCBzPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj1bXTtmb3IoY29uc3QgbiBpbiB0KW4gaW4gZXx8ci5wdXNoKG4pO3JldHVybiByfSh0aGlzLl90aWxlcyxpKTtmb3IoY29uc3QgdCBvZiBzKXtjb25zdCBlPXRoaXMuX3RpbGVzW3RdO2UuaGFzU3ltYm9sQnVja2V0cyYmIWUuaG9sZGluZ0ZvckZhZGUoKT9lLnNldEhvbGREdXJhdGlvbih0aGlzLm1hcC5fZmFkZUR1cmF0aW9uKTplLmhhc1N5bWJvbEJ1Y2tldHMmJiFlLnN5bWJvbEZhZGVGaW5pc2hlZCgpfHx0aGlzLl9yZW1vdmVUaWxlKCt0KTt9dGhpcy5fdXBkYXRlTG9hZGVkUGFyZW50VGlsZUNhY2hlKCksdGhpcy5fb25seVN5bWJvbHMmJnRoaXMuX3NvdXJjZS5hZnRlclVwZGF0ZSYmdGhpcy5fc291cmNlLmFmdGVyVXBkYXRlKCk7fXJlbGVhc2VTeW1ib2xGYWRlVGlsZXMoKXtmb3IoY29uc3QgdCBpbiB0aGlzLl90aWxlcyl0aGlzLl90aWxlc1t0XS5ob2xkaW5nRm9yRmFkZSgpJiZ0aGlzLl9yZW1vdmVUaWxlKCt0KTt9X3VwZGF0ZVJldGFpbmVkVGlsZXModCl7Y29uc3QgZT17fTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIGU7Y29uc3Qgcj17fSxuPXQucmVkdWNlKCgodCxlKT0+TWF0aC5taW4odCxlLm92ZXJzY2FsZWRaKSksMS8wKSxpPXRbMF0ub3ZlcnNjYWxlZFoscz1NYXRoLm1heChpLWV5Lm1heE92ZXJ6b29taW5nLHRoaXMuX3NvdXJjZS5taW56b29tKSxhPU1hdGgubWF4KGkrZXkubWF4VW5kZXJ6b29taW5nLHRoaXMuX3NvdXJjZS5taW56b29tKSxvPXt9O2Zvcihjb25zdCByIG9mIHQpe2NvbnN0IHQ9dGhpcy5fYWRkVGlsZShyKTtlW3Iua2V5XT1yLHQuaGFzRGF0YSgpfHxuPHRoaXMuX3NvdXJjZS5tYXh6b29tJiYob1tyLmtleV09cik7fXRoaXMuX3JldGFpbkxvYWRlZENoaWxkcmVuKG8sbixhLGUpO2Zvcihjb25zdCBuIG9mIHQpe2xldCB0PXRoaXMuX3RpbGVzW24ua2V5XTtpZih0Lmhhc0RhdGEoKSljb250aW51ZTtpZihuLmNhbm9uaWNhbC56Pj10aGlzLl9zb3VyY2UubWF4em9vbSl7Y29uc3QgdD1uLmNoaWxkcmVuKHRoaXMuX3NvdXJjZS5tYXh6b29tKVswXSxyPXRoaXMuZ2V0VGlsZSh0KTtpZihyJiZyLmhhc0RhdGEoKSl7ZVt0LmtleV09dDtjb250aW51ZX19ZWxzZSB7Y29uc3QgdD1uLmNoaWxkcmVuKHRoaXMuX3NvdXJjZS5tYXh6b29tKTtpZihlW3RbMF0ua2V5XSYmZVt0WzFdLmtleV0mJmVbdFsyXS5rZXldJiZlW3RbM10ua2V5XSljb250aW51ZX1sZXQgaT10Lndhc1JlcXVlc3RlZCgpO2ZvcihsZXQgYT1uLm92ZXJzY2FsZWRaLTE7YT49czstLWEpe2NvbnN0IHM9bi5zY2FsZWRUbyhhKTtpZihyW3Mua2V5XSlicmVhaztpZihyW3Mua2V5XT0hMCx0PXRoaXMuZ2V0VGlsZShzKSwhdCYmaSYmKHQ9dGhpcy5fYWRkVGlsZShzKSksdCYmKGVbcy5rZXldPXMsaT10Lndhc1JlcXVlc3RlZCgpLHQuaGFzRGF0YSgpKSlicmVha319cmV0dXJuIGV9X3VwZGF0ZUxvYWRlZFBhcmVudFRpbGVDYWNoZSgpe3RoaXMuX2xvYWRlZFBhcmVudFRpbGVzPXt9O2Zvcihjb25zdCB0IGluIHRoaXMuX3RpbGVzKXtjb25zdCBlPVtdO2xldCByLG49dGhpcy5fdGlsZXNbdF0udGlsZUlEO2Zvcig7bi5vdmVyc2NhbGVkWj4wOyl7aWYobi5rZXkgaW4gdGhpcy5fbG9hZGVkUGFyZW50VGlsZXMpe3I9dGhpcy5fbG9hZGVkUGFyZW50VGlsZXNbbi5rZXldO2JyZWFrfWUucHVzaChuLmtleSk7Y29uc3QgdD1uLnNjYWxlZFRvKG4ub3ZlcnNjYWxlZFotMSk7aWYocj10aGlzLl9nZXRMb2FkZWRUaWxlKHQpLHIpYnJlYWs7bj10O31mb3IoY29uc3QgdCBvZiBlKXRoaXMuX2xvYWRlZFBhcmVudFRpbGVzW3RdPXI7fX1fYWRkVGlsZSh0KXtsZXQgZT10aGlzLl90aWxlc1t0LmtleV07aWYoZSlyZXR1cm4gZTtlPXRoaXMuX2NhY2hlLmdldEFuZFJlbW92ZSh0KSxlJiYodGhpcy5fc2V0VGlsZVJlbG9hZFRpbWVyKHQua2V5LGUpLGUudGlsZUlEPXQsdGhpcy5fc3RhdGUuaW5pdGlhbGl6ZVRpbGVTdGF0ZShlLHRoaXMubWFwP3RoaXMubWFwLnBhaW50ZXI6bnVsbCksdGhpcy5fY2FjaGVUaW1lcnNbdC5rZXldJiYoY2xlYXJUaW1lb3V0KHRoaXMuX2NhY2hlVGltZXJzW3Qua2V5XSksZGVsZXRlIHRoaXMuX2NhY2hlVGltZXJzW3Qua2V5XSx0aGlzLl9zZXRUaWxlUmVsb2FkVGltZXIodC5rZXksZSkpKTtjb25zdCByPUJvb2xlYW4oZSk7aWYoIXIpe2NvbnN0IHI9dGhpcy5tYXA/dGhpcy5tYXAucGFpbnRlcjpudWxsO2U9bmV3IFBmKHQsdGhpcy5fc291cmNlLnRpbGVTaXplKnQub3ZlcnNjYWxlRmFjdG9yKCksdGhpcy50cmFuc2Zvcm0udGlsZVpvb20scix0aGlzLl9pc1Jhc3RlciksdGhpcy5fbG9hZFRpbGUoZSx0aGlzLl90aWxlTG9hZGVkLmJpbmQodGhpcyxlLHQua2V5LGUuc3RhdGUpKTt9cmV0dXJuIGU/KGUudXNlcysrLHRoaXMuX3RpbGVzW3Qua2V5XT1lLHJ8fHRoaXMuX3NvdXJjZS5maXJlKG5ldyBZdChcImRhdGFsb2FkaW5nXCIse3RpbGU6ZSxjb29yZDplLnRpbGVJRCxkYXRhVHlwZTpcInNvdXJjZVwifSkpLGUpOm51bGx9X3NldFRpbGVSZWxvYWRUaW1lcih0LGUpe3QgaW4gdGhpcy5fdGltZXJzJiYoY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyc1t0XSksZGVsZXRlIHRoaXMuX3RpbWVyc1t0XSk7Y29uc3Qgcj1lLmdldEV4cGlyeVRpbWVvdXQoKTtyJiYodGhpcy5fdGltZXJzW3RdPXNldFRpbWVvdXQoKCgpPT57dGhpcy5fcmVsb2FkVGlsZSh0LFwiZXhwaXJlZFwiKSxkZWxldGUgdGhpcy5fdGltZXJzW3RdO30pLHIpKTt9X3JlbW92ZVRpbGUodCl7Y29uc3QgZT10aGlzLl90aWxlc1t0XTtlJiYoZS51c2VzLS0sZGVsZXRlIHRoaXMuX3RpbGVzW3RdLHRoaXMuX3RpbWVyc1t0XSYmKGNsZWFyVGltZW91dCh0aGlzLl90aW1lcnNbdF0pLGRlbGV0ZSB0aGlzLl90aW1lcnNbdF0pLGUudXNlcz4wfHwoZS5oYXNEYXRhKCkmJlwicmVsb2FkaW5nXCIhPT1lLnN0YXRlP3RoaXMuX2NhY2hlLmFkZChlLnRpbGVJRCxlLGUuZ2V0RXhwaXJ5VGltZW91dCgpKTooZS5hYm9ydGVkPSEwLHRoaXMuX2Fib3J0VGlsZShlKSx0aGlzLl91bmxvYWRUaWxlKGUpKSkpO31jbGVhclRpbGVzKCl7dGhpcy5fc2hvdWxkUmVsb2FkT25SZXN1bWU9ITEsdGhpcy5fcGF1c2VkPSExO2Zvcihjb25zdCB0IGluIHRoaXMuX3RpbGVzKXRoaXMuX3JlbW92ZVRpbGUoK3QpO3RoaXMuX3NvdXJjZS5fY2xlYXImJnRoaXMuX3NvdXJjZS5fY2xlYXIoKSx0aGlzLl9jYWNoZS5yZXNldCgpLHRoaXMubWFwJiZ0aGlzLnVzZWRGb3JUZXJyYWluJiZ0aGlzLm1hcC5wYWludGVyLnRlcnJhaW4mJnRoaXMubWFwLnBhaW50ZXIudGVycmFpbi5yZXNldFRpbGVMb29rdXBDYWNoZSh0aGlzLmlkKTt9dGlsZXNJbih0LGUscil7Y29uc3Qgbj1bXSxpPXRoaXMudHJhbnNmb3JtO2lmKCFpKXJldHVybiBuO2NvbnN0IHM9XCJnbG9iZVwiPT09aS5wcm9qZWN0aW9uLm5hbWUsYT1ObChpLmNlbnRlci5sbmcpO2Zvcihjb25zdCBvIGluIHRoaXMuX3RpbGVzKXtjb25zdCBsPXRoaXMuX3RpbGVzW29dO2lmKHImJmwuY2xlYXJRdWVyeURlYnVnVml6KCksbC5ob2xkaW5nRm9yRmFkZSgpKWNvbnRpbnVlO2xldCB1O2lmKHMpe2NvbnN0IHQ9bC50aWxlSUQuY2Fub25pY2FsO2lmKDA9PT10Lnope2NvbnN0IGU9W01hdGguYWJzKE0oYSwuLi5peSh0LC0xKSktYSksTWF0aC5hYnMoTShhLC4uLml5KHQsMSkpLWEpXTt1PVswLDIqZS5pbmRleE9mKE1hdGgubWluKC4uLmUpKS0xXTt9ZWxzZSB7Y29uc3QgZT1bTWF0aC5hYnMoTShhLC4uLml5KHQsLTEpKS1hKSxNYXRoLmFicyhNKGEsLi4uaXkodCwwKSktYSksTWF0aC5hYnMoTShhLC4uLml5KHQsMSkpLWEpXTt1PVtlLmluZGV4T2YoTWF0aC5taW4oLi4uZSkpLTFdO319ZWxzZSB1PVswXTtmb3IoY29uc3QgciBvZiB1KXtjb25zdCBzPXQuY29udGFpbnNUaWxlKGwsaSxlLHIpO3MmJm4ucHVzaChzKTt9fXJldHVybiBufWdldFZpc2libGVDb29yZGluYXRlcyh0KXtjb25zdCBlPXRoaXMuZ2V0UmVuZGVyYWJsZUlkcyh0KS5tYXAoKHQ9PnRoaXMuX3RpbGVzW3RdLnRpbGVJRCkpO2Zvcihjb25zdCB0IG9mIGUpdC5wcm9qTWF0cml4PXRoaXMudHJhbnNmb3JtLmNhbGN1bGF0ZVByb2pNYXRyaXgodC50b1Vud3JhcHBlZCgpKTtyZXR1cm4gZX1oYXNUcmFuc2l0aW9uKCl7aWYodGhpcy5fc291cmNlLmhhc1RyYW5zaXRpb24oKSlyZXR1cm4gITA7aWYobnkodGhpcy5fc291cmNlLnR5cGUpKWZvcihjb25zdCB0IGluIHRoaXMuX3RpbGVzKXtjb25zdCBlPXRoaXMuX3RpbGVzW3RdO2lmKHZvaWQgMCE9PWUuZmFkZUVuZFRpbWUmJmUuZmFkZUVuZFRpbWU+PVh0Lm5vdygpKXJldHVybiAhMH1yZXR1cm4gITF9c2V0RmVhdHVyZVN0YXRlKHQsZSxyKXt0aGlzLl9zdGF0ZS51cGRhdGVTdGF0ZSh0PXR8fFwiX2dlb2pzb25UaWxlTGF5ZXJcIixlLHIpO31yZW1vdmVGZWF0dXJlU3RhdGUodCxlLHIpe3RoaXMuX3N0YXRlLnJlbW92ZUZlYXR1cmVTdGF0ZSh0PXR8fFwiX2dlb2pzb25UaWxlTGF5ZXJcIixlLHIpO31nZXRGZWF0dXJlU3RhdGUodCxlKXtyZXR1cm4gdGhpcy5fc3RhdGUuZ2V0U3RhdGUodD10fHxcIl9nZW9qc29uVGlsZUxheWVyXCIsZSl9c2V0RGVwZW5kZW5jaWVzKHQsZSxyKXtjb25zdCBuPXRoaXMuX3RpbGVzW3RdO24mJm4uc2V0RGVwZW5kZW5jaWVzKGUscik7fXJlbG9hZFRpbGVzRm9yRGVwZW5kZW5jaWVzKHQsZSl7Zm9yKGNvbnN0IHIgaW4gdGhpcy5fdGlsZXMpdGhpcy5fdGlsZXNbcl0uaGFzRGVwZW5kZW5jeSh0LGUpJiZ0aGlzLl9yZWxvYWRUaWxlKCtyLFwicmVsb2FkaW5nXCIpO3RoaXMuX2NhY2hlLmZpbHRlcigocj0+IXIuaGFzRGVwZW5kZW5jeSh0LGUpKSk7fV9wcmVsb2FkVGlsZXModCxlKXtpZighdGhpcy5fc291cmNlTG9hZGVkKXtjb25zdCByPSgpPT57dGhpcy5fc291cmNlTG9hZGVkJiYodGhpcy5fc291cmNlLm9mZihcImRhdGFcIixyKSx0aGlzLl9wcmVsb2FkVGlsZXModCxlKSk7fTtyZXR1cm4gdm9pZCB0aGlzLl9zb3VyY2Uub24oXCJkYXRhXCIscil9Y29uc3Qgcj1uZXcgTWFwLG49QXJyYXkuaXNBcnJheSh0KT90Olt0XSxpPXRoaXMubWFwLnBhaW50ZXIudGVycmFpbixzPXRoaXMudXNlZEZvclRlcnJhaW4mJmk/aS5nZXRTY2FsZWREZW1UaWxlU2l6ZSgpOnRoaXMuX3NvdXJjZS50aWxlU2l6ZTtmb3IoY29uc3QgdCBvZiBuKXtjb25zdCBlPXQuY292ZXJpbmdUaWxlcyh7dGlsZVNpemU6cyxtaW56b29tOnRoaXMuX3NvdXJjZS5taW56b29tLG1heHpvb206dGhpcy5fc291cmNlLm1heHpvb20scm91bmRab29tOnRoaXMuX3NvdXJjZS5yb3VuZFpvb20mJiF0aGlzLnVzZWRGb3JUZXJyYWluLHJlcGFyc2VPdmVyc2NhbGVkOnRoaXMuX3NvdXJjZS5yZXBhcnNlT3ZlcnNjYWxlZCxpc1RlcnJhaW5ERU06dGhpcy51c2VkRm9yVGVycmFpbn0pO2Zvcihjb25zdCB0IG9mIGUpci5zZXQodC5rZXksdCk7dGhpcy51c2VkRm9yVGVycmFpbiYmdC51cGRhdGVFbGV2YXRpb24oITEpO31CKEFycmF5LmZyb20oci52YWx1ZXMoKSksKCh0LGUpPT57Y29uc3Qgcj1uZXcgUGYodCx0aGlzLl9zb3VyY2UudGlsZVNpemUqdC5vdmVyc2NhbGVGYWN0b3IoKSx0aGlzLnRyYW5zZm9ybS50aWxlWm9vbSx0aGlzLm1hcC5wYWludGVyLHRoaXMuX2lzUmFzdGVyKTt0aGlzLl9sb2FkVGlsZShyLCh0PT57XCJyYXN0ZXItZGVtXCI9PT10aGlzLl9zb3VyY2UudHlwZSYmci5kZW0mJnRoaXMuX2JhY2tmaWxsREVNKHIpLGUodCxyKTt9KSk7fSksZSk7fX1mdW5jdGlvbiByeSh0LGUpe2NvbnN0IHI9TWF0aC5hYnMoMip0LndyYXApLSsodC53cmFwPDApLG49TWF0aC5hYnMoMiplLndyYXApLSsoZS53cmFwPDApO3JldHVybiB0Lm92ZXJzY2FsZWRaLWUub3ZlcnNjYWxlZFp8fG4tcnx8ZS5jYW5vbmljYWwueS10LmNhbm9uaWNhbC55fHxlLmNhbm9uaWNhbC54LXQuY2Fub25pY2FsLnh9ZnVuY3Rpb24gbnkodCl7cmV0dXJuIFwicmFzdGVyXCI9PT10fHxcImltYWdlXCI9PT10fHxcInZpZGVvXCI9PT10fHxcImN1c3RvbVwiPT09dH1mdW5jdGlvbiBpeSh0LGUpe2NvbnN0IHI9MTw8dC56O3JldHVybiBbdC54L3IrZSwodC54KzEpL3IrZV19ZXkubWF4T3Zlcnpvb21pbmc9MTAsZXkubWF4VW5kZXJ6b29taW5nPTM7Y2xhc3Mgc3l7Y29uc3RydWN0b3IodCxlLHIpe3RoaXMuX2RlbVRpbGU9dCx0aGlzLl9kZW09dGhpcy5fZGVtVGlsZS5kZW0sdGhpcy5fc2NhbGU9ZSx0aGlzLl9vZmZzZXQ9cjt9c3RhdGljIGNyZWF0ZSh0LGUscil7Y29uc3Qgbj1yfHx0LmZpbmRERU1UaWxlRm9yKGUpO2lmKCFufHwhbi5kZW0pcmV0dXJuO2NvbnN0IGk9bi5kZW0scz1uLnRpbGVJRCxhPTE8PGUuY2Fub25pY2FsLnotcy5jYW5vbmljYWwuejtyZXR1cm4gbmV3IHN5KG4sbi50aWxlU2l6ZS9hby9hLFsoZS5jYW5vbmljYWwueC9hLXMuY2Fub25pY2FsLngpKmkuZGltLChlLmNhbm9uaWNhbC55L2Etcy5jYW5vbmljYWwueSkqaS5kaW1dKX10aWxlQ29vcmRUb1BpeGVsKHQsZSl7Y29uc3Qgcj1lKnRoaXMuX3NjYWxlK3RoaXMuX29mZnNldFsxXSxuPU1hdGguZmxvb3IodCp0aGlzLl9zY2FsZSt0aGlzLl9vZmZzZXRbMF0pLGk9TWF0aC5mbG9vcihyKTtyZXR1cm4gbmV3IHgobixpKX1nZXRFbGV2YXRpb25BdCh0LGUscixuKXtjb25zdCBpPXQqdGhpcy5fc2NhbGUrdGhpcy5fb2Zmc2V0WzBdLHM9ZSp0aGlzLl9zY2FsZSt0aGlzLl9vZmZzZXRbMV0sYT1NYXRoLmZsb29yKGkpLG89TWF0aC5mbG9vcihzKSxsPXRoaXMuX2RlbTtyZXR1cm4gbj0hIW4scj9FcihFcihsLmdldChhLG8sbiksbC5nZXQoYSxvKzEsbikscy1vKSxFcihsLmdldChhKzEsbyxuKSxsLmdldChhKzEsbysxLG4pLHMtbyksaS1hKTpsLmdldChhLG8sbil9Z2V0RWxldmF0aW9uQXRQaXhlbCh0LGUscil7cmV0dXJuIHRoaXMuX2RlbS5nZXQodCxlLCEhcil9Z2V0TWV0ZXJUb0RFTSh0KXtyZXR1cm4gKDE8PHRoaXMuX2RlbVRpbGUudGlsZUlELmNhbm9uaWNhbC56KSpabCgxLHQpKnRoaXMuX2RlbS5zdHJpZGV9fWNsYXNzIGF5e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy50aWxlSUQ9dCx0aGlzLng9dC5jYW5vbmljYWwueCx0aGlzLnk9dC5jYW5vbmljYWwueSx0aGlzLno9dC5jYW5vbmljYWwueix0aGlzLmdyaWQ9bmV3IEtpKGFvLDE2LDApLHRoaXMuZmVhdHVyZUluZGV4QXJyYXk9bmV3IGJhLHRoaXMucHJvbW90ZUlkPWU7fWluc2VydCh0LGUscixuLGkscz0wKXtjb25zdCBhPXRoaXMuZmVhdHVyZUluZGV4QXJyYXkubGVuZ3RoO3RoaXMuZmVhdHVyZUluZGV4QXJyYXkuZW1wbGFjZUJhY2socixuLGkscyk7Y29uc3Qgbz10aGlzLmdyaWQ7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IHI9ZVt0XSxuPVsxLzAsMS8wLC0xLzAsLTEvMF07Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kyspe2NvbnN0IGU9clt0XTtuWzBdPU1hdGgubWluKG5bMF0sZS54KSxuWzFdPU1hdGgubWluKG5bMV0sZS55KSxuWzJdPU1hdGgubWF4KG5bMl0sZS54KSxuWzNdPU1hdGgubWF4KG5bM10sZS55KTt9blswXTxhbyYmblsxXTxhbyYmblsyXT49MCYmblszXT49MCYmby5pbnNlcnQoYSxuWzBdLG5bMV0sblsyXSxuWzNdKTt9fWxvYWRWVExheWVycygpe2lmKCF0aGlzLnZ0TGF5ZXJzKXt0aGlzLnZ0TGF5ZXJzPW5ldyBaYyhuZXcgbXAodGhpcy5yYXdUaWxlRGF0YSkpLmxheWVycyx0aGlzLnNvdXJjZUxheWVyQ29kZXI9bmV3IHdmKHRoaXMudnRMYXllcnM/T2JqZWN0LmtleXModGhpcy52dExheWVycykuc29ydCgpOltcIl9nZW9qc29uVGlsZUxheWVyXCJdKSx0aGlzLnZ0RmVhdHVyZXM9e307Zm9yKGNvbnN0IHQgaW4gdGhpcy52dExheWVycyl0aGlzLnZ0RmVhdHVyZXNbdF09W107fXJldHVybiB0aGlzLnZ0TGF5ZXJzfXF1ZXJ5KHQsZSxyLG4pe3RoaXMubG9hZFZUTGF5ZXJzKCk7Y29uc3QgaT10LnBhcmFtc3x8e30scz1oaShpLmZpbHRlciksYT10LnRpbGVSZXN1bHQsbz10LnRyYW5zZm9ybSxsPWEuYnVmZmVyZWRUaWxlc3BhY2VCb3VuZHMsdT10aGlzLmdyaWQucXVlcnkobC5taW4ueCxsLm1pbi55LGwubWF4LngsbC5tYXgueSwoKHQsZSxyLG4pPT53dShhLmJ1ZmZlcmVkVGlsZXNwYWNlR2VvbWV0cnksdCxlLHIsbikpKTt1LnNvcnQobHkpO2xldCBjPW51bGw7by5lbGV2YXRpb24mJnUubGVuZ3RoPjAmJihjPXN5LmNyZWF0ZShvLmVsZXZhdGlvbix0aGlzLnRpbGVJRCkpO2NvbnN0IGg9e307bGV0IHA7Zm9yKGxldCBvPTA7bzx1Lmxlbmd0aDtvKyspe2NvbnN0IGw9dVtvXTtpZihsPT09cCljb250aW51ZTtwPWw7Y29uc3QgZD10aGlzLmZlYXR1cmVJbmRleEFycmF5LmdldChsKTtsZXQgZj1udWxsO3RoaXMubG9hZE1hdGNoaW5nRmVhdHVyZShoLGQscyxpLmxheWVycyxpLmF2YWlsYWJsZUltYWdlcyxlLHIsbiwoKGUscixuLGk9MCk9PihmfHwoZj1hdShlLHRoaXMudGlsZUlELmNhbm9uaWNhbCx0LnRpbGVUcmFuc2Zvcm0pKSxyLnF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmUoYSxlLG4sZix0aGlzLnosdC50cmFuc2Zvcm0sdC5waXhlbFBvc01hdHJpeCxjLGkpKSkpO31yZXR1cm4gaH1sb2FkTWF0Y2hpbmdGZWF0dXJlKHQsZSxyLG4saSxzLGEsbyxsKXtjb25zdHtmZWF0dXJlSW5kZXg6dSxidWNrZXRJbmRleDpjLHNvdXJjZUxheWVySW5kZXg6aCxsYXlvdXRWZXJ0ZXhBcnJheU9mZnNldDpwfT1lLGQ9dGhpcy5idWNrZXRMYXllcklEc1tjXTtpZihuJiYhZnVuY3Rpb24odCxlKXtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKylpZihlLmluZGV4T2YodFtyXSk+PTApcmV0dXJuICEwO3JldHVybiAhMX0obixkKSlyZXR1cm47Y29uc3QgZj10aGlzLnNvdXJjZUxheWVyQ29kZXIuZGVjb2RlKGgpLHk9dGhpcy52dExheWVyc1tmXS5mZWF0dXJlKHUpO2lmKHIubmVlZEdlb21ldHJ5KXtjb25zdCB0PW91KHksITApO2lmKCFyLmZpbHRlcihuZXcgd3ModGhpcy50aWxlSUQub3ZlcnNjYWxlZFopLHQsdGhpcy50aWxlSUQuY2Fub25pY2FsKSlyZXR1cm59ZWxzZSBpZighci5maWx0ZXIobmV3IHdzKHRoaXMudGlsZUlELm92ZXJzY2FsZWRaKSx5KSlyZXR1cm47Y29uc3QgbT10aGlzLmdldElkKHksZik7Zm9yKGxldCBlPTA7ZTxkLmxlbmd0aDtlKyspe2NvbnN0IHI9ZFtlXTtpZihuJiZuLmluZGV4T2Yocik8MCljb250aW51ZTtjb25zdCBjPXNbcl07aWYoIWMpY29udGludWU7bGV0IGg9e307dm9pZCAwIT09bSYmbyYmKGg9by5nZXRTdGF0ZShjLnNvdXJjZUxheWVyfHxcIl9nZW9qc29uVGlsZUxheWVyXCIsbSkpO2NvbnN0IGY9Qyh7fSxhW3JdKTtmLnBhaW50PW95KGYucGFpbnQsYy5wYWludCx5LGgsaSksZi5sYXlvdXQ9b3koZi5sYXlvdXQsYy5sYXlvdXQseSxoLGkpO2NvbnN0IGc9IWx8fGwoeSxjLGgscCk7aWYoIWcpY29udGludWU7Y29uc3QgeD1uZXcgQWYoeSx0aGlzLnosdGhpcy54LHRoaXMueSxtKTt4LmxheWVyPWY7bGV0IHY9dFtyXTt2b2lkIDA9PT12JiYodj10W3JdPVtdKSx2LnB1c2goe2ZlYXR1cmVJbmRleDp1LGZlYXR1cmU6eCxpbnRlcnNlY3Rpb25aOmd9KTt9fWxvb2t1cFN5bWJvbEZlYXR1cmVzKHQsZSxyLG4saSxzLGEsbyl7Y29uc3QgbD17fTt0aGlzLmxvYWRWVExheWVycygpO2NvbnN0IHU9aGkoaSk7Zm9yKGNvbnN0IGkgb2YgdCl0aGlzLmxvYWRNYXRjaGluZ0ZlYXR1cmUobCx7YnVja2V0SW5kZXg6cixzb3VyY2VMYXllckluZGV4Om4sZmVhdHVyZUluZGV4OmksbGF5b3V0VmVydGV4QXJyYXlPZmZzZXQ6MH0sdSxzLGEsbyxlKTtyZXR1cm4gbH1sb2FkRmVhdHVyZSh0KXtjb25zdHtmZWF0dXJlSW5kZXg6ZSxzb3VyY2VMYXllckluZGV4OnJ9PXQ7dGhpcy5sb2FkVlRMYXllcnMoKTtjb25zdCBuPXRoaXMuc291cmNlTGF5ZXJDb2Rlci5kZWNvZGUociksaT10aGlzLnZ0RmVhdHVyZXNbbl07aWYoaVtlXSlyZXR1cm4gaVtlXTtjb25zdCBzPXRoaXMudnRMYXllcnNbbl0uZmVhdHVyZShlKTtyZXR1cm4gaVtlXT1zLHN9aGFzTGF5ZXIodCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5idWNrZXRMYXllcklEcylmb3IoY29uc3QgciBvZiBlKWlmKHQ9PT1yKXJldHVybiAhMDtyZXR1cm4gITF9Z2V0SWQodCxlKXtsZXQgcj10LmlkO2lmKHRoaXMucHJvbW90ZUlkKXtjb25zdCBuPVwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnByb21vdGVJZD90aGlzLnByb21vdGVJZDp0aGlzLnByb21vdGVJZFtlXTtudWxsIT1uJiYocj10LnByb3BlcnRpZXNbbl0pLFwiYm9vbGVhblwiPT10eXBlb2YgciYmKHI9TnVtYmVyKHIpKTt9cmV0dXJuIHJ9fWZ1bmN0aW9uIG95KHQsZSxyLG4saSl7cmV0dXJuICQodCwoKHQscyk9Pntjb25zdCBhPWUgaW5zdGFuY2VvZiB6cz9lLmdldChzKTpudWxsO3JldHVybiBhJiZhLmV2YWx1YXRlP2EuZXZhbHVhdGUocixuLGkpOmF9KSl9ZnVuY3Rpb24gbHkodCxlKXtyZXR1cm4gZS10fUppKGF5LFwiRmVhdHVyZUluZGV4XCIse29taXQ6W1wicmF3VGlsZURhdGFcIixcInNvdXJjZUxheWVyQ29kZXJcIl19KTtjbGFzcyB1eXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMubmV4dFJvdz0wLHRoaXMuaW1hZ2U9bmV3IFJ1KHt3aWR0aDp0LGhlaWdodDplfSksdGhpcy5wb3NpdGlvbnM9e30sdGhpcy51cGxvYWRlZD0hMTt9Z2V0RGFzaCh0LGUpe2NvbnN0IHI9dGhpcy5nZXRLZXkodCxlKTtyZXR1cm4gdGhpcy5wb3NpdGlvbnNbcl19dHJpbSgpe2NvbnN0IHQ9dGhpcy53aWR0aCxlPXRoaXMuaGVpZ2h0PUwodGhpcy5uZXh0Um93KTt0aGlzLmltYWdlLnJlc2l6ZSh7d2lkdGg6dCxoZWlnaHQ6ZX0pO31nZXRLZXkodCxlKXtyZXR1cm4gdC5qb2luKFwiLFwiKStlfWdldERhc2hSYW5nZXModCxlLHIpe2NvbnN0IG49W107bGV0IGk9dC5sZW5ndGglMj09MT8tdFt0Lmxlbmd0aC0xXSpyOjAscz10WzBdKnIsYT0hMDtuLnB1c2goe2xlZnQ6aSxyaWdodDpzLGlzRGFzaDphLHplcm9MZW5ndGg6MD09PXRbMF19KTtsZXQgbz10WzBdO2ZvcihsZXQgZT0xO2U8dC5sZW5ndGg7ZSsrKXthPSFhO2NvbnN0IGw9dFtlXTtpPW8qcixvKz1sLHM9bypyLG4ucHVzaCh7bGVmdDppLHJpZ2h0OnMsaXNEYXNoOmEsemVyb0xlbmd0aDowPT09bH0pO31yZXR1cm4gbn1hZGRSb3VuZERhc2godCxlLHIpe2NvbnN0IG49ZS8yO2ZvcihsZXQgZT0tcjtlPD1yO2UrKyl7Y29uc3QgaT10aGlzLndpZHRoKih0aGlzLm5leHRSb3crcitlKTtsZXQgcz0wLGE9dFtzXTtmb3IobGV0IG89MDtvPHRoaXMud2lkdGg7bysrKXtvL2EucmlnaHQ+MSYmKGE9dFsrK3NdKTtjb25zdCBsPU1hdGguYWJzKG8tYS5sZWZ0KSx1PU1hdGguYWJzKG8tYS5yaWdodCksYz1NYXRoLm1pbihsLHUpO2xldCBoO2NvbnN0IHA9ZS9yKihuKzEpO2lmKGEuaXNEYXNoKXtjb25zdCB0PW4tTWF0aC5hYnMocCk7aD1NYXRoLnNxcnQoYypjK3QqdCk7fWVsc2UgaD1uLU1hdGguc3FydChjKmMrcCpwKTt0aGlzLmltYWdlLmRhdGFbaStvXT1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxoKzEyOCkpO319fWFkZFJlZ3VsYXJEYXNoKHQsZSl7Zm9yKGxldCBlPXQubGVuZ3RoLTE7ZT49MDstLWUpe2NvbnN0IHI9dFtlXSxuPXRbZSsxXTtyLnplcm9MZW5ndGg/dC5zcGxpY2UoZSwxKTpuJiZuLmlzRGFzaD09PXIuaXNEYXNoJiYobi5sZWZ0PXIubGVmdCx0LnNwbGljZShlLDEpKTt9Y29uc3Qgcj10WzBdLG49dFt0Lmxlbmd0aC0xXTtyLmlzRGFzaD09PW4uaXNEYXNoJiYoci5sZWZ0PW4ubGVmdC10aGlzLndpZHRoLG4ucmlnaHQ9ci5yaWdodCt0aGlzLndpZHRoKTtjb25zdCBpPXRoaXMud2lkdGgqdGhpcy5uZXh0Um93O2xldCBzPTAsYT10W3NdO2ZvcihsZXQgcj0wO3I8dGhpcy53aWR0aDtyKyspe3IvYS5yaWdodD4xJiYoYT10Wysrc10pO2NvbnN0IG49TWF0aC5hYnMoci1hLmxlZnQpLG89TWF0aC5hYnMoci1hLnJpZ2h0KSxsPU1hdGgubWluKG4sbyk7dGhpcy5pbWFnZS5kYXRhW2krcl09TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsKGEuaXNEYXNoP2w6LWwpK2UrMTI4KSk7fX1hZGREYXNoKHQsZSl7Y29uc3Qgcj10aGlzLmdldEtleSh0LGUpO2lmKHRoaXMucG9zaXRpb25zW3JdKXJldHVybiB0aGlzLnBvc2l0aW9uc1tyXTtjb25zdCBuPVwicm91bmRcIj09PWUsaT1uPzc6MCxzPTIqaSsxO2lmKHRoaXMubmV4dFJvdytzPnRoaXMuaGVpZ2h0KXJldHVybiBOKFwiTGluZUF0bGFzIG91dCBvZiBzcGFjZVwiKSxudWxsOzA9PT10Lmxlbmd0aCYmdC5wdXNoKDEpO2xldCBhPTA7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXTwwJiYoTihcIk5lZ2F0aXZlIHZhbHVlIGlzIGZvdW5kIGluIGxpbmUgZGFzaGFycmF5LCByZXBsYWNpbmcgdmFsdWVzIHdpdGggMFwiKSx0W2VdPTApLGErPXRbZV07aWYoMCE9PWEpe2NvbnN0IHI9dGhpcy53aWR0aC9hLHM9dGhpcy5nZXREYXNoUmFuZ2VzKHQsdGhpcy53aWR0aCxyKTtuP3RoaXMuYWRkUm91bmREYXNoKHMscixpKTp0aGlzLmFkZFJlZ3VsYXJEYXNoKHMsXCJzcXVhcmVcIj09PWU/LjUqcjowKTt9Y29uc3Qgbz10aGlzLm5leHRSb3craTt0aGlzLm5leHRSb3crPXM7Y29uc3QgbD17dGw6W28saV0sYnI6W2EsMF19O3JldHVybiB0aGlzLnBvc2l0aW9uc1tyXT1sLGx9fUppKHV5LFwiTGluZUF0bGFzXCIpO2NvbnN0IGN5PTEqdGQ7Y2xhc3MgaHl7Y29uc3RydWN0b3IodCl7Y29uc3QgZT17fSxyPVtdO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IGk9dFtuXSxzPWVbbl09e307Zm9yKGNvbnN0IHQgaW4gaS5nbHlwaHMpe2NvbnN0IGU9aS5nbHlwaHNbK3RdO2lmKCFlfHwwPT09ZS5iaXRtYXAud2lkdGh8fDA9PT1lLmJpdG1hcC5oZWlnaHQpY29udGludWU7Y29uc3Qgbj1lLm1ldHJpY3MubG9jYWxHbHlwaD9jeToxLGE9e3g6MCx5OjAsdzplLmJpdG1hcC53aWR0aCsyKm4saDplLmJpdG1hcC5oZWlnaHQrMipufTtyLnB1c2goYSksc1t0XT1hO319Y29uc3R7dzpuLGg6aX09X3Aocikscz1uZXcgUnUoe3dpZHRoOm58fDEsaGVpZ2h0Oml8fDF9KTtmb3IoY29uc3QgciBpbiB0KXtjb25zdCBuPXRbcl07Zm9yKGNvbnN0IHQgaW4gbi5nbHlwaHMpe2NvbnN0IGk9bi5nbHlwaHNbK3RdO2lmKCFpfHwwPT09aS5iaXRtYXAud2lkdGh8fDA9PT1pLmJpdG1hcC5oZWlnaHQpY29udGludWU7Y29uc3QgYT1lW3JdW3RdLG89aS5tZXRyaWNzLmxvY2FsR2x5cGg/Y3k6MTtSdS5jb3B5KGkuYml0bWFwLHMse3g6MCx5OjB9LHt4OmEueCtvLHk6YS55K299LGkuYml0bWFwKTt9fXRoaXMuaW1hZ2U9cyx0aGlzLnBvc2l0aW9ucz1lO319SmkoaHksXCJHbHlwaEF0bGFzXCIpO2NsYXNzIHB5e2NvbnN0cnVjdG9yKHQpe3RoaXMudGlsZUlEPW5ldyBmaCh0LnRpbGVJRC5vdmVyc2NhbGVkWix0LnRpbGVJRC53cmFwLHQudGlsZUlELmNhbm9uaWNhbC56LHQudGlsZUlELmNhbm9uaWNhbC54LHQudGlsZUlELmNhbm9uaWNhbC55KSx0aGlzLnRpbGVab29tPXQudGlsZVpvb20sdGhpcy51aWQ9dC51aWQsdGhpcy56b29tPXQuem9vbSx0aGlzLmNhbm9uaWNhbD10LnRpbGVJRC5jYW5vbmljYWwsdGhpcy5waXhlbFJhdGlvPXQucGl4ZWxSYXRpbyx0aGlzLnRpbGVTaXplPXQudGlsZVNpemUsdGhpcy5zb3VyY2U9dC5zb3VyY2UsdGhpcy5vdmVyc2NhbGluZz10aGlzLnRpbGVJRC5vdmVyc2NhbGVGYWN0b3IoKSx0aGlzLnNob3dDb2xsaXNpb25Cb3hlcz10LnNob3dDb2xsaXNpb25Cb3hlcyx0aGlzLmNvbGxlY3RSZXNvdXJjZVRpbWluZz0hIXQuY29sbGVjdFJlc291cmNlVGltaW5nLHRoaXMucmV0dXJuRGVwZW5kZW5jaWVzPSEhdC5yZXR1cm5EZXBlbmRlbmNpZXMsdGhpcy5wcm9tb3RlSWQ9dC5wcm9tb3RlSWQsdGhpcy5lbmFibGVUZXJyYWluPSEhdC5lbmFibGVUZXJyYWluLHRoaXMuaXNTeW1ib2xUaWxlPXQuaXNTeW1ib2xUaWxlLHRoaXMudGlsZVRyYW5zZm9ybT1CZCh0LnRpbGVJRC5jYW5vbmljYWwsdC5wcm9qZWN0aW9uKSx0aGlzLnByb2plY3Rpb249dC5wcm9qZWN0aW9uO31wYXJzZSh0LGUscixuLGkpe3RoaXMuc3RhdHVzPVwicGFyc2luZ1wiLHRoaXMuZGF0YT10LHRoaXMuY29sbGlzaW9uQm94QXJyYXk9bmV3IHBhO2NvbnN0IHM9bmV3IHdmKE9iamVjdC5rZXlzKHQubGF5ZXJzKS5zb3J0KCkpLGE9bmV3IGF5KHRoaXMudGlsZUlELHRoaXMucHJvbW90ZUlkKTthLmJ1Y2tldExheWVySURzPVtdO2NvbnN0IG89e30sbD1uZXcgdXkoMjU2LDI1NiksdT17ZmVhdHVyZUluZGV4OmEsaWNvbkRlcGVuZGVuY2llczp7fSxwYXR0ZXJuRGVwZW5kZW5jaWVzOnt9LGdseXBoRGVwZW5kZW5jaWVzOnt9LGxpbmVBdGxhczpsLGF2YWlsYWJsZUltYWdlczpyfSxjPWUuZmFtaWxpZXNCeVNvdXJjZVt0aGlzLnNvdXJjZV07Zm9yKGNvbnN0IGUgaW4gYyl7Y29uc3Qgbj10LmxheWVyc1tlXTtpZighbiljb250aW51ZTtsZXQgaT0hMSxsPSExO2Zvcihjb25zdCB0IG9mIGNbZV0pXCJzeW1ib2xcIj09PXRbMF0udHlwZT9pPSEwOmw9ITA7aWYoITA9PT10aGlzLmlzU3ltYm9sVGlsZSYmIWkpY29udGludWU7aWYoITE9PT10aGlzLmlzU3ltYm9sVGlsZSYmIWwpY29udGludWU7MT09PW4udmVyc2lvbiYmTihgVmVjdG9yIHRpbGUgc291cmNlIFwiJHt0aGlzLnNvdXJjZX1cIiBsYXllciBcIiR7ZX1cIiBkb2VzIG5vdCB1c2UgdmVjdG9yIHRpbGUgc3BlYyB2MiBhbmQgdGhlcmVmb3JlIG1heSBoYXZlIHNvbWUgcmVuZGVyaW5nIGVycm9ycy5gKTtjb25zdCBoPXMuZW5jb2RlKGUpLHA9W107Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2NvbnN0IHI9bi5mZWF0dXJlKHQpLGk9YS5nZXRJZChyLGUpO3AucHVzaCh7ZmVhdHVyZTpyLGlkOmksaW5kZXg6dCxzb3VyY2VMYXllckluZGV4Omh9KTt9Zm9yKGNvbnN0IHQgb2YgY1tlXSl7Y29uc3QgZT10WzBdO3ZvaWQgMCE9PXRoaXMuaXNTeW1ib2xUaWxlJiZcInN5bWJvbFwiPT09ZS50eXBlIT09dGhpcy5pc1N5bWJvbFRpbGV8fGUubWluem9vbSYmdGhpcy56b29tPE1hdGguZmxvb3IoZS5taW56b29tKXx8ZS5tYXh6b29tJiZ0aGlzLnpvb20+PWUubWF4em9vbXx8XCJub25lXCIhPT1lLnZpc2liaWxpdHkmJihkeSh0LHRoaXMuem9vbSxyKSwob1tlLmlkXT1lLmNyZWF0ZUJ1Y2tldCh7aW5kZXg6YS5idWNrZXRMYXllcklEcy5sZW5ndGgsbGF5ZXJzOnQsem9vbTp0aGlzLnpvb20sY2Fub25pY2FsOnRoaXMuY2Fub25pY2FsLHBpeGVsUmF0aW86dGhpcy5waXhlbFJhdGlvLG92ZXJzY2FsaW5nOnRoaXMub3ZlcnNjYWxpbmcsY29sbGlzaW9uQm94QXJyYXk6dGhpcy5jb2xsaXNpb25Cb3hBcnJheSxzb3VyY2VMYXllckluZGV4Omgsc291cmNlSUQ6dGhpcy5zb3VyY2UsZW5hYmxlVGVycmFpbjp0aGlzLmVuYWJsZVRlcnJhaW4scHJvamVjdGlvbjp0aGlzLnByb2plY3Rpb24uc3BlYyxhdmFpbGFibGVJbWFnZXM6cn0pKS5wb3B1bGF0ZShwLHUsdGhpcy50aWxlSUQuY2Fub25pY2FsLHRoaXMudGlsZVRyYW5zZm9ybSksYS5idWNrZXRMYXllcklEcy5wdXNoKHQubWFwKCh0PT50LmlkKSkpKTt9fWxldCBoLHAsZCxmO2wudHJpbSgpO2NvbnN0IHk9e3R5cGU6XCJtYXliZVByZXBhcmVcIixpc1N5bWJvbFRpbGU6dGhpcy5pc1N5bWJvbFRpbGUsem9vbTp0aGlzLnpvb219LG09KCk9PntpZihoKXJldHVybiBpKGgpO2lmKHAmJmQmJmYpe2NvbnN0IHQ9bmV3IGh5KHApLGU9bmV3IGtwKGQsZik7Zm9yKGNvbnN0IG4gaW4gbyl7Y29uc3QgaT1vW25dO2kgaW5zdGFuY2VvZiBvZj8oZHkoaS5sYXllcnMsdGhpcy56b29tLHIpLHZkKGkscCx0LnBvc2l0aW9ucyxkLGUuaWNvblBvc2l0aW9ucyx0aGlzLnNob3dDb2xsaXNpb25Cb3hlcyxyLHRoaXMudGlsZUlELmNhbm9uaWNhbCx0aGlzLnRpbGVab29tLHRoaXMucHJvamVjdGlvbikpOmkuaGFzUGF0dGVybiYmKGkgaW5zdGFuY2VvZiBJaHx8aSBpbnN0YW5jZW9mIE1jfHxpIGluc3RhbmNlb2YgdGgpJiYoZHkoaS5sYXllcnMsdGhpcy56b29tLHIpLGkuYWRkRmVhdHVyZXModSx0aGlzLnRpbGVJRC5jYW5vbmljYWwsZS5wYXR0ZXJuUG9zaXRpb25zLHIsdGhpcy50aWxlVHJhbnNmb3JtKSk7fXRoaXMuc3RhdHVzPVwiZG9uZVwiLGkobnVsbCx7YnVja2V0czpFKG8pLmZpbHRlcigodD0+IXQuaXNFbXB0eSgpKSksZmVhdHVyZUluZGV4OmEsY29sbGlzaW9uQm94QXJyYXk6dGhpcy5jb2xsaXNpb25Cb3hBcnJheSxnbHlwaEF0bGFzSW1hZ2U6dC5pbWFnZSxsaW5lQXRsYXM6bCxpbWFnZUF0bGFzOmUsZ2x5cGhNYXA6dGhpcy5yZXR1cm5EZXBlbmRlbmNpZXM/cDpudWxsLGljb25NYXA6dGhpcy5yZXR1cm5EZXBlbmRlbmNpZXM/ZDpudWxsLGdseXBoUG9zaXRpb25zOnRoaXMucmV0dXJuRGVwZW5kZW5jaWVzP3QucG9zaXRpb25zOm51bGx9KTt9fSxnPSQodS5nbHlwaERlcGVuZGVuY2llcywodD0+T2JqZWN0LmtleXModCkubWFwKE51bWJlcikpKTtPYmplY3Qua2V5cyhnKS5sZW5ndGg/bi5zZW5kKFwiZ2V0R2x5cGhzXCIse3VpZDp0aGlzLnVpZCxzdGFja3M6Z30sKCh0LGUpPT57aHx8KGg9dCxwPWUsbSgpKTt9KSx2b2lkIDAsITEseSk6cD17fTtjb25zdCB4PU9iamVjdC5rZXlzKHUuaWNvbkRlcGVuZGVuY2llcyk7eC5sZW5ndGg/bi5zZW5kKFwiZ2V0SW1hZ2VzXCIse2ljb25zOngsc291cmNlOnRoaXMuc291cmNlLHRpbGVJRDp0aGlzLnRpbGVJRCx0eXBlOlwiaWNvbnNcIn0sKCh0LGUpPT57aHx8KGg9dCxkPWUsbSgpKTt9KSx2b2lkIDAsITEseSk6ZD17fTtjb25zdCB2PU9iamVjdC5rZXlzKHUucGF0dGVybkRlcGVuZGVuY2llcyk7di5sZW5ndGg/bi5zZW5kKFwiZ2V0SW1hZ2VzXCIse2ljb25zOnYsc291cmNlOnRoaXMuc291cmNlLHRpbGVJRDp0aGlzLnRpbGVJRCx0eXBlOlwicGF0dGVybnNcIn0sKCh0LGUpPT57aHx8KGg9dCxmPWUsbSgpKTt9KSx2b2lkIDAsITEseSk6Zj17fSxtKCk7fX1mdW5jdGlvbiBkeSh0LGUscil7Y29uc3Qgbj1uZXcgd3MoZSk7Zm9yKGNvbnN0IGUgb2YgdCllLnJlY2FsY3VsYXRlKG4scik7fWNsYXNzIGZ5e2NvbnN0cnVjdG9yKHQpe3RoaXMuZW50cmllcz17fSx0aGlzLnNjaGVkdWxlcj10O31yZXF1ZXN0KHQsZSxyLG4pe2NvbnN0IGk9dGhpcy5lbnRyaWVzW3RdPXRoaXMuZW50cmllc1t0XXx8e2NhbGxiYWNrczpbXX07aWYoaS5yZXN1bHQpe2NvbnN0W3Qscl09aS5yZXN1bHQ7cmV0dXJuIHRoaXMuc2NoZWR1bGVyP3RoaXMuc2NoZWR1bGVyLmFkZCgoKCk9PntuKHQscik7fSksZSk6bih0LHIpLCgpPT57fX1yZXR1cm4gaS5jYWxsYmFja3MucHVzaChuKSxpLmNhbmNlbHx8KGkuY2FuY2VsPXIoKChyLG4pPT57aS5yZXN1bHQ9W3Isbl07Zm9yKGNvbnN0IHQgb2YgaS5jYWxsYmFja3MpdGhpcy5zY2hlZHVsZXI/dGhpcy5zY2hlZHVsZXIuYWRkKCgoKT0+e3QocixuKTt9KSxlKTp0KHIsbik7c2V0VGltZW91dCgoKCk9PmRlbGV0ZSB0aGlzLmVudHJpZXNbdF0pLDNlMyk7fSkpKSwoKT0+e2kucmVzdWx0fHwoaS5jYWxsYmFja3M9aS5jYWxsYmFja3MuZmlsdGVyKCh0PT50IT09bikpLGkuY2FsbGJhY2tzLmxlbmd0aHx8KGkuY2FuY2VsKCksZGVsZXRlIHRoaXMuZW50cmllc1t0XSkpO319fWZ1bmN0aW9uIHl5KHQsZSxyKXtjb25zdCBuPUpTT04uc3RyaW5naWZ5KHQucmVxdWVzdCk7cmV0dXJuIHQuZGF0YSYmKHRoaXMuZGVkdXBlZC5lbnRyaWVzW25dPXtyZXN1bHQ6W251bGwsdC5kYXRhXX0pLHRoaXMuZGVkdXBlZC5yZXF1ZXN0KG4se3R5cGU6XCJwYXJzZVRpbGVcIixpc1N5bWJvbFRpbGU6dC5pc1N5bWJvbFRpbGUsem9vbTp0LnRpbGVab29tfSwoZT0+e2NvbnN0IG49cHQodC5yZXF1ZXN0LCgodCxuLGkscyk9Pnt0P2UodCk6biYmZShudWxsLHt2ZWN0b3JUaWxlOnI/dm9pZCAwOm5ldyBaYyhuZXcgbXAobikpLHJhd0RhdGE6bixjYWNoZUNvbnRyb2w6aSxleHBpcmVzOnN9KTt9KSk7cmV0dXJuICgpPT57bi5jYW5jZWwoKSxlKCk7fX0pLGUpfWNvbnN0IG15PVtJbnQ4QXJyYXksVWludDhBcnJheSxVaW50OENsYW1wZWRBcnJheSxJbnQxNkFycmF5LFVpbnQxNkFycmF5LEludDMyQXJyYXksVWludDMyQXJyYXksRmxvYXQzMkFycmF5LEZsb2F0NjRBcnJheV07Y2xhc3MgZ3l7c3RhdGljIGZyb20odCl7aWYoISh0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXRocm93IG5ldyBFcnJvcihcIkRhdGEgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBBcnJheUJ1ZmZlci5cIik7Y29uc3RbZSxyXT1uZXcgVWludDhBcnJheSh0LDAsMik7aWYoMjE5IT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJEYXRhIGRvZXMgbm90IGFwcGVhciB0byBiZSBpbiBhIEtEQnVzaCBmb3JtYXQuXCIpO2NvbnN0IG49cj4+NDtpZigxIT09bil0aHJvdyBuZXcgRXJyb3IoYEdvdCB2JHtufSBkYXRhIHdoZW4gZXhwZWN0ZWQgdjEuYCk7Y29uc3QgaT1teVsxNSZyXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgYXJyYXkgdHlwZS5cIik7Y29uc3Rbc109bmV3IFVpbnQxNkFycmF5KHQsMiwxKSxbYV09bmV3IFVpbnQzMkFycmF5KHQsNCwxKTtyZXR1cm4gbmV3IGd5KGEscyxpLHQpfWNvbnN0cnVjdG9yKHQsZT02NCxyPUZsb2F0NjRBcnJheSxuKXtpZihpc05hTih0KXx8dDwwKXRocm93IG5ldyBFcnJvcihgVW5wZXhwZWN0ZWQgbnVtSXRlbXMgdmFsdWU6ICR7dH0uYCk7dGhpcy5udW1JdGVtcz0rdCx0aGlzLm5vZGVTaXplPU1hdGgubWluKE1hdGgubWF4KCtlLDIpLDY1NTM1KSx0aGlzLkFycmF5VHlwZT1yLHRoaXMuSW5kZXhBcnJheVR5cGU9dDw2NTUzNj9VaW50MTZBcnJheTpVaW50MzJBcnJheTtjb25zdCBpPW15LmluZGV4T2YodGhpcy5BcnJheVR5cGUpLHM9Mip0KnRoaXMuQXJyYXlUeXBlLkJZVEVTX1BFUl9FTEVNRU5ULGE9dCp0aGlzLkluZGV4QXJyYXlUeXBlLkJZVEVTX1BFUl9FTEVNRU5ULG89KDgtYSU4KSU4O2lmKGk8MCl0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdHlwZWQgYXJyYXkgY2xhc3M6ICR7cn0uYCk7biYmbiBpbnN0YW5jZW9mIEFycmF5QnVmZmVyPyh0aGlzLmRhdGE9bix0aGlzLmlkcz1uZXcgdGhpcy5JbmRleEFycmF5VHlwZSh0aGlzLmRhdGEsOCx0KSx0aGlzLmNvb3Jkcz1uZXcgdGhpcy5BcnJheVR5cGUodGhpcy5kYXRhLDgrYStvLDIqdCksdGhpcy5fcG9zPTIqdCx0aGlzLl9maW5pc2hlZD0hMCk6KHRoaXMuZGF0YT1uZXcgQXJyYXlCdWZmZXIoOCtzK2ErbyksdGhpcy5pZHM9bmV3IHRoaXMuSW5kZXhBcnJheVR5cGUodGhpcy5kYXRhLDgsdCksdGhpcy5jb29yZHM9bmV3IHRoaXMuQXJyYXlUeXBlKHRoaXMuZGF0YSw4K2ErbywyKnQpLHRoaXMuX3Bvcz0wLHRoaXMuX2ZpbmlzaGVkPSExLG5ldyBVaW50OEFycmF5KHRoaXMuZGF0YSwwLDIpLnNldChbMjE5LDE2K2ldKSxuZXcgVWludDE2QXJyYXkodGhpcy5kYXRhLDIsMSlbMF09ZSxuZXcgVWludDMyQXJyYXkodGhpcy5kYXRhLDQsMSlbMF09dCk7fWFkZCh0LGUpe2NvbnN0IHI9dGhpcy5fcG9zPj4xO3JldHVybiB0aGlzLmlkc1tyXT1yLHRoaXMuY29vcmRzW3RoaXMuX3BvcysrXT10LHRoaXMuY29vcmRzW3RoaXMuX3BvcysrXT1lLHJ9ZmluaXNoKCl7Y29uc3QgdD10aGlzLl9wb3M+PjE7aWYodCE9PXRoaXMubnVtSXRlbXMpdGhyb3cgbmV3IEVycm9yKGBBZGRlZCAke3R9IGl0ZW1zIHdoZW4gZXhwZWN0ZWQgJHt0aGlzLm51bUl0ZW1zfS5gKTtyZXR1cm4geHkodGhpcy5pZHMsdGhpcy5jb29yZHMsdGhpcy5ub2RlU2l6ZSwwLHRoaXMubnVtSXRlbXMtMSwwKSx0aGlzLl9maW5pc2hlZD0hMCx0aGlzfXJhbmdlKHQsZSxyLG4pe2lmKCF0aGlzLl9maW5pc2hlZCl0aHJvdyBuZXcgRXJyb3IoXCJEYXRhIG5vdCB5ZXQgaW5kZXhlZCAtIGNhbGwgaW5kZXguZmluaXNoKCkuXCIpO2NvbnN0e2lkczppLGNvb3JkczpzLG5vZGVTaXplOmF9PXRoaXMsbz1bMCxpLmxlbmd0aC0xLDBdLGw9W107Zm9yKDtvLmxlbmd0aDspe2NvbnN0IHU9by5wb3AoKXx8MCxjPW8ucG9wKCl8fDAsaD1vLnBvcCgpfHwwO2lmKGMtaDw9YSl7Zm9yKGxldCBhPWg7YTw9YzthKyspe2NvbnN0IG89c1syKmFdLHU9c1syKmErMV07bz49dCYmbzw9ciYmdT49ZSYmdTw9biYmbC5wdXNoKGlbYV0pO31jb250aW51ZX1jb25zdCBwPWgrYz4+MSxkPXNbMipwXSxmPXNbMipwKzFdO2Q+PXQmJmQ8PXImJmY+PWUmJmY8PW4mJmwucHVzaChpW3BdKSwoMD09PXU/dDw9ZDplPD1mKSYmKG8ucHVzaChoKSxvLnB1c2gocC0xKSxvLnB1c2goMS11KSksKDA9PT11P3I+PWQ6bj49ZikmJihvLnB1c2gocCsxKSxvLnB1c2goYyksby5wdXNoKDEtdSkpO31yZXR1cm4gbH13aXRoaW4odCxlLHIpe2lmKCF0aGlzLl9maW5pc2hlZCl0aHJvdyBuZXcgRXJyb3IoXCJEYXRhIG5vdCB5ZXQgaW5kZXhlZCAtIGNhbGwgaW5kZXguZmluaXNoKCkuXCIpO2NvbnN0e2lkczpuLGNvb3JkczppLG5vZGVTaXplOnN9PXRoaXMsYT1bMCxuLmxlbmd0aC0xLDBdLG89W10sbD1yKnI7Zm9yKDthLmxlbmd0aDspe2NvbnN0IHU9YS5wb3AoKXx8MCxjPWEucG9wKCl8fDAsaD1hLnBvcCgpfHwwO2lmKGMtaDw9cyl7Zm9yKGxldCByPWg7cjw9YztyKyspX3koaVsyKnJdLGlbMipyKzFdLHQsZSk8PWwmJm8ucHVzaChuW3JdKTtjb250aW51ZX1jb25zdCBwPWgrYz4+MSxkPWlbMipwXSxmPWlbMipwKzFdO195KGQsZix0LGUpPD1sJiZvLnB1c2gobltwXSksKDA9PT11P3Qtcjw9ZDplLXI8PWYpJiYoYS5wdXNoKGgpLGEucHVzaChwLTEpLGEucHVzaCgxLXUpKSwoMD09PXU/dCtyPj1kOmUrcj49ZikmJihhLnB1c2gocCsxKSxhLnB1c2goYyksYS5wdXNoKDEtdSkpO31yZXR1cm4gb319ZnVuY3Rpb24geHkodCxlLHIsbixpLHMpe2lmKGktbjw9cilyZXR1cm47Y29uc3QgYT1uK2k+PjE7dnkodCxlLGEsbixpLHMpLHh5KHQsZSxyLG4sYS0xLDEtcykseHkodCxlLHIsYSsxLGksMS1zKTt9ZnVuY3Rpb24gdnkodCxlLHIsbixpLHMpe2Zvcig7aT5uOyl7aWYoaS1uPjYwMCl7Y29uc3QgYT1pLW4rMSxvPXItbisxLGw9TWF0aC5sb2coYSksdT0uNSpNYXRoLmV4cCgyKmwvMyksYz0uNSpNYXRoLnNxcnQobCp1KihhLXUpL2EpKihvLWEvMjwwPy0xOjEpO3Z5KHQsZSxyLE1hdGgubWF4KG4sTWF0aC5mbG9vcihyLW8qdS9hK2MpKSxNYXRoLm1pbihpLE1hdGguZmxvb3IocisoYS1vKSp1L2ErYykpLHMpO31jb25zdCBhPWVbMipyK3NdO2xldCBvPW4sbD1pO2ZvcihieSh0LGUsbixyKSxlWzIqaStzXT5hJiZieSh0LGUsbixpKTtvPGw7KXtmb3IoYnkodCxlLG8sbCksbysrLGwtLTtlWzIqbytzXTxhOylvKys7Zm9yKDtlWzIqbCtzXT5hOylsLS07fWVbMipuK3NdPT09YT9ieSh0LGUsbixsKToobCsrLGJ5KHQsZSxsLGkpKSxsPD1yJiYobj1sKzEpLHI8PWwmJihpPWwtMSk7fX1mdW5jdGlvbiBieSh0LGUscixuKXt3eSh0LHIsbiksd3koZSwyKnIsMipuKSx3eShlLDIqcisxLDIqbisxKTt9ZnVuY3Rpb24gd3kodCxlLHIpe2NvbnN0IG49dFtlXTt0W2VdPXRbcl0sdFtyXT1uO31mdW5jdGlvbiBfeSh0LGUscixuKXtjb25zdCBpPXQtcixzPWUtbjtyZXR1cm4gaSppK3Mqc310LkFSUkFZX1RZUEU9dW8sdC5BVVRIX0VSUl9NU0c9eHQsdC5BYWJiPWlsLHQuQWN0b3I9Y2xhc3N7Y29uc3RydWN0b3IodCxyLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy5wYXJlbnQ9cix0aGlzLm1hcElkPW4sdGhpcy5jYWxsYmFja3M9e30sdGhpcy5jYW5jZWxDYWxsYmFja3M9e30sUihbXCJyZWNlaXZlXCJdLHRoaXMpLHRoaXMudGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsdGhpcy5yZWNlaXZlLCExKSx0aGlzLmdsb2JhbFNjb3BlPUsoKT90OmUsdGhpcy5zY2hlZHVsZXI9bmV3IGJmO31zZW5kKHQsZSxyLG4saT0hMSxzKXtjb25zdCBhPU1hdGgucm91bmQoMWUxOCpNYXRoLnJhbmRvbSgpKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDAsMTApO3ImJihyLm1ldGFkYXRhPXMsdGhpcy5jYWxsYmFja3NbYV09cik7Y29uc3Qgbz1IKHRoaXMuZ2xvYmFsU2NvcGUpP3ZvaWQgMDpbXTtyZXR1cm4gdGhpcy50YXJnZXQucG9zdE1lc3NhZ2Uoe2lkOmEsdHlwZTp0LGhhc0NhbGxiYWNrOiEhcix0YXJnZXRNYXBJZDpuLG11c3RRdWV1ZTppLHNvdXJjZU1hcElkOnRoaXMubWFwSWQsZGF0YTpXaShlLG8pfSxvKSx7Y2FuY2VsOigpPT57ciYmZGVsZXRlIHRoaXMuY2FsbGJhY2tzW2FdLHRoaXMudGFyZ2V0LnBvc3RNZXNzYWdlKHtpZDphLHR5cGU6XCI8Y2FuY2VsPlwiLHRhcmdldE1hcElkOm4sc291cmNlTWFwSWQ6dGhpcy5tYXBJZH0pO319fXJlY2VpdmUodCl7Y29uc3QgZT10LmRhdGEscj1lLmlkO2lmKHImJighZS50YXJnZXRNYXBJZHx8dGhpcy5tYXBJZD09PWUudGFyZ2V0TWFwSWQpKWlmKFwiPGNhbmNlbD5cIj09PWUudHlwZSl7Y29uc3QgdD10aGlzLmNhbmNlbENhbGxiYWNrc1tyXTtkZWxldGUgdGhpcy5jYW5jZWxDYWxsYmFja3Nbcl0sdCYmdC5jYW5jZWwoKTt9ZWxzZSBpZihlLm11c3RRdWV1ZXx8SygpKXtjb25zdCB0PXRoaXMuY2FsbGJhY2tzW3JdO3RoaXMuY2FuY2VsQ2FsbGJhY2tzW3JdPXRoaXMuc2NoZWR1bGVyLmFkZCgoKCk9PnRoaXMucHJvY2Vzc1Rhc2socixlKSksdCYmdC5tZXRhZGF0YXx8e3R5cGU6XCJtZXNzYWdlXCJ9KTt9ZWxzZSB0aGlzLnByb2Nlc3NUYXNrKHIsZSk7fXByb2Nlc3NUYXNrKHQsZSl7aWYoXCI8cmVzcG9uc2U+XCI9PT1lLnR5cGUpe2NvbnN0IHI9dGhpcy5jYWxsYmFja3NbdF07ZGVsZXRlIHRoaXMuY2FsbGJhY2tzW3RdLHImJihlLmVycm9yP3IoUWkoZS5lcnJvcikpOnIobnVsbCxRaShlLmRhdGEpKSk7fWVsc2Uge2NvbnN0IHI9SCh0aGlzLmdsb2JhbFNjb3BlKT92b2lkIDA6W10sbj1lLmhhc0NhbGxiYWNrPyhlLG4pPT57ZGVsZXRlIHRoaXMuY2FuY2VsQ2FsbGJhY2tzW3RdLHRoaXMudGFyZ2V0LnBvc3RNZXNzYWdlKHtpZDp0LHR5cGU6XCI8cmVzcG9uc2U+XCIsc291cmNlTWFwSWQ6dGhpcy5tYXBJZCxlcnJvcjplP1dpKGUpOm51bGwsZGF0YTpXaShuLHIpfSxyKTt9OnQ9Pnt9LGk9UWkoZS5kYXRhKTtpZih0aGlzLnBhcmVudFtlLnR5cGVdKXRoaXMucGFyZW50W2UudHlwZV0oZS5zb3VyY2VNYXBJZCxpLG4pO2Vsc2UgaWYodGhpcy5wYXJlbnQuZ2V0V29ya2VyU291cmNlKXtjb25zdCB0PWUudHlwZS5zcGxpdChcIi5cIik7dGhpcy5wYXJlbnQuZ2V0V29ya2VyU291cmNlKGUuc291cmNlTWFwSWQsdFswXSxpLnNvdXJjZSlbdFsxXV0oaSxuKTt9ZWxzZSBuKG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgZnVuY3Rpb24gJHtlLnR5cGV9YCkpO319cmVtb3ZlKCl7dGhpcy5zY2hlZHVsZXIucmVtb3ZlKCksdGhpcy50YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIix0aGlzLnJlY2VpdmUsITEpO319LHQuQ2Fub25pY2FsVGlsZUlEPXBoLHQuQ29sb3I9RWUsdC5Db2xvck1vZGU9WWYsdC5DdWxsRmFjZU1vZGU9dHksdC5ERU1EYXRhPVpmLHQuRGF0YUNvbnN0YW50UHJvcGVydHk9QnMsdC5EZWR1cGVkUmVxdWVzdD1meSx0LkRlcHRoTW9kZT1YZix0LkVYVEVOVD1hbyx0LkVsZXZhdGlvbj1jbGFzc3tpc0RhdGFBdmFpbGFibGVBdFBvaW50KHQpe2NvbnN0IGU9dGhpcy5fc291cmNlKCk7aWYodGhpcy5pc1VzaW5nTW9ja1NvdXJjZSgpfHwhZXx8dC55PDB8fHQueT4xKXJldHVybiAhMTtjb25zdCByPWUuZ2V0U291cmNlKCkubWF4em9vbSxuPTE8PHIsaT1NYXRoLmZsb29yKHQueCkscz1NYXRoLmZsb29yKCh0LngtaSkqbiksYT1NYXRoLmZsb29yKHQueSpuKSxvPXRoaXMuZmluZERFTVRpbGVGb3IobmV3IGZoKHIsaSxyLHMsYSkpO3JldHVybiAhKCFvfHwhby5kZW0pfWdldEF0UG9pbnRPclplcm8odCxlPTApe3JldHVybiB0aGlzLmdldEF0UG9pbnQodCxlKXx8MH1nZXRBdFBvaW50KHQsZSxyPSEwKXtpZih0aGlzLmlzVXNpbmdNb2NrU291cmNlKCkpcmV0dXJuIG51bGw7bnVsbD09ZSYmKGU9bnVsbCk7Y29uc3Qgbj10aGlzLl9zb3VyY2UoKTtpZighbilyZXR1cm4gZTtpZih0Lnk8MHx8dC55PjEpcmV0dXJuIGU7Y29uc3QgaT1uLmdldFNvdXJjZSgpLm1heHpvb20scz0xPDxpLGE9TWF0aC5mbG9vcih0LngpLG89dC54LWEsbD1uZXcgZmgoaSxhLGksTWF0aC5mbG9vcihvKnMpLE1hdGguZmxvb3IodC55KnMpKSx1PXRoaXMuZmluZERFTVRpbGVGb3IobCk7aWYoIXV8fCF1LmRlbSlyZXR1cm4gZTtjb25zdCBjPXUuZGVtLGg9MTw8dS50aWxlSUQuY2Fub25pY2FsLnoscD0obypoLXUudGlsZUlELmNhbm9uaWNhbC54KSpjLmRpbSxkPSh0LnkqaC11LnRpbGVJRC5jYW5vbmljYWwueSkqYy5kaW0sZj1NYXRoLmZsb29yKHApLHk9TWF0aC5mbG9vcihkKTtyZXR1cm4gKHI/dGhpcy5leGFnZ2VyYXRpb24oKToxKSpFcihFcihjLmdldChmLHkpLGMuZ2V0KGYseSsxKSxkLXkpLEVyKGMuZ2V0KGYrMSx5KSxjLmdldChmKzEseSsxKSxkLXkpLHAtZil9Z2V0QXRUaWxlT2Zmc2V0KHQsZSxyKXtjb25zdCBuPTE8PHQuY2Fub25pY2FsLno7cmV0dXJuIHRoaXMuZ2V0QXRQb2ludE9yWmVybyhuZXcgV2wodC53cmFwKyh0LmNhbm9uaWNhbC54K2UvYW8pL24sKHQuY2Fub25pY2FsLnkrci9hbykvbikpfWdldEF0VGlsZU9mZnNldEZ1bmModCxlLHIsbil7cmV0dXJuIGk9Pntjb25zdCBzPXRoaXMuZ2V0QXRUaWxlT2Zmc2V0KHQsaS54LGkueSksYT1uLnVwVmVjdG9yKHQuY2Fub25pY2FsLGkueCxpLnkpO3JldHVybiBDbyhhLGEscypuLnVwVmVjdG9yU2NhbGUodC5jYW5vbmljYWwsZSxyKS5tZXRlcnNUb1RpbGUpLGF9fWdldEZvclRpbGVQb2ludHModCxlLHIsbil7aWYodGhpcy5pc1VzaW5nTW9ja1NvdXJjZSgpKXJldHVybiAhMTtjb25zdCBpPXN5LmNyZWF0ZSh0aGlzLHQsbik7cmV0dXJuICEhaSYmKGUuZm9yRWFjaCgodD0+e3RbMl09dGhpcy5leGFnZ2VyYXRpb24oKSppLmdldEVsZXZhdGlvbkF0KHRbMF0sdFsxXSxyKTt9KSksITApfWdldE1pbk1heEZvclRpbGUodCl7aWYodGhpcy5pc1VzaW5nTW9ja1NvdXJjZSgpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5maW5kREVNVGlsZUZvcih0KTtpZighZXx8IWUuZGVtKXJldHVybiBudWxsO2NvbnN0IHI9ZS5kZW0udHJlZSxuPWUudGlsZUlELGk9MTw8dC5jYW5vbmljYWwuei1uLmNhbm9uaWNhbC56O2xldCBzPXQuY2Fub25pY2FsLngvaS1uLmNhbm9uaWNhbC54LGE9dC5jYW5vbmljYWwueS9pLW4uY2Fub25pY2FsLnksbz0wO2ZvcihsZXQgZT0wO2U8dC5jYW5vbmljYWwuei1uLmNhbm9uaWNhbC56JiYhci5sZWF2ZXNbb107ZSsrKXtzKj0yLGEqPTI7Y29uc3QgdD0yKk1hdGguZmxvb3IoYSkrTWF0aC5mbG9vcihzKTtvPXIuY2hpbGRPZmZzZXRzW29dK3QscyU9MSxhJT0xO31yZXR1cm4ge21pbjp0aGlzLmV4YWdnZXJhdGlvbigpKnIubWluaW11bXNbb10sbWF4OnRoaXMuZXhhZ2dlcmF0aW9uKCkqci5tYXhpbXVtc1tvXX19Z2V0TWluRWxldmF0aW9uQmVsb3dNU0woKXt0aHJvdyBuZXcgRXJyb3IoXCJQdXJlIHZpcnR1YWwgbWV0aG9kIGNhbGxlZC5cIil9cmF5Y2FzdCh0LGUscil7dGhyb3cgbmV3IEVycm9yKFwiUHVyZSB2aXJ0dWFsIG1ldGhvZCBjYWxsZWQuXCIpfXBvaW50Q29vcmRpbmF0ZSh0KXt0aHJvdyBuZXcgRXJyb3IoXCJQdXJlIHZpcnR1YWwgbWV0aG9kIGNhbGxlZC5cIil9X3NvdXJjZSgpe3Rocm93IG5ldyBFcnJvcihcIlB1cmUgdmlydHVhbCBtZXRob2QgY2FsbGVkLlwiKX1pc1VzaW5nTW9ja1NvdXJjZSgpe3Rocm93IG5ldyBFcnJvcihcIlB1cmUgdmlydHVhbCBtZXRob2QgY2FsbGVkLlwiKX1leGFnZ2VyYXRpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJQdXJlIHZpcnR1YWwgbWV0aG9kIGNhbGxlZC5cIil9ZmluZERFTVRpbGVGb3IodCl7dGhyb3cgbmV3IEVycm9yKFwiUHVyZSB2aXJ0dWFsIG1ldGhvZCBjYWxsZWQuXCIpfWdldCB2aXNpYmxlRGVtVGlsZXMoKXt0aHJvdyBuZXcgRXJyb3IoXCJHZXR0ZXIgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzcy5cIil9fSx0LkVycm9yRXZlbnQ9V3QsdC5FdmFsdWF0aW9uUGFyYW1ldGVycz13cyx0LkV2ZW50PVl0LHQuRXZlbnRlZD1RdCx0LkZpbGxFeHRydXNpb25CdWNrZXQ9dGgsdC5GcnVzdHVtPW5sLHQuRnJ1c3R1bUNvcm5lcnM9cmwsdC5HTE9CRV9SQURJVVM9b2wsdC5HTE9CRV9TQ0FMRV9NQVRDSF9MQVRJVFVERT00NSx0LkdMT0JFX1pPT01fVEhSRVNIT0xEX01BWD1hbCx0LkdMT0JFX1pPT01fVEhSRVNIT0xEX01JTj1zbCx0Lkdsb2JlU2hhcmVkQnVmZmVycz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9jcmVhdGVHcmlkKHQpLHRoaXMuX2NyZWF0ZVBvbGVzKHQpO31kZXN0cm95KCl7dGhpcy5fcG9sZUluZGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLl9ncmlkQnVmZmVyLmRlc3Ryb3koKSx0aGlzLl9ncmlkSW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuX3BvbGVOb3J0aFZlcnRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5fcG9sZVNvdXRoVmVydGV4QnVmZmVyLmRlc3Ryb3koKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9wb2xlU2VnbWVudHMpdC5kZXN0cm95KCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fZ3JpZFNlZ21lbnRzKXQud2l0aFNraXJ0cy5kZXN0cm95KCksdC53aXRob3V0U2tpcnRzLmRlc3Ryb3koKTtpZih0aGlzLl93aXJlZnJhbWVJbmRleEJ1ZmZlcil7dGhpcy5fd2lyZWZyYW1lSW5kZXhCdWZmZXIuZGVzdHJveSgpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3dpcmVmcmFtZVNlZ21lbnRzKXQuZGVzdHJveSgpO319X2ZpbGxHcmlkTWVzaFdpdGhMb2RzKHQsZSl7Y29uc3Qgcj1uZXcgJHMsbj1uZXcgcmEsaT1bXSxzPXQrMSsyLGE9ZVswXSsxLG89ZVswXSsxKygxK2UubGVuZ3RoKSxsPSh0LGUscik9PntsZXQgbj10PT09cy0xP3QtMjowPT09dD90OnQtMTtyZXR1cm4gbis9cj8yNDU3NTowLFtuLGVdfTtmb3IobGV0IHQ9MDt0PHM7Kyt0KXIuZW1wbGFjZUJhY2soLi4ubCh0LDAsITApKTtmb3IobGV0IHQ9MDt0PGE7Kyt0KWZvcihsZXQgZT0wO2U8czsrK2Upci5lbXBsYWNlQmFjayguLi5sKGUsdCwoMD09PWV8fGU9PT1zLTEpJiYhMCkpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7Kyt0KXtjb25zdCBuPWVbdF07Zm9yKGxldCB0PTA7dDxzOysrdClyLmVtcGxhY2VCYWNrKC4uLmwodCxuLCEwKSk7fWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7Kyt0KXtjb25zdCBhPW4ubGVuZ3RoLGw9ZVt0XSsxKzIsdT1uZXcgcmE7Zm9yKGxldCByPTA7cjxsLTE7cisrKXtjb25zdCBpPXI9PT1sLTIsYT1pP3MqKG8tZS5sZW5ndGgrdC1yKTpzO2ZvcihsZXQgdD0wO3Q8cy0xO3QrKyl7Y29uc3QgZT1yKnMrdDswPT09cnx8aXx8MD09PXR8fHQ9PT1zLTI/KHUuZW1wbGFjZUJhY2soZSsxLGUsZSthKSx1LmVtcGxhY2VCYWNrKGUrYSxlK2ErMSxlKzEpKToobi5lbXBsYWNlQmFjayhlKzEsZSxlK2EpLG4uZW1wbGFjZUJhY2soZSthLGUrYSsxLGUrMSkpO319Y29uc3QgYz1zby5zaW1wbGVTZWdtZW50KDAsYSxyLmxlbmd0aCxuLmxlbmd0aC1hKTtmb3IobGV0IHQ9MDt0PHUudWludDE2Lmxlbmd0aDt0Kz0zKW4uZW1wbGFjZUJhY2sodS51aW50MTZbdF0sdS51aW50MTZbdCsxXSx1LnVpbnQxNlt0KzJdKTtjb25zdCBoPXNvLnNpbXBsZVNlZ21lbnQoMCxhLHIubGVuZ3RoLG4ubGVuZ3RoLWEpO2kucHVzaCh7d2l0aG91dFNraXJ0czpjLHdpdGhTa2lydHM6aH0pO31yZXR1cm4ge3ZlcnRpY2VzOnIsaW5kaWNlczpuLHNlZ21lbnRzOml9fV9jcmVhdGVHcmlkKHQpe2NvbnN0IGU9dGhpcy5fZmlsbEdyaWRNZXNoV2l0aExvZHModWwsY2wpO3RoaXMuX2dyaWRTZWdtZW50cz1lLnNlZ21lbnRzLHRoaXMuX2dyaWRCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIoZS52ZXJ0aWNlcyx0bC5tZW1iZXJzKSx0aGlzLl9ncmlkSW5kZXhCdWZmZXI9dC5jcmVhdGVJbmRleEJ1ZmZlcihlLmluZGljZXMsITApO31fY3JlYXRlUG9sZXModCl7Y29uc3QgZT1uZXcgcmE7Zm9yKGxldCB0PTA7dDw9dWw7dCsrKWUuZW1wbGFjZUJhY2soMCx0KzEsdCsyKTt0aGlzLl9wb2xlSW5kZXhCdWZmZXI9dC5jcmVhdGVJbmRleEJ1ZmZlcihlLCEwKTtjb25zdCByPW5ldyBhYSxuPW5ldyBhYTt0aGlzLl9wb2xlU2VnbWVudHM9W107Zm9yKGxldCB0PTAsZT0wO3Q8c2w7dCsrKXtjb25zdCBpPTM2MC8oMTw8dCk7ci5lbXBsYWNlQmFjaygwLC1vbCwwLC41LDApLG4uZW1wbGFjZUJhY2soMCwtb2wsMCwuNSwxKTtmb3IobGV0IHQ9MDt0PD11bDt0Kyspe2NvbnN0IGU9dC91bCxzPUVyKDAsaSxlKSxbYSxvLGxdPWtsKEZsLFJsLHMsb2wpO3IuZW1wbGFjZUJhY2soYSxvLGwsZSwwKSxuLmVtcGxhY2VCYWNrKGEsbyxsLGUsMSk7fXRoaXMuX3BvbGVTZWdtZW50cy5wdXNoKHNvLnNpbXBsZVNlZ21lbnQoZSwwLDY2LDY0KSksZSs9NjY7fXRoaXMuX3BvbGVOb3J0aFZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcihyLFdvLCExKSx0aGlzLl9wb2xlU291dGhWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIobixXbywhMSk7fWdldEdyaWRCdWZmZXJzKHQsZSl7cmV0dXJuIFt0aGlzLl9ncmlkQnVmZmVyLHRoaXMuX2dyaWRJbmRleEJ1ZmZlcixlP3RoaXMuX2dyaWRTZWdtZW50c1t0XS53aXRoU2tpcnRzOnRoaXMuX2dyaWRTZWdtZW50c1t0XS53aXRob3V0U2tpcnRzXX1nZXRQb2xlQnVmZmVycyh0KXtyZXR1cm4gW3RoaXMuX3BvbGVOb3J0aFZlcnRleEJ1ZmZlcix0aGlzLl9wb2xlU291dGhWZXJ0ZXhCdWZmZXIsdGhpcy5fcG9sZUluZGV4QnVmZmVyLHRoaXMuX3BvbGVTZWdtZW50c1t0XV19Z2V0V2lyZWZhbWVCdWZmZXJzKHQsZSl7aWYoIXRoaXMuX3dpcmVmcmFtZVNlZ21lbnRzKXtjb25zdCBlPW5ldyBsYSxyPXVsLG49cisxKzIsaT0xO3RoaXMuX3dpcmVmcmFtZVNlZ21lbnRzPVtdO2ZvcihsZXQgdD0wLHM9MDt0PGNsLmxlbmd0aDt0Kyspe2NvbnN0IGE9Y2xbdF07Zm9yKGxldCB0PWk7dDxhK2k7dCsrKWZvcihsZXQgcz1pO3M8citpO3MrKyl7Y29uc3Qgcj10Km4rcztlLmVtcGxhY2VCYWNrKHIscisxKSxlLmVtcGxhY2VCYWNrKHIscituKSxlLmVtcGxhY2VCYWNrKHIscituKzEpO31jb25zdCBvPWEqciozO3RoaXMuX3dpcmVmcmFtZVNlZ21lbnRzLnB1c2goc28uc2ltcGxlU2VnbWVudCgwLHMsKGErMSkqbixvKSkscys9bzt9dGhpcy5fd2lyZWZyYW1lSW5kZXhCdWZmZXI9dC5jcmVhdGVJbmRleEJ1ZmZlcihlKTt9cmV0dXJuIFt0aGlzLl9ncmlkQnVmZmVyLHRoaXMuX3dpcmVmcmFtZUluZGV4QnVmZmVyLHRoaXMuX3dpcmVmcmFtZVNlZ21lbnRzW2VdXX19LHQuR2x5cGhNYW5hZ2VyPXJkLHQuSW1hZ2VQb3NpdGlvbj1TcCx0LktEQnVzaD1neSx0LkxpdmVQZXJmb3JtYW5jZVV0aWxzPSR0LHQuTG5nTGF0PU9sLHQuTG5nTGF0Qm91bmRzPW9vLHQuTG9jYWxHbHlwaE1vZGU9ZWQsdC5NQVhfTUVSQ0FUT1JfTEFUSVRVREU9SGwsdC5NZXJjYXRvckNvb3JkaW5hdGU9V2wsdC5PTkVfRU09UmgsdC5PdmVyc2NhbGVkVGlsZUlEPWZoLHQuUGVyZm9ybWFuY2VNYXJrZXJzPVV0LHQuUG9pbnQ9eCx0LlByb3BlcnRpZXM9UHMsdC5SR0JBSW1hZ2U9VXUsdC5SYXk9ZWwsdC5SZXF1ZXN0TWFuYWdlcj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUscil7dGhpcy5fdHJhbnNmb3JtUmVxdWVzdEZuPXQsdGhpcy5fY3VzdG9tQWNjZXNzVG9rZW49ZSx0aGlzLl9zaWxlbmNlQXV0aEVycm9ycz0hIXIsdGhpcy5fY3JlYXRlU2t1VG9rZW4oKTt9X2NyZWF0ZVNrdVRva2VuKCl7Y29uc3QgdD1mdW5jdGlvbigpe2xldCB0PVwiXCI7Zm9yKGxldCBlPTA7ZTwxMDtlKyspdCs9XCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWlwiW01hdGguZmxvb3IoNjIqTWF0aC5yYW5kb20oKSldO3JldHVybiB7dG9rZW46W1wiMVwiLGgsdF0uam9pbihcIlwiKSx0b2tlbkV4cGlyZXNBdDpEYXRlLm5vdygpKzQzMmU1fX0oKTt0aGlzLl9za3VUb2tlbj10LnRva2VuLHRoaXMuX3NrdVRva2VuRXhwaXJlc0F0PXQudG9rZW5FeHBpcmVzQXQ7fV9pc1NrdVRva2VuRXhwaXJlZCgpe3JldHVybiBEYXRlLm5vdygpPnRoaXMuX3NrdVRva2VuRXhwaXJlc0F0fXRyYW5zZm9ybVJlcXVlc3QodCxlKXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtUmVxdWVzdEZuJiZ0aGlzLl90cmFuc2Zvcm1SZXF1ZXN0Rm4odCxlKXx8e3VybDp0fX1ub3JtYWxpemVTdHlsZVVSTCh0LGUpe2lmKCF2dCh0KSlyZXR1cm4gdDtjb25zdCByPWt0KHQpO3JldHVybiByLnBhdGg9YC9zdHlsZXMvdjEke3IucGF0aH1gLHRoaXMuX21ha2VBUElVUkwocix0aGlzLl9jdXN0b21BY2Nlc3NUb2tlbnx8ZSl9bm9ybWFsaXplR2x5cGhzVVJMKHQsZSl7aWYoIXZ0KHQpKXJldHVybiB0O2NvbnN0IHI9a3QodCk7cmV0dXJuIHIucGF0aD1gL2ZvbnRzL3YxJHtyLnBhdGh9YCx0aGlzLl9tYWtlQVBJVVJMKHIsdGhpcy5fY3VzdG9tQWNjZXNzVG9rZW58fGUpfW5vcm1hbGl6ZVNvdXJjZVVSTCh0LGUscixuKXtpZighdnQodCkpcmV0dXJuIHQ7Y29uc3QgaT1rdCh0KTtyZXR1cm4gaS5wYXRoPWAvdjQvJHtpLmF1dGhvcml0eX0uanNvbmAsaS5wYXJhbXMucHVzaChcInNlY3VyZVwiKSxyJiZpLnBhcmFtcy5wdXNoKGBsYW5ndWFnZT0ke3J9YCksbiYmaS5wYXJhbXMucHVzaChgd29ybGR2aWV3PSR7bn1gKSx0aGlzLl9tYWtlQVBJVVJMKGksdGhpcy5fY3VzdG9tQWNjZXNzVG9rZW58fGUpfW5vcm1hbGl6ZVNwcml0ZVVSTCh0LGUscixuKXtjb25zdCBpPWt0KHQpO3JldHVybiB2dCh0KT8oaS5wYXRoPWAvc3R5bGVzL3YxJHtpLnBhdGh9L3Nwcml0ZSR7ZX0ke3J9YCx0aGlzLl9tYWtlQVBJVVJMKGksdGhpcy5fY3VzdG9tQWNjZXNzVG9rZW58fG4pKTooaS5wYXRoKz1gJHtlfSR7cn1gLEl0KGkpKX1ub3JtYWxpemVUaWxlVVJMKHQsZSxyKXtpZih0aGlzLl9pc1NrdVRva2VuRXhwaXJlZCgpJiZ0aGlzLl9jcmVhdGVTa3VUb2tlbigpLHQmJiF2dCh0KSlyZXR1cm4gdDtjb25zdCBuPWt0KHQpO24ucGF0aD1uLnBhdGgucmVwbGFjZSgvKFxcLihwbmd8anBnKVxcZCopKD89JCkvLGAke2V8fHImJlwicmFzdGVyXCIhPT1uLmF1dGhvcml0eSYmNTEyPT09cj9cIkAyeFwiOlwiXCJ9JHtzLnN1cHBvcnRlZD9cIi53ZWJwXCI6XCIkMVwifWApLFwicmFzdGVyXCI9PT1uLmF1dGhvcml0eT9uLnBhdGg9YC8ke2kuUkFTVEVSX1VSTF9QUkVGSVh9JHtuLnBhdGh9YDoobi5wYXRoPW4ucGF0aC5yZXBsYWNlKC9eLitcXC92NFxcLy8sXCIvXCIpLG4ucGF0aD1gLyR7aS5USUxFX1VSTF9WRVJTSU9OfSR7bi5wYXRofWApO2NvbnN0IGE9dGhpcy5fY3VzdG9tQWNjZXNzVG9rZW58fGZ1bmN0aW9uKHQpe2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9ZS5tYXRjaCgvXmFjY2Vzc190b2tlbj0oLiopJC8pO2lmKHQpcmV0dXJuIHRbMV19cmV0dXJuIG51bGx9KG4ucGFyYW1zKXx8aS5BQ0NFU1NfVE9LRU47cmV0dXJuIGkuUkVRVUlSRV9BQ0NFU1NfVE9LRU4mJmEmJnRoaXMuX3NrdVRva2VuJiZuLnBhcmFtcy5wdXNoKGBza3U9JHt0aGlzLl9za3VUb2tlbn1gKSx0aGlzLl9tYWtlQVBJVVJMKG4sYSl9Y2Fub25pY2FsaXplVGlsZVVSTCh0LGUpe2NvbnN0IHI9a3QodCk7aWYoIXIucGF0aC5tYXRjaCgvXihcXC92NFxcL3xcXC9yYXN0ZXJcXC92MVxcLykvKXx8IXIucGF0aC5tYXRjaCgvXFwuW1xcd10rJC8pKXJldHVybiB0O2xldCBuPVwibWFwYm94Oi8vXCI7ci5wYXRoLm1hdGNoKC9eXFwvcmFzdGVyXFwvdjFcXC8vKT9uKz1gcmFzdGVyLyR7ci5wYXRoLnJlcGxhY2UoYC8ke2kuUkFTVEVSX1VSTF9QUkVGSVh9L2AsXCJcIil9YDpuKz1gdGlsZXMvJHtyLnBhdGgucmVwbGFjZShgLyR7aS5USUxFX1VSTF9WRVJTSU9OfS9gLFwiXCIpfWA7bGV0IHM9ci5wYXJhbXM7cmV0dXJuIGUmJihzPXMuZmlsdGVyKCh0PT4hdC5tYXRjaCgvXmFjY2Vzc190b2tlbj0vKSkpKSxzLmxlbmd0aCYmKG4rPWA/JHtzLmpvaW4oXCImXCIpfWApLG59Y2Fub25pY2FsaXplVGlsZXNldCh0LGUpe2NvbnN0IHI9ISFlJiZ2dChlKSxuPVtdO2Zvcihjb25zdCBlIG9mIHQudGlsZXN8fFtdKWJ0KGUpP24ucHVzaCh0aGlzLmNhbm9uaWNhbGl6ZVRpbGVVUkwoZSxyKSk6bi5wdXNoKGUpO3JldHVybiBufV9tYWtlQVBJVVJMKHQsZSl7Y29uc3Qgcj1cIlNlZSBodHRwczovL2RvY3MubWFwYm94LmNvbS9hcGkvb3ZlcnZpZXcvI2FjY2Vzcy10b2tlbnMtYW5kLXRva2VuLXNjb3Blc1wiLG49a3QoaS5BUElfVVJMKTtpZih0LnByb3RvY29sPW4ucHJvdG9jb2wsdC5hdXRob3JpdHk9bi5hdXRob3JpdHksXCJodHRwXCI9PT10LnByb3RvY29sKXtjb25zdCBlPXQucGFyYW1zLmluZGV4T2YoXCJzZWN1cmVcIik7ZT49MCYmdC5wYXJhbXMuc3BsaWNlKGUsMSk7fWlmKFwiL1wiIT09bi5wYXRoJiYodC5wYXRoPWAke24ucGF0aH0ke3QucGF0aH1gKSwhaS5SRVFVSVJFX0FDQ0VTU19UT0tFTilyZXR1cm4gSXQodCk7aWYoZT1lfHxpLkFDQ0VTU19UT0tFTiwhdGhpcy5fc2lsZW5jZUF1dGhFcnJvcnMpe2lmKCFlKXRocm93IG5ldyBFcnJvcihgQW4gQVBJIGFjY2VzcyB0b2tlbiBpcyByZXF1aXJlZCB0byB1c2UgTWFwYm94IEdMLiAke3J9YCk7aWYoXCJzXCI9PT1lWzBdKXRocm93IG5ldyBFcnJvcihgVXNlIGEgcHVibGljIGFjY2VzcyB0b2tlbiAocGsuKikgd2l0aCBNYXBib3ggR0wsIG5vdCBhIHNlY3JldCBhY2Nlc3MgdG9rZW4gKHNrLiopLiAke3J9YCl9cmV0dXJuIHQucGFyYW1zPXQucGFyYW1zLmZpbHRlcigodD0+LTE9PT10LmluZGV4T2YoXCJhY2Nlc3NfdG9rZW5cIikpKSx0LnBhcmFtcy5wdXNoKGBhY2Nlc3NfdG9rZW49JHtlfHxcIlwifWApLEl0KHQpfX0sdC5SZXNvdXJjZVR5cGU9bHQsdC5TZWdtZW50VmVjdG9yPXNvLHQuU291cmNlQ2FjaGU9ZXksdC5TdGVuY2lsTW9kZT1IZix0LlN0cnVjdEFycmF5TGF5b3V0MXVpMj11YSx0LlN0cnVjdEFycmF5TGF5b3V0MmYxZjJpMTY9UXMsdC5TdHJ1Y3RBcnJheUxheW91dDJpND0kcyx0LlN0cnVjdEFycmF5TGF5b3V0MnVpND1sYSx0LlN0cnVjdEFycmF5TGF5b3V0M2YxMj1lYSx0LlN0cnVjdEFycmF5TGF5b3V0M3VpNj1yYSx0LlN0cnVjdEFycmF5TGF5b3V0NGk4PU9zLHQuU3RydWN0QXJyYXlMYXlvdXQ1ZjIwPWFhLHQuVGV4dHVyZT14Zix0LlRpbGU9UGYsdC5UcmFuc2l0aW9uYWJsZT1Tcyx0LlVuaWZvcm0xZj1MYSx0LlVuaWZvcm0xaT1jbGFzcyBleHRlbmRzIFZhe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuY3VycmVudD0wO31zZXQodCxlLHIpe3RoaXMuZmV0Y2hVbmlmb3JtTG9jYXRpb24odCxlKSYmdGhpcy5jdXJyZW50IT09ciYmKHRoaXMuY3VycmVudD1yLHRoaXMuZ2wudW5pZm9ybTFpKHRoaXMubG9jYXRpb24scikpO319LHQuVW5pZm9ybTJmPWNsYXNzIGV4dGVuZHMgVmF7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5jdXJyZW50PVswLDBdO31zZXQodCxlLHIpe3RoaXMuZmV0Y2hVbmlmb3JtTG9jYXRpb24odCxlKSYmKHJbMF09PT10aGlzLmN1cnJlbnRbMF0mJnJbMV09PT10aGlzLmN1cnJlbnRbMV18fCh0aGlzLmN1cnJlbnQ9cix0aGlzLmdsLnVuaWZvcm0yZih0aGlzLmxvY2F0aW9uLHJbMF0sclsxXSkpKTt9fSx0LlVuaWZvcm0zZj1jbGFzcyBleHRlbmRzIFZhe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuY3VycmVudD1bMCwwLDBdO31zZXQodCxlLHIpe3RoaXMuZmV0Y2hVbmlmb3JtTG9jYXRpb24odCxlKSYmKHJbMF09PT10aGlzLmN1cnJlbnRbMF0mJnJbMV09PT10aGlzLmN1cnJlbnRbMV0mJnJbMl09PT10aGlzLmN1cnJlbnRbMl18fCh0aGlzLmN1cnJlbnQ9cix0aGlzLmdsLnVuaWZvcm0zZih0aGlzLmxvY2F0aW9uLHJbMF0sclsxXSxyWzJdKSkpO319LHQuVW5pZm9ybTRmPUZhLHQuVW5pZm9ybUNvbG9yPVJhLHQuVW5pZm9ybU1hdHJpeDJmPWNsYXNzIGV4dGVuZHMgVmF7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5jdXJyZW50PWphO31zZXQodCxlLHIpe2lmKHRoaXMuZmV0Y2hVbmlmb3JtTG9jYXRpb24odCxlKSlmb3IobGV0IHQ9MDt0PDQ7dCsrKWlmKHJbdF0hPT10aGlzLmN1cnJlbnRbdF0pe3RoaXMuY3VycmVudD1yLHRoaXMuZ2wudW5pZm9ybU1hdHJpeDJmdih0aGlzLmxvY2F0aW9uLCExLHIpO2JyZWFrfX19LHQuVW5pZm9ybU1hdHJpeDNmPWNsYXNzIGV4dGVuZHMgVmF7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5jdXJyZW50PSRhO31zZXQodCxlLHIpe2lmKHRoaXMuZmV0Y2hVbmlmb3JtTG9jYXRpb24odCxlKSlmb3IobGV0IHQ9MDt0PDk7dCsrKWlmKHJbdF0hPT10aGlzLmN1cnJlbnRbdF0pe3RoaXMuY3VycmVudD1yLHRoaXMuZ2wudW5pZm9ybU1hdHJpeDNmdih0aGlzLmxvY2F0aW9uLCExLHIpO2JyZWFrfX19LHQuVW5pZm9ybU1hdHJpeDRmPWNsYXNzIGV4dGVuZHMgVmF7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5jdXJyZW50PVVhO31zZXQodCxlLHIpe2lmKHRoaXMuZmV0Y2hVbmlmb3JtTG9jYXRpb24odCxlKSl7aWYoclsxMl0hPT10aGlzLmN1cnJlbnRbMTJdfHxyWzBdIT09dGhpcy5jdXJyZW50WzBdKXJldHVybiB0aGlzLmN1cnJlbnQ9cix2b2lkIHRoaXMuZ2wudW5pZm9ybU1hdHJpeDRmdih0aGlzLmxvY2F0aW9uLCExLHIpO2ZvcihsZXQgdD0xO3Q8MTY7dCsrKWlmKHJbdF0hPT10aGlzLmN1cnJlbnRbdF0pe3RoaXMuY3VycmVudD1yLHRoaXMuZ2wudW5pZm9ybU1hdHJpeDRmdih0aGlzLmxvY2F0aW9uLCExLHIpO2JyZWFrfX19fSx0LlVud3JhcHBlZFRpbGVJRD1kaCx0LlZhbGlkYXRpb25FcnJvcj1yaSx0LlZlY3RvclRpbGVGZWF0dXJlPUtjLHQuVmVjdG9yVGlsZVdvcmtlclNvdXJjZT1jbGFzcyBleHRlbmRzIFF0e2NvbnN0cnVjdG9yKHQsZSxyLG4saSl7c3VwZXIoKSx0aGlzLmFjdG9yPXQsdGhpcy5sYXllckluZGV4PWUsdGhpcy5hdmFpbGFibGVJbWFnZXM9cix0aGlzLmxvYWRWZWN0b3JEYXRhPWl8fHl5LHRoaXMubG9hZGluZz17fSx0aGlzLmxvYWRlZD17fSx0aGlzLmRlZHVwZWQ9bmV3IGZ5KHQuc2NoZWR1bGVyKSx0aGlzLmlzU3ByaXRlTG9hZGVkPW4sdGhpcy5zY2hlZHVsZXI9dC5zY2hlZHVsZXI7fWxvYWRUaWxlKHQsZSl7Y29uc3Qgcj10LnVpZCxuPXQmJnQucmVxdWVzdCxpPW4mJm4uY29sbGVjdFJlc291cmNlVGltaW5nLHM9dGhpcy5sb2FkaW5nW3JdPW5ldyBweSh0KTtzLmFib3J0PXRoaXMubG9hZFZlY3RvckRhdGEodCwoKGEsbyk9Pntjb25zdCBsPSF0aGlzLmxvYWRpbmdbcl07aWYoZGVsZXRlIHRoaXMubG9hZGluZ1tyXSxsfHxhfHwhbylyZXR1cm4gcy5zdGF0dXM9XCJkb25lXCIsbHx8KHRoaXMubG9hZGVkW3JdPXMpLGUoYSk7Y29uc3QgdT1vLnJhd0RhdGEsYz17fTtvLmV4cGlyZXMmJihjLmV4cGlyZXM9by5leHBpcmVzKSxvLmNhY2hlQ29udHJvbCYmKGMuY2FjaGVDb250cm9sPW8uY2FjaGVDb250cm9sKSxzLnZlY3RvclRpbGU9by52ZWN0b3JUaWxlfHxuZXcgWmMobmV3IG1wKHUpKTtjb25zdCBoPSgpPT57cy5wYXJzZShzLnZlY3RvclRpbGUsdGhpcy5sYXllckluZGV4LHRoaXMuYXZhaWxhYmxlSW1hZ2VzLHRoaXMuYWN0b3IsKCh0LHIpPT57aWYodHx8IXIpcmV0dXJuIGUodCk7Y29uc3Qgcz17fTtpZihpKXtjb25zdCB0PXF0KG4pO3QubGVuZ3RoPjAmJihzLnJlc291cmNlVGltaW5nPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodCkpKTt9ZShudWxsLEMoe3Jhd1RpbGVEYXRhOnUuc2xpY2UoMCl9LHIsYyxzKSk7fSkpO307dGhpcy5pc1Nwcml0ZUxvYWRlZD9oKCk6dGhpcy5vbmNlKFwiaXNTcHJpdGVMb2FkZWRcIiwoKCk9Pnt0aGlzLnNjaGVkdWxlcj90aGlzLnNjaGVkdWxlci5hZGQoaCx7dHlwZTpcInBhcnNlVGlsZVwiLGlzU3ltYm9sVGlsZTp0LmlzU3ltYm9sVGlsZSx6b29tOnQudGlsZVpvb219KTpoKCk7fSkpLHRoaXMubG9hZGVkPXRoaXMubG9hZGVkfHx7fSx0aGlzLmxvYWRlZFtyXT1zO30pKTt9cmVsb2FkVGlsZSh0LGUpe2NvbnN0IHI9dGhpcy5sb2FkZWQsbj10LnVpZCxpPXRoaXM7aWYociYmcltuXSl7Y29uc3Qgcz1yW25dO3Muc2hvd0NvbGxpc2lvbkJveGVzPXQuc2hvd0NvbGxpc2lvbkJveGVzLHMuZW5hYmxlVGVycmFpbj0hIXQuZW5hYmxlVGVycmFpbixzLnByb2plY3Rpb249dC5wcm9qZWN0aW9uLHMudGlsZVRyYW5zZm9ybT1CZCh0LnRpbGVJRC5jYW5vbmljYWwsdC5wcm9qZWN0aW9uKTtjb25zdCBhPSh0LHIpPT57Y29uc3Qgbj1zLnJlbG9hZENhbGxiYWNrO24mJihkZWxldGUgcy5yZWxvYWRDYWxsYmFjayxzLnBhcnNlKHMudmVjdG9yVGlsZSxpLmxheWVySW5kZXgsdGhpcy5hdmFpbGFibGVJbWFnZXMsaS5hY3RvcixuKSksZSh0LHIpO307XCJwYXJzaW5nXCI9PT1zLnN0YXR1cz9zLnJlbG9hZENhbGxiYWNrPWE6XCJkb25lXCI9PT1zLnN0YXR1cyYmKHMudmVjdG9yVGlsZT9zLnBhcnNlKHMudmVjdG9yVGlsZSx0aGlzLmxheWVySW5kZXgsdGhpcy5hdmFpbGFibGVJbWFnZXMsdGhpcy5hY3RvcixhKTphKCkpO319YWJvcnRUaWxlKHQsZSl7Y29uc3Qgcj10LnVpZCxuPXRoaXMubG9hZGluZ1tyXTtuJiYobi5hYm9ydCYmbi5hYm9ydCgpLGRlbGV0ZSB0aGlzLmxvYWRpbmdbcl0pLGUoKTt9cmVtb3ZlVGlsZSh0LGUpe2NvbnN0IHI9dGhpcy5sb2FkZWQsbj10LnVpZDtyJiZyW25dJiZkZWxldGUgcltuXSxlKCk7fX0sdC5Xcml0aW5nTW9kZT1JcCx0Llpvb21EZXBlbmRlbnRFeHByZXNzaW9uPVduLHQuYWRkPU1vLHQuYWRkRHluYW1pY0F0dHJpYnV0ZXM9cmYsdC5hZGpvaW50PWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV0saT1lWzJdLHM9ZVszXSxhPWVbNF0sbz1lWzVdLGw9ZVs2XSx1PWVbN10sYz1lWzhdO3JldHVybiB0WzBdPWEqYy1vKnUsdFsxXT1pKnUtbipjLHRbMl09bipvLWkqYSx0WzNdPW8qbC1zKmMsdFs0XT1yKmMtaSpsLHRbNV09aSpzLXIqbyx0WzZdPXMqdS1hKmwsdFs3XT1uKmwtcip1LHRbOF09ciphLW4qcyx0fSx0LmFzeW5jQWxsPUIsdC5iZXppZXI9ayx0LmJpbmRBbGw9Uix0LmJvdW5kc0F0dHJpYnV0ZXM9RWYsdC5idWZmZXJDb252ZXhQb2x5Z29uPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3QgaT16KG4tMSwtMSx0Lmxlbmd0aC0xKSxzPXoobisxLC0xLHQubGVuZ3RoLTEpLGE9dFtuXSxvPXRbc10sbD10W2ldLnN1YihhKS51bml0KCksdT1vLnN1YihhKS51bml0KCksYz11LmFuZ2xlV2l0aFNlcChsLngsbC55KSxoPWwuYWRkKHUpLnVuaXQoKS5tdWx0KC0xKmUvTWF0aC5zaW4oYy8yKSk7ci5wdXNoKGEuYWRkKGgpKTt9cmV0dXJuIHJ9LHQuY2FjaGVFbnRyeVBvc3NpYmx5QWRkZWQ9ZnVuY3Rpb24odCl7b3QrKyxvdD5ldCYmKHQuZ2V0QWN0b3IoKS5zZW5kKFwiZW5mb3JjZUNhY2hlU2l6ZUxpbWl0XCIsdHQpLG90PTApO30sdC5jYWxjdWxhdGVHbG9iZUxhYmVsTWF0cml4PWZ1bmN0aW9uKHQsZSl7Y29uc3R7eDpyLHk6bn09dC5wb2ludCxpPUNsKHIsbix0LndvcmxkU2l6ZS90Ll9waXhlbHNQZXJNZXJjYXRvclBpeGVsLDAsMCk7cmV0dXJuIHlvKGksaSxFbCh4bChlKSkpfSx0LmNhbGN1bGF0ZUdsb2JlTWF0cml4PWZ1bmN0aW9uKHQpe2NvbnN0e3g6ZSx5OnJ9PXQucG9pbnQse2xuZzpuLGxhdDppfT10Ll9jZW50ZXI7cmV0dXJuIENsKGUscix0LndvcmxkU2l6ZSxuLGkpfSx0LmNhbGN1bGF0ZUdsb2JlTWVyY2F0b3JNYXRyaXg9ZnVuY3Rpb24odCl7Y29uc3QgZT10LnBpeGVsc1Blck1ldGVyLHI9ZS9abCgxLHQuY2VudGVyLmxhdCksbj1wbyhuZXcgRmxvYXQ2NEFycmF5KDE2KSk7cmV0dXJuIG1vKG4sbixbdC5wb2ludC54LHQucG9pbnQueSwwXSksZ28obixuLFtyLHIsZV0pLEZsb2F0MzJBcnJheS5mcm9tKG4pfSx0LmNpcmN1bWZlcmVuY2VBdExhdGl0dWRlPXFsLHQuY2xhbXA9TSx0LmNsZWFyVGlsZUNhY2hlPWZ1bmN0aW9uKHQpe2lmKCFpdCgpKXJldHVybjtjb25zdCByPWUuY2FjaGVzLmRlbGV0ZShRKTt0JiZyLmNhdGNoKHQpLnRoZW4oKCgpPT50KCkpKTt9LHQuY2xpcExpbmU9SHAsdC5jbG9uZT1mdW5jdGlvbih0KXt2YXIgZT1uZXcgdW8oMTYpO3JldHVybiBlWzBdPXRbMF0sZVsxXT10WzFdLGVbMl09dFsyXSxlWzNdPXRbM10sZVs0XT10WzRdLGVbNV09dFs1XSxlWzZdPXRbNl0sZVs3XT10WzddLGVbOF09dFs4XSxlWzldPXRbOV0sZVsxMF09dFsxMF0sZVsxMV09dFsxMV0sZVsxMl09dFsxMl0sZVsxM109dFsxM10sZVsxNF09dFsxNF0sZVsxNV09dFsxNV0sZX0sdC5jbG9uZSQxPU8sdC5jb2xsaXNpb25DaXJjbGVMYXlvdXQ9RmgsdC5jb25maWc9aSx0LmNvbmp1Z2F0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0WzBdPS1lWzBdLHRbMV09LWVbMV0sdFsyXT0tZVsyXSx0WzNdPWVbM10sdH0sdC5jcmVhdGU9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgdW8oMTYpO3JldHVybiB1byE9RmxvYXQzMkFycmF5JiYodFsxXT0wLHRbMl09MCx0WzNdPTAsdFs0XT0wLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzExXT0wLHRbMTJdPTAsdFsxM109MCx0WzE0XT0wKSx0WzBdPTEsdFs1XT0xLHRbMTBdPTEsdFsxNV09MSx0fSx0LmNyZWF0ZSQxPWNvLHQuY3JlYXRlRXhwcmVzc2lvbj1Ibix0LmNyZWF0ZUxheW91dD1Scyx0LmNyZWF0ZVN0eWxlTGF5ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIFwiY3VzdG9tXCI9PT10LnR5cGU/bmV3IGZmKHQpOm5ldyBnZlt0LnR5cGVdKHQpfSx0LmNyb3NzPUxvLHQuZGVnVG9SYWQ9dyx0LmRpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGguaHlwb3QoZVswXS10WzBdLGVbMV0tdFsxXSxlWzJdLXRbMl0pfSx0LmRpdj1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbMF09ZVswXS9yWzBdLHRbMV09ZVsxXS9yWzFdLHRbMl09ZVsyXS9yWzJdLHR9LHQuZG90PVZvLHQuZWFydGhSYWRpdXM9VWwsdC5lYXNlPUksdC5lYXNlQ3ViaWNJbk91dD1TLHQuZWNlZlRvTGF0TG5nPWZ1bmN0aW9uKFt0LGUscl0pe2NvbnN0IG49TWF0aC5oeXBvdCh0LGUsciksaT1NYXRoLmF0YW4yKHQscikscz0uNSpNYXRoLlBJLU1hdGguYWNvcygtZS9uKTtyZXR1cm4gbmV3IE9sKF8oaSksXyhzKSl9LHQuZW1pdFZhbGlkYXRpb25FcnJvcnM9cWksdC5lbmRzV2l0aD1VLHQuZW5mb3JjZUNhY2hlU2l6ZUxpbWl0PWZ1bmN0aW9uKHQpe3N0KCkscnQmJnJ0LnRoZW4oKGU9PntlLmtleXMoKS50aGVuKChyPT57Zm9yKGxldCBuPTA7bjxyLmxlbmd0aC10O24rKyllLmRlbGV0ZShyW25dKTt9KSk7fSkpO30sdC5ldmFsdWF0ZVNpemVGb3JGZWF0dXJlPWpoLHQuZXZhbHVhdGVTaXplRm9yWm9vbT1PaCx0LmV2YWx1YXRlVmFyaWFibGVPZmZzZXQ9eGQsdC5ldmVudGVkPWdzLHQuZXhhY3RFcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXT09PWVbMF0mJnRbMV09PT1lWzFdJiZ0WzJdPT09ZVsyXSYmdFszXT09PWVbM119LHQuZXhhY3RFcXVhbHMkMT1mdW5jdGlvbih0LGUpe3JldHVybiB0WzBdPT09ZVswXSYmdFsxXT09PWVbMV0mJnRbMl09PT1lWzJdfSx0LmV4cG9ydGVkPVh0LHQuZXhwb3J0ZWQkMT1zLHQuZXh0ZW5kPUMsdC5leHRlbmQkMT1lZSx0LmZpbGxFeHRydXNpb25IZWlnaHRMaWZ0PW9oLHQuZmlsdGVyT2JqZWN0PWosdC5mcm9tTWF0ND1mdW5jdGlvbih0LGUpe3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzFdLHRbMl09ZVsyXSx0WzNdPWVbNF0sdFs0XT1lWzVdLHRbNV09ZVs2XSx0WzZdPWVbOF0sdFs3XT1lWzldLHRbOF09ZVsxMF0sdH0sdC5mcm9tUXVhdD1mdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGk9ZVsyXSxzPWVbM10sYT1yK3Isbz1uK24sbD1pK2ksdT1yKmEsYz1uKmEsaD1uKm8scD1pKmEsZD1pKm8sZj1pKmwseT1zKmEsbT1zKm8sZz1zKmw7cmV0dXJuIHRbMF09MS1oLWYsdFsxXT1jK2csdFsyXT1wLW0sdFszXT0wLHRbNF09Yy1nLHRbNV09MS11LWYsdFs2XT1kK3ksdFs3XT0wLHRbOF09cCttLHRbOV09ZC15LHRbMTBdPTEtdS1oLHRbMTFdPTAsdFsxMl09MCx0WzEzXT0wLHRbMTRdPTAsdFsxNV09MSx0fSx0LmZyb21Sb3RhdGlvbj1mdW5jdGlvbih0LGUpe3ZhciByPU1hdGguc2luKGUpLG49TWF0aC5jb3MoZSk7cmV0dXJuIHRbMF09bix0WzFdPXIsdFsyXT0wLHRbM109LXIsdFs0XT1uLHRbNV09MCx0WzZdPTAsdFs3XT0wLHRbOF09MSx0fSx0LmZyb21TY2FsaW5nPWJvLHQuZnVydGhlc3RUaWxlQ29ybmVyPWZ1bmN0aW9uKHQpe2NvbnN0IGU9TWF0aC5yb3VuZCgodCs0NSszNjApJTM2MC85MCklNDtyZXR1cm4gQVtlXX0sdC5nZXRBQUJCUG9pbnRTcXVhcmVEaXN0PWZ1bmN0aW9uKHQsZSxyKXtsZXQgbj0wO2ZvcihsZXQgaT0wO2k8MjsrK2kpe2NvbnN0IHM9cj9yW2ldOjA7dFtpXT5zJiYobis9KHRbaV0tcykqKHRbaV0tcykpLGVbaV08cyYmKG4rPShzLWVbaV0pKihzLWVbaV0pKTt9cmV0dXJuIG59LHQuZ2V0QW5jaG9yQWxpZ25tZW50PVJwLHQuZ2V0QW5jaG9ySnVzdGlmaWNhdGlvbj1iZCx0LmdldEJvdW5kcz1mdW5jdGlvbih0KXtsZXQgZT0xLzAscj0xLzAsbj0tMS8wLGk9LTEvMDtmb3IoY29uc3QgcyBvZiB0KWU9TWF0aC5taW4oZSxzLngpLHI9TWF0aC5taW4ocixzLnkpLG49TWF0aC5tYXgobixzLngpLGk9TWF0aC5tYXgoaSxzLnkpO3JldHVybiB7bWluOm5ldyB4KGUsciksbWF4Om5ldyB4KG4saSl9fSx0LmdldENvbHVtbj1XLHQuZ2V0RGVmYXVsdEV4cG9ydEZyb21DanM9cCx0LmdldEdyaWRNYXRyaXg9ZnVuY3Rpb24odCxlLHIsbil7Y29uc3QgaT1lLmdldE5vcnRoKCkscz1lLmdldFNvdXRoKCksYT1lLmdldFdlc3QoKSxvPWUuZ2V0RWFzdCgpLGw9MTw8dC56LHU9by1hLGM9aS1zLGg9dS91bCxwPS1jL2NsW3JdLGQ9WzAsaCwwLHAsMCwwLGksYSwwXTtpZih0Lno+MCl7Y29uc3QgdD0xODAvbjtobyhkLGQsW3QvdSsxLDAsMCwwLHQvYysxLDAsLS41KnQvaCwuNSp0L3AsMV0pO31yZXR1cm4gZFsyXT1sLGRbNV09dC54LGRbOF09dC55LGR9LHQuZ2V0SW1hZ2U9Z3QsdC5nZXRKU09OPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGh0KEModCx7dHlwZTpcImpzb25cIn0pLGUpfSx0LmdldExhdGl0dWRpbmFsTG9kPWZ1bmN0aW9uKHQpe2NvbnN0IGU9SGwtNTt0PU0odCwtZSxlKS9lKjkwO2NvbnN0IHI9TWF0aC5wb3coTWF0aC5hYnMoTWF0aC5zaW4odyh0KSkpLDMpO3JldHVybiBNYXRoLnJvdW5kKHIqKGNsLmxlbmd0aC0xKSl9LHQuZ2V0TWFwU2Vzc2lvbkFQST1GdCx0LmdldFBlcmZvcm1hbmNlTWVhc3VyZW1lbnQ9cXQsdC5nZXRQcm9qZWN0aW9uPVlkLHQuZ2V0UlRMVGV4dFBsdWdpblN0YXR1cz14cyx0LmdldFJlZmVycmVyPWN0LHQuZ2V0VGlsZVBvaW50PWZ1bmN0aW9uKHQse3g6ZSx5OnJ9LG49MCl7cmV0dXJuIG5ldyB4KCgoZS1uKSp0LnNjYWxlLXQueCkqYW8sKHIqdC5zY2FsZS10LnkpKmFvKX0sdC5nZXRUaWxlVmVjMz1mdW5jdGlvbih0LGUscj0wKXtyZXR1cm4gSW8oKChlLngtcikqdC5zY2FsZS10LngpKmFvLChlLnkqdC5zY2FsZS10LnkpKmFvLEpsKGUueixlLnkpKX0sdC5nZXRWaWRlbz1mdW5jdGlvbih0LHIpe2NvbnN0IG49ZS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidmlkZW9cIik7bi5tdXRlZD0hMCxuLm9ubG9hZHN0YXJ0PWZ1bmN0aW9uKCl7cihudWxsLG4pO307Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2NvbnN0IGk9ZS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic291cmNlXCIpO2R0KHRbcl0pfHwobi5jcm9zc09yaWdpbj1cIkFub255bW91c1wiKSxpLnNyYz10W3JdLG4uYXBwZW5kQ2hpbGQoaSk7fXJldHVybiB7Y2FuY2VsOigpPT57fX19LHQuZ2xvYmVDZW50ZXJUb1NjcmVlblBvaW50PWZ1bmN0aW9uKHQpe2NvbnN0IGU9WzAsMCwwXSxyPXBvKG5ldyBGbG9hdDY0QXJyYXkoMTYpKTtyZXR1cm4geW8ocix0LnBpeGVsTWF0cml4LHQuZ2xvYmVNYXRyaXgpLEZvKGUsZSxyKSxuZXcgeChlWzBdLGVbMV0pfSx0Lmdsb2JlRGVub3JtYWxpemVFQ0VGPUVsLHQuZ2xvYmVFQ0VGT3JpZ2luPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj1bMCwwLDBdO3JldHVybiBGbyhyLHIsQmwoeGwoZS5jYW5vbmljYWwpKSksRm8ocixyLHQpLHJ9LHQuZ2xvYmVNZXRlcnNUb0VjZWY9ZmwsdC5nbG9iZU5vcm1hbGl6ZUVDRUY9QmwsdC5nbG9iZVBpeGVsc1RvVGlsZVVuaXRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFvLyg1MTIqTWF0aC5wb3coMix0KSkqVGwoeGwoZSkpfSx0Lmdsb2JlUG9sZU1hdHJpeEZvclRpbGU9ZnVuY3Rpb24odCxlLHIpe2NvbnN0IG49cG8obmV3IEZsb2F0NjRBcnJheSgxNikpLGk9KGUvKDE8PHQpLS41KSpNYXRoLlBJKjI7cmV0dXJuIHZvKG4sci5nbG9iZU1hdHJpeCxpKSxGbG9hdDMyQXJyYXkuZnJvbShuKX0sdC5nbG9iZVRpbGVCb3VuZHM9eGwsdC5nbG9iZVRpbHRBdExuZ0xhdD1EbCx0Lmdsb2JlVG9NZXJjYXRvclRyYW5zaXRpb249UGwsdC5nbG9iZVVzZUN1c3RvbUFudGlBbGlhc2luZz1mdW5jdGlvbih0LGUscil7Y29uc3Qgbj1QbChyLnpvb20pLGk9dC5zdHlsZS5tYXAuX2FudGlhbGlhcyxzPSEhZS5leHRTdGFuZGFyZERlcml2YXRpdmVzLGE9ZS5leHRTdGFuZGFyZERlcml2YXRpdmVzRm9yY2VPZmZ8fHQudGVycmFpbiYmdC50ZXJyYWluLmV4YWdnZXJhdGlvbigpPjA7cmV0dXJuIDA9PT1uJiYhaSYmIWEmJnN9LHQuaWRlbnRpdHk9cG8sdC5pZGVudGl0eSQxPUtvLHQuaW52ZXJ0PWZvLHQuaXNGdWxsc2NyZWVuPWZ1bmN0aW9uKCl7cmV0dXJuICEhZS5kb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudHx8ISFlLmRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50fSx0LmlzTG5nTGF0QmVoaW5kR2xvYmU9VmwsdC5pc01hcEF1dGhlbnRpY2F0ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIFJ0Lmhhcyh0KX0sdC5pc01hcGJveFVSTD12dCx0LmlzU2FmYXJpV2l0aEFudGlhbGlhc2luZ0J1Zz1mdW5jdGlvbih0KXtjb25zdCBlPXQubmF2aWdhdG9yP3QubmF2aWdhdG9yLnVzZXJBZ2VudDpudWxsO3JldHVybiAhIUgodCkmJmUmJihlLm1hdGNoKFwiVmVyc2lvbi8xNS40XCIpfHxlLm1hdGNoKFwiVmVyc2lvbi8xNS41XCIpfHxlLm1hdGNoKC9DUFUgKE9TfGlQaG9uZSBPUykgKDE1XzR8MTVfNSkgbGlrZSBNYWMgT1MgWC8pKX0sdC5sYXRGcm9tTWVyY2F0b3JZPVhsLHQubGF0TG5nVG9FQ0VGPUlsLHQubGVuPU9vLHQubGVuZ3RoPWtvLHQubGVuZ3RoJDE9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguaHlwb3QodFswXSx0WzFdLHRbMl0sdFszXSl9LHQubG5nRnJvbU1lcmNhdG9yWD1LbCx0LmxvYWRWZWN0b3JUaWxlPXl5LHQubWFrZVJlcXVlc3Q9aHQsdC5tYXBWYWx1ZT1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiBNKCh0LWUpLyhyLWUpKihpLW4pK24sbixpKX0sdC5tZXJjYXRvclNjYWxlPVlsLHQubWVyY2F0b3JYZnJvbUxuZz1ObCx0Lm1lcmNhdG9yWWZyb21MYXQ9R2wsdC5tZXJjYXRvclpmcm9tQWx0aXR1ZGU9WmwsdC5tdWw9X28sdC5tdWwkMT1qbyx0Lm11bHRpcGx5PXlvLHQubXVsdGlwbHkkMT1obyx0Lm11bHRpcGx5JDI9em8sdC5uZXh0UG93ZXJPZlR3bz1MLHQubm9ybWFsaXplPURvLHQubm9ybWFsaXplJDE9SG8sdC5ub3JtYWxpemUkMj1Obyx0Lm51bWJlcj1Fcix0Lm9ydGhvPWZ1bmN0aW9uKHQsZSxyLG4saSxzLGEpe3ZhciBvPTEvKGUtciksbD0xLyhuLWkpLHU9MS8ocy1hKTtyZXR1cm4gdFswXT0tMipvLHRbMV09MCx0WzJdPTAsdFszXT0wLHRbNF09MCx0WzVdPS0yKmwsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPTIqdSx0WzExXT0wLHRbMTJdPShlK3IpKm8sdFsxM109KGkrbikqbCx0WzE0XT0oYStzKSp1LHRbMTVdPTEsdH0sdC5wYmY9WGgsdC5wZXJzcGVjdGl2ZT1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBzLGE9MS9NYXRoLnRhbihlLzIpO3JldHVybiB0WzBdPWEvcix0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRdPTAsdFs1XT1hLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzExXT0tMSx0WzEyXT0wLHRbMTNdPTAsdFsxNV09MCxudWxsIT1pJiZpIT09MS8wPyh0WzEwXT0oaStuKSoocz0xLyhuLWkpKSx0WzE0XT0yKmkqbipzKToodFsxMF09LTEsdFsxNF09LTIqbiksdH0sdC5waWNrPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj17fTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3QgaT1lW25dO2kgaW4gdCYmKHJbaV09dFtpXSk7fXJldHVybiByfSx0LnBsdWdpbj1icyx0LnBvaW50R2VvbWV0cnk9bSx0LnBvbGVzSW5WaWV3cG9ydD1mdW5jdGlvbih0KXtjb25zdCBlPXBvKG5ldyBGbG9hdDY0QXJyYXkoMTYpKTt5byhlLHQucGl4ZWxNYXRyaXgsdC5nbG9iZU1hdHJpeCk7Y29uc3Qgcj1bMCxobCwwXSxuPVswLHBsLDBdO3JldHVybiBGbyhyLHIsZSksRm8obixuLGUpLFtyWzBdPjAmJnJbMF08PXQud2lkdGgmJnJbMV0+MCYmclsxXTw9dC5oZWlnaHQmJiFWbCh0LG5ldyBPbCh0LmNlbnRlci5sYXQsOTApKSxuWzBdPjAmJm5bMF08PXQud2lkdGgmJm5bMV0+MCYmblsxXTw9dC5oZWlnaHQmJiFWbCh0LG5ldyBPbCh0LmNlbnRlci5sYXQsLTkwKSldfSx0LnBvbHlnb25Db250YWluc1BvaW50PWJ1LHQucG9seWdvbkludGVyc2VjdHNCb3g9d3UsdC5wb2x5Z29uSW50ZXJzZWN0c1BvbHlnb249aHUsdC5wb2x5Z29uaXplQm91bmRzPWZ1bmN0aW9uKHQsZSxyPTAsbj0hMCl7Y29uc3QgaT1uZXcgeChyLHIpLHM9dC5zdWIoaSksYT1lLmFkZChpKSxvPVtzLG5ldyB4KGEueCxzLnkpLGEsbmV3IHgocy54LGEueSldO3JldHVybiBuJiZvLnB1c2gocy5jbG9uZSgpKSxvfSx0LnBvc0F0dHJpYnV0ZXM9dGwsdC5wb3N0TWFwTG9hZEV2ZW50PVB0LHQucG9zdFBlcmZvcm1hbmNlRXZlbnQ9VnQsdC5wb3N0VHVybnN0aWxlRXZlbnQ9RXQsdC5wb3RwYWNrPV9wLHQucHJldlBvd2VyT2ZUd289ZnVuY3Rpb24odCl7cmV0dXJuIHQ8PTE/MTpNYXRoLnBvdygyLE1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpKX0sdC5yYWRUb0RlZz1fLHQucmVmUHJvcGVydGllcz1bXCJ0eXBlXCIsXCJzb3VyY2VcIixcInNvdXJjZS1sYXllclwiLFwibWluem9vbVwiLFwibWF4em9vbVwiLFwiZmlsdGVyXCIsXCJsYXlvdXRcIl0sdC5yZWdpc3RlckZvclBsdWdpblN0YXRlQ2hhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiB0KHtwbHVnaW5TdGF0dXM6ZHMscGx1Z2luVVJMOmZzfSksZ3Mub24oXCJwbHVnaW5TdGF0ZUNoYW5nZVwiLHQpLHR9LHQucmVtb3ZlQXV0aFN0YXRlPWZ1bmN0aW9uKHQpe1J0LmRlbGV0ZSh0KTt9LHQucmVuZGVyQ29sb3JSYW1wPWp1LHQucmVzYW1wbGU9dHUsdC5yb3RhdGVYPXhvLHQucm90YXRlWCQxPVhvLHQucm90YXRlWT12byx0LnJvdGF0ZVkkMT1Kbyx0LnJvdGF0ZVo9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPU1hdGguc2luKHIpLGk9TWF0aC5jb3Mocikscz1lWzBdLGE9ZVsxXSxvPWVbMl0sbD1lWzNdLHU9ZVs0XSxjPWVbNV0saD1lWzZdLHA9ZVs3XTtyZXR1cm4gZSE9PXQmJih0WzhdPWVbOF0sdFs5XT1lWzldLHRbMTBdPWVbMTBdLHRbMTFdPWVbMTFdLHRbMTJdPWVbMTJdLHRbMTNdPWVbMTNdLHRbMTRdPWVbMTRdLHRbMTVdPWVbMTVdKSx0WzBdPXMqaSt1Km4sdFsxXT1hKmkrYypuLHRbMl09byppK2gqbix0WzNdPWwqaStwKm4sdFs0XT11KmktcypuLHRbNV09YyppLWEqbix0WzZdPWgqaS1vKm4sdFs3XT1wKmktbCpuLHR9LHQucm90YXRlWiQxPWZ1bmN0aW9uKHQsZSxyKXtyKj0uNTt2YXIgbj1lWzBdLGk9ZVsxXSxzPWVbMl0sYT1lWzNdLG89TWF0aC5zaW4ociksbD1NYXRoLmNvcyhyKTtyZXR1cm4gdFswXT1uKmwraSpvLHRbMV09aSpsLW4qbyx0WzJdPXMqbCthKm8sdFszXT1hKmwtcypvLHR9LHQuc2NhbGU9Z28sdC5zY2FsZSQxPXFvLHQuc2NhbGUkMj1Dbyx0LnNjYWxlQW5kQWRkPVBvLHQuc2V0PWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0WzBdPWUsdFsxXT1yLHRbMl09bix0fSx0LnNldENhY2hlTGltaXRzPWZ1bmN0aW9uKHQsZSl7dHQ9dCxldD1lO30sdC5zZXRDb2x1bW49ZnVuY3Rpb24odCxlLHIpe3RbNCplKzBdPXJbMF0sdFs0KmUrMV09clsxXSx0WzQqZSsyXT1yWzJdLHRbNCplKzNdPXJbM107fSx0LnNldFJUTFRleHRQbHVnaW49ZnVuY3Rpb24odCxlLHI9ITEpe2lmKGRzPT09dXN8fGRzPT09Y3N8fGRzPT09aHMpdGhyb3cgbmV3IEVycm9yKFwic2V0UlRMVGV4dFBsdWdpbiBjYW5ub3QgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLlwiKTtmcz1YdC5yZXNvbHZlVVJMKHQpLGRzPXVzLHBzPWUsbXMoKSxyfHx2cygpO30sdC5zbW9vdGhzdGVwPVQsdC5zcGVjPXRlLHQuc3F1YXJlZExlbmd0aD1mdW5jdGlvbih0KXt2YXIgZT10WzBdLHI9dFsxXSxuPXRbMl07cmV0dXJuIGUqZStyKnIrbipufSx0LnN0b3JlQXV0aFN0YXRlPWZ1bmN0aW9uKHQsZSl7ZT9SdC5hZGQodCk6UnQuZGVsZXRlKHQpO30sdC5zdWI9JG8sdC5zdWJ0cmFjdD1Ubyx0LnN5bWJvbFNpemU9cWgsdC50aWxlQUFCQj1mdW5jdGlvbih0LGUscixuLGkscyxhLG8sbCl7aWYoXCJnbG9iZVwiPT09bC5uYW1lKXJldHVybiBfbCh0LGUsbmV3IHBoKHIsbixpKSk7Y29uc3QgdT1CZCh7ejpyLHg6bix5Oml9LGwpO3JldHVybiBuZXcgaWwoWyhzK3UueC91LnNjYWxlKSplLGUqKHUueS91LnNjYWxlKSxhXSxbKHMrdS54Mi91LnNjYWxlKSplLGUqKHUueTIvdS5zY2FsZSksb10pfSx0LnRpbGVDb3JuZXJzVG9Cb3VuZHM9QWwsdC50aWxlVHJhbnNmb3JtPUJkLHQudHJhbnNmb3JtTWF0Mz1mdW5jdGlvbih0LGUscil7dmFyIG49ZVswXSxpPWVbMV0scz1lWzJdO3JldHVybiB0WzBdPW4qclswXStpKnJbM10rcypyWzZdLHRbMV09bipyWzFdK2kqcls0XStzKnJbN10sdFsyXT1uKnJbMl0raSpyWzVdK3Mqcls4XSx0fSx0LnRyYW5zZm9ybU1hdDQ9Rm8sdC50cmFuc2Zvcm1NYXQ0JDE9R28sdC50cmFuc2Zvcm1RdWF0PVJvLHQudHJhbnNpdGlvblRpbGVBQUJCaW5FQ0VGPWJsLHQudHJhbnNsYXRlPW1vLHQudHJhbnNwb3NlPWZ1bmN0aW9uKHQsZSl7aWYodD09PWUpe3ZhciByPWVbMV0sbj1lWzJdLGk9ZVs1XTt0WzFdPWVbM10sdFsyXT1lWzZdLHRbM109cix0WzVdPWVbN10sdFs2XT1uLHRbN109aTt9ZWxzZSB0WzBdPWVbMF0sdFsxXT1lWzNdLHRbMl09ZVs2XSx0WzNdPWVbMV0sdFs0XT1lWzRdLHRbNV09ZVs3XSx0WzZdPWVbMl0sdFs3XT1lWzVdLHRbOF09ZVs4XTtyZXR1cm4gdH0sdC50cmlnZ2VyUGx1Z2luQ29tcGxldGlvbkV2ZW50PXlzLHQudW5pcXVlSWQ9RCx0LnVwZGF0ZUdsb2JlVmVydGV4Tm9ybWFsPWZ1bmN0aW9uKHQsZSxyLG4saSl7Y29uc3Qgcz01KmUrMjt0LmZsb2F0MzJbcyswXT1yLHQuZmxvYXQzMltzKzFdPW4sdC5mbG9hdDMyW3MrMl09aTt9LHQudmFsaWRhdGVDdXN0b21TdHlsZUxheWVyPWZ1bmN0aW9uKHQpe2NvbnN0IGU9W10scj10LmlkO3JldHVybiB2b2lkIDA9PT1yJiZlLnB1c2goe21lc3NhZ2U6YGxheWVycy4ke3J9OiBtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IFwiaWRcImB9KSx2b2lkIDA9PT10LnJlbmRlciYmZS5wdXNoKHttZXNzYWdlOmBsYXllcnMuJHtyfTogbWlzc2luZyByZXF1aXJlZCBtZXRob2QgXCJyZW5kZXJcImB9KSx0LnJlbmRlcmluZ01vZGUmJlwiMmRcIiE9PXQucmVuZGVyaW5nTW9kZSYmXCIzZFwiIT09dC5yZW5kZXJpbmdNb2RlJiZlLnB1c2goe21lc3NhZ2U6YGxheWVycy4ke3J9OiBwcm9wZXJ0eSBcInJlbmRlcmluZ01vZGVcIiBtdXN0IGJlIGVpdGhlciBcIjJkXCIgb3IgXCIzZFwiYH0pLGV9LHQudmFsaWRhdGVGaWx0ZXI9dD0+T2koQWkodCkpLHQudmFsaWRhdGVGb2c9dD0+T2koVmkodCkpLHQudmFsaWRhdGVMYXllcj10PT5PaShUaSh0KSksdC52YWxpZGF0ZUxpZ2h0PXQ9Pk9pKFBpKHQpKSx0LnZhbGlkYXRlU291cmNlPXQ9Pk9pKEVpKHQpKSx0LnZhbGlkYXRlU3R5bGU9VWksdC52YWxpZGF0ZVRlcnJhaW49dD0+T2koRGkodCkpLHQudmFsdWVzPUUsdC52ZWN0b3JUaWxlPURjLHQudmVyc2lvbj1yLHQud2Fybk9uY2U9Tix0LndpbmRvdz1lLHQud3JhcD16O30pKTtcblxuZGVmaW5lKFtcIi4vc2hhcmVkXCJdLChmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiB0KGUpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlfHxcImJvb2xlYW5cIj09dHlwZW9mIGV8fFwic3RyaW5nXCI9PXR5cGVvZiBlfHxudWxsPT1lKXJldHVybiBKU09OLnN0cmluZ2lmeShlKTtpZihBcnJheS5pc0FycmF5KGUpKXtsZXQgcj1cIltcIjtmb3IoY29uc3QgbyBvZiBlKXIrPWAke3Qobyl9LGA7cmV0dXJuIGAke3J9XWB9bGV0IHI9XCJ7XCI7Zm9yKGNvbnN0IG8gb2YgT2JqZWN0LmtleXMoZSkuc29ydCgpKXIrPWAke299OiR7dChlW29dKX0sYDtyZXR1cm4gYCR7cn19YH1mdW5jdGlvbiByKHIpe2xldCBvPVwiXCI7Zm9yKGNvbnN0IGkgb2YgZS5yZWZQcm9wZXJ0aWVzKW8rPWAvJHt0KHJbaV0pfWA7cmV0dXJuIG99Y2xhc3Mgb3tjb25zdHJ1Y3RvcihlKXt0aGlzLmtleUNhY2hlPXt9LGUmJnRoaXMucmVwbGFjZShlKTt9cmVwbGFjZShlKXt0aGlzLl9sYXllckNvbmZpZ3M9e30sdGhpcy5fbGF5ZXJzPXt9LHRoaXMudXBkYXRlKGUsW10pO311cGRhdGUodCxvKXtmb3IoY29uc3QgciBvZiB0KXRoaXMuX2xheWVyQ29uZmlnc1tyLmlkXT1yLCh0aGlzLl9sYXllcnNbci5pZF09ZS5jcmVhdGVTdHlsZUxheWVyKHIpKS5jb21waWxlRmlsdGVyKCksdGhpcy5rZXlDYWNoZVtyLmlkXSYmZGVsZXRlIHRoaXMua2V5Q2FjaGVbci5pZF07Zm9yKGNvbnN0IGUgb2YgbylkZWxldGUgdGhpcy5rZXlDYWNoZVtlXSxkZWxldGUgdGhpcy5fbGF5ZXJDb25maWdzW2VdLGRlbGV0ZSB0aGlzLl9sYXllcnNbZV07dGhpcy5mYW1pbGllc0J5U291cmNlPXt9O2NvbnN0IGk9ZnVuY3Rpb24oZSx0KXtjb25zdCBvPXt9O2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXtjb25zdCBuPXQmJnRbZVtpXS5pZF18fHIoZVtpXSk7dCYmKHRbZVtpXS5pZF09bik7bGV0IHM9b1tuXTtzfHwocz1vW25dPVtdKSxzLnB1c2goZVtpXSk7fWNvbnN0IGk9W107Zm9yKGNvbnN0IGUgaW4gbylpLnB1c2gob1tlXSk7cmV0dXJuIGl9KGUudmFsdWVzKHRoaXMuX2xheWVyQ29uZmlncyksdGhpcy5rZXlDYWNoZSk7Zm9yKGNvbnN0IGUgb2YgaSl7Y29uc3QgdD1lLm1hcCgoZT0+dGhpcy5fbGF5ZXJzW2UuaWRdKSkscj10WzBdO2lmKFwibm9uZVwiPT09ci52aXNpYmlsaXR5KWNvbnRpbnVlO2NvbnN0IG89ci5zb3VyY2V8fFwiXCI7bGV0IGk9dGhpcy5mYW1pbGllc0J5U291cmNlW29dO2l8fChpPXRoaXMuZmFtaWxpZXNCeVNvdXJjZVtvXT17fSk7Y29uc3Qgbj1yLnNvdXJjZUxheWVyfHxcIl9nZW9qc29uVGlsZUxheWVyXCI7bGV0IHM9aVtuXTtzfHwocz1pW25dPVtdKSxzLnB1c2godCk7fX19Y2xhc3MgaXtsb2FkVGlsZSh0LHIpe2NvbnN0e3VpZDpvLGVuY29kaW5nOmkscmF3SW1hZ2VEYXRhOm4scGFkZGluZzpzLGJ1aWxkUXVhZFRyZWU6YX09dCxsPWUud2luZG93LkltYWdlQml0bWFwJiZuIGluc3RhbmNlb2YgZS53aW5kb3cuSW1hZ2VCaXRtYXA/dGhpcy5nZXRJbWFnZURhdGEobixzKTpuO3IobnVsbCxuZXcgZS5ERU1EYXRhKG8sbCxpLHM8MSxhKSk7fWdldEltYWdlRGF0YShlLHQpe3RoaXMub2Zmc2NyZWVuQ2FudmFzJiZ0aGlzLm9mZnNjcmVlbkNhbnZhc0NvbnRleHR8fCh0aGlzLm9mZnNjcmVlbkNhbnZhcz1uZXcgT2Zmc2NyZWVuQ2FudmFzKGUud2lkdGgsZS5oZWlnaHQpLHRoaXMub2Zmc2NyZWVuQ2FudmFzQ29udGV4dD10aGlzLm9mZnNjcmVlbkNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkpLHRoaXMub2Zmc2NyZWVuQ2FudmFzLndpZHRoPWUud2lkdGgsdGhpcy5vZmZzY3JlZW5DYW52YXMuaGVpZ2h0PWUuaGVpZ2h0LHRoaXMub2Zmc2NyZWVuQ2FudmFzQ29udGV4dC5kcmF3SW1hZ2UoZSwwLDAsZS53aWR0aCxlLmhlaWdodCk7Y29uc3Qgcj10aGlzLm9mZnNjcmVlbkNhbnZhc0NvbnRleHQuZ2V0SW1hZ2VEYXRhKC10LC10LGUud2lkdGgrMip0LGUuaGVpZ2h0KzIqdCk7cmV0dXJuIHRoaXMub2Zmc2NyZWVuQ2FudmFzQ29udGV4dC5jbGVhclJlY3QoMCwwLHRoaXMub2Zmc2NyZWVuQ2FudmFzLndpZHRoLHRoaXMub2Zmc2NyZWVuQ2FudmFzLmhlaWdodCkscn19ZnVuY3Rpb24gbihlLHQpe2lmKDAhPT1lLmxlbmd0aCl7cyhlWzBdLHQpO2Zvcih2YXIgcj0xO3I8ZS5sZW5ndGg7cisrKXMoZVtyXSwhdCk7fX1mdW5jdGlvbiBzKGUsdCl7Zm9yKHZhciByPTAsbz0wLGk9MCxuPWUubGVuZ3RoLHM9bi0xO2k8bjtzPWkrKyl7dmFyIGE9KGVbaV1bMF0tZVtzXVswXSkqKGVbc11bMV0rZVtpXVsxXSksbD1yK2E7bys9TWF0aC5hYnMocik+PU1hdGguYWJzKGEpP3ItbCthOmEtbCtyLHI9bDt9citvPj0wIT0hIXQmJmUucmV2ZXJzZSgpO312YXIgYT1lLmdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKChmdW5jdGlvbiBlKHQscil7dmFyIG8saT10JiZ0LnR5cGU7aWYoXCJGZWF0dXJlQ29sbGVjdGlvblwiPT09aSlmb3Iobz0wO288dC5mZWF0dXJlcy5sZW5ndGg7bysrKWUodC5mZWF0dXJlc1tvXSxyKTtlbHNlIGlmKFwiR2VvbWV0cnlDb2xsZWN0aW9uXCI9PT1pKWZvcihvPTA7bzx0Lmdlb21ldHJpZXMubGVuZ3RoO28rKyllKHQuZ2VvbWV0cmllc1tvXSxyKTtlbHNlIGlmKFwiRmVhdHVyZVwiPT09aSllKHQuZ2VvbWV0cnkscik7ZWxzZSBpZihcIlBvbHlnb25cIj09PWkpbih0LmNvb3JkaW5hdGVzLHIpO2Vsc2UgaWYoXCJNdWx0aVBvbHlnb25cIj09PWkpZm9yKG89MDtvPHQuY29vcmRpbmF0ZXMubGVuZ3RoO28rKyluKHQuY29vcmRpbmF0ZXNbb10scik7cmV0dXJuIHR9KSk7Y29uc3QgbD1lLlZlY3RvclRpbGVGZWF0dXJlLnByb3RvdHlwZS50b0dlb0pTT047dmFyIHU9e2V4cG9ydHM6e319LGg9ZS5wb2ludEdlb21ldHJ5LGM9ZS52ZWN0b3JUaWxlLlZlY3RvclRpbGVGZWF0dXJlLGY9cDtmdW5jdGlvbiBwKGUsdCl7dGhpcy5vcHRpb25zPXR8fHt9LHRoaXMuZmVhdHVyZXM9ZSx0aGlzLmxlbmd0aD1lLmxlbmd0aDt9ZnVuY3Rpb24gZyhlLHQpe3RoaXMuaWQ9XCJudW1iZXJcIj09dHlwZW9mIGUuaWQ/ZS5pZDp2b2lkIDAsdGhpcy50eXBlPWUudHlwZSx0aGlzLnJhd0dlb21ldHJ5PTE9PT1lLnR5cGU/W2UuZ2VvbWV0cnldOmUuZ2VvbWV0cnksdGhpcy5wcm9wZXJ0aWVzPWUudGFncyx0aGlzLmV4dGVudD10fHw0MDk2O31wLnByb3RvdHlwZS5mZWF0dXJlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZyh0aGlzLmZlYXR1cmVzW2VdLHRoaXMub3B0aW9ucy5leHRlbnQpfSxnLnByb3RvdHlwZS5sb2FkR2VvbWV0cnk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJhd0dlb21ldHJ5O3RoaXMuZ2VvbWV0cnk9W107Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe2Zvcih2YXIgcj1lW3RdLG89W10saT0wO2k8ci5sZW5ndGg7aSsrKW8ucHVzaChuZXcgaChyW2ldWzBdLHJbaV1bMV0pKTt0aGlzLmdlb21ldHJ5LnB1c2gobyk7fXJldHVybiB0aGlzLmdlb21ldHJ5fSxnLnByb3RvdHlwZS5iYm94PWZ1bmN0aW9uKCl7dGhpcy5nZW9tZXRyeXx8dGhpcy5sb2FkR2VvbWV0cnkoKTtmb3IodmFyIGU9dGhpcy5nZW9tZXRyeSx0PTEvMCxyPS0xLzAsbz0xLzAsaT0tMS8wLG49MDtuPGUubGVuZ3RoO24rKylmb3IodmFyIHM9ZVtuXSxhPTA7YTxzLmxlbmd0aDthKyspe3ZhciBsPXNbYV07dD1NYXRoLm1pbih0LGwueCkscj1NYXRoLm1heChyLGwueCksbz1NYXRoLm1pbihvLGwueSksaT1NYXRoLm1heChpLGwueSk7fXJldHVybiBbdCxvLHIsaV19LGcucHJvdG90eXBlLnRvR2VvSlNPTj1jLnByb3RvdHlwZS50b0dlb0pTT047dmFyIGQ9ZS5wYmYsbT1mO2Z1bmN0aW9uIHkoZSl7dmFyIHQ9bmV3IGQ7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIGUubGF5ZXJzKXQud3JpdGVNZXNzYWdlKDMsdixlLmxheWVyc1tyXSk7fShlLHQpLHQuZmluaXNoKCl9ZnVuY3Rpb24gdihlLHQpe3ZhciByO3Qud3JpdGVWYXJpbnRGaWVsZCgxNSxlLnZlcnNpb258fDEpLHQud3JpdGVTdHJpbmdGaWVsZCgxLGUubmFtZXx8XCJcIiksdC53cml0ZVZhcmludEZpZWxkKDUsZS5leHRlbnR8fDQwOTYpO3ZhciBvPXtrZXlzOltdLHZhbHVlczpbXSxrZXljYWNoZTp7fSx2YWx1ZWNhY2hlOnt9fTtmb3Iocj0wO3I8ZS5sZW5ndGg7cisrKW8uZmVhdHVyZT1lLmZlYXR1cmUociksdC53cml0ZU1lc3NhZ2UoMix4LG8pO3ZhciBpPW8ua2V5cztmb3Iocj0wO3I8aS5sZW5ndGg7cisrKXQud3JpdGVTdHJpbmdGaWVsZCgzLGlbcl0pO3ZhciBuPW8udmFsdWVzO2ZvcihyPTA7cjxuLmxlbmd0aDtyKyspdC53cml0ZU1lc3NhZ2UoNCxiLG5bcl0pO31mdW5jdGlvbiB4KGUsdCl7dmFyIHI9ZS5mZWF0dXJlO3ZvaWQgMCE9PXIuaWQmJnQud3JpdGVWYXJpbnRGaWVsZCgxLHIuaWQpLHQud3JpdGVNZXNzYWdlKDIsdyxlKSx0LndyaXRlVmFyaW50RmllbGQoMyxyLnR5cGUpLHQud3JpdGVNZXNzYWdlKDQsUCxyKTt9ZnVuY3Rpb24gdyhlLHQpe3ZhciByPWUuZmVhdHVyZSxvPWUua2V5cyxpPWUudmFsdWVzLG49ZS5rZXljYWNoZSxzPWUudmFsdWVjYWNoZTtmb3IodmFyIGEgaW4gci5wcm9wZXJ0aWVzKXt2YXIgbD1yLnByb3BlcnRpZXNbYV0sdT1uW2FdO2lmKG51bGwhPT1sKXt2b2lkIDA9PT11JiYoby5wdXNoKGEpLG5bYV09dT1vLmxlbmd0aC0xKSx0LndyaXRlVmFyaW50KHUpO3ZhciBoPXR5cGVvZiBsO1wic3RyaW5nXCIhPT1oJiZcImJvb2xlYW5cIiE9PWgmJlwibnVtYmVyXCIhPT1oJiYobD1KU09OLnN0cmluZ2lmeShsKSk7dmFyIGM9aCtcIjpcIitsLGY9c1tjXTt2b2lkIDA9PT1mJiYoaS5wdXNoKGwpLHNbY109Zj1pLmxlbmd0aC0xKSx0LndyaXRlVmFyaW50KGYpO319fWZ1bmN0aW9uIFMoZSx0KXtyZXR1cm4gKHQ8PDMpKyg3JmUpfWZ1bmN0aW9uIE0oZSl7cmV0dXJuIGU8PDFeZT4+MzF9ZnVuY3Rpb24gUChlLHQpe2Zvcih2YXIgcj1lLmxvYWRHZW9tZXRyeSgpLG89ZS50eXBlLGk9MCxuPTAscz1yLmxlbmd0aCxhPTA7YTxzO2ErKyl7dmFyIGw9clthXSx1PTE7MT09PW8mJih1PWwubGVuZ3RoKSx0LndyaXRlVmFyaW50KFMoMSx1KSk7Zm9yKHZhciBoPTM9PT1vP2wubGVuZ3RoLTE6bC5sZW5ndGgsYz0wO2M8aDtjKyspezE9PT1jJiYxIT09byYmdC53cml0ZVZhcmludChTKDIsaC0xKSk7dmFyIGY9bFtjXS54LWkscD1sW2NdLnktbjt0LndyaXRlVmFyaW50KE0oZikpLHQud3JpdGVWYXJpbnQoTShwKSksaSs9ZixuKz1wO30zPT09byYmdC53cml0ZVZhcmludChTKDcsMSkpO319ZnVuY3Rpb24gYihlLHQpe3ZhciByPXR5cGVvZiBlO1wic3RyaW5nXCI9PT1yP3Qud3JpdGVTdHJpbmdGaWVsZCgxLGUpOlwiYm9vbGVhblwiPT09cj90LndyaXRlQm9vbGVhbkZpZWxkKDcsZSk6XCJudW1iZXJcIj09PXImJihlJTEhPTA/dC53cml0ZURvdWJsZUZpZWxkKDMsZSk6ZTwwP3Qud3JpdGVTVmFyaW50RmllbGQoNixlKTp0LndyaXRlVmFyaW50RmllbGQoNSxlKSk7fXUuZXhwb3J0cz15LHUuZXhwb3J0cy5mcm9tVmVjdG9yVGlsZUpzPXksdS5leHBvcnRzLmZyb21HZW9qc29uVnQ9ZnVuY3Rpb24oZSx0KXt0PXR8fHt9O3ZhciByPXt9O2Zvcih2YXIgbyBpbiBlKXJbb109bmV3IG0oZVtvXS5mZWF0dXJlcyx0KSxyW29dLm5hbWU9byxyW29dLnZlcnNpb249dC52ZXJzaW9uLHJbb10uZXh0ZW50PXQuZXh0ZW50O3JldHVybiB5KHtsYXllcnM6cn0pfSx1LmV4cG9ydHMuR2VvSlNPTldyYXBwZXI9bTt2YXIgVD1lLmdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHUuZXhwb3J0cyk7Y29uc3Qgaz17bWluWm9vbTowLG1heFpvb206MTYsbWluUG9pbnRzOjIscmFkaXVzOjQwLGV4dGVudDo1MTIsbm9kZVNpemU6NjQsbG9nOiExLGdlbmVyYXRlSWQ6ITEscmVkdWNlOm51bGwsbWFwOmU9PmV9LEk9TWF0aC5mcm91bmR8fChfPW5ldyBGbG9hdDMyQXJyYXkoMSksZT0+KF9bMF09K2UsX1swXSkpO3ZhciBfO2NvbnN0IEM9MyxMPTUsTz02O2NsYXNzIEV7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShrKSxlKSx0aGlzLnRyZWVzPW5ldyBBcnJheSh0aGlzLm9wdGlvbnMubWF4Wm9vbSsxKSx0aGlzLnN0cmlkZT10aGlzLm9wdGlvbnMucmVkdWNlPzc6Nix0aGlzLmNsdXN0ZXJQcm9wcz1bXTt9bG9hZChlKXtjb25zdHtsb2c6dCxtaW5ab29tOnIsbWF4Wm9vbTpvfT10aGlzLm9wdGlvbnM7dCYmY29uc29sZS50aW1lKFwidG90YWwgdGltZVwiKTtjb25zdCBpPWBwcmVwYXJlICR7ZS5sZW5ndGh9IHBvaW50c2A7dCYmY29uc29sZS50aW1lKGkpLHRoaXMucG9pbnRzPWU7Y29uc3Qgbj1bXTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgcj1lW3RdO2lmKCFyLmdlb21ldHJ5KWNvbnRpbnVlO2NvbnN0W28saV09ci5nZW9tZXRyeS5jb29yZGluYXRlcyxzPUkoTihvKSksYT1JKFooaSkpO24ucHVzaChzLGEsMS8wLHQsLTEsMSksdGhpcy5vcHRpb25zLnJlZHVjZSYmbi5wdXNoKDApO31sZXQgcz10aGlzLnRyZWVzW28rMV09dGhpcy5fY3JlYXRlVHJlZShuKTt0JiZjb25zb2xlLnRpbWVFbmQoaSk7Zm9yKGxldCBlPW87ZT49cjtlLS0pe2NvbnN0IHI9K0RhdGUubm93KCk7cz10aGlzLnRyZWVzW2VdPXRoaXMuX2NyZWF0ZVRyZWUodGhpcy5fY2x1c3RlcihzLGUpKSx0JiZjb25zb2xlLmxvZyhcInolZDogJWQgY2x1c3RlcnMgaW4gJWRtc1wiLGUscy5udW1JdGVtcywrRGF0ZS5ub3coKS1yKTt9cmV0dXJuIHQmJmNvbnNvbGUudGltZUVuZChcInRvdGFsIHRpbWVcIiksdGhpc31nZXRDbHVzdGVycyhlLHQpe2xldCByPSgoZVswXSsxODApJTM2MCszNjApJTM2MC0xODA7Y29uc3Qgbz1NYXRoLm1heCgtOTAsTWF0aC5taW4oOTAsZVsxXSkpO2xldCBpPTE4MD09PWVbMl0/MTgwOigoZVsyXSsxODApJTM2MCszNjApJTM2MC0xODA7Y29uc3Qgbj1NYXRoLm1heCgtOTAsTWF0aC5taW4oOTAsZVszXSkpO2lmKGVbMl0tZVswXT49MzYwKXI9LTE4MCxpPTE4MDtlbHNlIGlmKHI+aSl7Y29uc3QgZT10aGlzLmdldENsdXN0ZXJzKFtyLG8sMTgwLG5dLHQpLHM9dGhpcy5nZXRDbHVzdGVycyhbLTE4MCxvLGksbl0sdCk7cmV0dXJuIGUuY29uY2F0KHMpfWNvbnN0IHM9dGhpcy50cmVlc1t0aGlzLl9saW1pdFpvb20odCldLGE9cy5yYW5nZShOKHIpLFoobiksTihpKSxaKG8pKSxsPXMuZGF0YSx1PVtdO2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0IHQ9dGhpcy5zdHJpZGUqZTt1LnB1c2gobFt0K0xdPjE/aihsLHQsdGhpcy5jbHVzdGVyUHJvcHMpOnRoaXMucG9pbnRzW2xbdCtDXV0pO31yZXR1cm4gdX1nZXRDaGlsZHJlbihlKXtjb25zdCB0PXRoaXMuX2dldE9yaWdpbklkKGUpLHI9dGhpcy5fZ2V0T3JpZ2luWm9vbShlKSxvPVwiTm8gY2x1c3RlciB3aXRoIHRoZSBzcGVjaWZpZWQgaWQuXCIsaT10aGlzLnRyZWVzW3JdO2lmKCFpKXRocm93IG5ldyBFcnJvcihvKTtjb25zdCBuPWkuZGF0YTtpZih0KnRoaXMuc3RyaWRlPj1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3Iobyk7Y29uc3Qgcz10aGlzLm9wdGlvbnMucmFkaXVzLyh0aGlzLm9wdGlvbnMuZXh0ZW50Kk1hdGgucG93KDIsci0xKSksYT1pLndpdGhpbihuW3QqdGhpcy5zdHJpZGVdLG5bdCp0aGlzLnN0cmlkZSsxXSxzKSxsPVtdO2Zvcihjb25zdCB0IG9mIGEpe2NvbnN0IHI9dCp0aGlzLnN0cmlkZTtuW3IrNF09PT1lJiZsLnB1c2gobltyK0xdPjE/aihuLHIsdGhpcy5jbHVzdGVyUHJvcHMpOnRoaXMucG9pbnRzW25bcitDXV0pO31pZigwPT09bC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKG8pO3JldHVybiBsfWdldExlYXZlcyhlLHQscil7Y29uc3Qgbz1bXTtyZXR1cm4gdGhpcy5fYXBwZW5kTGVhdmVzKG8sZSx0PXR8fDEwLHI9cnx8MCwwKSxvfWdldFRpbGUoZSx0LHIpe2NvbnN0IG89dGhpcy50cmVlc1t0aGlzLl9saW1pdFpvb20oZSldLGk9TWF0aC5wb3coMixlKSx7ZXh0ZW50Om4scmFkaXVzOnN9PXRoaXMub3B0aW9ucyxhPXMvbixsPShyLWEpL2ksdT0ocisxK2EpL2ksaD17ZmVhdHVyZXM6W119O3JldHVybiB0aGlzLl9hZGRUaWxlRmVhdHVyZXMoby5yYW5nZSgodC1hKS9pLGwsKHQrMSthKS9pLHUpLG8uZGF0YSx0LHIsaSxoKSwwPT09dCYmdGhpcy5fYWRkVGlsZUZlYXR1cmVzKG8ucmFuZ2UoMS1hL2ksbCwxLHUpLG8uZGF0YSxpLHIsaSxoKSx0PT09aS0xJiZ0aGlzLl9hZGRUaWxlRmVhdHVyZXMoby5yYW5nZSgwLGwsYS9pLHUpLG8uZGF0YSwtMSxyLGksaCksaC5mZWF0dXJlcy5sZW5ndGg/aDpudWxsfWdldENsdXN0ZXJFeHBhbnNpb25ab29tKGUpe2xldCB0PXRoaXMuX2dldE9yaWdpblpvb20oZSktMTtmb3IoO3Q8PXRoaXMub3B0aW9ucy5tYXhab29tOyl7Y29uc3Qgcj10aGlzLmdldENoaWxkcmVuKGUpO2lmKHQrKywxIT09ci5sZW5ndGgpYnJlYWs7ZT1yWzBdLnByb3BlcnRpZXMuY2x1c3Rlcl9pZDt9cmV0dXJuIHR9X2FwcGVuZExlYXZlcyhlLHQscixvLGkpe2NvbnN0IG49dGhpcy5nZXRDaGlsZHJlbih0KTtmb3IoY29uc3QgdCBvZiBuKXtjb25zdCBuPXQucHJvcGVydGllcztpZihuJiZuLmNsdXN0ZXI/aStuLnBvaW50X2NvdW50PD1vP2krPW4ucG9pbnRfY291bnQ6aT10aGlzLl9hcHBlbmRMZWF2ZXMoZSxuLmNsdXN0ZXJfaWQscixvLGkpOmk8bz9pKys6ZS5wdXNoKHQpLGUubGVuZ3RoPT09cilicmVha31yZXR1cm4gaX1fY3JlYXRlVHJlZSh0KXtjb25zdCByPW5ldyBlLktEQnVzaCh0Lmxlbmd0aC90aGlzLnN0cmlkZXwwLHRoaXMub3B0aW9ucy5ub2RlU2l6ZSxGbG9hdDMyQXJyYXkpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9dGhpcy5zdHJpZGUpci5hZGQodFtlXSx0W2UrMV0pO3JldHVybiByLmZpbmlzaCgpLHIuZGF0YT10LHJ9X2FkZFRpbGVGZWF0dXJlcyhlLHQscixvLGksbil7Zm9yKGNvbnN0IHMgb2YgZSl7Y29uc3QgZT1zKnRoaXMuc3RyaWRlLGE9dFtlK0xdPjE7bGV0IGwsdSxoO2lmKGEpbD1GKHQsZSx0aGlzLmNsdXN0ZXJQcm9wcyksdT10W2VdLGg9dFtlKzFdO2Vsc2Uge2NvbnN0IHI9dGhpcy5wb2ludHNbdFtlK0NdXTtsPXIucHJvcGVydGllcztjb25zdFtvLGldPXIuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7dT1OKG8pLGg9WihpKTt9Y29uc3QgYz17dHlwZToxLGdlb21ldHJ5OltbTWF0aC5yb3VuZCh0aGlzLm9wdGlvbnMuZXh0ZW50Kih1KmktcikpLE1hdGgucm91bmQodGhpcy5vcHRpb25zLmV4dGVudCooaCppLW8pKV1dLHRhZ3M6bH07bGV0IGY7Zj1hfHx0aGlzLm9wdGlvbnMuZ2VuZXJhdGVJZD90W2UrQ106dGhpcy5wb2ludHNbdFtlK0NdXS5pZCx2b2lkIDAhPT1mJiYoYy5pZD1mKSxuLmZlYXR1cmVzLnB1c2goYyk7fX1fbGltaXRab29tKGUpe3JldHVybiBNYXRoLm1heCh0aGlzLm9wdGlvbnMubWluWm9vbSxNYXRoLm1pbihNYXRoLmZsb29yKCtlKSx0aGlzLm9wdGlvbnMubWF4Wm9vbSsxKSl9X2NsdXN0ZXIoZSx0KXtjb25zdHtyYWRpdXM6cixleHRlbnQ6byxyZWR1Y2U6aSxtaW5Qb2ludHM6bn09dGhpcy5vcHRpb25zLHM9ci8obypNYXRoLnBvdygyLHQpKSxhPWUuZGF0YSxsPVtdLHU9dGhpcy5zdHJpZGU7Zm9yKGxldCByPTA7cjxhLmxlbmd0aDtyKz11KXtpZihhW3IrMl08PXQpY29udGludWU7YVtyKzJdPXQ7Y29uc3Qgbz1hW3JdLGg9YVtyKzFdLGM9ZS53aXRoaW4oYVtyXSxhW3IrMV0scyksZj1hW3IrTF07bGV0IHA9Zjtmb3IoY29uc3QgZSBvZiBjKXtjb25zdCByPWUqdTthW3IrMl0+dCYmKHArPWFbcitMXSk7fWlmKHA+ZiYmcD49bil7bGV0IGUsbj1vKmYscz1oKmYsZz0tMTtjb25zdCBkPSgoci91fDApPDw1KSsodCsxKSt0aGlzLnBvaW50cy5sZW5ndGg7Zm9yKGNvbnN0IG8gb2YgYyl7Y29uc3QgbD1vKnU7aWYoYVtsKzJdPD10KWNvbnRpbnVlO2FbbCsyXT10O2NvbnN0IGg9YVtsK0xdO24rPWFbbF0qaCxzKz1hW2wrMV0qaCxhW2wrNF09ZCxpJiYoZXx8KGU9dGhpcy5fbWFwKGEsciwhMCksZz10aGlzLmNsdXN0ZXJQcm9wcy5sZW5ndGgsdGhpcy5jbHVzdGVyUHJvcHMucHVzaChlKSksaShlLHRoaXMuX21hcChhLGwpKSk7fWFbcis0XT1kLGwucHVzaChuL3Ascy9wLDEvMCxkLC0xLHApLGkmJmwucHVzaChnKTt9ZWxzZSB7Zm9yKGxldCBlPTA7ZTx1O2UrKylsLnB1c2goYVtyK2VdKTtpZihwPjEpZm9yKGNvbnN0IGUgb2YgYyl7Y29uc3Qgcj1lKnU7aWYoIShhW3IrMl08PXQpKXthW3IrMl09dDtmb3IobGV0IGU9MDtlPHU7ZSsrKWwucHVzaChhW3IrZV0pO319fX1yZXR1cm4gbH1fZ2V0T3JpZ2luSWQoZSl7cmV0dXJuIGUtdGhpcy5wb2ludHMubGVuZ3RoPj41fV9nZXRPcmlnaW5ab29tKGUpe3JldHVybiAoZS10aGlzLnBvaW50cy5sZW5ndGgpJTMyfV9tYXAoZSx0LHIpe2lmKGVbdCtMXT4xKXtjb25zdCBvPXRoaXMuY2x1c3RlclByb3BzW2VbdCtPXV07cmV0dXJuIHI/T2JqZWN0LmFzc2lnbih7fSxvKTpvfWNvbnN0IG89dGhpcy5wb2ludHNbZVt0K0NdXS5wcm9wZXJ0aWVzLGk9dGhpcy5vcHRpb25zLm1hcChvKTtyZXR1cm4gciYmaT09PW8/T2JqZWN0LmFzc2lnbih7fSxpKTppfX1mdW5jdGlvbiBqKGUsdCxyKXtyZXR1cm4ge3R5cGU6XCJGZWF0dXJlXCIsaWQ6ZVt0K0NdLHByb3BlcnRpZXM6RihlLHQsciksZ2VvbWV0cnk6e3R5cGU6XCJQb2ludFwiLGNvb3JkaW5hdGVzOlsobz1lW3RdLDM2MCooby0uNSkpLEooZVt0KzFdKV19fTt2YXIgbzt9ZnVuY3Rpb24gRihlLHQscil7Y29uc3Qgbz1lW3QrTF0saT1vPj0xZTQ/YCR7TWF0aC5yb3VuZChvLzFlMyl9a2A6bz49MWUzP01hdGgucm91bmQoby8xMDApLzEwK1wia1wiOm8sbj1lW3QrT10scz0tMT09PW4/e306T2JqZWN0LmFzc2lnbih7fSxyW25dKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihzLHtjbHVzdGVyOiEwLGNsdXN0ZXJfaWQ6ZVt0K0NdLHBvaW50X2NvdW50Om8scG9pbnRfY291bnRfYWJicmV2aWF0ZWQ6aX0pfWZ1bmN0aW9uIE4oZSl7cmV0dXJuIGUvMzYwKy41fWZ1bmN0aW9uIFooZSl7Y29uc3QgdD1NYXRoLnNpbihlKk1hdGguUEkvMTgwKSxyPS41LS4yNSpNYXRoLmxvZygoMSt0KS8oMS10KSkvTWF0aC5QSTtyZXR1cm4gcjwwPzA6cj4xPzE6cn1mdW5jdGlvbiBKKGUpe2NvbnN0IHQ9KDE4MC0zNjAqZSkqTWF0aC5QSS8xODA7cmV0dXJuIDM2MCpNYXRoLmF0YW4oTWF0aC5leHAodCkpL01hdGguUEktOTB9ZnVuY3Rpb24geihlLHQscixvKXtmb3IodmFyIGksbj1vLHM9ci10Pj4xLGE9ci10LGw9ZVt0XSx1PWVbdCsxXSxoPWVbcl0sYz1lW3IrMV0sZj10KzM7ZjxyO2YrPTMpe3ZhciBwPUcoZVtmXSxlW2YrMV0sbCx1LGgsYyk7aWYocD5uKWk9ZixuPXA7ZWxzZSBpZihwPT09bil7dmFyIGc9TWF0aC5hYnMoZi1zKTtnPGEmJihpPWYsYT1nKTt9fW4+byYmKGktdD4zJiZ6KGUsdCxpLG8pLGVbaSsyXT1uLHItaT4zJiZ6KGUsaSxyLG8pKTt9ZnVuY3Rpb24gRyhlLHQscixvLGksbil7dmFyIHM9aS1yLGE9bi1vO2lmKDAhPT1zfHwwIT09YSl7dmFyIGw9KChlLXIpKnMrKHQtbykqYSkvKHMqcythKmEpO2w+MT8ocj1pLG89bik6bD4wJiYocis9cypsLG8rPWEqbCk7fXJldHVybiAocz1lLXIpKnMrKGE9dC1vKSphfWZ1bmN0aW9uIFcoZSx0LHIsbyl7dmFyIGk9e2lkOnZvaWQgMD09PWU/bnVsbDplLHR5cGU6dCxnZW9tZXRyeTpyLHRhZ3M6byxtaW5YOjEvMCxtaW5ZOjEvMCxtYXhYOi0xLzAsbWF4WTotMS8wfTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZW9tZXRyeSxyPWUudHlwZTtpZihcIlBvaW50XCI9PT1yfHxcIk11bHRpUG9pbnRcIj09PXJ8fFwiTGluZVN0cmluZ1wiPT09cilZKGUsdCk7ZWxzZSBpZihcIlBvbHlnb25cIj09PXJ8fFwiTXVsdGlMaW5lU3RyaW5nXCI9PT1yKWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKVkoZSx0W29dKTtlbHNlIGlmKFwiTXVsdGlQb2x5Z29uXCI9PT1yKWZvcihvPTA7bzx0Lmxlbmd0aDtvKyspZm9yKHZhciBpPTA7aTx0W29dLmxlbmd0aDtpKyspWShlLHRbb11baV0pO30oaSksaX1mdW5jdGlvbiBZKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKz0zKWUubWluWD1NYXRoLm1pbihlLm1pblgsdFtyXSksZS5taW5ZPU1hdGgubWluKGUubWluWSx0W3IrMV0pLGUubWF4WD1NYXRoLm1heChlLm1heFgsdFtyXSksZS5tYXhZPU1hdGgubWF4KGUubWF4WSx0W3IrMV0pO31mdW5jdGlvbiBYKGUsdCxyLG8pe2lmKHQuZ2VvbWV0cnkpe3ZhciBpPXQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsbj10Lmdlb21ldHJ5LnR5cGUscz1NYXRoLnBvdyhyLnRvbGVyYW5jZS8oKDE8PHIubWF4Wm9vbSkqci5leHRlbnQpLDIpLGE9W10sbD10LmlkO2lmKHIucHJvbW90ZUlkP2w9dC5wcm9wZXJ0aWVzW3IucHJvbW90ZUlkXTpyLmdlbmVyYXRlSWQmJihsPW98fDApLFwiUG9pbnRcIj09PW4pVihpLGEpO2Vsc2UgaWYoXCJNdWx0aVBvaW50XCI9PT1uKWZvcih2YXIgdT0wO3U8aS5sZW5ndGg7dSsrKVYoaVt1XSxhKTtlbHNlIGlmKFwiTGluZVN0cmluZ1wiPT09bilEKGksYSxzLCExKTtlbHNlIGlmKFwiTXVsdGlMaW5lU3RyaW5nXCI9PT1uKXtpZihyLmxpbmVNZXRyaWNzKXtmb3IodT0wO3U8aS5sZW5ndGg7dSsrKUQoaVt1XSxhPVtdLHMsITEpLGUucHVzaChXKGwsXCJMaW5lU3RyaW5nXCIsYSx0LnByb3BlcnRpZXMpKTtyZXR1cm59JChpLGEscywhMSk7fWVsc2UgaWYoXCJQb2x5Z29uXCI9PT1uKSQoaSxhLHMsITApO2Vsc2Uge2lmKFwiTXVsdGlQb2x5Z29uXCIhPT1uKXtpZihcIkdlb21ldHJ5Q29sbGVjdGlvblwiPT09bil7Zm9yKHU9MDt1PHQuZ2VvbWV0cnkuZ2VvbWV0cmllcy5sZW5ndGg7dSsrKVgoZSx7aWQ6bCxnZW9tZXRyeTp0Lmdlb21ldHJ5Lmdlb21ldHJpZXNbdV0scHJvcGVydGllczp0LnByb3BlcnRpZXN9LHIsbyk7cmV0dXJufXRocm93IG5ldyBFcnJvcihcIklucHV0IGRhdGEgaXMgbm90IGEgdmFsaWQgR2VvSlNPTiBvYmplY3QuXCIpfWZvcih1PTA7dTxpLmxlbmd0aDt1Kyspe3ZhciBoPVtdOyQoaVt1XSxoLHMsITApLGEucHVzaChoKTt9fWUucHVzaChXKGwsbixhLHQucHJvcGVydGllcykpO319ZnVuY3Rpb24gVihlLHQpe3QucHVzaChBKGVbMF0pKSx0LnB1c2goQihlWzFdKSksdC5wdXNoKDApO31mdW5jdGlvbiBEKGUsdCxyLG8pe2Zvcih2YXIgaSxuLHM9MCxhPTA7YTxlLmxlbmd0aDthKyspe3ZhciBsPUEoZVthXVswXSksdT1CKGVbYV1bMV0pO3QucHVzaChsKSx0LnB1c2godSksdC5wdXNoKDApLGE+MCYmKHMrPW8/KGkqdS1sKm4pLzI6TWF0aC5zcXJ0KE1hdGgucG93KGwtaSwyKStNYXRoLnBvdyh1LW4sMikpKSxpPWwsbj11O312YXIgaD10Lmxlbmd0aC0zO3RbMl09MSx6KHQsMCxoLHIpLHRbaCsyXT0xLHQuc2l6ZT1NYXRoLmFicyhzKSx0LnN0YXJ0PTAsdC5lbmQ9dC5zaXplO31mdW5jdGlvbiAkKGUsdCxyLG8pe2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbj1bXTtEKGVbaV0sbixyLG8pLHQucHVzaChuKTt9fWZ1bmN0aW9uIEEoZSl7cmV0dXJuIGUvMzYwKy41fWZ1bmN0aW9uIEIoZSl7dmFyIHQ9TWF0aC5zaW4oZSpNYXRoLlBJLzE4MCkscj0uNS0uMjUqTWF0aC5sb2coKDErdCkvKDEtdCkpL01hdGguUEk7cmV0dXJuIHI8MD8wOnI+MT8xOnJ9ZnVuY3Rpb24gUihlLHQscixvLGksbixzLGEpe2lmKG8vPXQsbj49KHIvPXQpJiZzPG8pcmV0dXJuIGU7aWYoczxyfHxuPj1vKXJldHVybiBudWxsO2Zvcih2YXIgbD1bXSx1PTA7dTxlLmxlbmd0aDt1Kyspe3ZhciBoPWVbdV0sYz1oLmdlb21ldHJ5LGY9aC50eXBlLHA9MD09PWk/aC5taW5YOmgubWluWSxnPTA9PT1pP2gubWF4WDpoLm1heFk7aWYocD49ciYmZzxvKWwucHVzaChoKTtlbHNlIGlmKCEoZzxyfHxwPj1vKSl7dmFyIGQ9W107aWYoXCJQb2ludFwiPT09Znx8XCJNdWx0aVBvaW50XCI9PT1mKXEoYyxkLHIsbyxpKTtlbHNlIGlmKFwiTGluZVN0cmluZ1wiPT09ZilRKGMsZCxyLG8saSwhMSxhLmxpbmVNZXRyaWNzKTtlbHNlIGlmKFwiTXVsdGlMaW5lU3RyaW5nXCI9PT1mKUsoYyxkLHIsbyxpLCExKTtlbHNlIGlmKFwiUG9seWdvblwiPT09ZilLKGMsZCxyLG8saSwhMCk7ZWxzZSBpZihcIk11bHRpUG9seWdvblwiPT09Zilmb3IodmFyIG09MDttPGMubGVuZ3RoO20rKyl7dmFyIHk9W107SyhjW21dLHkscixvLGksITApLHkubGVuZ3RoJiZkLnB1c2goeSk7fWlmKGQubGVuZ3RoKXtpZihhLmxpbmVNZXRyaWNzJiZcIkxpbmVTdHJpbmdcIj09PWYpe2ZvcihtPTA7bTxkLmxlbmd0aDttKyspbC5wdXNoKFcoaC5pZCxmLGRbbV0saC50YWdzKSk7Y29udGludWV9XCJMaW5lU3RyaW5nXCIhPT1mJiZcIk11bHRpTGluZVN0cmluZ1wiIT09Znx8KDE9PT1kLmxlbmd0aD8oZj1cIkxpbmVTdHJpbmdcIixkPWRbMF0pOmY9XCJNdWx0aUxpbmVTdHJpbmdcIiksXCJQb2ludFwiIT09ZiYmXCJNdWx0aVBvaW50XCIhPT1mfHwoZj0zPT09ZC5sZW5ndGg/XCJQb2ludFwiOlwiTXVsdGlQb2ludFwiKSxsLnB1c2goVyhoLmlkLGYsZCxoLnRhZ3MpKTt9fX1yZXR1cm4gbC5sZW5ndGg/bDpudWxsfWZ1bmN0aW9uIHEoZSx0LHIsbyxpKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rPTMpe3ZhciBzPWVbbitpXTtzPj1yJiZzPD1vJiYodC5wdXNoKGVbbl0pLHQucHVzaChlW24rMV0pLHQucHVzaChlW24rMl0pKTt9fWZ1bmN0aW9uIFEoZSx0LHIsbyxpLG4scyl7Zm9yKHZhciBhLGwsdT1VKGUpLGg9MD09PWk/ZWU6dGUsYz1lLnN0YXJ0LGY9MDtmPGUubGVuZ3RoLTM7Zis9Myl7dmFyIHA9ZVtmXSxnPWVbZisxXSxkPWVbZisyXSxtPWVbZiszXSx5PWVbZis0XSx2PTA9PT1pP3A6Zyx4PTA9PT1pP206eSx3PSExO3MmJihhPU1hdGguc3FydChNYXRoLnBvdyhwLW0sMikrTWF0aC5wb3coZy15LDIpKSksdjxyP3g+ciYmKGw9aCh1LHAsZyxtLHkscikscyYmKHUuc3RhcnQ9YythKmwpKTp2Pm8/eDxvJiYobD1oKHUscCxnLG0seSxvKSxzJiYodS5zdGFydD1jK2EqbCkpOkgodSxwLGcsZCkseDxyJiZ2Pj1yJiYobD1oKHUscCxnLG0seSxyKSx3PSEwKSx4Pm8mJnY8PW8mJihsPWgodSxwLGcsbSx5LG8pLHc9ITApLCFuJiZ3JiYocyYmKHUuZW5kPWMrYSpsKSx0LnB1c2godSksdT1VKGUpKSxzJiYoYys9YSk7fXZhciBTPWUubGVuZ3RoLTM7cD1lW1NdLGc9ZVtTKzFdLGQ9ZVtTKzJdLCh2PTA9PT1pP3A6Zyk+PXImJnY8PW8mJkgodSxwLGcsZCksUz11Lmxlbmd0aC0zLG4mJlM+PTMmJih1W1NdIT09dVswXXx8dVtTKzFdIT09dVsxXSkmJkgodSx1WzBdLHVbMV0sdVsyXSksdS5sZW5ndGgmJnQucHVzaCh1KTt9ZnVuY3Rpb24gVShlKXt2YXIgdD1bXTtyZXR1cm4gdC5zaXplPWUuc2l6ZSx0LnN0YXJ0PWUuc3RhcnQsdC5lbmQ9ZS5lbmQsdH1mdW5jdGlvbiBLKGUsdCxyLG8saSxuKXtmb3IodmFyIHM9MDtzPGUubGVuZ3RoO3MrKylRKGVbc10sdCxyLG8saSxuLCExKTt9ZnVuY3Rpb24gSChlLHQscixvKXtlLnB1c2godCksZS5wdXNoKHIpLGUucHVzaChvKTt9ZnVuY3Rpb24gZWUoZSx0LHIsbyxpLG4pe3ZhciBzPShuLXQpLyhvLXQpO3JldHVybiBlLnB1c2gobiksZS5wdXNoKHIrKGktcikqcyksZS5wdXNoKDEpLHN9ZnVuY3Rpb24gdGUoZSx0LHIsbyxpLG4pe3ZhciBzPShuLXIpLyhpLXIpO3JldHVybiBlLnB1c2godCsoby10KSpzKSxlLnB1c2gobiksZS5wdXNoKDEpLHN9ZnVuY3Rpb24gcmUoZSx0KXtmb3IodmFyIHI9W10sbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgaSxuPWVbb10scz1uLnR5cGU7aWYoXCJQb2ludFwiPT09c3x8XCJNdWx0aVBvaW50XCI9PT1zfHxcIkxpbmVTdHJpbmdcIj09PXMpaT1vZShuLmdlb21ldHJ5LHQpO2Vsc2UgaWYoXCJNdWx0aUxpbmVTdHJpbmdcIj09PXN8fFwiUG9seWdvblwiPT09cyl7aT1bXTtmb3IodmFyIGE9MDthPG4uZ2VvbWV0cnkubGVuZ3RoO2ErKylpLnB1c2gob2Uobi5nZW9tZXRyeVthXSx0KSk7fWVsc2UgaWYoXCJNdWx0aVBvbHlnb25cIj09PXMpZm9yKGk9W10sYT0wO2E8bi5nZW9tZXRyeS5sZW5ndGg7YSsrKXtmb3IodmFyIGw9W10sdT0wO3U8bi5nZW9tZXRyeVthXS5sZW5ndGg7dSsrKWwucHVzaChvZShuLmdlb21ldHJ5W2FdW3VdLHQpKTtpLnB1c2gobCk7fXIucHVzaChXKG4uaWQscyxpLG4udGFncykpO31yZXR1cm4gcn1mdW5jdGlvbiBvZShlLHQpe3ZhciByPVtdO3Iuc2l6ZT1lLnNpemUsdm9pZCAwIT09ZS5zdGFydCYmKHIuc3RhcnQ9ZS5zdGFydCxyLmVuZD1lLmVuZCk7Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKz0zKXIucHVzaChlW29dK3QsZVtvKzFdLGVbbysyXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gaWUoZSx0KXtpZihlLnRyYW5zZm9ybWVkKXJldHVybiBlO3ZhciByLG8saSxuPTE8PGUueixzPWUueCxhPWUueTtmb3Iocj0wO3I8ZS5mZWF0dXJlcy5sZW5ndGg7cisrKXt2YXIgbD1lLmZlYXR1cmVzW3JdLHU9bC5nZW9tZXRyeSxoPWwudHlwZTtpZihsLmdlb21ldHJ5PVtdLDE9PT1oKWZvcihvPTA7bzx1Lmxlbmd0aDtvKz0yKWwuZ2VvbWV0cnkucHVzaChuZSh1W29dLHVbbysxXSx0LG4scyxhKSk7ZWxzZSBmb3Iobz0wO288dS5sZW5ndGg7bysrKXt2YXIgYz1bXTtmb3IoaT0wO2k8dVtvXS5sZW5ndGg7aSs9MiljLnB1c2gobmUodVtvXVtpXSx1W29dW2krMV0sdCxuLHMsYSkpO2wuZ2VvbWV0cnkucHVzaChjKTt9fXJldHVybiBlLnRyYW5zZm9ybWVkPSEwLGV9ZnVuY3Rpb24gbmUoZSx0LHIsbyxpLG4pe3JldHVybiBbTWF0aC5yb3VuZChyKihlKm8taSkpLE1hdGgucm91bmQocioodCpvLW4pKV19ZnVuY3Rpb24gc2UoZSx0LHIsbyxpKXtmb3IodmFyIG49dD09PWkubWF4Wm9vbT8wOmkudG9sZXJhbmNlLygoMTw8dCkqaS5leHRlbnQpLHM9e2ZlYXR1cmVzOltdLG51bVBvaW50czowLG51bVNpbXBsaWZpZWQ6MCxudW1GZWF0dXJlczowLHNvdXJjZTpudWxsLHg6cix5Om8sejp0LHRyYW5zZm9ybWVkOiExLG1pblg6MixtaW5ZOjEsbWF4WDotMSxtYXhZOjB9LGE9MDthPGUubGVuZ3RoO2ErKyl7cy5udW1GZWF0dXJlcysrLGFlKHMsZVthXSxuLGkpO3ZhciBsPWVbYV0ubWluWCx1PWVbYV0ubWluWSxoPWVbYV0ubWF4WCxjPWVbYV0ubWF4WTtsPHMubWluWCYmKHMubWluWD1sKSx1PHMubWluWSYmKHMubWluWT11KSxoPnMubWF4WCYmKHMubWF4WD1oKSxjPnMubWF4WSYmKHMubWF4WT1jKTt9cmV0dXJuIHN9ZnVuY3Rpb24gYWUoZSx0LHIsbyl7dmFyIGk9dC5nZW9tZXRyeSxuPXQudHlwZSxzPVtdO2lmKFwiUG9pbnRcIj09PW58fFwiTXVsdGlQb2ludFwiPT09bilmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErPTMpcy5wdXNoKGlbYV0pLHMucHVzaChpW2ErMV0pLGUubnVtUG9pbnRzKyssZS5udW1TaW1wbGlmaWVkKys7ZWxzZSBpZihcIkxpbmVTdHJpbmdcIj09PW4pbGUocyxpLGUsciwhMSwhMSk7ZWxzZSBpZihcIk11bHRpTGluZVN0cmluZ1wiPT09bnx8XCJQb2x5Z29uXCI9PT1uKWZvcihhPTA7YTxpLmxlbmd0aDthKyspbGUocyxpW2FdLGUscixcIlBvbHlnb25cIj09PW4sMD09PWEpO2Vsc2UgaWYoXCJNdWx0aVBvbHlnb25cIj09PW4pZm9yKHZhciBsPTA7bDxpLmxlbmd0aDtsKyspe3ZhciB1PWlbbF07Zm9yKGE9MDthPHUubGVuZ3RoO2ErKylsZShzLHVbYV0sZSxyLCEwLDA9PT1hKTt9aWYocy5sZW5ndGgpe3ZhciBoPXQudGFnc3x8bnVsbDtpZihcIkxpbmVTdHJpbmdcIj09PW4mJm8ubGluZU1ldHJpY3Mpe2Zvcih2YXIgYyBpbiBoPXt9LHQudGFncyloW2NdPXQudGFnc1tjXTtoLm1hcGJveF9jbGlwX3N0YXJ0PWkuc3RhcnQvaS5zaXplLGgubWFwYm94X2NsaXBfZW5kPWkuZW5kL2kuc2l6ZTt9dmFyIGY9e2dlb21ldHJ5OnMsdHlwZTpcIlBvbHlnb25cIj09PW58fFwiTXVsdGlQb2x5Z29uXCI9PT1uPzM6XCJMaW5lU3RyaW5nXCI9PT1ufHxcIk11bHRpTGluZVN0cmluZ1wiPT09bj8yOjEsdGFnczpofTtudWxsIT09dC5pZCYmKGYuaWQ9dC5pZCksZS5mZWF0dXJlcy5wdXNoKGYpO319ZnVuY3Rpb24gbGUoZSx0LHIsbyxpLG4pe3ZhciBzPW8qbztpZihvPjAmJnQuc2l6ZTwoaT9zOm8pKXIubnVtUG9pbnRzKz10Lmxlbmd0aC8zO2Vsc2Uge2Zvcih2YXIgYT1bXSxsPTA7bDx0Lmxlbmd0aDtsKz0zKSgwPT09b3x8dFtsKzJdPnMpJiYoci5udW1TaW1wbGlmaWVkKyssYS5wdXNoKHRbbF0pLGEucHVzaCh0W2wrMV0pKSxyLm51bVBvaW50cysrO2kmJmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbz0wLGk9ZS5sZW5ndGgsbj1pLTI7bzxpO249byxvKz0yKXIrPShlW29dLWVbbl0pKihlW28rMV0rZVtuKzFdKTtpZihyPjA9PT10KWZvcihvPTAsaT1lLmxlbmd0aDtvPGkvMjtvKz0yKXt2YXIgcz1lW29dLGE9ZVtvKzFdO2Vbb109ZVtpLTItb10sZVtvKzFdPWVbaS0xLW9dLGVbaS0yLW9dPXMsZVtpLTEtb109YTt9fShhLG4pLGUucHVzaChhKTt9fWZ1bmN0aW9uIHVlKGUsdCl7dmFyIHI9KHQ9dGhpcy5vcHRpb25zPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpZVtyXT10W3JdO3JldHVybiBlfShPYmplY3QuY3JlYXRlKHRoaXMub3B0aW9ucyksdCkpLmRlYnVnO2lmKHImJmNvbnNvbGUudGltZShcInByZXByb2Nlc3MgZGF0YVwiKSx0Lm1heFpvb208MHx8dC5tYXhab29tPjI0KXRocm93IG5ldyBFcnJvcihcIm1heFpvb20gc2hvdWxkIGJlIGluIHRoZSAwLTI0IHJhbmdlXCIpO2lmKHQucHJvbW90ZUlkJiZ0LmdlbmVyYXRlSWQpdGhyb3cgbmV3IEVycm9yKFwicHJvbW90ZUlkIGFuZCBnZW5lcmF0ZUlkIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyLlwiKTt2YXIgbz1mdW5jdGlvbihlLHQpe3ZhciByPVtdO2lmKFwiRmVhdHVyZUNvbGxlY3Rpb25cIj09PWUudHlwZSlmb3IodmFyIG89MDtvPGUuZmVhdHVyZXMubGVuZ3RoO28rKylYKHIsZS5mZWF0dXJlc1tvXSx0LG8pO2Vsc2UgWChyLFwiRmVhdHVyZVwiPT09ZS50eXBlP2U6e2dlb21ldHJ5OmV9LHQpO3JldHVybiByfShlLHQpO3RoaXMudGlsZXM9e30sdGhpcy50aWxlQ29vcmRzPVtdLHImJihjb25zb2xlLnRpbWVFbmQoXCJwcmVwcm9jZXNzIGRhdGFcIiksY29uc29sZS5sb2coXCJpbmRleDogbWF4Wm9vbTogJWQsIG1heFBvaW50czogJWRcIix0LmluZGV4TWF4Wm9vbSx0LmluZGV4TWF4UG9pbnRzKSxjb25zb2xlLnRpbWUoXCJnZW5lcmF0ZSB0aWxlc1wiKSx0aGlzLnN0YXRzPXt9LHRoaXMudG90YWw9MCksbz1mdW5jdGlvbihlLHQpe3ZhciByPXQuYnVmZmVyL3QuZXh0ZW50LG89ZSxpPVIoZSwxLC0xLXIsciwwLC0xLDIsdCksbj1SKGUsMSwxLXIsMityLDAsLTEsMix0KTtyZXR1cm4gKGl8fG4pJiYobz1SKGUsMSwtciwxK3IsMCwtMSwyLHQpfHxbXSxpJiYobz1yZShpLDEpLmNvbmNhdChvKSksbiYmKG89by5jb25jYXQocmUobiwtMSkpKSksb30obyx0KSxvLmxlbmd0aCYmdGhpcy5zcGxpdFRpbGUobywwLDAsMCksciYmKG8ubGVuZ3RoJiZjb25zb2xlLmxvZyhcImZlYXR1cmVzOiAlZCwgcG9pbnRzOiAlZFwiLHRoaXMudGlsZXNbMF0ubnVtRmVhdHVyZXMsdGhpcy50aWxlc1swXS5udW1Qb2ludHMpLGNvbnNvbGUudGltZUVuZChcImdlbmVyYXRlIHRpbGVzXCIpLGNvbnNvbGUubG9nKFwidGlsZXMgZ2VuZXJhdGVkOlwiLHRoaXMudG90YWwsSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0cykpKTt9ZnVuY3Rpb24gaGUoZSx0LHIpe3JldHVybiAzMiooKDE8PGUpKnIrdCkrZX1mdW5jdGlvbiBjZSh0LHIpe2NvbnN0IG89dC50aWxlSUQuY2Fub25pY2FsO2lmKCF0aGlzLl9nZW9KU09OSW5kZXgpcmV0dXJuIHIobnVsbCxudWxsKTtjb25zdCBpPXRoaXMuX2dlb0pTT05JbmRleC5nZXRUaWxlKG8ueixvLngsby55KTtpZighaSlyZXR1cm4gcihudWxsLG51bGwpO2NvbnN0IG49bmV3IGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMubGF5ZXJzPXtfZ2VvanNvblRpbGVMYXllcjp0aGlzfSx0aGlzLm5hbWU9XCJfZ2VvanNvblRpbGVMYXllclwiLHRoaXMuZXh0ZW50PWUuRVhURU5ULHRoaXMubGVuZ3RoPXQubGVuZ3RoLHRoaXMuX2ZlYXR1cmVzPXQ7fWZlYXR1cmUodCl7cmV0dXJuIG5ldyBjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9mZWF0dXJlPXQsdGhpcy5leHRlbnQ9ZS5FWFRFTlQsdGhpcy50eXBlPXQudHlwZSx0aGlzLnByb3BlcnRpZXM9dC50YWdzLFwiaWRcImluIHQmJiFpc05hTih0LmlkKSYmKHRoaXMuaWQ9cGFyc2VJbnQodC5pZCwxMCkpO31sb2FkR2VvbWV0cnkoKXtpZigxPT09dGhpcy5fZmVhdHVyZS50eXBlKXtjb25zdCB0PVtdO2Zvcihjb25zdCByIG9mIHRoaXMuX2ZlYXR1cmUuZ2VvbWV0cnkpdC5wdXNoKFtuZXcgZS5Qb2ludChyWzBdLHJbMV0pXSk7cmV0dXJuIHR9e2NvbnN0IHQ9W107Zm9yKGNvbnN0IHIgb2YgdGhpcy5fZmVhdHVyZS5nZW9tZXRyeSl7Y29uc3Qgbz1bXTtmb3IoY29uc3QgdCBvZiByKW8ucHVzaChuZXcgZS5Qb2ludCh0WzBdLHRbMV0pKTt0LnB1c2gobyk7fXJldHVybiB0fX10b0dlb0pTT04oZSx0LHIpe3JldHVybiBsLmNhbGwodGhpcyxlLHQscil9fSh0aGlzLl9mZWF0dXJlc1t0XSl9fShpLmZlYXR1cmVzKTtsZXQgcz1UKG4pOzA9PT1zLmJ5dGVPZmZzZXQmJnMuYnl0ZUxlbmd0aD09PXMuYnVmZmVyLmJ5dGVMZW5ndGh8fChzPW5ldyBVaW50OEFycmF5KHMpKSxyKG51bGwse3ZlY3RvclRpbGU6bixyYXdEYXRhOnMuYnVmZmVyfSk7fXVlLnByb3RvdHlwZS5vcHRpb25zPXttYXhab29tOjE0LGluZGV4TWF4Wm9vbTo1LGluZGV4TWF4UG9pbnRzOjFlNSx0b2xlcmFuY2U6MyxleHRlbnQ6NDA5NixidWZmZXI6NjQsbGluZU1ldHJpY3M6ITEscHJvbW90ZUlkOm51bGwsZ2VuZXJhdGVJZDohMSxkZWJ1ZzowfSx1ZS5wcm90b3R5cGUuc3BsaXRUaWxlPWZ1bmN0aW9uKGUsdCxyLG8saSxuLHMpe2Zvcih2YXIgYT1bZSx0LHIsb10sbD10aGlzLm9wdGlvbnMsdT1sLmRlYnVnO2EubGVuZ3RoOyl7bz1hLnBvcCgpLHI9YS5wb3AoKSx0PWEucG9wKCksZT1hLnBvcCgpO3ZhciBoPTE8PHQsYz1oZSh0LHIsbyksZj10aGlzLnRpbGVzW2NdO2lmKCFmJiYodT4xJiZjb25zb2xlLnRpbWUoXCJjcmVhdGlvblwiKSxmPXRoaXMudGlsZXNbY109c2UoZSx0LHIsbyxsKSx0aGlzLnRpbGVDb29yZHMucHVzaCh7ejp0LHg6cix5Om99KSx1KSl7dT4xJiYoY29uc29sZS5sb2coXCJ0aWxlIHolZC0lZC0lZCAoZmVhdHVyZXM6ICVkLCBwb2ludHM6ICVkLCBzaW1wbGlmaWVkOiAlZClcIix0LHIsbyxmLm51bUZlYXR1cmVzLGYubnVtUG9pbnRzLGYubnVtU2ltcGxpZmllZCksY29uc29sZS50aW1lRW5kKFwiY3JlYXRpb25cIikpO3ZhciBwPVwielwiK3Q7dGhpcy5zdGF0c1twXT0odGhpcy5zdGF0c1twXXx8MCkrMSx0aGlzLnRvdGFsKys7fWlmKGYuc291cmNlPWUsaSl7aWYodD09PWwubWF4Wm9vbXx8dD09PWkpY29udGludWU7dmFyIGc9MTw8aS10O2lmKHIhPT1NYXRoLmZsb29yKG4vZyl8fG8hPT1NYXRoLmZsb29yKHMvZykpY29udGludWV9ZWxzZSBpZih0PT09bC5pbmRleE1heFpvb218fGYubnVtUG9pbnRzPD1sLmluZGV4TWF4UG9pbnRzKWNvbnRpbnVlO2lmKGYuc291cmNlPW51bGwsMCE9PWUubGVuZ3RoKXt1PjEmJmNvbnNvbGUudGltZShcImNsaXBwaW5nXCIpO3ZhciBkLG0seSx2LHgsdyxTPS41KmwuYnVmZmVyL2wuZXh0ZW50LE09LjUtUyxQPS41K1MsYj0xK1M7ZD1tPXk9dj1udWxsLHg9UihlLGgsci1TLHIrUCwwLGYubWluWCxmLm1heFgsbCksdz1SKGUsaCxyK00scitiLDAsZi5taW5YLGYubWF4WCxsKSxlPW51bGwseCYmKGQ9Uih4LGgsby1TLG8rUCwxLGYubWluWSxmLm1heFksbCksbT1SKHgsaCxvK00sbytiLDEsZi5taW5ZLGYubWF4WSxsKSx4PW51bGwpLHcmJih5PVIodyxoLG8tUyxvK1AsMSxmLm1pblksZi5tYXhZLGwpLHY9Uih3LGgsbytNLG8rYiwxLGYubWluWSxmLm1heFksbCksdz1udWxsKSx1PjEmJmNvbnNvbGUudGltZUVuZChcImNsaXBwaW5nXCIpLGEucHVzaChkfHxbXSx0KzEsMipyLDIqbyksYS5wdXNoKG18fFtdLHQrMSwyKnIsMipvKzEpLGEucHVzaCh5fHxbXSx0KzEsMipyKzEsMipvKSxhLnB1c2godnx8W10sdCsxLDIqcisxLDIqbysxKTt9fX0sdWUucHJvdG90eXBlLmdldFRpbGU9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPXRoaXMub3B0aW9ucyxpPW8uZXh0ZW50LG49by5kZWJ1ZztpZihlPDB8fGU+MjQpcmV0dXJuIG51bGw7dmFyIHM9MTw8ZSxhPWhlKGUsdD0odCVzK3MpJXMscik7aWYodGhpcy50aWxlc1thXSlyZXR1cm4gaWUodGhpcy50aWxlc1thXSxpKTtuPjEmJmNvbnNvbGUubG9nKFwiZHJpbGxpbmcgZG93biB0byB6JWQtJWQtJWRcIixlLHQscik7Zm9yKHZhciBsLHU9ZSxoPXQsYz1yOyFsJiZ1PjA7KXUtLSxoPU1hdGguZmxvb3IoaC8yKSxjPU1hdGguZmxvb3IoYy8yKSxsPXRoaXMudGlsZXNbaGUodSxoLGMpXTtyZXR1cm4gbCYmbC5zb3VyY2U/KG4+MSYmY29uc29sZS5sb2coXCJmb3VuZCBwYXJlbnQgdGlsZSB6JWQtJWQtJWRcIix1LGgsYyksbj4xJiZjb25zb2xlLnRpbWUoXCJkcmlsbGluZyBkb3duXCIpLHRoaXMuc3BsaXRUaWxlKGwuc291cmNlLHUsaCxjLGUsdCxyKSxuPjEmJmNvbnNvbGUudGltZUVuZChcImRyaWxsaW5nIGRvd25cIiksdGhpcy50aWxlc1thXT9pZSh0aGlzLnRpbGVzW2FdLGkpOm51bGwpOm51bGx9O2NsYXNzIGZlIGV4dGVuZHMgZS5WZWN0b3JUaWxlV29ya2VyU291cmNle2NvbnN0cnVjdG9yKGUsdCxyLG8saSl7c3VwZXIoZSx0LHIsbyxjZSksaSYmKHRoaXMubG9hZEdlb0pTT049aSk7fWxvYWREYXRhKHQscil7Y29uc3Qgbz10JiZ0LnJlcXVlc3QsaT1vJiZvLmNvbGxlY3RSZXNvdXJjZVRpbWluZzt0aGlzLmxvYWRHZW9KU09OKHQsKChuLHMpPT57aWYobnx8IXMpcmV0dXJuIHIobik7aWYoXCJvYmplY3RcIiE9dHlwZW9mIHMpcmV0dXJuIHIobmV3IEVycm9yKGBJbnB1dCBkYXRhIGdpdmVuIHRvICcke3Quc291cmNlfScgaXMgbm90IGEgdmFsaWQgR2VvSlNPTiBvYmplY3QuYCkpO3thKHMsITApO3RyeXtpZih0LmZpbHRlcil7Y29uc3Qgcj1lLmNyZWF0ZUV4cHJlc3Npb24odC5maWx0ZXIse3R5cGU6XCJib29sZWFuXCIsXCJwcm9wZXJ0eS10eXBlXCI6XCJkYXRhLWRyaXZlblwiLG92ZXJyaWRhYmxlOiExLHRyYW5zaXRpb246ITF9KTtpZihcImVycm9yXCI9PT1yLnJlc3VsdCl0aHJvdyBuZXcgRXJyb3Ioci52YWx1ZS5tYXAoKGU9PmAke2Uua2V5fTogJHtlLm1lc3NhZ2V9YCkpLmpvaW4oXCIsIFwiKSk7Y29uc3Qgbz1zLmZlYXR1cmVzLmZpbHRlcigoZT0+ci52YWx1ZS5ldmFsdWF0ZSh7em9vbTowfSxlKSkpO3M9e3R5cGU6XCJGZWF0dXJlQ29sbGVjdGlvblwiLGZlYXR1cmVzOm99O310aGlzLl9nZW9KU09OSW5kZXg9dC5jbHVzdGVyP25ldyBFKGZ1bmN0aW9uKHtzdXBlcmNsdXN0ZXJPcHRpb25zOnQsY2x1c3RlclByb3BlcnRpZXM6cn0pe2lmKCFyfHwhdClyZXR1cm4gdDtjb25zdCBvPXt9LGk9e30sbj17YWNjdW11bGF0ZWQ6bnVsbCx6b29tOjB9LHM9e3Byb3BlcnRpZXM6bnVsbH0sYT1PYmplY3Qua2V5cyhyKTtmb3IoY29uc3QgdCBvZiBhKXtjb25zdFtuLHNdPXJbdF0sYT1lLmNyZWF0ZUV4cHJlc3Npb24ocyksbD1lLmNyZWF0ZUV4cHJlc3Npb24oXCJzdHJpbmdcIj09dHlwZW9mIG4/W24sW1wiYWNjdW11bGF0ZWRcIl0sW1wiZ2V0XCIsdF1dOm4pO29bdF09YS52YWx1ZSxpW3RdPWwudmFsdWU7fXJldHVybiB0Lm1hcD1lPT57cy5wcm9wZXJ0aWVzPWU7Y29uc3QgdD17fTtmb3IoY29uc3QgZSBvZiBhKXRbZV09b1tlXS5ldmFsdWF0ZShuLHMpO3JldHVybiB0fSx0LnJlZHVjZT0oZSx0KT0+e3MucHJvcGVydGllcz10O2Zvcihjb25zdCB0IG9mIGEpbi5hY2N1bXVsYXRlZD1lW3RdLGVbdF09aVt0XS5ldmFsdWF0ZShuLHMpO30sdH0odCkpLmxvYWQocy5mZWF0dXJlcyk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHVlKGUsdCl9KHMsdC5nZW9qc29uVnRPcHRpb25zKTt9Y2F0Y2gobil7cmV0dXJuIHIobil9dGhpcy5sb2FkZWQ9e307Y29uc3QgbD17fTtpZihpKXtjb25zdCByPWUuZ2V0UGVyZm9ybWFuY2VNZWFzdXJlbWVudChvKTtyJiYobC5yZXNvdXJjZVRpbWluZz17fSxsLnJlc291cmNlVGltaW5nW3Quc291cmNlXT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHIpKSk7fXIobnVsbCxsKTt9fSkpO31yZWxvYWRUaWxlKGUsdCl7Y29uc3Qgcj10aGlzLmxvYWRlZDtyZXR1cm4gciYmcltlLnVpZF0/c3VwZXIucmVsb2FkVGlsZShlLHQpOnRoaXMubG9hZFRpbGUoZSx0KX1sb2FkR2VvSlNPTih0LHIpe2lmKHQucmVxdWVzdCllLmdldEpTT04odC5yZXF1ZXN0LHIpO2Vsc2Uge2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0LmRhdGEpcmV0dXJuIHIobmV3IEVycm9yKGBJbnB1dCBkYXRhIGdpdmVuIHRvICcke3Quc291cmNlfScgaXMgbm90IGEgdmFsaWQgR2VvSlNPTiBvYmplY3QuYCkpO3RyeXtyZXR1cm4gcihudWxsLEpTT04ucGFyc2UodC5kYXRhKSl9Y2F0Y2goZSl7cmV0dXJuIHIobmV3IEVycm9yKGBJbnB1dCBkYXRhIGdpdmVuIHRvICcke3Quc291cmNlfScgaXMgbm90IGEgdmFsaWQgR2VvSlNPTiBvYmplY3QuYCkpfX19Z2V0Q2x1c3RlckV4cGFuc2lvblpvb20oZSx0KXt0cnl7dChudWxsLHRoaXMuX2dlb0pTT05JbmRleC5nZXRDbHVzdGVyRXhwYW5zaW9uWm9vbShlLmNsdXN0ZXJJZCkpO31jYXRjaChlKXt0KGUpO319Z2V0Q2x1c3RlckNoaWxkcmVuKGUsdCl7dHJ5e3QobnVsbCx0aGlzLl9nZW9KU09OSW5kZXguZ2V0Q2hpbGRyZW4oZS5jbHVzdGVySWQpKTt9Y2F0Y2goZSl7dChlKTt9fWdldENsdXN0ZXJMZWF2ZXMoZSx0KXt0cnl7dChudWxsLHRoaXMuX2dlb0pTT05JbmRleC5nZXRMZWF2ZXMoZS5jbHVzdGVySWQsZS5saW1pdCxlLm9mZnNldCkpO31jYXRjaChlKXt0KGUpO319fWNsYXNzIHBle2NvbnN0cnVjdG9yKHQpe3RoaXMuc2VsZj10LHRoaXMuYWN0b3I9bmV3IGUuQWN0b3IodCx0aGlzKSx0aGlzLmxheWVySW5kZXhlcz17fSx0aGlzLmF2YWlsYWJsZUltYWdlcz17fSx0aGlzLmlzU3ByaXRlTG9hZGVkPXt9LHRoaXMucHJvamVjdGlvbnM9e30sdGhpcy5kZWZhdWx0UHJvamVjdGlvbj1lLmdldFByb2plY3Rpb24oe25hbWU6XCJtZXJjYXRvclwifSksdGhpcy53b3JrZXJTb3VyY2VUeXBlcz17dmVjdG9yOmUuVmVjdG9yVGlsZVdvcmtlclNvdXJjZSxnZW9qc29uOmZlfSx0aGlzLndvcmtlclNvdXJjZXM9e30sdGhpcy5kZW1Xb3JrZXJTb3VyY2VzPXt9LHRoaXMuc2VsZi5yZWdpc3RlcldvcmtlclNvdXJjZT0oZSx0KT0+e2lmKHRoaXMud29ya2VyU291cmNlVHlwZXNbZV0pdGhyb3cgbmV3IEVycm9yKGBXb3JrZXIgc291cmNlIHdpdGggbmFtZSBcIiR7ZX1cIiBhbHJlYWR5IHJlZ2lzdGVyZWQuYCk7dGhpcy53b3JrZXJTb3VyY2VUeXBlc1tlXT10O30sdGhpcy5zZWxmLnJlZ2lzdGVyUlRMVGV4dFBsdWdpbj10PT57aWYoZS5wbHVnaW4uaXNQYXJzZWQoKSl0aHJvdyBuZXcgRXJyb3IoXCJSVEwgdGV4dCBwbHVnaW4gYWxyZWFkeSByZWdpc3RlcmVkLlwiKTtlLnBsdWdpbi5hcHBseUFyYWJpY1NoYXBpbmc9dC5hcHBseUFyYWJpY1NoYXBpbmcsZS5wbHVnaW4ucHJvY2Vzc0JpZGlyZWN0aW9uYWxUZXh0PXQucHJvY2Vzc0JpZGlyZWN0aW9uYWxUZXh0LGUucGx1Z2luLnByb2Nlc3NTdHlsZWRCaWRpcmVjdGlvbmFsVGV4dD10LnByb2Nlc3NTdHlsZWRCaWRpcmVjdGlvbmFsVGV4dDt9O31jbGVhckNhY2hlcyhlLHQscil7ZGVsZXRlIHRoaXMubGF5ZXJJbmRleGVzW2VdLGRlbGV0ZSB0aGlzLmF2YWlsYWJsZUltYWdlc1tlXSxkZWxldGUgdGhpcy53b3JrZXJTb3VyY2VzW2VdLGRlbGV0ZSB0aGlzLmRlbVdvcmtlclNvdXJjZXNbZV0scigpO31jaGVja0lmUmVhZHkoZSx0LHIpe3IoKTt9c2V0UmVmZXJyZXIoZSx0KXt0aGlzLnJlZmVycmVyPXQ7fXNwcml0ZUxvYWRlZCh0LHIpe3RoaXMuaXNTcHJpdGVMb2FkZWRbdF09cjtmb3IoY29uc3QgbyBpbiB0aGlzLndvcmtlclNvdXJjZXNbdF0pe2NvbnN0IGk9dGhpcy53b3JrZXJTb3VyY2VzW3RdW29dO2Zvcihjb25zdCB0IGluIGkpaVt0XWluc3RhbmNlb2YgZS5WZWN0b3JUaWxlV29ya2VyU291cmNlJiYoaVt0XS5pc1Nwcml0ZUxvYWRlZD1yLGlbdF0uZmlyZShuZXcgZS5FdmVudChcImlzU3ByaXRlTG9hZGVkXCIpKSk7fX1zZXRJbWFnZXMoZSx0LHIpe3RoaXMuYXZhaWxhYmxlSW1hZ2VzW2VdPXQ7Zm9yKGNvbnN0IHIgaW4gdGhpcy53b3JrZXJTb3VyY2VzW2VdKXtjb25zdCBvPXRoaXMud29ya2VyU291cmNlc1tlXVtyXTtmb3IoY29uc3QgZSBpbiBvKW9bZV0uYXZhaWxhYmxlSW1hZ2VzPXQ7fXIoKTt9ZW5hYmxlVGVycmFpbihlLHQscil7dGhpcy50ZXJyYWluPXQscigpO31zZXRQcm9qZWN0aW9uKHQscil7dGhpcy5wcm9qZWN0aW9uc1t0XT1lLmdldFByb2plY3Rpb24ocik7fXNldExheWVycyhlLHQscil7dGhpcy5nZXRMYXllckluZGV4KGUpLnJlcGxhY2UodCkscigpO311cGRhdGVMYXllcnMoZSx0LHIpe3RoaXMuZ2V0TGF5ZXJJbmRleChlKS51cGRhdGUodC5sYXllcnMsdC5yZW1vdmVkSWRzKSxyKCk7fWxvYWRUaWxlKHQscixvKXtjb25zdCBpPXRoaXMuZW5hYmxlVGVycmFpbj9lLmV4dGVuZCh7ZW5hYmxlVGVycmFpbjp0aGlzLnRlcnJhaW59LHIpOnI7aS5wcm9qZWN0aW9uPXRoaXMucHJvamVjdGlvbnNbdF18fHRoaXMuZGVmYXVsdFByb2plY3Rpb24sdGhpcy5nZXRXb3JrZXJTb3VyY2UodCxyLnR5cGUsci5zb3VyY2UpLmxvYWRUaWxlKGksbyk7fWxvYWRERU1UaWxlKHQscixvKXtjb25zdCBpPXRoaXMuZW5hYmxlVGVycmFpbj9lLmV4dGVuZCh7YnVpbGRRdWFkVHJlZTp0aGlzLnRlcnJhaW59LHIpOnI7dGhpcy5nZXRERU1Xb3JrZXJTb3VyY2UodCxyLnNvdXJjZSkubG9hZFRpbGUoaSxvKTt9cmVsb2FkVGlsZSh0LHIsbyl7Y29uc3QgaT10aGlzLmVuYWJsZVRlcnJhaW4/ZS5leHRlbmQoe2VuYWJsZVRlcnJhaW46dGhpcy50ZXJyYWlufSxyKTpyO2kucHJvamVjdGlvbj10aGlzLnByb2plY3Rpb25zW3RdfHx0aGlzLmRlZmF1bHRQcm9qZWN0aW9uLHRoaXMuZ2V0V29ya2VyU291cmNlKHQsci50eXBlLHIuc291cmNlKS5yZWxvYWRUaWxlKGksbyk7fWFib3J0VGlsZShlLHQscil7dGhpcy5nZXRXb3JrZXJTb3VyY2UoZSx0LnR5cGUsdC5zb3VyY2UpLmFib3J0VGlsZSh0LHIpO31yZW1vdmVUaWxlKGUsdCxyKXt0aGlzLmdldFdvcmtlclNvdXJjZShlLHQudHlwZSx0LnNvdXJjZSkucmVtb3ZlVGlsZSh0LHIpO31yZW1vdmVTb3VyY2UoZSx0LHIpe2lmKCF0aGlzLndvcmtlclNvdXJjZXNbZV18fCF0aGlzLndvcmtlclNvdXJjZXNbZV1bdC50eXBlXXx8IXRoaXMud29ya2VyU291cmNlc1tlXVt0LnR5cGVdW3Quc291cmNlXSlyZXR1cm47Y29uc3Qgbz10aGlzLndvcmtlclNvdXJjZXNbZV1bdC50eXBlXVt0LnNvdXJjZV07ZGVsZXRlIHRoaXMud29ya2VyU291cmNlc1tlXVt0LnR5cGVdW3Quc291cmNlXSx2b2lkIDAhPT1vLnJlbW92ZVNvdXJjZT9vLnJlbW92ZVNvdXJjZSh0LHIpOnIoKTt9bG9hZFdvcmtlclNvdXJjZShlLHQscil7dHJ5e3RoaXMuc2VsZi5pbXBvcnRTY3JpcHRzKHQudXJsKSxyKCk7fWNhdGNoKGUpe3IoZS50b1N0cmluZygpKTt9fXN5bmNSVExQbHVnaW5TdGF0ZSh0LHIsbyl7dHJ5e2UucGx1Z2luLnNldFN0YXRlKHIpO2NvbnN0IHQ9ZS5wbHVnaW4uZ2V0UGx1Z2luVVJMKCk7aWYoZS5wbHVnaW4uaXNMb2FkZWQoKSYmIWUucGx1Z2luLmlzUGFyc2VkKCkmJm51bGwhPXQpe3RoaXMuc2VsZi5pbXBvcnRTY3JpcHRzKHQpO2NvbnN0IHI9ZS5wbHVnaW4uaXNQYXJzZWQoKTtvKHI/dm9pZCAwOm5ldyBFcnJvcihgUlRMIFRleHQgUGx1Z2luIGZhaWxlZCB0byBpbXBvcnQgc2NyaXB0cyBmcm9tICR7dH1gKSxyKTt9fWNhdGNoKGUpe28oZS50b1N0cmluZygpKTt9fWdldEF2YWlsYWJsZUltYWdlcyhlKXtsZXQgdD10aGlzLmF2YWlsYWJsZUltYWdlc1tlXTtyZXR1cm4gdHx8KHQ9W10pLHR9Z2V0TGF5ZXJJbmRleChlKXtsZXQgdD10aGlzLmxheWVySW5kZXhlc1tlXTtyZXR1cm4gdHx8KHQ9dGhpcy5sYXllckluZGV4ZXNbZV09bmV3IG8pLHR9Z2V0V29ya2VyU291cmNlKGUsdCxyKXtpZih0aGlzLndvcmtlclNvdXJjZXNbZV18fCh0aGlzLndvcmtlclNvdXJjZXNbZV09e30pLHRoaXMud29ya2VyU291cmNlc1tlXVt0XXx8KHRoaXMud29ya2VyU291cmNlc1tlXVt0XT17fSksIXRoaXMud29ya2VyU291cmNlc1tlXVt0XVtyXSl7Y29uc3Qgbz17c2VuZDoodCxyLG8saSxuLHMpPT57dGhpcy5hY3Rvci5zZW5kKHQscixvLGUsbixzKTt9LHNjaGVkdWxlcjp0aGlzLmFjdG9yLnNjaGVkdWxlcn07dGhpcy53b3JrZXJTb3VyY2VzW2VdW3RdW3JdPW5ldyB0aGlzLndvcmtlclNvdXJjZVR5cGVzW3RdKG8sdGhpcy5nZXRMYXllckluZGV4KGUpLHRoaXMuZ2V0QXZhaWxhYmxlSW1hZ2VzKGUpLHRoaXMuaXNTcHJpdGVMb2FkZWRbZV0pO31yZXR1cm4gdGhpcy53b3JrZXJTb3VyY2VzW2VdW3RdW3JdfWdldERFTVdvcmtlclNvdXJjZShlLHQpe3JldHVybiB0aGlzLmRlbVdvcmtlclNvdXJjZXNbZV18fCh0aGlzLmRlbVdvcmtlclNvdXJjZXNbZV09e30pLHRoaXMuZGVtV29ya2VyU291cmNlc1tlXVt0XXx8KHRoaXMuZGVtV29ya2VyU291cmNlc1tlXVt0XT1uZXcgaSksdGhpcy5kZW1Xb3JrZXJTb3VyY2VzW2VdW3RdfWVuZm9yY2VDYWNoZVNpemVMaW1pdCh0LHIpe2UuZW5mb3JjZUNhY2hlU2l6ZUxpbWl0KHIpO31nZXRXb3JrZXJQZXJmb3JtYW5jZU1ldHJpY3MoZSx0LHIpe3Iodm9pZCAwLHZvaWQgMCk7fX1yZXR1cm4gXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiYoc2VsZi53b3JrZXI9bmV3IHBlKHNlbGYpKSxwZX0pKTtcblxuZGVmaW5lKFtcIi4vc2hhcmVkXCJdLChmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiB0KGUsaSl7aWYoQXJyYXkuaXNBcnJheShlKSl7aWYoIUFycmF5LmlzQXJyYXkoaSl8fGUubGVuZ3RoIT09aS5sZW5ndGgpcmV0dXJuICExO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKWlmKCF0KGVbb10saVtvXSkpcmV0dXJuICExO3JldHVybiAhMH1pZihcIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJm51bGwhPT1pKXtpZihcIm9iamVjdFwiIT10eXBlb2YgaSlyZXR1cm4gITE7aWYoT2JqZWN0LmtleXMoZSkubGVuZ3RoIT09T2JqZWN0LmtleXMoaSkubGVuZ3RoKXJldHVybiAhMTtmb3IoY29uc3QgbyBpbiBlKWlmKCF0KGVbb10saVtvXSkpcmV0dXJuICExO3JldHVybiAhMH1yZXR1cm4gZT09PWl9dmFyIGk9bztmdW5jdGlvbiBvKGUpe3JldHVybiAhZnVuY3Rpb24oZSl7cmV0dXJuIFwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3d8fFwidW5kZWZpbmVkXCI9PXR5cGVvZiBkb2N1bWVudD9cIm5vdCBhIGJyb3dzZXJcIjpBcnJheS5wcm90b3R5cGUmJkFycmF5LnByb3RvdHlwZS5ldmVyeSYmQXJyYXkucHJvdG90eXBlLmZpbHRlciYmQXJyYXkucHJvdG90eXBlLmZvckVhY2gmJkFycmF5LnByb3RvdHlwZS5pbmRleE9mJiZBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YmJkFycmF5LnByb3RvdHlwZS5tYXAmJkFycmF5LnByb3RvdHlwZS5zb21lJiZBcnJheS5wcm90b3R5cGUucmVkdWNlJiZBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQmJkFycmF5LmlzQXJyYXk/RnVuY3Rpb24ucHJvdG90eXBlJiZGdW5jdGlvbi5wcm90b3R5cGUuYmluZD9PYmplY3Qua2V5cyYmT2JqZWN0LmNyZWF0ZSYmT2JqZWN0LmdldFByb3RvdHlwZU9mJiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyYmT2JqZWN0LmlzU2VhbGVkJiZPYmplY3QuaXNGcm96ZW4mJk9iamVjdC5pc0V4dGVuc2libGUmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3ImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmRlZmluZVByb3BlcnRpZXMmJk9iamVjdC5zZWFsJiZPYmplY3QuZnJlZXplJiZPYmplY3QucHJldmVudEV4dGVuc2lvbnM/XCJKU09OXCJpbiB3aW5kb3cmJlwicGFyc2VcImluIEpTT04mJlwic3RyaW5naWZ5XCJpbiBKU09OP2Z1bmN0aW9uKCl7aWYoIShcIldvcmtlclwiaW4gd2luZG93JiZcIkJsb2JcImluIHdpbmRvdyYmXCJVUkxcImluIHdpbmRvdykpcmV0dXJuICExO3ZhciBlLHQsaT1uZXcgQmxvYihbXCJcIl0se3R5cGU6XCJ0ZXh0L2phdmFzY3JpcHRcIn0pLG89VVJMLmNyZWF0ZU9iamVjdFVSTChpKTt0cnl7dD1uZXcgV29ya2VyKG8pLGU9ITA7fWNhdGNoKHQpe2U9ITE7fXJldHVybiB0JiZ0LnRlcm1pbmF0ZSgpLFVSTC5yZXZva2VPYmplY3RVUkwobyksZX0oKT9cIlVpbnQ4Q2xhbXBlZEFycmF5XCJpbiB3aW5kb3c/QXJyYXlCdWZmZXIuaXNWaWV3P2Z1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtlLndpZHRoPWUuaGVpZ2h0PTE7dmFyIHQ9ZS5nZXRDb250ZXh0KFwiMmRcIik7aWYoIXQpcmV0dXJuICExO3ZhciBpPXQuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpO3JldHVybiBpJiZpLndpZHRoPT09ZS53aWR0aH0oKT8odm9pZCAwPT09clt0PWUmJmUuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdF0mJihyW3RdPWZ1bmN0aW9uKGUpe3ZhciB0LGk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKSxpPU9iamVjdC5jcmVhdGUoby53ZWJHTENvbnRleHRBdHRyaWJ1dGVzKTtyZXR1cm4gaS5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0PWUsdC5nZXRDb250ZXh0KFwid2ViZ2xcIixpKXx8dC5nZXRDb250ZXh0KFwiZXhwZXJpbWVudGFsLXdlYmdsXCIsaSl9KGUpO2lmKCFpKXJldHVybiAhMTt0cnl7dD1pLmNyZWF0ZVNoYWRlcihpLlZFUlRFWF9TSEFERVIpO31jYXRjaChlKXtyZXR1cm4gITF9cmV0dXJuICEoIXR8fGkuaXNDb250ZXh0TG9zdCgpKSYmKGkuc2hhZGVyU291cmNlKHQsXCJ2b2lkIG1haW4oKSB7fVwiKSxpLmNvbXBpbGVTaGFkZXIodCksITA9PT1pLmdldFNoYWRlclBhcmFtZXRlcih0LGkuQ09NUElMRV9TVEFUVVMpKX0odCkpLHJbdF0/ZG9jdW1lbnQuZG9jdW1lbnRNb2RlP1wiaW5zdWZmaWNpZW50IEVDTUFTY3JpcHQgNiBzdXBwb3J0XCI6dm9pZCAwOlwiaW5zdWZmaWNpZW50IFdlYkdMIHN1cHBvcnRcIik6XCJpbnN1ZmZpY2llbnQgQ2FudmFzL2dldEltYWdlRGF0YSBzdXBwb3J0XCI6XCJpbnN1ZmZpY2llbnQgQXJyYXlCdWZmZXIgc3VwcG9ydFwiOlwiaW5zdWZmaWNpZW50IFVpbnQ4Q2xhbXBlZEFycmF5IHN1cHBvcnRcIjpcImluc3VmZmljaWVudCB3b3JrZXIgc3VwcG9ydFwiOlwiaW5zdWZmaWNpZW50IEpTT04gc3VwcG9ydFwiOlwiaW5zdWZmaWNpZW50IE9iamVjdCBzdXBwb3J0XCI6XCJpbnN1ZmZpY2llbnQgRnVuY3Rpb24gc3VwcG9ydFwiOlwiaW5zdWZmaWNlbnQgQXJyYXkgc3VwcG9ydFwiO3ZhciB0O30oZSl9dmFyIHI9e307ZnVuY3Rpb24gbih0LGksbyl7Y29uc3Qgcj1lLndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpO3JldHVybiB2b2lkIDAhPT1pJiYoci5jbGFzc05hbWU9aSksbyYmby5hcHBlbmRDaGlsZChyKSxyfWZ1bmN0aW9uIHModCxpLG8pe2NvbnN0IHI9ZS53aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix0KTtmb3IoY29uc3QgZSBvZiBPYmplY3Qua2V5cyhpKSlyLnNldEF0dHJpYnV0ZU5TKG51bGwsZSxpW2VdKTtyZXR1cm4gbyYmby5hcHBlbmRDaGlsZChyKSxyfW8ud2ViR0xDb250ZXh0QXR0cmlidXRlcz17YW50aWFsaWFzOiExLGFscGhhOiEwLHN0ZW5jaWw6ITAsZGVwdGg6ITB9O2NvbnN0IGE9ZS53aW5kb3cuZG9jdW1lbnQmJmUud2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSxsPWEmJnZvaWQgMCE9PWEudXNlclNlbGVjdD9cInVzZXJTZWxlY3RcIjpcIldlYmtpdFVzZXJTZWxlY3RcIjtsZXQgYztmdW5jdGlvbiBoKCl7YSYmbCYmKGM9YVtsXSxhW2xdPVwibm9uZVwiKTt9ZnVuY3Rpb24gdSgpe2EmJmwmJihhW2xdPWMpO31mdW5jdGlvbiBfKHQpe3QucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLGUud2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLF8sITApO31mdW5jdGlvbiBkKCl7ZS53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsXywhMCksZS53aW5kb3cuc2V0VGltZW91dCgoKCk9PntlLndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIixfLCEwKTt9KSwwKTt9ZnVuY3Rpb24gcChlLHQpe2NvbnN0IGk9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gZyhlLGksdCl9ZnVuY3Rpb24gbShlLHQpe2NvbnN0IGk9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPVtdO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKW8ucHVzaChnKGUsaSx0W3JdKSk7cmV0dXJuIG99ZnVuY3Rpb24gZih0KXtyZXR1cm4gdm9pZCAwIT09ZS53aW5kb3cuSW5zdGFsbFRyaWdnZXImJjI9PT10LmJ1dHRvbiYmdC5jdHJsS2V5JiZlLndpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0udG9VcHBlckNhc2UoKS5pbmRleE9mKFwiTUFDXCIpPj0wPzA6dC5idXR0b259ZnVuY3Rpb24gZyh0LGksbyl7Y29uc3Qgcj10Lm9mZnNldFdpZHRoPT09aS53aWR0aD8xOnQub2Zmc2V0V2lkdGgvaS53aWR0aDtyZXR1cm4gbmV3IGUuUG9pbnQoKG8uY2xpZW50WC1pLmxlZnQpKnIsKG8uY2xpZW50WS1pLnRvcCkqcil9ZnVuY3Rpb24gdihlLHQpe3ZhciBpPXRbMF0sbz10WzFdLHI9dFsyXSxuPXRbM10scz1pKm4tcipvO3JldHVybiBzPyhlWzBdPW4qKHM9MS9zKSxlWzFdPS1vKnMsZVsyXT0tcipzLGVbM109aSpzLGUpOm51bGx9ZnVuY3Rpb24geChlKXtjb25zdHt1c2VySW1hZ2U6dH09ZTtyZXR1cm4gISEodCYmdC5yZW5kZXImJnQucmVuZGVyKCkpJiYoZS5kYXRhLnJlcGxhY2UobmV3IFVpbnQ4QXJyYXkodC5kYXRhLmJ1ZmZlcikpLCEwKX1jbGFzcyB5IGV4dGVuZHMgZS5FdmVudGVke2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmltYWdlcz17fSx0aGlzLnVwZGF0ZWRJbWFnZXM9e30sdGhpcy5jYWxsYmFja0Rpc3BhdGNoZWRUaGlzRnJhbWU9e30sdGhpcy5sb2FkZWQ9ITEsdGhpcy5yZXF1ZXN0b3JzPVtdLHRoaXMucGF0dGVybnM9e30sdGhpcy5hdGxhc0ltYWdlPW5ldyBlLlJHQkFJbWFnZSh7d2lkdGg6MSxoZWlnaHQ6MX0pLHRoaXMuZGlydHk9ITA7fWlzTG9hZGVkKCl7cmV0dXJuIHRoaXMubG9hZGVkfXNldExvYWRlZChlKXtpZih0aGlzLmxvYWRlZCE9PWUmJih0aGlzLmxvYWRlZD1lLGUpKXtmb3IoY29uc3R7aWRzOmUsY2FsbGJhY2s6dH1vZiB0aGlzLnJlcXVlc3RvcnMpdGhpcy5fbm90aWZ5KGUsdCk7dGhpcy5yZXF1ZXN0b3JzPVtdO319aGFzSW1hZ2UoZSl7cmV0dXJuICEhdGhpcy5nZXRJbWFnZShlKX1nZXRJbWFnZShlKXtyZXR1cm4gdGhpcy5pbWFnZXNbZV19YWRkSW1hZ2UoZSx0KXt0aGlzLl92YWxpZGF0ZShlLHQpJiYodGhpcy5pbWFnZXNbZV09dCk7fV92YWxpZGF0ZSh0LGkpe2xldCBvPSEwO3JldHVybiB0aGlzLl92YWxpZGF0ZVN0cmV0Y2goaS5zdHJldGNoWCxpLmRhdGEmJmkuZGF0YS53aWR0aCl8fCh0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoYEltYWdlIFwiJHt0fVwiIGhhcyBpbnZhbGlkIFwic3RyZXRjaFhcIiB2YWx1ZWApKSksbz0hMSksdGhpcy5fdmFsaWRhdGVTdHJldGNoKGkuc3RyZXRjaFksaS5kYXRhJiZpLmRhdGEuaGVpZ2h0KXx8KHRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihgSW1hZ2UgXCIke3R9XCIgaGFzIGludmFsaWQgXCJzdHJldGNoWVwiIHZhbHVlYCkpKSxvPSExKSx0aGlzLl92YWxpZGF0ZUNvbnRlbnQoaS5jb250ZW50LGkpfHwodGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKGBJbWFnZSBcIiR7dH1cIiBoYXMgaW52YWxpZCBcImNvbnRlbnRcIiB2YWx1ZWApKSksbz0hMSksb31fdmFsaWRhdGVTdHJldGNoKGUsdCl7aWYoIWUpcmV0dXJuICEwO2xldCBpPTA7Zm9yKGNvbnN0IG8gb2YgZSl7aWYob1swXTxpfHxvWzFdPG9bMF18fHQ8b1sxXSlyZXR1cm4gITE7aT1vWzFdO31yZXR1cm4gITB9X3ZhbGlkYXRlQ29udGVudChlLHQpe3JldHVybiAhKGUmJig0IT09ZS5sZW5ndGh8fGVbMF08MHx8dC5kYXRhLndpZHRoPGVbMF18fGVbMV08MHx8dC5kYXRhLmhlaWdodDxlWzFdfHxlWzJdPDB8fHQuZGF0YS53aWR0aDxlWzJdfHxlWzNdPDB8fHQuZGF0YS5oZWlnaHQ8ZVszXXx8ZVsyXTxlWzBdfHxlWzNdPGVbMV0pKX11cGRhdGVJbWFnZShlLHQpe3QudmVyc2lvbj10aGlzLmltYWdlc1tlXS52ZXJzaW9uKzEsdGhpcy5pbWFnZXNbZV09dCx0aGlzLnVwZGF0ZWRJbWFnZXNbZV09ITA7fXJlbW92ZUltYWdlKGUpe2NvbnN0IHQ9dGhpcy5pbWFnZXNbZV07ZGVsZXRlIHRoaXMuaW1hZ2VzW2VdLGRlbGV0ZSB0aGlzLnBhdHRlcm5zW2VdLHQudXNlckltYWdlJiZ0LnVzZXJJbWFnZS5vblJlbW92ZSYmdC51c2VySW1hZ2Uub25SZW1vdmUoKTt9bGlzdEltYWdlcygpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmltYWdlcyl9Z2V0SW1hZ2VzKGUsdCl7bGV0IGk9ITA7aWYoIXRoaXMuaXNMb2FkZWQoKSlmb3IoY29uc3QgdCBvZiBlKXRoaXMuaW1hZ2VzW3RdfHwoaT0hMSk7dGhpcy5pc0xvYWRlZCgpfHxpP3RoaXMuX25vdGlmeShlLHQpOnRoaXMucmVxdWVzdG9ycy5wdXNoKHtpZHM6ZSxjYWxsYmFjazp0fSk7fV9ub3RpZnkodCxpKXtjb25zdCBvPXt9O2Zvcihjb25zdCBpIG9mIHQpe3RoaXMuaW1hZ2VzW2ldfHx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJzdHlsZWltYWdlbWlzc2luZ1wiLHtpZDppfSkpO2NvbnN0IHQ9dGhpcy5pbWFnZXNbaV07dD9vW2ldPXtkYXRhOnQuZGF0YS5jbG9uZSgpLHBpeGVsUmF0aW86dC5waXhlbFJhdGlvLHNkZjp0LnNkZix2ZXJzaW9uOnQudmVyc2lvbixzdHJldGNoWDp0LnN0cmV0Y2hYLHN0cmV0Y2hZOnQuc3RyZXRjaFksY29udGVudDp0LmNvbnRlbnQsaGFzUmVuZGVyQ2FsbGJhY2s6Qm9vbGVhbih0LnVzZXJJbWFnZSYmdC51c2VySW1hZ2UucmVuZGVyKX06ZS53YXJuT25jZShgSW1hZ2UgXCIke2l9XCIgY291bGQgbm90IGJlIGxvYWRlZC4gUGxlYXNlIG1ha2Ugc3VyZSB5b3UgaGF2ZSBhZGRlZCB0aGUgaW1hZ2Ugd2l0aCBtYXAuYWRkSW1hZ2UoKSBvciBhIFwic3ByaXRlXCIgcHJvcGVydHkgaW4geW91ciBzdHlsZS4gWW91IGNhbiBwcm92aWRlIG1pc3NpbmcgaW1hZ2VzIGJ5IGxpc3RlbmluZyBmb3IgdGhlIFwic3R5bGVpbWFnZW1pc3NpbmdcIiBtYXAgZXZlbnQuYCk7fWkobnVsbCxvKTt9Z2V0UGl4ZWxTaXplKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6dH09dGhpcy5hdGxhc0ltYWdlO3JldHVybiB7d2lkdGg6ZSxoZWlnaHQ6dH19Z2V0UGF0dGVybih0KXtjb25zdCBpPXRoaXMucGF0dGVybnNbdF0sbz10aGlzLmdldEltYWdlKHQpO2lmKCFvKXJldHVybiBudWxsO2lmKGkmJmkucG9zaXRpb24udmVyc2lvbj09PW8udmVyc2lvbilyZXR1cm4gaS5wb3NpdGlvbjtpZihpKWkucG9zaXRpb24udmVyc2lvbj1vLnZlcnNpb247ZWxzZSB7Y29uc3QgaT17dzpvLmRhdGEud2lkdGgrMixoOm8uZGF0YS5oZWlnaHQrMix4OjAseTowfSxyPW5ldyBlLkltYWdlUG9zaXRpb24oaSxvKTt0aGlzLnBhdHRlcm5zW3RdPXtiaW46aSxwb3NpdGlvbjpyfTt9cmV0dXJuIHRoaXMuX3VwZGF0ZVBhdHRlcm5BdGxhcygpLHRoaXMucGF0dGVybnNbdF0ucG9zaXRpb259YmluZCh0KXtjb25zdCBpPXQuZ2w7dGhpcy5hdGxhc1RleHR1cmU/dGhpcy5kaXJ0eSYmKHRoaXMuYXRsYXNUZXh0dXJlLnVwZGF0ZSh0aGlzLmF0bGFzSW1hZ2UpLHRoaXMuZGlydHk9ITEpOnRoaXMuYXRsYXNUZXh0dXJlPW5ldyBlLlRleHR1cmUodCx0aGlzLmF0bGFzSW1hZ2UsaS5SR0JBKSx0aGlzLmF0bGFzVGV4dHVyZSYmdGhpcy5hdGxhc1RleHR1cmUuYmluZChpLkxJTkVBUixpLkNMQU1QX1RPX0VER0UpO31fdXBkYXRlUGF0dGVybkF0bGFzKCl7Y29uc3QgdD1bXTtmb3IoY29uc3QgZSBpbiB0aGlzLnBhdHRlcm5zKXQucHVzaCh0aGlzLnBhdHRlcm5zW2VdLmJpbik7Y29uc3R7dzppLGg6b309ZS5wb3RwYWNrKHQpLHI9dGhpcy5hdGxhc0ltYWdlO3IucmVzaXplKHt3aWR0aDppfHwxLGhlaWdodDpvfHwxfSk7Zm9yKGNvbnN0IHQgaW4gdGhpcy5wYXR0ZXJucyl7Y29uc3R7YmluOml9PXRoaXMucGF0dGVybnNbdF0sbz1pLngrMSxuPWkueSsxLHM9dGhpcy5pbWFnZXNbdF0uZGF0YSxhPXMud2lkdGgsbD1zLmhlaWdodDtlLlJHQkFJbWFnZS5jb3B5KHMscix7eDowLHk6MH0se3g6byx5Om59LHt3aWR0aDphLGhlaWdodDpsfSksZS5SR0JBSW1hZ2UuY29weShzLHIse3g6MCx5OmwtMX0se3g6byx5Om4tMX0se3dpZHRoOmEsaGVpZ2h0OjF9KSxlLlJHQkFJbWFnZS5jb3B5KHMscix7eDowLHk6MH0se3g6byx5Om4rbH0se3dpZHRoOmEsaGVpZ2h0OjF9KSxlLlJHQkFJbWFnZS5jb3B5KHMscix7eDphLTEseTowfSx7eDpvLTEseTpufSx7d2lkdGg6MSxoZWlnaHQ6bH0pLGUuUkdCQUltYWdlLmNvcHkocyxyLHt4OjAseTowfSx7eDpvK2EseTpufSx7d2lkdGg6MSxoZWlnaHQ6bH0pO310aGlzLmRpcnR5PSEwO31iZWdpbkZyYW1lKCl7dGhpcy5jYWxsYmFja0Rpc3BhdGNoZWRUaGlzRnJhbWU9e307fWRpc3BhdGNoUmVuZGVyQ2FsbGJhY2tzKGUpe2Zvcihjb25zdCB0IG9mIGUpe2lmKHRoaXMuY2FsbGJhY2tEaXNwYXRjaGVkVGhpc0ZyYW1lW3RdKWNvbnRpbnVlO3RoaXMuY2FsbGJhY2tEaXNwYXRjaGVkVGhpc0ZyYW1lW3RdPSEwO2NvbnN0IGU9dGhpcy5pbWFnZXNbdF07eChlKSYmdGhpcy51cGRhdGVJbWFnZSh0LGUpO319fWNvbnN0IGI9bmV3IGUuUHJvcGVydGllcyh7YW5jaG9yOm5ldyBlLkRhdGFDb25zdGFudFByb3BlcnR5KGUuc3BlYy5saWdodC5hbmNob3IpLHBvc2l0aW9uOm5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3BlY2lmaWNhdGlvbj1lLnNwZWMubGlnaHQucG9zaXRpb247fXBvc3NpYmx5RXZhbHVhdGUodCxpKXtyZXR1cm4gZnVuY3Rpb24oW3QsaSxvXSl7Y29uc3Qgcj1lLmRlZ1RvUmFkKGkrOTApLG49ZS5kZWdUb1JhZChvKTtyZXR1cm4ge3g6dCpNYXRoLmNvcyhyKSpNYXRoLnNpbihuKSx5OnQqTWF0aC5zaW4ocikqTWF0aC5zaW4obiksejp0Kk1hdGguY29zKG4pLGF6aW11dGhhbDppLHBvbGFyOm99fSh0LmV4cHJlc3Npb24uZXZhbHVhdGUoaSkpfWludGVycG9sYXRlKHQsaSxvKXtyZXR1cm4ge3g6ZS5udW1iZXIodC54LGkueCxvKSx5OmUubnVtYmVyKHQueSxpLnksbyksejplLm51bWJlcih0LnosaS56LG8pLGF6aW11dGhhbDplLm51bWJlcih0LmF6aW11dGhhbCxpLmF6aW11dGhhbCxvKSxwb2xhcjplLm51bWJlcih0LnBvbGFyLGkucG9sYXIsbyl9fX0sY29sb3I6bmV3IGUuRGF0YUNvbnN0YW50UHJvcGVydHkoZS5zcGVjLmxpZ2h0LmNvbG9yKSxpbnRlbnNpdHk6bmV3IGUuRGF0YUNvbnN0YW50UHJvcGVydHkoZS5zcGVjLmxpZ2h0LmludGVuc2l0eSl9KTtjbGFzcyB3IGV4dGVuZHMgZS5FdmVudGVke2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fdHJhbnNpdGlvbmFibGU9bmV3IGUuVHJhbnNpdGlvbmFibGUoYiksdGhpcy5zZXRMaWdodCh0KSx0aGlzLl90cmFuc2l0aW9uaW5nPXRoaXMuX3RyYW5zaXRpb25hYmxlLnVudHJhbnNpdGlvbmVkKCk7fWdldExpZ2h0KCl7cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25hYmxlLnNlcmlhbGl6ZSgpfXNldExpZ2h0KHQsaT17fSl7aWYoIXRoaXMuX3ZhbGlkYXRlKGUudmFsaWRhdGVMaWdodCx0LGkpKWZvcihjb25zdCBpIGluIHQpe2NvbnN0IG89dFtpXTtlLmVuZHNXaXRoKGksXCItdHJhbnNpdGlvblwiKT90aGlzLl90cmFuc2l0aW9uYWJsZS5zZXRUcmFuc2l0aW9uKGkuc2xpY2UoMCwtMTEpLG8pOnRoaXMuX3RyYW5zaXRpb25hYmxlLnNldFZhbHVlKGksbyk7fX11cGRhdGVUcmFuc2l0aW9ucyhlKXt0aGlzLl90cmFuc2l0aW9uaW5nPXRoaXMuX3RyYW5zaXRpb25hYmxlLnRyYW5zaXRpb25lZChlLHRoaXMuX3RyYW5zaXRpb25pbmcpO31oYXNUcmFuc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25pbmcuaGFzVHJhbnNpdGlvbigpfXJlY2FsY3VsYXRlKGUpe3RoaXMucHJvcGVydGllcz10aGlzLl90cmFuc2l0aW9uaW5nLnBvc3NpYmx5RXZhbHVhdGUoZSk7fV92YWxpZGF0ZSh0LGksbyl7cmV0dXJuICghb3x8ITEhPT1vLnZhbGlkYXRlKSYmZS5lbWl0VmFsaWRhdGlvbkVycm9ycyh0aGlzLHQuY2FsbChlLnZhbGlkYXRlU3R5bGUsZS5leHRlbmQoe3ZhbHVlOmksc3R5bGU6e2dseXBoczohMCxzcHJpdGU6ITB9LHN0eWxlU3BlYzplLnNwZWN9KSkpfX1jb25zdCBUPW5ldyBlLlByb3BlcnRpZXMoe3NvdXJjZTpuZXcgZS5EYXRhQ29uc3RhbnRQcm9wZXJ0eShlLnNwZWMudGVycmFpbi5zb3VyY2UpLGV4YWdnZXJhdGlvbjpuZXcgZS5EYXRhQ29uc3RhbnRQcm9wZXJ0eShlLnNwZWMudGVycmFpbi5leGFnZ2VyYXRpb24pfSk7bGV0IEU9Y2xhc3MgZXh0ZW5kcyBlLkV2ZW50ZWR7Y29uc3RydWN0b3IodCxpKXtzdXBlcigpLHRoaXMuX3RyYW5zaXRpb25hYmxlPW5ldyBlLlRyYW5zaXRpb25hYmxlKFQpLHRoaXMuc2V0KHQpLHRoaXMuX3RyYW5zaXRpb25pbmc9dGhpcy5fdHJhbnNpdGlvbmFibGUudW50cmFuc2l0aW9uZWQoKSx0aGlzLmRyYXBlUmVuZGVyTW9kZT1pO31nZXQoKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbmFibGUuc2VyaWFsaXplKCl9c2V0KHQpe2Zvcihjb25zdCBpIGluIHQpe2NvbnN0IG89dFtpXTtlLmVuZHNXaXRoKGksXCItdHJhbnNpdGlvblwiKT90aGlzLl90cmFuc2l0aW9uYWJsZS5zZXRUcmFuc2l0aW9uKGkuc2xpY2UoMCwtMTEpLG8pOnRoaXMuX3RyYW5zaXRpb25hYmxlLnNldFZhbHVlKGksbyk7fX11cGRhdGVUcmFuc2l0aW9ucyhlKXt0aGlzLl90cmFuc2l0aW9uaW5nPXRoaXMuX3RyYW5zaXRpb25hYmxlLnRyYW5zaXRpb25lZChlLHRoaXMuX3RyYW5zaXRpb25pbmcpO31oYXNUcmFuc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25pbmcuaGFzVHJhbnNpdGlvbigpfXJlY2FsY3VsYXRlKGUpe3RoaXMucHJvcGVydGllcz10aGlzLl90cmFuc2l0aW9uaW5nLnBvc3NpYmx5RXZhbHVhdGUoZSk7fX07ZnVuY3Rpb24gQyh0LGksbyxyKXtjb25zdCBuPWUuc21vb3Roc3RlcCg0NSw2NSxvKSxbcyxhXT1NKHQsciksbD1lLmxlbmd0aChpKTtsZXQgYz0xLU1hdGgubWluKDEsTWF0aC5leHAoKGwtcykvKGEtcykqLTYpKTtyZXR1cm4gYyo9YypjLGM9TWF0aC5taW4oMSwxLjAwNzQ3KmMpLGMqbip0LmFscGhhfWZ1bmN0aW9uIE0oZSx0KXtjb25zdCBpPS41L01hdGgudGFuKC41KnQpO3JldHVybiBbZS5yYW5nZVswXStpLGUucmFuZ2VbMV0raV19Y29uc3QgST1uZXcgZS5Qcm9wZXJ0aWVzKHtyYW5nZTpuZXcgZS5EYXRhQ29uc3RhbnRQcm9wZXJ0eShlLnNwZWMuZm9nLnJhbmdlKSxjb2xvcjpuZXcgZS5EYXRhQ29uc3RhbnRQcm9wZXJ0eShlLnNwZWMuZm9nLmNvbG9yKSxcImhpZ2gtY29sb3JcIjpuZXcgZS5EYXRhQ29uc3RhbnRQcm9wZXJ0eShlLnNwZWMuZm9nW1wiaGlnaC1jb2xvclwiXSksXCJzcGFjZS1jb2xvclwiOm5ldyBlLkRhdGFDb25zdGFudFByb3BlcnR5KGUuc3BlYy5mb2dbXCJzcGFjZS1jb2xvclwiXSksXCJob3Jpem9uLWJsZW5kXCI6bmV3IGUuRGF0YUNvbnN0YW50UHJvcGVydHkoZS5zcGVjLmZvZ1tcImhvcml6b24tYmxlbmRcIl0pLFwic3Rhci1pbnRlbnNpdHlcIjpuZXcgZS5EYXRhQ29uc3RhbnRQcm9wZXJ0eShlLnNwZWMuZm9nW1wic3Rhci1pbnRlbnNpdHlcIl0pfSk7Y2xhc3MgUCBleHRlbmRzIGUuRXZlbnRlZHtjb25zdHJ1Y3Rvcih0LGkpe3N1cGVyKCksdGhpcy5fdHJhbnNpdGlvbmFibGU9bmV3IGUuVHJhbnNpdGlvbmFibGUoSSksdGhpcy5zZXQodCksdGhpcy5fdHJhbnNpdGlvbmluZz10aGlzLl90cmFuc2l0aW9uYWJsZS51bnRyYW5zaXRpb25lZCgpLHRoaXMuX3RyYW5zZm9ybT1pO31nZXQgc3RhdGUoKXtjb25zdCB0PXRoaXMuX3RyYW5zZm9ybSxpPVwiZ2xvYmVcIj09PXQucHJvamVjdGlvbi5uYW1lLG89ZS5nbG9iZVRvTWVyY2F0b3JUcmFuc2l0aW9uKHQuem9vbSkscj10aGlzLnByb3BlcnRpZXMuZ2V0KFwicmFuZ2VcIiksbj1bLjUsM107cmV0dXJuIHtyYW5nZTppP1tlLm51bWJlcihuWzBdLHJbMF0sbyksZS5udW1iZXIoblsxXSxyWzFdLG8pXTpyLGhvcml6b25CbGVuZDp0aGlzLnByb3BlcnRpZXMuZ2V0KFwiaG9yaXpvbi1ibGVuZFwiKSxhbHBoYTp0aGlzLnByb3BlcnRpZXMuZ2V0KFwiY29sb3JcIikuYX19Z2V0KCl7cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25hYmxlLnNlcmlhbGl6ZSgpfXNldCh0LGk9e30pe2lmKCF0aGlzLl92YWxpZGF0ZShlLnZhbGlkYXRlRm9nLHQsaSkpe2Zvcihjb25zdCBpIG9mIE9iamVjdC5rZXlzKGUuc3BlYy5mb2cpKXQmJnZvaWQgMD09PXRbaV0mJih0W2ldPWUuc3BlYy5mb2dbaV0uZGVmYXVsdCk7Zm9yKGNvbnN0IGkgaW4gdCl7Y29uc3Qgbz10W2ldO2UuZW5kc1dpdGgoaSxcIi10cmFuc2l0aW9uXCIpP3RoaXMuX3RyYW5zaXRpb25hYmxlLnNldFRyYW5zaXRpb24oaS5zbGljZSgwLC0xMSksbyk6dGhpcy5fdHJhbnNpdGlvbmFibGUuc2V0VmFsdWUoaSxvKTt9fX1nZXRPcGFjaXR5KHQpe2lmKCF0aGlzLl90cmFuc2Zvcm0ucHJvamVjdGlvbi5zdXBwb3J0c0ZvZylyZXR1cm4gMDtjb25zdCBpPXRoaXMucHJvcGVydGllcyYmdGhpcy5wcm9wZXJ0aWVzLmdldChcImNvbG9yXCIpfHwxO3JldHVybiAoXCJnbG9iZVwiPT09dGhpcy5fdHJhbnNmb3JtLnByb2plY3Rpb24ubmFtZT8xOmUuc21vb3Roc3RlcCg0NSw2NSx0KSkqaS5hfWdldE9wYWNpdHlBdExhdExuZyh0LGkpe3JldHVybiB0aGlzLl90cmFuc2Zvcm0ucHJvamVjdGlvbi5zdXBwb3J0c0ZvZz9mdW5jdGlvbih0LGksbyl7Y29uc3Qgcj1lLk1lcmNhdG9yQ29vcmRpbmF0ZS5mcm9tTG5nTGF0KGkpLG49by5lbGV2YXRpb24/by5lbGV2YXRpb24uZ2V0QXRQb2ludE9yWmVybyhyKTowLHM9W3IueCxyLnksbl07cmV0dXJuIGUudHJhbnNmb3JtTWF0NChzLHMsby5tZXJjYXRvckZvZ01hdHJpeCksQyh0LHMsby5waXRjaCxvLl9mb3YpfSh0aGlzLnN0YXRlLHQsaSk6MH1nZXRGb3ZBZGp1c3RlZFJhbmdlKGUpe3JldHVybiB0aGlzLl90cmFuc2Zvcm0ucHJvamVjdGlvbi5zdXBwb3J0c0ZvZz9NKHRoaXMuc3RhdGUsZSk6WzAsMV19dXBkYXRlVHJhbnNpdGlvbnMoZSl7dGhpcy5fdHJhbnNpdGlvbmluZz10aGlzLl90cmFuc2l0aW9uYWJsZS50cmFuc2l0aW9uZWQoZSx0aGlzLl90cmFuc2l0aW9uaW5nKTt9aGFzVHJhbnNpdGlvbigpe3JldHVybiB0aGlzLl90cmFuc2l0aW9uaW5nLmhhc1RyYW5zaXRpb24oKX1yZWNhbGN1bGF0ZShlKXt0aGlzLnByb3BlcnRpZXM9dGhpcy5fdHJhbnNpdGlvbmluZy5wb3NzaWJseUV2YWx1YXRlKGUpO31fdmFsaWRhdGUodCxpLG8pe3JldHVybiAoIW98fCExIT09by52YWxpZGF0ZSkmJmUuZW1pdFZhbGlkYXRpb25FcnJvcnModGhpcyx0LmNhbGwoZS52YWxpZGF0ZVN0eWxlLGUuZXh0ZW5kKHt2YWx1ZTppLHN0eWxlOntnbHlwaHM6ITAsc3ByaXRlOiEwfSxzdHlsZVNwZWM6ZS5zcGVjfSkpKX19Y2xhc3MgU3tjb25zdHJ1Y3Rvcih0LGkpe3RoaXMud29ya2VyUG9vbD10LHRoaXMuYWN0b3JzPVtdLHRoaXMuY3VycmVudEFjdG9yPTAsdGhpcy5pZD1lLnVuaXF1ZUlkKCk7Y29uc3Qgbz10aGlzLndvcmtlclBvb2wuYWNxdWlyZSh0aGlzLmlkKTtmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7Y29uc3QgdD1uZXcgUy5BY3RvcihvW2VdLGksdGhpcy5pZCk7dC5uYW1lPWBXb3JrZXIgJHtlfWAsdGhpcy5hY3RvcnMucHVzaCh0KTt9dGhpcy5yZWFkeT0hMSx0aGlzLmJyb2FkY2FzdChcImNoZWNrSWZSZWFkeVwiLG51bGwsKCgpPT57dGhpcy5yZWFkeT0hMDt9KSk7fWJyb2FkY2FzdCh0LGksbyl7ZS5hc3luY0FsbCh0aGlzLmFjdG9ycywoKGUsbyk9PntlLnNlbmQodCxpLG8pO30pLG89b3x8ZnVuY3Rpb24oKXt9KTt9Z2V0QWN0b3IoKXtyZXR1cm4gdGhpcy5jdXJyZW50QWN0b3I9KHRoaXMuY3VycmVudEFjdG9yKzEpJXRoaXMuYWN0b3JzLmxlbmd0aCx0aGlzLmFjdG9yc1t0aGlzLmN1cnJlbnRBY3Rvcl19cmVtb3ZlKCl7dGhpcy5hY3RvcnMuZm9yRWFjaCgoZT0+e2UucmVtb3ZlKCk7fSkpLHRoaXMuYWN0b3JzPVtdLHRoaXMud29ya2VyUG9vbC5yZWxlYXNlKHRoaXMuaWQpO319ZnVuY3Rpb24gRCh0LGksbyl7cmV0dXJuIGkqKGUuRVhURU5ULyh0LnRpbGVTaXplKk1hdGgucG93KDIsby10LnRpbGVJRC5vdmVyc2NhbGVkWikpKX1TLkFjdG9yPWUuQWN0b3I7Y2xhc3MgTHtjb25zdHJ1Y3RvcihlLHQsaSxvKXt0aGlzLnNjcmVlbkJvdW5kcz1lLHRoaXMuY2FtZXJhUG9pbnQ9dCx0aGlzLl9zY3JlZW5SYXljYXN0Q2FjaGU9e30sdGhpcy5fY2FtZXJhUmF5Y2FzdENhY2hlPXt9LHRoaXMuaXNBYm92ZUhvcml6b249aSx0aGlzLnNjcmVlbkdlb21ldHJ5PXRoaXMuYnVmZmVyZWRTY3JlZW5HZW9tZXRyeSgwKSx0aGlzLnNjcmVlbkdlb21ldHJ5TWVyY2F0b3I9dGhpcy5fYnVmZmVyZWRTY3JlZW5NZXJjYXRvcigwLG8pO31zdGF0aWMgY3JlYXRlRnJvbVNjcmVlblBvaW50cyh0LGkpe2xldCBvLHI7aWYodCBpbnN0YW5jZW9mIGUuUG9pbnR8fFwibnVtYmVyXCI9PXR5cGVvZiB0WzBdKXtjb25zdCBuPWUuUG9pbnQuY29udmVydCh0KTtvPVtuXSxyPWkuaXNQb2ludEFib3ZlSG9yaXpvbihuKTt9ZWxzZSB7Y29uc3Qgbj1lLlBvaW50LmNvbnZlcnQodFswXSkscz1lLlBvaW50LmNvbnZlcnQodFsxXSk7bz1bbixzXSxyPWUucG9seWdvbml6ZUJvdW5kcyhuLHMpLmV2ZXJ5KChlPT5pLmlzUG9pbnRBYm92ZUhvcml6b24oZSkpKTt9cmV0dXJuIG5ldyBMKG8saS5nZXRDYW1lcmFQb2ludCgpLHIsaSl9aXNQb2ludFF1ZXJ5KCl7cmV0dXJuIDE9PT10aGlzLnNjcmVlbkJvdW5kcy5sZW5ndGh9YnVmZmVyZWRTY3JlZW5HZW9tZXRyeSh0KXtyZXR1cm4gZS5wb2x5Z29uaXplQm91bmRzKHRoaXMuc2NyZWVuQm91bmRzWzBdLDE9PT10aGlzLnNjcmVlbkJvdW5kcy5sZW5ndGg/dGhpcy5zY3JlZW5Cb3VuZHNbMF06dGhpcy5zY3JlZW5Cb3VuZHNbMV0sdCl9YnVmZmVyZWRDYW1lcmFHZW9tZXRyeSh0KXtjb25zdCBpPXRoaXMuc2NyZWVuQm91bmRzWzBdLG89MT09PXRoaXMuc2NyZWVuQm91bmRzLmxlbmd0aD90aGlzLnNjcmVlbkJvdW5kc1swXS5hZGQobmV3IGUuUG9pbnQoMSwxKSk6dGhpcy5zY3JlZW5Cb3VuZHNbMV0scj1lLnBvbHlnb25pemVCb3VuZHMoaSxvLDAsITEpO3JldHVybiB0aGlzLmNhbWVyYVBvaW50Lnk+by55JiYodGhpcy5jYW1lcmFQb2ludC54PmkueCYmdGhpcy5jYW1lcmFQb2ludC54PG8ueD9yLnNwbGljZSgzLDAsdGhpcy5jYW1lcmFQb2ludCk6dGhpcy5jYW1lcmFQb2ludC54Pj1vLng/clsyXT10aGlzLmNhbWVyYVBvaW50OnRoaXMuY2FtZXJhUG9pbnQueDw9aS54JiYoclszXT10aGlzLmNhbWVyYVBvaW50KSksZS5idWZmZXJDb252ZXhQb2x5Z29uKHIsdCl9YnVmZmVyZWRDYW1lcmFHZW9tZXRyeUdsb2JlKHQpe2NvbnN0IGk9dGhpcy5zY3JlZW5Cb3VuZHNbMF0sbz0xPT09dGhpcy5zY3JlZW5Cb3VuZHMubGVuZ3RoP3RoaXMuc2NyZWVuQm91bmRzWzBdLmFkZChuZXcgZS5Qb2ludCgxLDEpKTp0aGlzLnNjcmVlbkJvdW5kc1sxXSxyPWUucG9seWdvbml6ZUJvdW5kcyhpLG8sdCksbj10aGlzLmNhbWVyYVBvaW50LmNsb25lKCk7c3dpdGNoKDMqKChuLnk+aS55KSsobi55Pm8ueSkpKygobi54PmkueCkrKG4ueD5vLngpKSl7Y2FzZSAwOnJbMF09bixyWzRdPW4uY2xvbmUoKTticmVhaztjYXNlIDE6ci5zcGxpY2UoMSwwLG4pO2JyZWFrO2Nhc2UgMjpyWzFdPW47YnJlYWs7Y2FzZSAzOnIuc3BsaWNlKDQsMCxuKTticmVhaztjYXNlIDU6ci5zcGxpY2UoMiwwLG4pO2JyZWFrO2Nhc2UgNjpyWzNdPW47YnJlYWs7Y2FzZSA3OnIuc3BsaWNlKDMsMCxuKTticmVhaztjYXNlIDg6clsyXT1uO31yZXR1cm4gcn1jb250YWluc1RpbGUodCxpLG8scj0wKXtjb25zdCBuPXQucXVlcnlQYWRkaW5nL2kuX3BpeGVsc1Blck1lcmNhdG9yUGl4ZWwrMSxzPW8/dGhpcy5fYnVmZmVyZWRDYW1lcmFNZXJjYXRvcihuLGkpOnRoaXMuX2J1ZmZlcmVkU2NyZWVuTWVyY2F0b3IobixpKTtsZXQgYT10LnRpbGVJRC53cmFwKyhzLnVud3JhcHBlZD9yOjApO2NvbnN0IGw9cy5wb2x5Z29uLm1hcCgoaT0+ZS5nZXRUaWxlUG9pbnQodC50aWxlVHJhbnNmb3JtLGksYSkpKTtpZighZS5wb2x5Z29uSW50ZXJzZWN0c0JveChsLDAsMCxlLkVYVEVOVCxlLkVYVEVOVCkpcmV0dXJuO2E9dC50aWxlSUQud3JhcCsodGhpcy5zY3JlZW5HZW9tZXRyeU1lcmNhdG9yLnVud3JhcHBlZD9yOjApO2NvbnN0IGM9dGhpcy5zY3JlZW5HZW9tZXRyeU1lcmNhdG9yLnBvbHlnb24ubWFwKChpPT5lLmdldFRpbGVWZWMzKHQudGlsZVRyYW5zZm9ybSxpLGEpKSksaD1jLm1hcCgodD0+bmV3IGUuUG9pbnQodFswXSx0WzFdKSkpLHU9aS5nZXRGcmVlQ2FtZXJhT3B0aW9ucygpLnBvc2l0aW9ufHxuZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUoMCwwLDApLF89ZS5nZXRUaWxlVmVjMyh0LnRpbGVUcmFuc2Zvcm0sdSxhKSxkPWMubWFwKCh0PT57Y29uc3QgaT1lLnN1Yih0LHQsXyk7cmV0dXJuIGUubm9ybWFsaXplKGksaSksbmV3IGUuUmF5KF8saSl9KSkscD1EKHQsMSxpLnpvb20pKmkuX3BpeGVsc1Blck1lcmNhdG9yUGl4ZWw7cmV0dXJuIHtxdWVyeUdlb21ldHJ5OnRoaXMsdGlsZXNwYWNlR2VvbWV0cnk6aCx0aWxlc3BhY2VSYXlzOmQsYnVmZmVyZWRUaWxlc3BhY2VHZW9tZXRyeTpsLGJ1ZmZlcmVkVGlsZXNwYWNlQm91bmRzOihtPWUuZ2V0Qm91bmRzKGwpLG0ubWluLng9ZS5jbGFtcChtLm1pbi54LDAsZS5FWFRFTlQpLG0ubWluLnk9ZS5jbGFtcChtLm1pbi55LDAsZS5FWFRFTlQpLG0ubWF4Lng9ZS5jbGFtcChtLm1heC54LDAsZS5FWFRFTlQpLG0ubWF4Lnk9ZS5jbGFtcChtLm1heC55LDAsZS5FWFRFTlQpLG0pLHRpbGU6dCx0aWxlSUQ6dC50aWxlSUQscGl4ZWxUb1RpbGVVbml0c0ZhY3RvcjpwfTt2YXIgbTt9X2J1ZmZlcmVkU2NyZWVuTWVyY2F0b3IoZSx0KXtjb25zdCBpPVIoZSk7aWYodGhpcy5fc2NyZWVuUmF5Y2FzdENhY2hlW2ldKXJldHVybiB0aGlzLl9zY3JlZW5SYXljYXN0Q2FjaGVbaV07e2xldCBvO3JldHVybiBvPVwiZ2xvYmVcIj09PXQucHJvamVjdGlvbi5uYW1lP3RoaXMuX3Byb2plY3RBbmRSZXNhbXBsZSh0aGlzLmJ1ZmZlcmVkU2NyZWVuR2VvbWV0cnkoZSksdCk6e3BvbHlnb246dGhpcy5idWZmZXJlZFNjcmVlbkdlb21ldHJ5KGUpLm1hcCgoZT0+dC5wb2ludENvb3JkaW5hdGUzRChlKSkpLHVud3JhcHBlZDohMH0sdGhpcy5fc2NyZWVuUmF5Y2FzdENhY2hlW2ldPW8sb319X2J1ZmZlcmVkQ2FtZXJhTWVyY2F0b3IoZSx0KXtjb25zdCBpPVIoZSk7aWYodGhpcy5fY2FtZXJhUmF5Y2FzdENhY2hlW2ldKXJldHVybiB0aGlzLl9jYW1lcmFSYXljYXN0Q2FjaGVbaV07e2xldCBvO3JldHVybiBvPVwiZ2xvYmVcIj09PXQucHJvamVjdGlvbi5uYW1lP3RoaXMuX3Byb2plY3RBbmRSZXNhbXBsZSh0aGlzLmJ1ZmZlcmVkQ2FtZXJhR2VvbWV0cnlHbG9iZShlKSx0KTp7cG9seWdvbjp0aGlzLmJ1ZmZlcmVkQ2FtZXJhR2VvbWV0cnkoZSkubWFwKChlPT50LnBvaW50Q29vcmRpbmF0ZTNEKGUpKSksdW53cmFwcGVkOiEwfSx0aGlzLl9jYW1lcmFSYXljYXN0Q2FjaGVbaV09byxvfX1fcHJvamVjdEFuZFJlc2FtcGxlKHQsaSl7Y29uc3Qgbz1mdW5jdGlvbih0LGkpe2NvbnN0IG89ZS5tdWx0aXBseShbXSxpLnBpeGVsTWF0cml4LGkuZ2xvYmVNYXRyaXgpLHI9WzAsLWUuR0xPQkVfUkFESVVTLDAsMV0sbj1bMCxlLkdMT0JFX1JBRElVUywwLDFdLHM9WzAsMCwwLDFdO2UudHJhbnNmb3JtTWF0NCQxKHIscixvKSxlLnRyYW5zZm9ybU1hdDQkMShuLG4sbyksZS50cmFuc2Zvcm1NYXQ0JDEocyxzLG8pO2NvbnN0IGE9bmV3IGUuUG9pbnQoclswXS9yWzNdLHJbMV0vclszXSksbD1uZXcgZS5Qb2ludChuWzBdL25bM10sblsxXS9uWzNdKSxjPWUucG9seWdvbkNvbnRhaW5zUG9pbnQodCxhKSYmclszXTxzWzNdLGg9ZS5wb2x5Z29uQ29udGFpbnNQb2ludCh0LGwpJiZuWzNdPHNbM107aWYoIWMmJiFoKXJldHVybiBudWxsO2NvbnN0IHU9ZnVuY3Rpb24oZSx0LGkpe2ZvcihsZXQgbz0xO288ZS5sZW5ndGg7bysrKXtjb25zdCByPXoodC5wb2ludENvb3JkaW5hdGUzRChlW28tMV0pLngpLG49eih0LnBvaW50Q29vcmRpbmF0ZTNEKGVbb10pLngpO2lmKGk8MCl7aWYocjxuKXJldHVybiB7aWR4Om8sdDotci8obi0xLXIpfX1lbHNlIGlmKG48cilyZXR1cm4ge2lkeDpvLHQ6KDEtcikvKG4rMS1yKX19cmV0dXJuIG51bGx9KHQsaSxjPy0xOjEpO2lmKCF1KXJldHVybiBudWxsO2NvbnN0e2lkeDpfLHQ6ZH09dTtsZXQgcD1fPjE/QSh0LnNsaWNlKDAsXyksaSk6W10sbT1fPHQubGVuZ3RoP0EodC5zbGljZShfKSxpKTpbXTtwPXAubWFwKCh0PT5uZXcgZS5Qb2ludCh6KHQueCksdC55KSkpLG09bS5tYXAoKHQ9Pm5ldyBlLlBvaW50KHoodC54KSx0LnkpKSk7Y29uc3QgZj1bLi4ucF07MD09PWYubGVuZ3RoJiZmLnB1c2gobVttLmxlbmd0aC0xXSk7Y29uc3QgZz1lLm51bWJlcihmW2YubGVuZ3RoLTFdLnksKDA9PT1tLmxlbmd0aD9wWzBdOm1bMF0pLnksZCk7bGV0IHY7cmV0dXJuIHY9Yz9bbmV3IGUuUG9pbnQoMCxnKSxuZXcgZS5Qb2ludCgwLDApLG5ldyBlLlBvaW50KDEsMCksbmV3IGUuUG9pbnQoMSxnKV06W25ldyBlLlBvaW50KDEsZyksbmV3IGUuUG9pbnQoMSwxKSxuZXcgZS5Qb2ludCgwLDEpLG5ldyBlLlBvaW50KDAsZyldLGYucHVzaCguLi52KSwwPT09bS5sZW5ndGg/Zi5wdXNoKHBbMF0pOmYucHVzaCguLi5tKSx7cG9seWdvbjpmLm1hcCgodD0+bmV3IGUuTWVyY2F0b3JDb29yZGluYXRlKHQueCx0LnkpKSksdW53cmFwcGVkOiExfX0odCxpKTtpZihvKXJldHVybiBvO2NvbnN0IHI9ZnVuY3Rpb24odCxpKXtsZXQgbz0hMSxyPS0xLzAsbj0wO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGgtMTtlKyspdFtlXS54PnImJihyPXRbZV0ueCxuPWUpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGgtMTtlKyspe2NvbnN0IGk9KG4rZSklKHQubGVuZ3RoLTEpLHI9dFtpXSxzPXRbaSsxXTtNYXRoLmFicyhyLngtcy54KT4uNSYmKHIueDxzLng/KHIueCs9MSwwPT09aSYmKHRbdC5sZW5ndGgtMV0ueCs9MSkpOihzLngrPTEsaSsxPT09dC5sZW5ndGgtMSYmKHRbMF0ueCs9MSkpLG89ITApO31jb25zdCBzPWUubWVyY2F0b3JYZnJvbUxuZyhpLmNlbnRlci5sbmcpO3JldHVybiBvJiZzPE1hdGguYWJzKHMtMSkmJnQuZm9yRWFjaCgoZT0+e2UueC09MTt9KSkse3BvbHlnb246dCx1bndyYXBwZWQ6b319KEEodCxpKS5tYXAoKHQ9Pm5ldyBlLlBvaW50KHoodC54KSx0LnkpKSksaSk7cmV0dXJuIHtwb2x5Z29uOnIucG9seWdvbi5tYXAoKHQ9Pm5ldyBlLk1lcmNhdG9yQ29vcmRpbmF0ZSh0LngsdC55KSkpLHVud3JhcHBlZDpyLnVud3JhcHBlZH19fWZ1bmN0aW9uIEEodCxpKXtyZXR1cm4gZS5yZXNhbXBsZSh0LChlPT57Y29uc3QgdD1pLnBvaW50Q29vcmRpbmF0ZTNEKGUpO2UueD10LngsZS55PXQueTt9KSwxLzI1Nil9ZnVuY3Rpb24geihlKXtyZXR1cm4gZTwwPzErZSUxOmUlMX1mdW5jdGlvbiBSKGUpe3JldHVybiAxMDAqZXwwfWZ1bmN0aW9uIE8odCxpLG8scixuKXtjb25zdCBzPWZ1bmN0aW9uKG8scil7aWYobylyZXR1cm4gbihvKTtpZihyKXt0LnVybCYmci50aWxlcyYmdC50aWxlcyYmZGVsZXRlIHQudGlsZXM7Y29uc3Qgbz1lLnBpY2soZS5leHRlbmQocix0KSxbXCJ0aWxlc1wiLFwibWluem9vbVwiLFwibWF4em9vbVwiLFwiYXR0cmlidXRpb25cIixcIm1hcGJveF9sb2dvXCIsXCJib3VuZHNcIixcInNjaGVtZVwiLFwidGlsZVNpemVcIixcImVuY29kaW5nXCJdKTtyLnZlY3Rvcl9sYXllcnMmJihvLnZlY3RvckxheWVycz1yLnZlY3Rvcl9sYXllcnMsby52ZWN0b3JMYXllcklkcz1vLnZlY3RvckxheWVycy5tYXAoKGU9PmUuaWQpKSksby50aWxlcz1pLmNhbm9uaWNhbGl6ZVRpbGVzZXQobyx0LnVybCksbihudWxsLG8pO319O3JldHVybiB0LnVybD9lLmdldEpTT04oaS50cmFuc2Zvcm1SZXF1ZXN0KGkubm9ybWFsaXplU291cmNlVVJMKHQudXJsLG51bGwsbyxyKSxlLlJlc291cmNlVHlwZS5Tb3VyY2UpLHMpOmUuZXhwb3J0ZWQuZnJhbWUoKCgpPT5zKG51bGwsdCkpKX1jbGFzcyBCe2NvbnN0cnVjdG9yKHQsaSxvKXt0aGlzLmJvdW5kcz1lLkxuZ0xhdEJvdW5kcy5jb252ZXJ0KHRoaXMudmFsaWRhdGVCb3VuZHModCkpLHRoaXMubWluem9vbT1pfHwwLHRoaXMubWF4em9vbT1vfHwyNDt9dmFsaWRhdGVCb3VuZHMoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJjQ9PT1lLmxlbmd0aD9bTWF0aC5tYXgoLTE4MCxlWzBdKSxNYXRoLm1heCgtOTAsZVsxXSksTWF0aC5taW4oMTgwLGVbMl0pLE1hdGgubWluKDkwLGVbM10pXTpbLTE4MCwtOTAsMTgwLDkwXX1jb250YWlucyh0KXtjb25zdCBpPU1hdGgucG93KDIsdC56KSxvPU1hdGguZmxvb3IoZS5tZXJjYXRvclhmcm9tTG5nKHRoaXMuYm91bmRzLmdldFdlc3QoKSkqaSkscj1NYXRoLmZsb29yKGUubWVyY2F0b3JZZnJvbUxhdCh0aGlzLmJvdW5kcy5nZXROb3J0aCgpKSppKSxuPU1hdGguY2VpbChlLm1lcmNhdG9yWGZyb21MbmcodGhpcy5ib3VuZHMuZ2V0RWFzdCgpKSppKSxzPU1hdGguY2VpbChlLm1lcmNhdG9yWWZyb21MYXQodGhpcy5ib3VuZHMuZ2V0U291dGgoKSkqaSk7cmV0dXJuIHQueD49byYmdC54PG4mJnQueT49ciYmdC55PHN9fWNsYXNzIGt7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuY29udGV4dD1lO2NvbnN0IG89ZS5nbDt0aGlzLmJ1ZmZlcj1vLmNyZWF0ZUJ1ZmZlcigpLHRoaXMuZHluYW1pY0RyYXc9Qm9vbGVhbihpKSx0aGlzLmNvbnRleHQudW5iaW5kVkFPKCksZS5iaW5kRWxlbWVudEJ1ZmZlci5zZXQodGhpcy5idWZmZXIpLG8uYnVmZmVyRGF0YShvLkVMRU1FTlRfQVJSQVlfQlVGRkVSLHQuYXJyYXlCdWZmZXIsdGhpcy5keW5hbWljRHJhdz9vLkRZTkFNSUNfRFJBVzpvLlNUQVRJQ19EUkFXKSx0aGlzLmR5bmFtaWNEcmF3fHx0LmRlc3Ryb3koKTt9YmluZCgpe3RoaXMuY29udGV4dC5iaW5kRWxlbWVudEJ1ZmZlci5zZXQodGhpcy5idWZmZXIpO311cGRhdGVEYXRhKGUpe2NvbnN0IHQ9dGhpcy5jb250ZXh0LmdsO3RoaXMuY29udGV4dC51bmJpbmRWQU8oKSx0aGlzLmJpbmQoKSx0LmJ1ZmZlclN1YkRhdGEodC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwwLGUuYXJyYXlCdWZmZXIpO31kZXN0cm95KCl7dGhpcy5idWZmZXImJih0aGlzLmNvbnRleHQuZ2wuZGVsZXRlQnVmZmVyKHRoaXMuYnVmZmVyKSxkZWxldGUgdGhpcy5idWZmZXIpO319Y29uc3QgRj17SW50ODpcIkJZVEVcIixVaW50ODpcIlVOU0lHTkVEX0JZVEVcIixJbnQxNjpcIlNIT1JUXCIsVWludDE2OlwiVU5TSUdORURfU0hPUlRcIixJbnQzMjpcIklOVFwiLFVpbnQzMjpcIlVOU0lHTkVEX0lOVFwiLEZsb2F0MzI6XCJGTE9BVFwifTtjbGFzcyBVe2NvbnN0cnVjdG9yKGUsdCxpLG8pe3RoaXMubGVuZ3RoPXQubGVuZ3RoLHRoaXMuYXR0cmlidXRlcz1pLHRoaXMuaXRlbVNpemU9dC5ieXRlc1BlckVsZW1lbnQsdGhpcy5keW5hbWljRHJhdz1vLHRoaXMuY29udGV4dD1lO2NvbnN0IHI9ZS5nbDt0aGlzLmJ1ZmZlcj1yLmNyZWF0ZUJ1ZmZlcigpLGUuYmluZFZlcnRleEJ1ZmZlci5zZXQodGhpcy5idWZmZXIpLHIuYnVmZmVyRGF0YShyLkFSUkFZX0JVRkZFUix0LmFycmF5QnVmZmVyLHRoaXMuZHluYW1pY0RyYXc/ci5EWU5BTUlDX0RSQVc6ci5TVEFUSUNfRFJBVyksdGhpcy5keW5hbWljRHJhd3x8dC5kZXN0cm95KCk7fWJpbmQoKXt0aGlzLmNvbnRleHQuYmluZFZlcnRleEJ1ZmZlci5zZXQodGhpcy5idWZmZXIpO311cGRhdGVEYXRhKGUpe2NvbnN0IHQ9dGhpcy5jb250ZXh0LmdsO3RoaXMuYmluZCgpLHQuYnVmZmVyU3ViRGF0YSh0LkFSUkFZX0JVRkZFUiwwLGUuYXJyYXlCdWZmZXIpO31lbmFibGVBdHRyaWJ1dGVzKGUsdCl7Zm9yKGxldCBpPTA7aTx0aGlzLmF0dHJpYnV0ZXMubGVuZ3RoO2krKyl7Y29uc3Qgbz10LmF0dHJpYnV0ZXNbdGhpcy5hdHRyaWJ1dGVzW2ldLm5hbWVdO3ZvaWQgMCE9PW8mJmUuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobyk7fX1zZXRWZXJ0ZXhBdHRyaWJQb2ludGVycyhlLHQsaSl7Zm9yKGxldCBvPTA7bzx0aGlzLmF0dHJpYnV0ZXMubGVuZ3RoO28rKyl7Y29uc3Qgcj10aGlzLmF0dHJpYnV0ZXNbb10sbj10LmF0dHJpYnV0ZXNbci5uYW1lXTt2b2lkIDAhPT1uJiZlLnZlcnRleEF0dHJpYlBvaW50ZXIobixyLmNvbXBvbmVudHMsZVtGW3IudHlwZV1dLCExLHRoaXMuaXRlbVNpemUsci5vZmZzZXQrdGhpcy5pdGVtU2l6ZSooaXx8MCkpO319ZGVzdHJveSgpe3RoaXMuYnVmZmVyJiYodGhpcy5jb250ZXh0LmdsLmRlbGV0ZUJ1ZmZlcih0aGlzLmJ1ZmZlciksZGVsZXRlIHRoaXMuYnVmZmVyKTt9fWNsYXNzIE57Y29uc3RydWN0b3IoZSl7dGhpcy5nbD1lLmdsLHRoaXMuZGVmYXVsdD10aGlzLmdldERlZmF1bHQoKSx0aGlzLmN1cnJlbnQ9dGhpcy5kZWZhdWx0LHRoaXMuZGlydHk9ITE7fWdldCgpe3JldHVybiB0aGlzLmN1cnJlbnR9c2V0KGUpe31nZXREZWZhdWx0KCl7cmV0dXJuIHRoaXMuZGVmYXVsdH1zZXREZWZhdWx0KCl7dGhpcy5zZXQodGhpcy5kZWZhdWx0KTt9fWNsYXNzIGogZXh0ZW5kcyBOe2dldERlZmF1bHQoKXtyZXR1cm4gZS5Db2xvci50cmFuc3BhcmVudH1zZXQoZSl7Y29uc3QgdD10aGlzLmN1cnJlbnQ7KGUuciE9PXQucnx8ZS5nIT09dC5nfHxlLmIhPT10LmJ8fGUuYSE9PXQuYXx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmNsZWFyQ29sb3IoZS5yLGUuZyxlLmIsZS5hKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExKTt9fWNsYXNzIEcgZXh0ZW5kcyBOe2dldERlZmF1bHQoKXtyZXR1cm4gMX1zZXQoZSl7KGUhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYodGhpcy5nbC5jbGVhckRlcHRoKGUpLHRoaXMuY3VycmVudD1lLHRoaXMuZGlydHk9ITEpO319Y2xhc3MgWiBleHRlbmRzIE57Z2V0RGVmYXVsdCgpe3JldHVybiAwfXNldChlKXsoZSE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmNsZWFyU3RlbmNpbChlKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExKTt9fWNsYXNzIFYgZXh0ZW5kcyBOe2dldERlZmF1bHQoKXtyZXR1cm4gWyEwLCEwLCEwLCEwXX1zZXQoZSl7Y29uc3QgdD10aGlzLmN1cnJlbnQ7KGVbMF0hPT10WzBdfHxlWzFdIT09dFsxXXx8ZVsyXSE9PXRbMl18fGVbM10hPT10WzNdfHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuY29sb3JNYXNrKGVbMF0sZVsxXSxlWzJdLGVbM10pLHRoaXMuY3VycmVudD1lLHRoaXMuZGlydHk9ITEpO319Y2xhc3MgVyBleHRlbmRzIE57Z2V0RGVmYXVsdCgpe3JldHVybiAhMH1zZXQoZSl7KGUhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYodGhpcy5nbC5kZXB0aE1hc2soZSksdGhpcy5jdXJyZW50PWUsdGhpcy5kaXJ0eT0hMSk7fX1jbGFzcyBYIGV4dGVuZHMgTntnZXREZWZhdWx0KCl7cmV0dXJuIDI1NX1zZXQoZSl7KGUhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYodGhpcy5nbC5zdGVuY2lsTWFzayhlKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExKTt9fWNsYXNzIHEgZXh0ZW5kcyBOe2dldERlZmF1bHQoKXtyZXR1cm4ge2Z1bmM6dGhpcy5nbC5BTFdBWVMscmVmOjAsbWFzazoyNTV9fXNldChlKXtjb25zdCB0PXRoaXMuY3VycmVudDsoZS5mdW5jIT09dC5mdW5jfHxlLnJlZiE9PXQucmVmfHxlLm1hc2shPT10Lm1hc2t8fHRoaXMuZGlydHkpJiYodGhpcy5nbC5zdGVuY2lsRnVuYyhlLmZ1bmMsZS5yZWYsZS5tYXNrKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExKTt9fWNsYXNzICQgZXh0ZW5kcyBOe2dldERlZmF1bHQoKXtjb25zdCBlPXRoaXMuZ2w7cmV0dXJuIFtlLktFRVAsZS5LRUVQLGUuS0VFUF19c2V0KGUpe2NvbnN0IHQ9dGhpcy5jdXJyZW50OyhlWzBdIT09dFswXXx8ZVsxXSE9PXRbMV18fGVbMl0hPT10WzJdfHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuc3RlbmNpbE9wKGVbMF0sZVsxXSxlWzJdKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExKTt9fWNsYXNzIEggZXh0ZW5kcyBOe2dldERlZmF1bHQoKXtyZXR1cm4gITF9c2V0KGUpe2lmKGU9PT10aGlzLmN1cnJlbnQmJiF0aGlzLmRpcnR5KXJldHVybjtjb25zdCB0PXRoaXMuZ2w7ZT90LmVuYWJsZSh0LlNURU5DSUxfVEVTVCk6dC5kaXNhYmxlKHQuU1RFTkNJTF9URVNUKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExO319Y2xhc3MgWSBleHRlbmRzIE57Z2V0RGVmYXVsdCgpe3JldHVybiBbMCwxXX1zZXQoZSl7Y29uc3QgdD10aGlzLmN1cnJlbnQ7KGVbMF0hPT10WzBdfHxlWzFdIT09dFsxXXx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmRlcHRoUmFuZ2UoZVswXSxlWzFdKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExKTt9fWNsYXNzIEsgZXh0ZW5kcyBOe2dldERlZmF1bHQoKXtyZXR1cm4gITF9c2V0KGUpe2lmKGU9PT10aGlzLmN1cnJlbnQmJiF0aGlzLmRpcnR5KXJldHVybjtjb25zdCB0PXRoaXMuZ2w7ZT90LmVuYWJsZSh0LkRFUFRIX1RFU1QpOnQuZGlzYWJsZSh0LkRFUFRIX1RFU1QpLHRoaXMuY3VycmVudD1lLHRoaXMuZGlydHk9ITE7fX1jbGFzcyBKIGV4dGVuZHMgTntnZXREZWZhdWx0KCl7cmV0dXJuIHRoaXMuZ2wuTEVTU31zZXQoZSl7KGUhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYodGhpcy5nbC5kZXB0aEZ1bmMoZSksdGhpcy5jdXJyZW50PWUsdGhpcy5kaXJ0eT0hMSk7fX1jbGFzcyBRIGV4dGVuZHMgTntnZXREZWZhdWx0KCl7cmV0dXJuICExfXNldChlKXtpZihlPT09dGhpcy5jdXJyZW50JiYhdGhpcy5kaXJ0eSlyZXR1cm47Y29uc3QgdD10aGlzLmdsO2U/dC5lbmFibGUodC5CTEVORCk6dC5kaXNhYmxlKHQuQkxFTkQpLHRoaXMuY3VycmVudD1lLHRoaXMuZGlydHk9ITE7fX1jbGFzcyBlZSBleHRlbmRzIE57Z2V0RGVmYXVsdCgpe2NvbnN0IGU9dGhpcy5nbDtyZXR1cm4gW2UuT05FLGUuWkVST119c2V0KGUpe2NvbnN0IHQ9dGhpcy5jdXJyZW50OyhlWzBdIT09dFswXXx8ZVsxXSE9PXRbMV18fHRoaXMuZGlydHkpJiYodGhpcy5nbC5ibGVuZEZ1bmMoZVswXSxlWzFdKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExKTt9fWNsYXNzIHRlIGV4dGVuZHMgTntnZXREZWZhdWx0KCl7cmV0dXJuIGUuQ29sb3IudHJhbnNwYXJlbnR9c2V0KGUpe2NvbnN0IHQ9dGhpcy5jdXJyZW50OyhlLnIhPT10LnJ8fGUuZyE9PXQuZ3x8ZS5iIT09dC5ifHxlLmEhPT10LmF8fHRoaXMuZGlydHkpJiYodGhpcy5nbC5ibGVuZENvbG9yKGUucixlLmcsZS5iLGUuYSksdGhpcy5jdXJyZW50PWUsdGhpcy5kaXJ0eT0hMSk7fX1jbGFzcyBpZSBleHRlbmRzIE57Z2V0RGVmYXVsdCgpe3JldHVybiB0aGlzLmdsLkZVTkNfQUREfXNldChlKXsoZSE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmJsZW5kRXF1YXRpb24oZSksdGhpcy5jdXJyZW50PWUsdGhpcy5kaXJ0eT0hMSk7fX1jbGFzcyBvZSBleHRlbmRzIE57Z2V0RGVmYXVsdCgpe3JldHVybiAhMX1zZXQoZSl7aWYoZT09PXRoaXMuY3VycmVudCYmIXRoaXMuZGlydHkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5nbDtlP3QuZW5hYmxlKHQuQ1VMTF9GQUNFKTp0LmRpc2FibGUodC5DVUxMX0ZBQ0UpLHRoaXMuY3VycmVudD1lLHRoaXMuZGlydHk9ITE7fX1jbGFzcyByZSBleHRlbmRzIE57Z2V0RGVmYXVsdCgpe3JldHVybiB0aGlzLmdsLkJBQ0t9c2V0KGUpeyhlIT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuY3VsbEZhY2UoZSksdGhpcy5jdXJyZW50PWUsdGhpcy5kaXJ0eT0hMSk7fX1jbGFzcyBuZSBleHRlbmRzIE57Z2V0RGVmYXVsdCgpe3JldHVybiB0aGlzLmdsLkNDV31zZXQoZSl7KGUhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYodGhpcy5nbC5mcm9udEZhY2UoZSksdGhpcy5jdXJyZW50PWUsdGhpcy5kaXJ0eT0hMSk7fX1sZXQgc2UsYWU9Y2xhc3MgZXh0ZW5kcyBOe2dldERlZmF1bHQoKXtyZXR1cm4gbnVsbH1zZXQoZSl7KGUhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYodGhpcy5nbC51c2VQcm9ncmFtKGUpLHRoaXMuY3VycmVudD1lLHRoaXMuZGlydHk9ITEpO319O2NsYXNzIGxlIGV4dGVuZHMgTntnZXREZWZhdWx0KCl7cmV0dXJuIHRoaXMuZ2wuVEVYVFVSRTB9c2V0KGUpeyhlIT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuYWN0aXZlVGV4dHVyZShlKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExKTt9fWNsYXNzIGNlIGV4dGVuZHMgTntnZXREZWZhdWx0KCl7Y29uc3QgZT10aGlzLmdsO3JldHVybiBbMCwwLGUuZHJhd2luZ0J1ZmZlcldpZHRoLGUuZHJhd2luZ0J1ZmZlckhlaWdodF19c2V0KGUpe2NvbnN0IHQ9dGhpcy5jdXJyZW50OyhlWzBdIT09dFswXXx8ZVsxXSE9PXRbMV18fGVbMl0hPT10WzJdfHxlWzNdIT09dFszXXx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLnZpZXdwb3J0KGVbMF0sZVsxXSxlWzJdLGVbM10pLHRoaXMuY3VycmVudD1lLHRoaXMuZGlydHk9ITEpO319Y2xhc3MgaGUgZXh0ZW5kcyBOe2dldERlZmF1bHQoKXtyZXR1cm4gbnVsbH1zZXQoZSl7aWYoZT09PXRoaXMuY3VycmVudCYmIXRoaXMuZGlydHkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5nbDt0LmJpbmRGcmFtZWJ1ZmZlcih0LkZSQU1FQlVGRkVSLGUpLHRoaXMuY3VycmVudD1lLHRoaXMuZGlydHk9ITE7fX1jbGFzcyB1ZSBleHRlbmRzIE57Z2V0RGVmYXVsdCgpe3JldHVybiBudWxsfXNldChlKXtpZihlPT09dGhpcy5jdXJyZW50JiYhdGhpcy5kaXJ0eSlyZXR1cm47Y29uc3QgdD10aGlzLmdsO3QuYmluZFJlbmRlcmJ1ZmZlcih0LlJFTkRFUkJVRkZFUixlKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExO319Y2xhc3MgX2UgZXh0ZW5kcyBOe2dldERlZmF1bHQoKXtyZXR1cm4gbnVsbH1zZXQoZSl7aWYoZT09PXRoaXMuY3VycmVudCYmIXRoaXMuZGlydHkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5nbDt0LmJpbmRUZXh0dXJlKHQuVEVYVFVSRV8yRCxlKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExO319Y2xhc3MgZGUgZXh0ZW5kcyBOe2dldERlZmF1bHQoKXtyZXR1cm4gbnVsbH1zZXQoZSl7aWYoZT09PXRoaXMuY3VycmVudCYmIXRoaXMuZGlydHkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5nbDt0LmJpbmRCdWZmZXIodC5BUlJBWV9CVUZGRVIsZSksdGhpcy5jdXJyZW50PWUsdGhpcy5kaXJ0eT0hMTt9fWNsYXNzIHBlIGV4dGVuZHMgTntnZXREZWZhdWx0KCl7cmV0dXJuIG51bGx9c2V0KGUpe2NvbnN0IHQ9dGhpcy5nbDt0LmJpbmRCdWZmZXIodC5FTEVNRU5UX0FSUkFZX0JVRkZFUixlKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExO319Y2xhc3MgbWUgZXh0ZW5kcyBOe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLHRoaXMudmFvPWUuZXh0VmVydGV4QXJyYXlPYmplY3Q7fWdldERlZmF1bHQoKXtyZXR1cm4gbnVsbH1zZXQoZSl7dGhpcy52YW8mJihlIT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KSYmKHRoaXMudmFvLmJpbmRWZXJ0ZXhBcnJheU9FUyhlKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExKTt9fWNsYXNzIGZlIGV4dGVuZHMgTntnZXREZWZhdWx0KCl7cmV0dXJuIDR9c2V0KGUpe2lmKGU9PT10aGlzLmN1cnJlbnQmJiF0aGlzLmRpcnR5KXJldHVybjtjb25zdCB0PXRoaXMuZ2w7dC5waXhlbFN0b3JlaSh0LlVOUEFDS19BTElHTk1FTlQsZSksdGhpcy5jdXJyZW50PWUsdGhpcy5kaXJ0eT0hMTt9fWNsYXNzIGdlIGV4dGVuZHMgTntnZXREZWZhdWx0KCl7cmV0dXJuICExfXNldChlKXtpZihlPT09dGhpcy5jdXJyZW50JiYhdGhpcy5kaXJ0eSlyZXR1cm47Y29uc3QgdD10aGlzLmdsO3QucGl4ZWxTdG9yZWkodC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsZSksdGhpcy5jdXJyZW50PWUsdGhpcy5kaXJ0eT0hMTt9fWNsYXNzIHZlIGV4dGVuZHMgTntnZXREZWZhdWx0KCl7cmV0dXJuICExfXNldChlKXtpZihlPT09dGhpcy5jdXJyZW50JiYhdGhpcy5kaXJ0eSlyZXR1cm47Y29uc3QgdD10aGlzLmdsO3QucGl4ZWxTdG9yZWkodC5VTlBBQ0tfRkxJUF9ZX1dFQkdMLGUpLHRoaXMuY3VycmVudD1lLHRoaXMuZGlydHk9ITE7fX1jbGFzcyB4ZSBleHRlbmRzIE57Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlKSx0aGlzLmNvbnRleHQ9ZSx0aGlzLnBhcmVudD10O31nZXREZWZhdWx0KCl7cmV0dXJuIG51bGx9fWNsYXNzIHllIGV4dGVuZHMgeGV7c2V0RGlydHkoKXt0aGlzLmRpcnR5PSEwO31zZXQoZSl7aWYoZT09PXRoaXMuY3VycmVudCYmIXRoaXMuZGlydHkpcmV0dXJuO3RoaXMuY29udGV4dC5iaW5kRnJhbWVidWZmZXIuc2V0KHRoaXMucGFyZW50KTtjb25zdCB0PXRoaXMuZ2w7dC5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0LkZSQU1FQlVGRkVSLHQuQ09MT1JfQVRUQUNITUVOVDAsdC5URVhUVVJFXzJELGUsMCksdGhpcy5jdXJyZW50PWUsdGhpcy5kaXJ0eT0hMTt9fWNsYXNzIGJlIGV4dGVuZHMgeGV7YXR0YWNobWVudCgpe3JldHVybiB0aGlzLmdsLkRFUFRIX0FUVEFDSE1FTlR9c2V0KGUpe2lmKGU9PT10aGlzLmN1cnJlbnQmJiF0aGlzLmRpcnR5KXJldHVybjt0aGlzLmNvbnRleHQuYmluZEZyYW1lYnVmZmVyLnNldCh0aGlzLnBhcmVudCk7Y29uc3QgdD10aGlzLmdsO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodC5GUkFNRUJVRkZFUix0aGlzLmF0dGFjaG1lbnQoKSx0LlJFTkRFUkJVRkZFUixlKSx0aGlzLmN1cnJlbnQ9ZSx0aGlzLmRpcnR5PSExO319Y2xhc3Mgd2UgZXh0ZW5kcyBiZXthdHRhY2htZW50KCl7cmV0dXJuIHRoaXMuZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UfX1jbGFzcyBUZXtjb25zdHJ1Y3RvcihlLHQsaSxvKXt0aGlzLmNvbnRleHQ9ZSx0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9aTtjb25zdCByPXRoaXMuZnJhbWVidWZmZXI9ZS5nbC5jcmVhdGVGcmFtZWJ1ZmZlcigpO3RoaXMuY29sb3JBdHRhY2htZW50PW5ldyB5ZShlLHIpLG8mJih0aGlzLmRlcHRoQXR0YWNobWVudD1uZXcgYmUoZSxyKSk7fWRlc3Ryb3koKXtjb25zdCBlPXRoaXMuY29udGV4dC5nbCx0PXRoaXMuY29sb3JBdHRhY2htZW50LmdldCgpO2lmKHQmJmUuZGVsZXRlVGV4dHVyZSh0KSx0aGlzLmRlcHRoQXR0YWNobWVudCl7Y29uc3QgdD10aGlzLmRlcHRoQXR0YWNobWVudC5nZXQoKTt0JiZlLmRlbGV0ZVJlbmRlcmJ1ZmZlcih0KTt9ZS5kZWxldGVGcmFtZWJ1ZmZlcih0aGlzLmZyYW1lYnVmZmVyKTt9fWNsYXNzIEVle2NvbnN0cnVjdG9yKGUsdD0hMSl7aWYodGhpcy5nbD1lLHRoaXMuaXNXZWJHTDI9dCx0aGlzLmV4dFZlcnRleEFycmF5T2JqZWN0PXRoaXMuZ2wuZ2V0RXh0ZW5zaW9uKFwiT0VTX3ZlcnRleF9hcnJheV9vYmplY3RcIiksdCl7Y29uc3QgdD1lO3RoaXMuZXh0VmVydGV4QXJyYXlPYmplY3Q9e2NyZWF0ZVZlcnRleEFycmF5T0VTOnQuY3JlYXRlVmVydGV4QXJyYXkuYmluZChlKSxkZWxldGVWZXJ0ZXhBcnJheU9FUzp0LmRlbGV0ZVZlcnRleEFycmF5LmJpbmQoZSksYmluZFZlcnRleEFycmF5T0VTOnQuYmluZFZlcnRleEFycmF5LmJpbmQoZSl9O310aGlzLmNsZWFyQ29sb3I9bmV3IGoodGhpcyksdGhpcy5jbGVhckRlcHRoPW5ldyBHKHRoaXMpLHRoaXMuY2xlYXJTdGVuY2lsPW5ldyBaKHRoaXMpLHRoaXMuY29sb3JNYXNrPW5ldyBWKHRoaXMpLHRoaXMuZGVwdGhNYXNrPW5ldyBXKHRoaXMpLHRoaXMuc3RlbmNpbE1hc2s9bmV3IFgodGhpcyksdGhpcy5zdGVuY2lsRnVuYz1uZXcgcSh0aGlzKSx0aGlzLnN0ZW5jaWxPcD1uZXcgJCh0aGlzKSx0aGlzLnN0ZW5jaWxUZXN0PW5ldyBIKHRoaXMpLHRoaXMuZGVwdGhSYW5nZT1uZXcgWSh0aGlzKSx0aGlzLmRlcHRoVGVzdD1uZXcgSyh0aGlzKSx0aGlzLmRlcHRoRnVuYz1uZXcgSih0aGlzKSx0aGlzLmJsZW5kPW5ldyBRKHRoaXMpLHRoaXMuYmxlbmRGdW5jPW5ldyBlZSh0aGlzKSx0aGlzLmJsZW5kQ29sb3I9bmV3IHRlKHRoaXMpLHRoaXMuYmxlbmRFcXVhdGlvbj1uZXcgaWUodGhpcyksdGhpcy5jdWxsRmFjZT1uZXcgb2UodGhpcyksdGhpcy5jdWxsRmFjZVNpZGU9bmV3IHJlKHRoaXMpLHRoaXMuZnJvbnRGYWNlPW5ldyBuZSh0aGlzKSx0aGlzLnByb2dyYW09bmV3IGFlKHRoaXMpLHRoaXMuYWN0aXZlVGV4dHVyZT1uZXcgbGUodGhpcyksdGhpcy52aWV3cG9ydD1uZXcgY2UodGhpcyksdGhpcy5iaW5kRnJhbWVidWZmZXI9bmV3IGhlKHRoaXMpLHRoaXMuYmluZFJlbmRlcmJ1ZmZlcj1uZXcgdWUodGhpcyksdGhpcy5iaW5kVGV4dHVyZT1uZXcgX2UodGhpcyksdGhpcy5iaW5kVmVydGV4QnVmZmVyPW5ldyBkZSh0aGlzKSx0aGlzLmJpbmRFbGVtZW50QnVmZmVyPW5ldyBwZSh0aGlzKSx0aGlzLmJpbmRWZXJ0ZXhBcnJheU9FUz10aGlzLmV4dFZlcnRleEFycmF5T2JqZWN0JiZuZXcgbWUodGhpcyksdGhpcy5waXhlbFN0b3JlVW5wYWNrPW5ldyBmZSh0aGlzKSx0aGlzLnBpeGVsU3RvcmVVbnBhY2tQcmVtdWx0aXBseUFscGhhPW5ldyBnZSh0aGlzKSx0aGlzLnBpeGVsU3RvcmVVbnBhY2tGbGlwWT1uZXcgdmUodGhpcyksdGhpcy5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWM9ZS5nZXRFeHRlbnNpb24oXCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWNcIil8fGUuZ2V0RXh0ZW5zaW9uKFwiTU9aX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpY1wiKXx8ZS5nZXRFeHRlbnNpb24oXCJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljXCIpLHRoaXMuZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljJiYodGhpcy5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWNNYXg9ZS5nZXRQYXJhbWV0ZXIodGhpcy5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKSksdGhpcy5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWNGb3JjZU9mZj0hMSx0aGlzLmV4dFN0YW5kYXJkRGVyaXZhdGl2ZXNGb3JjZU9mZj0hMSx0aGlzLmV4dERlYnVnUmVuZGVyZXJJbmZvPWUuZ2V0RXh0ZW5zaW9uKFwiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mb1wiKSx0aGlzLmV4dERlYnVnUmVuZGVyZXJJbmZvJiYodGhpcy5yZW5kZXJlcj1lLmdldFBhcmFtZXRlcih0aGlzLmV4dERlYnVnUmVuZGVyZXJJbmZvLlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMKSx0aGlzLnZlbmRvcj1lLmdldFBhcmFtZXRlcih0aGlzLmV4dERlYnVnUmVuZGVyZXJJbmZvLlVOTUFTS0VEX1ZFTkRPUl9XRUJHTCkpLHR8fCh0aGlzLmV4dFRleHR1cmVIYWxmRmxvYXQ9ZS5nZXRFeHRlbnNpb24oXCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0XCIpKSwodHx8dGhpcy5leHRUZXh0dXJlSGFsZkZsb2F0JiZlLmdldEV4dGVuc2lvbihcIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyXCIpKSYmKHRoaXMuZXh0UmVuZGVyVG9UZXh0dXJlSGFsZkZsb2F0PWUuZ2V0RXh0ZW5zaW9uKFwiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0XCIpKSx0aGlzLmV4dFN0YW5kYXJkRGVyaXZhdGl2ZXM9dHx8ZS5nZXRFeHRlbnNpb24oXCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXNcIiksdGhpcy5leHRUaW1lclF1ZXJ5PWUuZ2V0RXh0ZW5zaW9uKFwiRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5XCIpLHRoaXMubWF4VGV4dHVyZVNpemU9ZS5nZXRQYXJhbWV0ZXIoZS5NQVhfVEVYVFVSRV9TSVpFKTt9c2V0RGVmYXVsdCgpe3RoaXMudW5iaW5kVkFPKCksdGhpcy5jbGVhckNvbG9yLnNldERlZmF1bHQoKSx0aGlzLmNsZWFyRGVwdGguc2V0RGVmYXVsdCgpLHRoaXMuY2xlYXJTdGVuY2lsLnNldERlZmF1bHQoKSx0aGlzLmNvbG9yTWFzay5zZXREZWZhdWx0KCksdGhpcy5kZXB0aE1hc2suc2V0RGVmYXVsdCgpLHRoaXMuc3RlbmNpbE1hc2suc2V0RGVmYXVsdCgpLHRoaXMuc3RlbmNpbEZ1bmMuc2V0RGVmYXVsdCgpLHRoaXMuc3RlbmNpbE9wLnNldERlZmF1bHQoKSx0aGlzLnN0ZW5jaWxUZXN0LnNldERlZmF1bHQoKSx0aGlzLmRlcHRoUmFuZ2Uuc2V0RGVmYXVsdCgpLHRoaXMuZGVwdGhUZXN0LnNldERlZmF1bHQoKSx0aGlzLmRlcHRoRnVuYy5zZXREZWZhdWx0KCksdGhpcy5ibGVuZC5zZXREZWZhdWx0KCksdGhpcy5ibGVuZEZ1bmMuc2V0RGVmYXVsdCgpLHRoaXMuYmxlbmRDb2xvci5zZXREZWZhdWx0KCksdGhpcy5ibGVuZEVxdWF0aW9uLnNldERlZmF1bHQoKSx0aGlzLmN1bGxGYWNlLnNldERlZmF1bHQoKSx0aGlzLmN1bGxGYWNlU2lkZS5zZXREZWZhdWx0KCksdGhpcy5mcm9udEZhY2Uuc2V0RGVmYXVsdCgpLHRoaXMucHJvZ3JhbS5zZXREZWZhdWx0KCksdGhpcy5hY3RpdmVUZXh0dXJlLnNldERlZmF1bHQoKSx0aGlzLmJpbmRGcmFtZWJ1ZmZlci5zZXREZWZhdWx0KCksdGhpcy5waXhlbFN0b3JlVW5wYWNrLnNldERlZmF1bHQoKSx0aGlzLnBpeGVsU3RvcmVVbnBhY2tQcmVtdWx0aXBseUFscGhhLnNldERlZmF1bHQoKSx0aGlzLnBpeGVsU3RvcmVVbnBhY2tGbGlwWS5zZXREZWZhdWx0KCk7fXNldERpcnR5KCl7dGhpcy5jbGVhckNvbG9yLmRpcnR5PSEwLHRoaXMuY2xlYXJEZXB0aC5kaXJ0eT0hMCx0aGlzLmNsZWFyU3RlbmNpbC5kaXJ0eT0hMCx0aGlzLmNvbG9yTWFzay5kaXJ0eT0hMCx0aGlzLmRlcHRoTWFzay5kaXJ0eT0hMCx0aGlzLnN0ZW5jaWxNYXNrLmRpcnR5PSEwLHRoaXMuc3RlbmNpbEZ1bmMuZGlydHk9ITAsdGhpcy5zdGVuY2lsT3AuZGlydHk9ITAsdGhpcy5zdGVuY2lsVGVzdC5kaXJ0eT0hMCx0aGlzLmRlcHRoUmFuZ2UuZGlydHk9ITAsdGhpcy5kZXB0aFRlc3QuZGlydHk9ITAsdGhpcy5kZXB0aEZ1bmMuZGlydHk9ITAsdGhpcy5ibGVuZC5kaXJ0eT0hMCx0aGlzLmJsZW5kRnVuYy5kaXJ0eT0hMCx0aGlzLmJsZW5kQ29sb3IuZGlydHk9ITAsdGhpcy5ibGVuZEVxdWF0aW9uLmRpcnR5PSEwLHRoaXMuY3VsbEZhY2UuZGlydHk9ITAsdGhpcy5jdWxsRmFjZVNpZGUuZGlydHk9ITAsdGhpcy5mcm9udEZhY2UuZGlydHk9ITAsdGhpcy5wcm9ncmFtLmRpcnR5PSEwLHRoaXMuYWN0aXZlVGV4dHVyZS5kaXJ0eT0hMCx0aGlzLnZpZXdwb3J0LmRpcnR5PSEwLHRoaXMuYmluZEZyYW1lYnVmZmVyLmRpcnR5PSEwLHRoaXMuYmluZFJlbmRlcmJ1ZmZlci5kaXJ0eT0hMCx0aGlzLmJpbmRUZXh0dXJlLmRpcnR5PSEwLHRoaXMuYmluZFZlcnRleEJ1ZmZlci5kaXJ0eT0hMCx0aGlzLmJpbmRFbGVtZW50QnVmZmVyLmRpcnR5PSEwLHRoaXMuZXh0VmVydGV4QXJyYXlPYmplY3QmJih0aGlzLmJpbmRWZXJ0ZXhBcnJheU9FUy5kaXJ0eT0hMCksdGhpcy5waXhlbFN0b3JlVW5wYWNrLmRpcnR5PSEwLHRoaXMucGl4ZWxTdG9yZVVucGFja1ByZW11bHRpcGx5QWxwaGEuZGlydHk9ITAsdGhpcy5waXhlbFN0b3JlVW5wYWNrRmxpcFkuZGlydHk9ITA7fWNyZWF0ZUluZGV4QnVmZmVyKGUsdCl7cmV0dXJuIG5ldyBrKHRoaXMsZSx0KX1jcmVhdGVWZXJ0ZXhCdWZmZXIoZSx0LGkpe3JldHVybiBuZXcgVSh0aGlzLGUsdCxpKX1jcmVhdGVSZW5kZXJidWZmZXIoZSx0LGkpe2NvbnN0IG89dGhpcy5nbCxyPW8uY3JlYXRlUmVuZGVyYnVmZmVyKCk7cmV0dXJuIHRoaXMuYmluZFJlbmRlcmJ1ZmZlci5zZXQociksby5yZW5kZXJidWZmZXJTdG9yYWdlKG8uUkVOREVSQlVGRkVSLGUsdCxpKSx0aGlzLmJpbmRSZW5kZXJidWZmZXIuc2V0KG51bGwpLHJ9Y3JlYXRlRnJhbWVidWZmZXIoZSx0LGkpe3JldHVybiBuZXcgVGUodGhpcyxlLHQsaSl9Y2xlYXIoe2NvbG9yOmUsZGVwdGg6dCxzdGVuY2lsOml9KXtjb25zdCBvPXRoaXMuZ2w7bGV0IHI9MDtlJiYocnw9by5DT0xPUl9CVUZGRVJfQklULHRoaXMuY2xlYXJDb2xvci5zZXQoZSksdGhpcy5jb2xvck1hc2suc2V0KFshMCwhMCwhMCwhMF0pKSx2b2lkIDAhPT10JiYocnw9by5ERVBUSF9CVUZGRVJfQklULHRoaXMuZGVwdGhSYW5nZS5zZXQoWzAsMV0pLHRoaXMuY2xlYXJEZXB0aC5zZXQodCksdGhpcy5kZXB0aE1hc2suc2V0KCEwKSksdm9pZCAwIT09aSYmKHJ8PW8uU1RFTkNJTF9CVUZGRVJfQklULHRoaXMuY2xlYXJTdGVuY2lsLnNldChpKSx0aGlzLnN0ZW5jaWxNYXNrLnNldCgyNTUpKSxvLmNsZWFyKHIpO31zZXRDdWxsRmFjZShlKXshMT09PWUuZW5hYmxlP3RoaXMuY3VsbEZhY2Uuc2V0KCExKToodGhpcy5jdWxsRmFjZS5zZXQoITApLHRoaXMuY3VsbEZhY2VTaWRlLnNldChlLm1vZGUpLHRoaXMuZnJvbnRGYWNlLnNldChlLmZyb250RmFjZSkpO31zZXREZXB0aE1vZGUoZSl7ZS5mdW5jIT09dGhpcy5nbC5BTFdBWVN8fGUubWFzaz8odGhpcy5kZXB0aFRlc3Quc2V0KCEwKSx0aGlzLmRlcHRoRnVuYy5zZXQoZS5mdW5jKSx0aGlzLmRlcHRoTWFzay5zZXQoZS5tYXNrKSx0aGlzLmRlcHRoUmFuZ2Uuc2V0KGUucmFuZ2UpKTp0aGlzLmRlcHRoVGVzdC5zZXQoITEpO31zZXRTdGVuY2lsTW9kZShlKXtlLnRlc3QuZnVuYyE9PXRoaXMuZ2wuQUxXQVlTfHxlLm1hc2s/KHRoaXMuc3RlbmNpbFRlc3Quc2V0KCEwKSx0aGlzLnN0ZW5jaWxNYXNrLnNldChlLm1hc2spLHRoaXMuc3RlbmNpbE9wLnNldChbZS5mYWlsLGUuZGVwdGhGYWlsLGUucGFzc10pLHRoaXMuc3RlbmNpbEZ1bmMuc2V0KHtmdW5jOmUudGVzdC5mdW5jLHJlZjplLnJlZixtYXNrOmUudGVzdC5tYXNrfSkpOnRoaXMuc3RlbmNpbFRlc3Quc2V0KCExKTt9c2V0Q29sb3JNb2RlKGkpe3QoaS5ibGVuZEZ1bmN0aW9uLGUuQ29sb3JNb2RlLlJlcGxhY2UpP3RoaXMuYmxlbmQuc2V0KCExKToodGhpcy5ibGVuZC5zZXQoITApLHRoaXMuYmxlbmRGdW5jLnNldChpLmJsZW5kRnVuY3Rpb24pLHRoaXMuYmxlbmRDb2xvci5zZXQoaS5ibGVuZENvbG9yKSksdGhpcy5jb2xvck1hc2suc2V0KGkubWFzayk7fXVuYmluZFZBTygpe3RoaXMuZXh0VmVydGV4QXJyYXlPYmplY3QmJnRoaXMuYmluZFZlcnRleEFycmF5T0VTLnNldChudWxsKTt9fWNsYXNzIENlIGV4dGVuZHMgZS5FdmVudGVke2NvbnN0cnVjdG9yKHQsaSxvLHIpe2lmKHN1cGVyKCksdGhpcy5pZD10LHRoaXMuZGlzcGF0Y2hlcj1vLHRoaXMudHlwZT1cInZlY3RvclwiLHRoaXMubWluem9vbT0wLHRoaXMubWF4em9vbT0yMix0aGlzLnNjaGVtZT1cInh5elwiLHRoaXMudGlsZVNpemU9NTEyLHRoaXMucmVwYXJzZU92ZXJzY2FsZWQ9ITAsdGhpcy5pc1RpbGVDbGlwcGVkPSEwLHRoaXMuX2xvYWRlZD0hMSxlLmV4dGVuZCh0aGlzLGUucGljayhpLFtcInVybFwiLFwic2NoZW1lXCIsXCJ0aWxlU2l6ZVwiLFwicHJvbW90ZUlkXCJdKSksdGhpcy5fb3B0aW9ucz1lLmV4dGVuZCh7dHlwZTpcInZlY3RvclwifSxpKSx0aGlzLl9jb2xsZWN0UmVzb3VyY2VUaW1pbmc9aS5jb2xsZWN0UmVzb3VyY2VUaW1pbmcsNTEyIT09dGhpcy50aWxlU2l6ZSl0aHJvdyBuZXcgRXJyb3IoXCJ2ZWN0b3IgdGlsZSBzb3VyY2VzIG11c3QgaGF2ZSBhIHRpbGVTaXplIG9mIDUxMlwiKTt0aGlzLnNldEV2ZW50ZWRQYXJlbnQociksdGhpcy5fdGlsZVdvcmtlcnM9e30sdGhpcy5fZGVkdXBlZD1uZXcgZS5EZWR1cGVkUmVxdWVzdDt9bG9hZCh0KXt0aGlzLl9sb2FkZWQ9ITEsdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZGF0YWxvYWRpbmdcIix7ZGF0YVR5cGU6XCJzb3VyY2VcIn0pKTtjb25zdCBpPUFycmF5LmlzQXJyYXkodGhpcy5tYXAuX2xhbmd1YWdlKT90aGlzLm1hcC5fbGFuZ3VhZ2Uuam9pbigpOnRoaXMubWFwLl9sYW5ndWFnZSxvPXRoaXMubWFwLl93b3JsZHZpZXc7dGhpcy5fdGlsZUpTT05SZXF1ZXN0PU8odGhpcy5fb3B0aW9ucyx0aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIsaSxvLCgocixuKT0+e3RoaXMuX3RpbGVKU09OUmVxdWVzdD1udWxsLHRoaXMuX2xvYWRlZD0hMCxyPyhpJiZjb25zb2xlLndhcm4oYEVuc3VyZSB0aGF0IHlvdXIgcmVxdWVzdGVkIGxhbmd1YWdlIHN0cmluZyBpcyBhIHZhbGlkIEJDUC00NyBjb2RlIG9yIGxpc3Qgb2YgY29kZXMuIEZvdW5kOiAke2l9YCksbyYmMiE9PW8ubGVuZ3RoJiZjb25zb2xlLndhcm4oYFJlcXVlc3RlZCB3b3JsZHZpZXcgc3RyaW5ncyBtdXN0IGJlIGEgdmFsaWQgSVNPIGFscGhhLTIgY29kZS4gRm91bmQ6ICR7b31gKSx0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChyKSkpOm4mJihlLmV4dGVuZCh0aGlzLG4pLG4uYm91bmRzJiYodGhpcy50aWxlQm91bmRzPW5ldyBCKG4uYm91bmRzLHRoaXMubWluem9vbSx0aGlzLm1heHpvb20pKSxlLnBvc3RUdXJuc3RpbGVFdmVudChuLnRpbGVzLHRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlci5fY3VzdG9tQWNjZXNzVG9rZW4pLHRoaXMuZmlyZShuZXcgZS5FdmVudChcImRhdGFcIix7ZGF0YVR5cGU6XCJzb3VyY2VcIixzb3VyY2VEYXRhVHlwZTpcIm1ldGFkYXRhXCJ9KSksdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZGF0YVwiLHtkYXRhVHlwZTpcInNvdXJjZVwiLHNvdXJjZURhdGFUeXBlOlwiY29udGVudFwifSkpKSx0JiZ0KHIpO30pKTt9bG9hZGVkKCl7cmV0dXJuIHRoaXMuX2xvYWRlZH1oYXNUaWxlKGUpe3JldHVybiAhdGhpcy50aWxlQm91bmRzfHx0aGlzLnRpbGVCb3VuZHMuY29udGFpbnMoZS5jYW5vbmljYWwpfW9uQWRkKGUpe3RoaXMubWFwPWUsdGhpcy5sb2FkKCk7fXJlbG9hZCgpe3RoaXMuY2FuY2VsVGlsZUpTT05SZXF1ZXN0KCksdGhpcy5sb2FkKCgoKT0+dGhpcy5tYXAuc3R5bGUuX2NsZWFyU291cmNlKHRoaXMuaWQpKSk7fXNldFRpbGVzKGUpe3JldHVybiB0aGlzLl9vcHRpb25zLnRpbGVzPWUsdGhpcy5yZWxvYWQoKSx0aGlzfXNldFVybChlKXtyZXR1cm4gdGhpcy51cmw9ZSx0aGlzLl9vcHRpb25zLnVybD1lLHRoaXMucmVsb2FkKCksdGhpc31vblJlbW92ZSgpe3RoaXMuY2FuY2VsVGlsZUpTT05SZXF1ZXN0KCk7fXNlcmlhbGl6ZSgpe3JldHVybiBlLmV4dGVuZCh7fSx0aGlzLl9vcHRpb25zKX1sb2FkVGlsZSh0LGkpe2NvbnN0IG89dGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLm5vcm1hbGl6ZVRpbGVVUkwodC50aWxlSUQuY2Fub25pY2FsLnVybCh0aGlzLnRpbGVzLHRoaXMuc2NoZW1lKSkscj17cmVxdWVzdDp0aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdChvLGUuUmVzb3VyY2VUeXBlLlRpbGUpLGRhdGE6dm9pZCAwLHVpZDp0LnVpZCx0aWxlSUQ6dC50aWxlSUQsdGlsZVpvb206dC50aWxlWm9vbSx6b29tOnQudGlsZUlELm92ZXJzY2FsZWRaLHRpbGVTaXplOnRoaXMudGlsZVNpemUqdC50aWxlSUQub3ZlcnNjYWxlRmFjdG9yKCksdHlwZTp0aGlzLnR5cGUsc291cmNlOnRoaXMuaWQscGl4ZWxSYXRpbzplLmV4cG9ydGVkLmRldmljZVBpeGVsUmF0aW8sc2hvd0NvbGxpc2lvbkJveGVzOnRoaXMubWFwLnNob3dDb2xsaXNpb25Cb3hlcyxwcm9tb3RlSWQ6dGhpcy5wcm9tb3RlSWQsaXNTeW1ib2xUaWxlOnQuaXNTeW1ib2xUaWxlfTtpZihyLnJlcXVlc3QuY29sbGVjdFJlc291cmNlVGltaW5nPXRoaXMuX2NvbGxlY3RSZXNvdXJjZVRpbWluZyx0LmFjdG9yJiZcImV4cGlyZWRcIiE9PXQuc3RhdGUpXCJsb2FkaW5nXCI9PT10LnN0YXRlP3QucmVsb2FkQ2FsbGJhY2s9aTp0LnJlcXVlc3Q9dC5hY3Rvci5zZW5kKFwicmVsb2FkVGlsZVwiLHIsbi5iaW5kKHRoaXMpKTtlbHNlIGlmKHQuYWN0b3I9dGhpcy5fdGlsZVdvcmtlcnNbb109dGhpcy5fdGlsZVdvcmtlcnNbb118fHRoaXMuZGlzcGF0Y2hlci5nZXRBY3RvcigpLHRoaXMuZGlzcGF0Y2hlci5yZWFkeSl0LnJlcXVlc3Q9dC5hY3Rvci5zZW5kKFwibG9hZFRpbGVcIixyLG4uYmluZCh0aGlzKSx2b2lkIDAsITApO2Vsc2Uge2NvbnN0IGk9ZS5sb2FkVmVjdG9yVGlsZS5jYWxsKHtkZWR1cGVkOnRoaXMuX2RlZHVwZWR9LHIsKChlLGkpPT57ZXx8IWk/bi5jYWxsKHRoaXMsZSk6KHIuZGF0YT17Y2FjaGVDb250cm9sOmkuY2FjaGVDb250cm9sLGV4cGlyZXM6aS5leHBpcmVzLHJhd0RhdGE6aS5yYXdEYXRhLnNsaWNlKDApfSx0LmFjdG9yJiZ0LmFjdG9yLnNlbmQoXCJsb2FkVGlsZVwiLHIsbi5iaW5kKHRoaXMpLHZvaWQgMCwhMCkpO30pLCEwKTt0LnJlcXVlc3Q9e2NhbmNlbDppfTt9ZnVuY3Rpb24gbihvLHIpe3JldHVybiBkZWxldGUgdC5yZXF1ZXN0LHQuYWJvcnRlZD9pKG51bGwpOm8mJjQwNCE9PW8uc3RhdHVzP2kobyk6KHImJnIucmVzb3VyY2VUaW1pbmcmJih0LnJlc291cmNlVGltaW5nPXIucmVzb3VyY2VUaW1pbmcpLHRoaXMubWFwLl9yZWZyZXNoRXhwaXJlZFRpbGVzJiZyJiZ0LnNldEV4cGlyeURhdGEociksdC5sb2FkVmVjdG9yRGF0YShyLHRoaXMubWFwLnBhaW50ZXIpLGUuY2FjaGVFbnRyeVBvc3NpYmx5QWRkZWQodGhpcy5kaXNwYXRjaGVyKSxpKG51bGwpLHZvaWQodC5yZWxvYWRDYWxsYmFjayYmKHRoaXMubG9hZFRpbGUodCx0LnJlbG9hZENhbGxiYWNrKSx0LnJlbG9hZENhbGxiYWNrPW51bGwpKSl9fWFib3J0VGlsZShlKXtlLnJlcXVlc3QmJihlLnJlcXVlc3QuY2FuY2VsKCksZGVsZXRlIGUucmVxdWVzdCksZS5hY3RvciYmZS5hY3Rvci5zZW5kKFwiYWJvcnRUaWxlXCIse3VpZDplLnVpZCx0eXBlOnRoaXMudHlwZSxzb3VyY2U6dGhpcy5pZH0pO311bmxvYWRUaWxlKGUpe2UudW5sb2FkVmVjdG9yRGF0YSgpLGUuYWN0b3ImJmUuYWN0b3Iuc2VuZChcInJlbW92ZVRpbGVcIix7dWlkOmUudWlkLHR5cGU6dGhpcy50eXBlLHNvdXJjZTp0aGlzLmlkfSk7fWhhc1RyYW5zaXRpb24oKXtyZXR1cm4gITF9YWZ0ZXJVcGRhdGUoKXt0aGlzLl90aWxlV29ya2Vycz17fTt9Y2FuY2VsVGlsZUpTT05SZXF1ZXN0KCl7dGhpcy5fdGlsZUpTT05SZXF1ZXN0JiYodGhpcy5fdGlsZUpTT05SZXF1ZXN0LmNhbmNlbCgpLHRoaXMuX3RpbGVKU09OUmVxdWVzdD1udWxsKTt9fWNsYXNzIE1lIGV4dGVuZHMgZS5FdmVudGVke2NvbnN0cnVjdG9yKHQsaSxvLHIpe3N1cGVyKCksdGhpcy5pZD10LHRoaXMuZGlzcGF0Y2hlcj1vLHRoaXMuc2V0RXZlbnRlZFBhcmVudChyKSx0aGlzLnR5cGU9XCJyYXN0ZXJcIix0aGlzLm1pbnpvb209MCx0aGlzLm1heHpvb209MjIsdGhpcy5yb3VuZFpvb209ITAsdGhpcy5zY2hlbWU9XCJ4eXpcIix0aGlzLnRpbGVTaXplPTUxMix0aGlzLl9sb2FkZWQ9ITEsdGhpcy5fb3B0aW9ucz1lLmV4dGVuZCh7dHlwZTpcInJhc3RlclwifSxpKSxlLmV4dGVuZCh0aGlzLGUucGljayhpLFtcInVybFwiLFwic2NoZW1lXCIsXCJ0aWxlU2l6ZVwiXSkpO31sb2FkKHQpe3RoaXMuX2xvYWRlZD0hMSx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJkYXRhbG9hZGluZ1wiLHtkYXRhVHlwZTpcInNvdXJjZVwifSkpLHRoaXMuX3RpbGVKU09OUmVxdWVzdD1PKHRoaXMuX29wdGlvbnMsdGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLG51bGwsbnVsbCwoKGksbyk9Pnt0aGlzLl90aWxlSlNPTlJlcXVlc3Q9bnVsbCx0aGlzLl9sb2FkZWQ9ITAsaT90aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChpKSk6byYmKGUuZXh0ZW5kKHRoaXMsbyksby5ib3VuZHMmJih0aGlzLnRpbGVCb3VuZHM9bmV3IEIoby5ib3VuZHMsdGhpcy5taW56b29tLHRoaXMubWF4em9vbSkpLGUucG9zdFR1cm5zdGlsZUV2ZW50KG8udGlsZXMpLHRoaXMuZmlyZShuZXcgZS5FdmVudChcImRhdGFcIix7ZGF0YVR5cGU6XCJzb3VyY2VcIixzb3VyY2VEYXRhVHlwZTpcIm1ldGFkYXRhXCJ9KSksdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZGF0YVwiLHtkYXRhVHlwZTpcInNvdXJjZVwiLHNvdXJjZURhdGFUeXBlOlwiY29udGVudFwifSkpKSx0JiZ0KGkpO30pKTt9bG9hZGVkKCl7cmV0dXJuIHRoaXMuX2xvYWRlZH1vbkFkZChlKXt0aGlzLm1hcD1lLHRoaXMubG9hZCgpO31yZWxvYWQoKXt0aGlzLmNhbmNlbFRpbGVKU09OUmVxdWVzdCgpLHRoaXMubG9hZCgoKCk9PnRoaXMubWFwLnN0eWxlLl9jbGVhclNvdXJjZSh0aGlzLmlkKSkpO31zZXRUaWxlcyhlKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy50aWxlcz1lLHRoaXMucmVsb2FkKCksdGhpc31zZXRVcmwoZSl7cmV0dXJuIHRoaXMudXJsPWUsdGhpcy5fb3B0aW9ucy51cmw9ZSx0aGlzLnJlbG9hZCgpLHRoaXN9b25SZW1vdmUoKXt0aGlzLmNhbmNlbFRpbGVKU09OUmVxdWVzdCgpO31zZXJpYWxpemUoKXtyZXR1cm4gZS5leHRlbmQoe30sdGhpcy5fb3B0aW9ucyl9aGFzVGlsZShlKXtyZXR1cm4gIXRoaXMudGlsZUJvdW5kc3x8dGhpcy50aWxlQm91bmRzLmNvbnRhaW5zKGUuY2Fub25pY2FsKX1sb2FkVGlsZSh0LGkpe2NvbnN0IG89ZS5leHBvcnRlZC5kZXZpY2VQaXhlbFJhdGlvPj0yLHI9dGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLm5vcm1hbGl6ZVRpbGVVUkwodC50aWxlSUQuY2Fub25pY2FsLnVybCh0aGlzLnRpbGVzLHRoaXMuc2NoZW1lKSxvLHRoaXMudGlsZVNpemUpO3QucmVxdWVzdD1lLmdldEltYWdlKHRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlci50cmFuc2Zvcm1SZXF1ZXN0KHIsZS5SZXNvdXJjZVR5cGUuVGlsZSksKChvLHIsbixzKT0+KGRlbGV0ZSB0LnJlcXVlc3QsdC5hYm9ydGVkPyh0LnN0YXRlPVwidW5sb2FkZWRcIixpKG51bGwpKTpvPyh0LnN0YXRlPVwiZXJyb3JlZFwiLGkobykpOnI/KHRoaXMubWFwLl9yZWZyZXNoRXhwaXJlZFRpbGVzJiZ0LnNldEV4cGlyeURhdGEoe2NhY2hlQ29udHJvbDpuLGV4cGlyZXM6c30pLHQuc2V0VGV4dHVyZShyLHRoaXMubWFwLnBhaW50ZXIpLHQuc3RhdGU9XCJsb2FkZWRcIixlLmNhY2hlRW50cnlQb3NzaWJseUFkZGVkKHRoaXMuZGlzcGF0Y2hlciksdm9pZCBpKG51bGwpKTppKG51bGwpKSkpO31zdGF0aWMgbG9hZFRpbGVEYXRhKGUsdCxpKXtlLnNldFRleHR1cmUodCxpKTt9c3RhdGljIHVubG9hZFRpbGVEYXRhKGUsdCl7ZS50ZXh0dXJlJiZ0LnNhdmVUaWxlVGV4dHVyZShlLnRleHR1cmUpO31hYm9ydFRpbGUoZSx0KXtlLnJlcXVlc3QmJihlLnJlcXVlc3QuY2FuY2VsKCksZGVsZXRlIGUucmVxdWVzdCksdCgpO311bmxvYWRUaWxlKGUsdCl7ZS50ZXh0dXJlJiZ0aGlzLm1hcC5wYWludGVyLnNhdmVUaWxlVGV4dHVyZShlLnRleHR1cmUpLHQoKTt9aGFzVHJhbnNpdGlvbigpe3JldHVybiAhMX1jYW5jZWxUaWxlSlNPTlJlcXVlc3QoKXt0aGlzLl90aWxlSlNPTlJlcXVlc3QmJih0aGlzLl90aWxlSlNPTlJlcXVlc3QuY2FuY2VsKCksdGhpcy5fdGlsZUpTT05SZXF1ZXN0PW51bGwpO319ZnVuY3Rpb24gSWUodCxpLG8scixuLHMsYSxsKXtjb25zdCBjPVt0LG8sbixpLHIscywxLDEsMV0saD1bYSxsLDFdLHU9ZS5hZGpvaW50KFtdLGMpLFtfLGQscF09ZS50cmFuc2Zvcm1NYXQzKGgsaCxlLnRyYW5zcG9zZSh1LHUpKTtyZXR1cm4gZS5tdWx0aXBseSQxKGMsW18sMCwwLDAsZCwwLDAsMCxwXSxjKX1jbGFzcyBQZSBleHRlbmRzIGUuRXZlbnRlZHtjb25zdHJ1Y3RvcihlLHQsaSxvKXtzdXBlcigpLHRoaXMuaWQ9ZSx0aGlzLmRpc3BhdGNoZXI9aSx0aGlzLmNvb3JkaW5hdGVzPXQuY29vcmRpbmF0ZXMsdGhpcy50eXBlPVwiaW1hZ2VcIix0aGlzLm1pbnpvb209MCx0aGlzLm1heHpvb209MjIsdGhpcy50aWxlU2l6ZT01MTIsdGhpcy50aWxlcz17fSx0aGlzLl9sb2FkZWQ9ITEsdGhpcy5zZXRFdmVudGVkUGFyZW50KG8pLHRoaXMub3B0aW9ucz10LHRoaXMuX2RpcnR5PSExO31sb2FkKHQsaSl7dGhpcy5fbG9hZGVkPWl8fCExLHRoaXMuZmlyZShuZXcgZS5FdmVudChcImRhdGFsb2FkaW5nXCIse2RhdGFUeXBlOlwic291cmNlXCJ9KSksdGhpcy51cmw9dGhpcy5vcHRpb25zLnVybCx0aGlzLl9pbWFnZVJlcXVlc3Q9ZS5nZXRJbWFnZSh0aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdCh0aGlzLnVybCxlLlJlc291cmNlVHlwZS5JbWFnZSksKChpLG8pPT57aWYodGhpcy5faW1hZ2VSZXF1ZXN0PW51bGwsdGhpcy5fbG9hZGVkPSEwLGkpdGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQoaSkpO2Vsc2UgaWYobyl7Y29uc3R7SFRNTEltYWdlRWxlbWVudDppfT1lLndpbmRvdzt0aGlzLmltYWdlPW8gaW5zdGFuY2VvZiBpP2UuZXhwb3J0ZWQuZ2V0SW1hZ2VEYXRhKG8pOm8sdGhpcy5fZGlydHk9ITAsdGhpcy53aWR0aD10aGlzLmltYWdlLndpZHRoLHRoaXMuaGVpZ2h0PXRoaXMuaW1hZ2UuaGVpZ2h0LHQmJih0aGlzLmNvb3JkaW5hdGVzPXQpLHRoaXMuX2ZpbmlzaExvYWRpbmcoKTt9fSkpO31sb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkfXVwZGF0ZUltYWdlKGUpe3JldHVybiB0aGlzLmltYWdlJiZlLnVybD8odGhpcy5faW1hZ2VSZXF1ZXN0JiZlLnVybCE9PXRoaXMub3B0aW9ucy51cmwmJih0aGlzLl9pbWFnZVJlcXVlc3QuY2FuY2VsKCksdGhpcy5faW1hZ2VSZXF1ZXN0PW51bGwpLHRoaXMub3B0aW9ucy51cmw9ZS51cmwsdGhpcy5sb2FkKGUuY29vcmRpbmF0ZXMsdGhpcy5fbG9hZGVkKSx0aGlzKTp0aGlzfV9maW5pc2hMb2FkaW5nKCl7dGhpcy5tYXAmJih0aGlzLnNldENvb3JkaW5hdGVzKHRoaXMuY29vcmRpbmF0ZXMpLHRoaXMuZmlyZShuZXcgZS5FdmVudChcImRhdGFcIix7ZGF0YVR5cGU6XCJzb3VyY2VcIixzb3VyY2VEYXRhVHlwZTpcIm1ldGFkYXRhXCJ9KSkpO31vbkFkZChlKXt0aGlzLm1hcD1lLHRoaXMubG9hZCgpO31vblJlbW92ZSgpe3RoaXMuX2ltYWdlUmVxdWVzdCYmKHRoaXMuX2ltYWdlUmVxdWVzdC5jYW5jZWwoKSx0aGlzLl9pbWFnZVJlcXVlc3Q9bnVsbCksdGhpcy50ZXh0dXJlJiZ0aGlzLnRleHR1cmUuZGVzdHJveSgpO31zZXRDb29yZGluYXRlcyh0KXt0aGlzLmNvb3JkaW5hdGVzPXQsdGhpcy5fYm91bmRzQXJyYXk9dm9pZCAwO2NvbnN0IGk9dC5tYXAoZS5NZXJjYXRvckNvb3JkaW5hdGUuZnJvbUxuZ0xhdCk7cmV0dXJuIHRoaXMudGlsZUlEPWZ1bmN0aW9uKHQpe2xldCBpPTEvMCxvPTEvMCxyPS0xLzAsbj0tMS8wO2Zvcihjb25zdCBlIG9mIHQpaT1NYXRoLm1pbihpLGUueCksbz1NYXRoLm1pbihvLGUueSkscj1NYXRoLm1heChyLGUueCksbj1NYXRoLm1heChuLGUueSk7Y29uc3Qgcz1NYXRoLm1heChyLWksbi1vKSxhPU1hdGgubWF4KDAsTWF0aC5mbG9vcigtTWF0aC5sb2cocykvTWF0aC5MTjIpKSxsPU1hdGgucG93KDIsYSk7cmV0dXJuIG5ldyBlLkNhbm9uaWNhbFRpbGVJRChhLE1hdGguZmxvb3IoKGkrcikvMipsKSxNYXRoLmZsb29yKChvK24pLzIqbCkpfShpKSx0aGlzLm1pbnpvb209dGhpcy5tYXh6b29tPXRoaXMudGlsZUlELnosdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZGF0YVwiLHtkYXRhVHlwZTpcInNvdXJjZVwiLHNvdXJjZURhdGFUeXBlOlwiY29udGVudFwifSkpLHRoaXN9X2NsZWFyKCl7dGhpcy5fYm91bmRzQXJyYXk9dm9pZCAwO31fcHJlcGFyZURhdGEodCl7Zm9yKGNvbnN0IGUgaW4gdGhpcy50aWxlcyl7Y29uc3QgdD10aGlzLnRpbGVzW2VdO1wibG9hZGVkXCIhPT10LnN0YXRlJiYodC5zdGF0ZT1cImxvYWRlZFwiLHQudGV4dHVyZT10aGlzLnRleHR1cmUpO31pZih0aGlzLl9ib3VuZHNBcnJheSlyZXR1cm47Y29uc3QgaT1lLnRpbGVUcmFuc2Zvcm0odGhpcy50aWxlSUQsdGhpcy5tYXAudHJhbnNmb3JtLnByb2plY3Rpb24pLFtvLHIsbixzXT10aGlzLmNvb3JkaW5hdGVzLm1hcCgodD0+e2NvbnN0IG89aS5wcm9qZWN0aW9uLnByb2plY3QodFswXSx0WzFdKTtyZXR1cm4gZS5nZXRUaWxlUG9pbnQoaSxvKS5fcm91bmQoKX0pKTt0aGlzLnBlcnNwZWN0aXZlVHJhbnNmb3JtPWZ1bmN0aW9uKHQsaSxvLHIsbixzLGEsbCxjLGgpe2NvbnN0IHU9SWUoMCwwLHQsMCwwLGksdCxpKSxfPUllKG8scixuLHMsYSxsLGMsaCk7cmV0dXJuIGUubXVsdGlwbHkkMShfLGUuYWRqb2ludCh1LHUpLF8pLFtfWzZdL19bOF0qdC9lLkVYVEVOVCxfWzddL19bOF0qaS9lLkVYVEVOVF19KHRoaXMud2lkdGgsdGhpcy5oZWlnaHQsby54LG8ueSxyLngsci55LHMueCxzLnksbi54LG4ueSk7Y29uc3QgYT10aGlzLl9ib3VuZHNBcnJheT1uZXcgZS5TdHJ1Y3RBcnJheUxheW91dDRpODthLmVtcGxhY2VCYWNrKG8ueCxvLnksMCwwKSxhLmVtcGxhY2VCYWNrKHIueCxyLnksZS5FWFRFTlQsMCksYS5lbXBsYWNlQmFjayhzLngscy55LDAsZS5FWFRFTlQpLGEuZW1wbGFjZUJhY2sobi54LG4ueSxlLkVYVEVOVCxlLkVYVEVOVCksdGhpcy5ib3VuZHNCdWZmZXImJnRoaXMuYm91bmRzQnVmZmVyLmRlc3Ryb3koKSx0aGlzLmJvdW5kc0J1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcihhLGUuYm91bmRzQXR0cmlidXRlcy5tZW1iZXJzKSx0aGlzLmJvdW5kc1NlZ21lbnRzPWUuU2VnbWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCw0LDIpO31wcmVwYXJlKCl7aWYoMD09PU9iamVjdC5rZXlzKHRoaXMudGlsZXMpLmxlbmd0aHx8IXRoaXMuaW1hZ2UpcmV0dXJuO2NvbnN0IHQ9dGhpcy5tYXAucGFpbnRlci5jb250ZXh0LGk9dC5nbDt0aGlzLl9kaXJ0eSYmKHRoaXMudGV4dHVyZT90aGlzLnRleHR1cmUudXBkYXRlKHRoaXMuaW1hZ2UpOih0aGlzLnRleHR1cmU9bmV3IGUuVGV4dHVyZSh0LHRoaXMuaW1hZ2UsaS5SR0JBKSx0aGlzLnRleHR1cmUuYmluZChpLkxJTkVBUixpLkNMQU1QX1RPX0VER0UpKSx0aGlzLl9kaXJ0eT0hMSksdGhpcy5fcHJlcGFyZURhdGEodCk7fWxvYWRUaWxlKGUsdCl7dGhpcy50aWxlSUQmJnRoaXMudGlsZUlELmVxdWFscyhlLnRpbGVJRC5jYW5vbmljYWwpPyh0aGlzLnRpbGVzW1N0cmluZyhlLnRpbGVJRC53cmFwKV09ZSxlLmJ1Y2tldHM9e30sdChudWxsKSk6KGUuc3RhdGU9XCJlcnJvcmVkXCIsdChudWxsKSk7fXNlcmlhbGl6ZSgpe3JldHVybiB7dHlwZTpcImltYWdlXCIsdXJsOnRoaXMub3B0aW9ucy51cmwsY29vcmRpbmF0ZXM6dGhpcy5jb29yZGluYXRlc319aGFzVHJhbnNpdGlvbigpe3JldHVybiAhMX19Y29uc3QgU2U9e3ZlY3RvcjpDZSxyYXN0ZXI6TWUsXCJyYXN0ZXItZGVtXCI6Y2xhc3MgZXh0ZW5kcyBNZXtjb25zdHJ1Y3Rvcih0LGksbyxyKXtzdXBlcih0LGksbyxyKSx0aGlzLnR5cGU9XCJyYXN0ZXItZGVtXCIsdGhpcy5tYXh6b29tPTIyLHRoaXMuX29wdGlvbnM9ZS5leHRlbmQoe3R5cGU6XCJyYXN0ZXItZGVtXCJ9LGkpLHRoaXMuZW5jb2Rpbmc9aS5lbmNvZGluZ3x8XCJtYXBib3hcIjt9bG9hZFRpbGUodCxpKXtjb25zdCBvPXRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlci5ub3JtYWxpemVUaWxlVVJMKHQudGlsZUlELmNhbm9uaWNhbC51cmwodGhpcy50aWxlcyx0aGlzLnNjaGVtZSksITEsdGhpcy50aWxlU2l6ZSk7ZnVuY3Rpb24gcihlLG8pe2UmJih0LnN0YXRlPVwiZXJyb3JlZFwiLGkoZSkpLG8mJih0LmRlbT1vLHQuZGVtLm9uRGVzZXJpYWxpemUoKSx0Lm5lZWRzSGlsbHNoYWRlUHJlcGFyZT0hMCx0Lm5lZWRzREVNVGV4dHVyZVVwbG9hZD0hMCx0LnN0YXRlPVwibG9hZGVkXCIsaShudWxsKSk7fXQucmVxdWVzdD1lLmdldEltYWdlKHRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlci50cmFuc2Zvcm1SZXF1ZXN0KG8sZS5SZXNvdXJjZVR5cGUuVGlsZSksZnVuY3Rpb24obyxuLHMsYSl7aWYoZGVsZXRlIHQucmVxdWVzdCx0LmFib3J0ZWQpdC5zdGF0ZT1cInVubG9hZGVkXCIsaShudWxsKTtlbHNlIGlmKG8pdC5zdGF0ZT1cImVycm9yZWRcIixpKG8pO2Vsc2UgaWYobil7dGhpcy5tYXAuX3JlZnJlc2hFeHBpcmVkVGlsZXMmJnQuc2V0RXhwaXJ5RGF0YSh7Y2FjaGVDb250cm9sOnMsZXhwaXJlczphfSk7Y29uc3QgaT1lLndpbmRvdy5JbWFnZUJpdG1hcCYmbiBpbnN0YW5jZW9mIGUud2luZG93LkltYWdlQml0bWFwJiYobnVsbD09c2UmJihzZT1lLndpbmRvdy5PZmZzY3JlZW5DYW52YXMmJm5ldyBlLndpbmRvdy5PZmZzY3JlZW5DYW52YXMoMSwxKS5nZXRDb250ZXh0KFwiMmRcIikmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUud2luZG93LmNyZWF0ZUltYWdlQml0bWFwKSxzZSksbz0xLShuLndpZHRoLWUucHJldlBvd2VyT2ZUd28obi53aWR0aCkpLzI7bzwxfHx0Lm5laWdoYm9yaW5nVGlsZXN8fCh0Lm5laWdoYm9yaW5nVGlsZXM9dGhpcy5fZ2V0TmVpZ2hib3JpbmdUaWxlcyh0LnRpbGVJRCkpO2NvbnN0IGw9aT9uOmUuZXhwb3J0ZWQuZ2V0SW1hZ2VEYXRhKG4sbyksYz17dWlkOnQudWlkLGNvb3JkOnQudGlsZUlELHNvdXJjZTp0aGlzLmlkLHJhd0ltYWdlRGF0YTpsLGVuY29kaW5nOnRoaXMuZW5jb2RpbmcscGFkZGluZzpvfTt0LmFjdG9yJiZcImV4cGlyZWRcIiE9PXQuc3RhdGV8fCh0LmFjdG9yPXRoaXMuZGlzcGF0Y2hlci5nZXRBY3RvcigpLHQuYWN0b3Iuc2VuZChcImxvYWRERU1UaWxlXCIsYyxyLmJpbmQodGhpcyksdm9pZCAwLCEwKSk7fX0uYmluZCh0aGlzKSk7fV9nZXROZWlnaGJvcmluZ1RpbGVzKHQpe2NvbnN0IGk9dC5jYW5vbmljYWwsbz1NYXRoLnBvdygyLGkueikscj0oaS54LTErbyklbyxuPTA9PT1pLng/dC53cmFwLTE6dC53cmFwLHM9KGkueCsxK28pJW8sYT1pLngrMT09PW8/dC53cmFwKzE6dC53cmFwLGw9e307cmV0dXJuIGxbbmV3IGUuT3ZlcnNjYWxlZFRpbGVJRCh0Lm92ZXJzY2FsZWRaLG4saS56LHIsaS55KS5rZXldPXtiYWNrZmlsbGVkOiExfSxsW25ldyBlLk92ZXJzY2FsZWRUaWxlSUQodC5vdmVyc2NhbGVkWixhLGkueixzLGkueSkua2V5XT17YmFja2ZpbGxlZDohMX0saS55PjAmJihsW25ldyBlLk92ZXJzY2FsZWRUaWxlSUQodC5vdmVyc2NhbGVkWixuLGkueixyLGkueS0xKS5rZXldPXtiYWNrZmlsbGVkOiExfSxsW25ldyBlLk92ZXJzY2FsZWRUaWxlSUQodC5vdmVyc2NhbGVkWix0LndyYXAsaS56LGkueCxpLnktMSkua2V5XT17YmFja2ZpbGxlZDohMX0sbFtuZXcgZS5PdmVyc2NhbGVkVGlsZUlEKHQub3ZlcnNjYWxlZFosYSxpLnoscyxpLnktMSkua2V5XT17YmFja2ZpbGxlZDohMX0pLGkueSsxPG8mJihsW25ldyBlLk92ZXJzY2FsZWRUaWxlSUQodC5vdmVyc2NhbGVkWixuLGkueixyLGkueSsxKS5rZXldPXtiYWNrZmlsbGVkOiExfSxsW25ldyBlLk92ZXJzY2FsZWRUaWxlSUQodC5vdmVyc2NhbGVkWix0LndyYXAsaS56LGkueCxpLnkrMSkua2V5XT17YmFja2ZpbGxlZDohMX0sbFtuZXcgZS5PdmVyc2NhbGVkVGlsZUlEKHQub3ZlcnNjYWxlZFosYSxpLnoscyxpLnkrMSkua2V5XT17YmFja2ZpbGxlZDohMX0pLGx9dW5sb2FkVGlsZShlKXtlLmRlbVRleHR1cmUmJnRoaXMubWFwLnBhaW50ZXIuc2F2ZVRpbGVUZXh0dXJlKGUuZGVtVGV4dHVyZSksZS5mYm8mJihlLmZiby5kZXN0cm95KCksZGVsZXRlIGUuZmJvKSxlLmRlbSYmZGVsZXRlIGUuZGVtLGRlbGV0ZSBlLm5laWdoYm9yaW5nVGlsZXMsZS5zdGF0ZT1cInVubG9hZGVkXCI7fX0sZ2VvanNvbjpjbGFzcyBleHRlbmRzIGUuRXZlbnRlZHtjb25zdHJ1Y3Rvcih0LGksbyxyKXtzdXBlcigpLHRoaXMuaWQ9dCx0aGlzLnR5cGU9XCJnZW9qc29uXCIsdGhpcy5taW56b29tPTAsdGhpcy5tYXh6b29tPTE4LHRoaXMudGlsZVNpemU9NTEyLHRoaXMuaXNUaWxlQ2xpcHBlZD0hMCx0aGlzLnJlcGFyc2VPdmVyc2NhbGVkPSEwLHRoaXMuX2xvYWRlZD0hMSx0aGlzLmFjdG9yPW8uZ2V0QWN0b3IoKSx0aGlzLnNldEV2ZW50ZWRQYXJlbnQociksdGhpcy5fZGF0YT1pLmRhdGEsdGhpcy5fb3B0aW9ucz1lLmV4dGVuZCh7fSxpKSx0aGlzLl9jb2xsZWN0UmVzb3VyY2VUaW1pbmc9aS5jb2xsZWN0UmVzb3VyY2VUaW1pbmcsdm9pZCAwIT09aS5tYXh6b29tJiYodGhpcy5tYXh6b29tPWkubWF4em9vbSksaS50eXBlJiYodGhpcy50eXBlPWkudHlwZSksaS5hdHRyaWJ1dGlvbiYmKHRoaXMuYXR0cmlidXRpb249aS5hdHRyaWJ1dGlvbiksdGhpcy5wcm9tb3RlSWQ9aS5wcm9tb3RlSWQ7Y29uc3Qgbj1lLkVYVEVOVC90aGlzLnRpbGVTaXplO3RoaXMud29ya2VyT3B0aW9ucz1lLmV4dGVuZCh7c291cmNlOnRoaXMuaWQsY2x1c3RlcjppLmNsdXN0ZXJ8fCExLGdlb2pzb25WdE9wdGlvbnM6e2J1ZmZlcjoodm9pZCAwIT09aS5idWZmZXI/aS5idWZmZXI6MTI4KSpuLHRvbGVyYW5jZToodm9pZCAwIT09aS50b2xlcmFuY2U/aS50b2xlcmFuY2U6LjM3NSkqbixleHRlbnQ6ZS5FWFRFTlQsbWF4Wm9vbTp0aGlzLm1heHpvb20sbGluZU1ldHJpY3M6aS5saW5lTWV0cmljc3x8ITEsZ2VuZXJhdGVJZDppLmdlbmVyYXRlSWR8fCExfSxzdXBlcmNsdXN0ZXJPcHRpb25zOnttYXhab29tOnZvaWQgMCE9PWkuY2x1c3Rlck1heFpvb20/aS5jbHVzdGVyTWF4Wm9vbTp0aGlzLm1heHpvb20tMSxtaW5Qb2ludHM6TWF0aC5tYXgoMixpLmNsdXN0ZXJNaW5Qb2ludHN8fDIpLGV4dGVudDplLkVYVEVOVCxyYWRpdXM6KHZvaWQgMCE9PWkuY2x1c3RlclJhZGl1cz9pLmNsdXN0ZXJSYWRpdXM6NTApKm4sbG9nOiExLGdlbmVyYXRlSWQ6aS5nZW5lcmF0ZUlkfHwhMX0sY2x1c3RlclByb3BlcnRpZXM6aS5jbHVzdGVyUHJvcGVydGllcyxmaWx0ZXI6aS5maWx0ZXJ9LGkud29ya2VyT3B0aW9ucyk7fW9uQWRkKGUpe3RoaXMubWFwPWUsdGhpcy5zZXREYXRhKHRoaXMuX2RhdGEpO31zZXREYXRhKGUpe3JldHVybiB0aGlzLl9kYXRhPWUsdGhpcy5fdXBkYXRlV29ya2VyRGF0YSgpLHRoaXN9Z2V0Q2x1c3RlckV4cGFuc2lvblpvb20oZSx0KXtyZXR1cm4gdGhpcy5hY3Rvci5zZW5kKFwiZ2VvanNvbi5nZXRDbHVzdGVyRXhwYW5zaW9uWm9vbVwiLHtjbHVzdGVySWQ6ZSxzb3VyY2U6dGhpcy5pZH0sdCksdGhpc31nZXRDbHVzdGVyQ2hpbGRyZW4oZSx0KXtyZXR1cm4gdGhpcy5hY3Rvci5zZW5kKFwiZ2VvanNvbi5nZXRDbHVzdGVyQ2hpbGRyZW5cIix7Y2x1c3RlcklkOmUsc291cmNlOnRoaXMuaWR9LHQpLHRoaXN9Z2V0Q2x1c3RlckxlYXZlcyhlLHQsaSxvKXtyZXR1cm4gdGhpcy5hY3Rvci5zZW5kKFwiZ2VvanNvbi5nZXRDbHVzdGVyTGVhdmVzXCIse3NvdXJjZTp0aGlzLmlkLGNsdXN0ZXJJZDplLGxpbWl0OnQsb2Zmc2V0Oml9LG8pLHRoaXN9X3VwZGF0ZVdvcmtlckRhdGEoKXtpZih0aGlzLl9wZW5kaW5nTG9hZClyZXR1cm4gdm9pZCh0aGlzLl9jb2FsZXNjZT0hMCk7dGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZGF0YWxvYWRpbmdcIix7ZGF0YVR5cGU6XCJzb3VyY2VcIn0pKSx0aGlzLl9sb2FkZWQ9ITE7Y29uc3QgdD1lLmV4dGVuZCh7fSx0aGlzLndvcmtlck9wdGlvbnMpLGk9dGhpcy5fZGF0YTtcInN0cmluZ1wiPT10eXBlb2YgaT8odC5yZXF1ZXN0PXRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlci50cmFuc2Zvcm1SZXF1ZXN0KGUuZXhwb3J0ZWQucmVzb2x2ZVVSTChpKSxlLlJlc291cmNlVHlwZS5Tb3VyY2UpLHQucmVxdWVzdC5jb2xsZWN0UmVzb3VyY2VUaW1pbmc9dGhpcy5fY29sbGVjdFJlc291cmNlVGltaW5nKTp0LmRhdGE9SlNPTi5zdHJpbmdpZnkoaSksdGhpcy5fcGVuZGluZ0xvYWQ9dGhpcy5hY3Rvci5zZW5kKGAke3RoaXMudHlwZX0ubG9hZERhdGFgLHQsKCh0LGkpPT57aWYodGhpcy5fbG9hZGVkPSEwLHRoaXMuX3BlbmRpbmdMb2FkPW51bGwsdCl0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudCh0KSk7ZWxzZSB7Y29uc3QgdD17ZGF0YVR5cGU6XCJzb3VyY2VcIixzb3VyY2VEYXRhVHlwZTp0aGlzLl9tZXRhZGF0YUZpcmVkP1wiY29udGVudFwiOlwibWV0YWRhdGFcIn07dGhpcy5fY29sbGVjdFJlc291cmNlVGltaW5nJiZpJiZpLnJlc291cmNlVGltaW5nJiZpLnJlc291cmNlVGltaW5nW3RoaXMuaWRdJiYodC5yZXNvdXJjZVRpbWluZz1pLnJlc291cmNlVGltaW5nW3RoaXMuaWRdKSx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJkYXRhXCIsdCkpLHRoaXMuX21ldGFkYXRhRmlyZWQ9ITA7fXRoaXMuX2NvYWxlc2NlJiYodGhpcy5fdXBkYXRlV29ya2VyRGF0YSgpLHRoaXMuX2NvYWxlc2NlPSExKTt9KSk7fWxvYWRlZCgpe3JldHVybiB0aGlzLl9sb2FkZWR9bG9hZFRpbGUodCxpKXtjb25zdCBvPXQuYWN0b3I/XCJyZWxvYWRUaWxlXCI6XCJsb2FkVGlsZVwiO3QuYWN0b3I9dGhpcy5hY3Rvcix0LnJlcXVlc3Q9dGhpcy5hY3Rvci5zZW5kKG8se3R5cGU6dGhpcy50eXBlLHVpZDp0LnVpZCx0aWxlSUQ6dC50aWxlSUQsdGlsZVpvb206dC50aWxlWm9vbSx6b29tOnQudGlsZUlELm92ZXJzY2FsZWRaLG1heFpvb206dGhpcy5tYXh6b29tLHRpbGVTaXplOnRoaXMudGlsZVNpemUsc291cmNlOnRoaXMuaWQscGl4ZWxSYXRpbzplLmV4cG9ydGVkLmRldmljZVBpeGVsUmF0aW8sc2hvd0NvbGxpc2lvbkJveGVzOnRoaXMubWFwLnNob3dDb2xsaXNpb25Cb3hlcyxwcm9tb3RlSWQ6dGhpcy5wcm9tb3RlSWR9LCgoZSxyKT0+KGRlbGV0ZSB0LnJlcXVlc3QsdC51bmxvYWRWZWN0b3JEYXRhKCksdC5hYm9ydGVkP2kobnVsbCk6ZT9pKGUpOih0LmxvYWRWZWN0b3JEYXRhKHIsdGhpcy5tYXAucGFpbnRlcixcInJlbG9hZFRpbGVcIj09PW8pLGkobnVsbCkpKSksdm9pZCAwLFwibG9hZFRpbGVcIj09PW8pO31hYm9ydFRpbGUoZSl7ZS5yZXF1ZXN0JiYoZS5yZXF1ZXN0LmNhbmNlbCgpLGRlbGV0ZSBlLnJlcXVlc3QpLGUuYWJvcnRlZD0hMDt9dW5sb2FkVGlsZShlKXtlLnVubG9hZFZlY3RvckRhdGEoKSx0aGlzLmFjdG9yLnNlbmQoXCJyZW1vdmVUaWxlXCIse3VpZDplLnVpZCx0eXBlOnRoaXMudHlwZSxzb3VyY2U6dGhpcy5pZH0pO31vblJlbW92ZSgpe3RoaXMuX3BlbmRpbmdMb2FkJiZ0aGlzLl9wZW5kaW5nTG9hZC5jYW5jZWwoKTt9c2VyaWFsaXplKCl7cmV0dXJuIGUuZXh0ZW5kKHt9LHRoaXMuX29wdGlvbnMse3R5cGU6dGhpcy50eXBlLGRhdGE6dGhpcy5fZGF0YX0pfWhhc1RyYW5zaXRpb24oKXtyZXR1cm4gITF9fSx2aWRlbzpjbGFzcyBleHRlbmRzIFBle2NvbnN0cnVjdG9yKGUsdCxpLG8pe3N1cGVyKGUsdCxpLG8pLHRoaXMucm91bmRab29tPSEwLHRoaXMudHlwZT1cInZpZGVvXCIsdGhpcy5vcHRpb25zPXQ7fWxvYWQoKXt0aGlzLl9sb2FkZWQ9ITE7Y29uc3QgdD10aGlzLm9wdGlvbnM7dGhpcy51cmxzPVtdO2Zvcihjb25zdCBpIG9mIHQudXJscyl0aGlzLnVybHMucHVzaCh0aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdChpLGUuUmVzb3VyY2VUeXBlLlNvdXJjZSkudXJsKTtlLmdldFZpZGVvKHRoaXMudXJscywoKHQsaSk9Pnt0aGlzLl9sb2FkZWQ9ITAsdD90aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudCh0KSk6aSYmKHRoaXMudmlkZW89aSx0aGlzLnZpZGVvLmxvb3A9ITAsdGhpcy52aWRlby5zZXRBdHRyaWJ1dGUoXCJwbGF5c2lubGluZVwiLFwiXCIpLHRoaXMudmlkZW8uYWRkRXZlbnRMaXN0ZW5lcihcInBsYXlpbmdcIiwoKCk9Pnt0aGlzLm1hcC50cmlnZ2VyUmVwYWludCgpO30pKSx0aGlzLm1hcCYmdGhpcy52aWRlby5wbGF5KCksdGhpcy5fZmluaXNoTG9hZGluZygpKTt9KSk7fXBhdXNlKCl7dGhpcy52aWRlbyYmdGhpcy52aWRlby5wYXVzZSgpO31wbGF5KCl7dGhpcy52aWRlbyYmdGhpcy52aWRlby5wbGF5KCk7fXNlZWsodCl7aWYodGhpcy52aWRlbyl7Y29uc3QgaT10aGlzLnZpZGVvLnNlZWthYmxlO3Q8aS5zdGFydCgwKXx8dD5pLmVuZCgwKT90aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgZS5WYWxpZGF0aW9uRXJyb3IoYHNvdXJjZXMuJHt0aGlzLmlkfWAsbnVsbCxgUGxheWJhY2sgZm9yIHRoaXMgdmlkZW8gY2FuIGJlIHNldCBvbmx5IGJldHdlZW4gdGhlICR7aS5zdGFydCgwKX0gYW5kICR7aS5lbmQoMCl9LXNlY29uZCBtYXJrLmApKSk6dGhpcy52aWRlby5jdXJyZW50VGltZT10O319Z2V0VmlkZW8oKXtyZXR1cm4gdGhpcy52aWRlb31vbkFkZChlKXt0aGlzLm1hcHx8KHRoaXMubWFwPWUsdGhpcy5sb2FkKCksdGhpcy52aWRlbyYmKHRoaXMudmlkZW8ucGxheSgpLHRoaXMuc2V0Q29vcmRpbmF0ZXModGhpcy5jb29yZGluYXRlcykpKTt9cHJlcGFyZSgpe2lmKDA9PT1PYmplY3Qua2V5cyh0aGlzLnRpbGVzKS5sZW5ndGh8fHRoaXMudmlkZW8ucmVhZHlTdGF0ZTwyKXJldHVybjtjb25zdCB0PXRoaXMubWFwLnBhaW50ZXIuY29udGV4dCxpPXQuZ2w7dGhpcy50ZXh0dXJlP3RoaXMudmlkZW8ucGF1c2VkfHwodGhpcy50ZXh0dXJlLmJpbmQoaS5MSU5FQVIsaS5DTEFNUF9UT19FREdFKSxpLnRleFN1YkltYWdlMkQoaS5URVhUVVJFXzJELDAsMCwwLGkuUkdCQSxpLlVOU0lHTkVEX0JZVEUsdGhpcy52aWRlbykpOih0aGlzLnRleHR1cmU9bmV3IGUuVGV4dHVyZSh0LHRoaXMudmlkZW8saS5SR0JBKSx0aGlzLnRleHR1cmUuYmluZChpLkxJTkVBUixpLkNMQU1QX1RPX0VER0UpLHRoaXMud2lkdGg9dGhpcy52aWRlby52aWRlb1dpZHRoLHRoaXMuaGVpZ2h0PXRoaXMudmlkZW8udmlkZW9IZWlnaHQpLHRoaXMuX3ByZXBhcmVEYXRhKHQpO31zZXJpYWxpemUoKXtyZXR1cm4ge3R5cGU6XCJ2aWRlb1wiLHVybHM6dGhpcy51cmxzLGNvb3JkaW5hdGVzOnRoaXMuY29vcmRpbmF0ZXN9fWhhc1RyYW5zaXRpb24oKXtyZXR1cm4gdGhpcy52aWRlbyYmIXRoaXMudmlkZW8ucGF1c2VkfX0saW1hZ2U6UGUsY2FudmFzOmNsYXNzIGV4dGVuZHMgUGV7Y29uc3RydWN0b3IodCxpLG8scil7c3VwZXIodCxpLG8sciksaS5jb29yZGluYXRlcz9BcnJheS5pc0FycmF5KGkuY29vcmRpbmF0ZXMpJiY0PT09aS5jb29yZGluYXRlcy5sZW5ndGgmJiFpLmNvb3JkaW5hdGVzLnNvbWUoKGU9PiFBcnJheS5pc0FycmF5KGUpfHwyIT09ZS5sZW5ndGh8fGUuc29tZSgoZT0+XCJudW1iZXJcIiE9dHlwZW9mIGUpKSkpfHx0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgZS5WYWxpZGF0aW9uRXJyb3IoYHNvdXJjZXMuJHt0fWAsbnVsbCwnXCJjb29yZGluYXRlc1wiIHByb3BlcnR5IG11c3QgYmUgYW4gYXJyYXkgb2YgNCBsb25naXR1ZGUvbGF0aXR1ZGUgYXJyYXkgcGFpcnMnKSkpOnRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBlLlZhbGlkYXRpb25FcnJvcihgc291cmNlcy4ke3R9YCxudWxsLCdtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IFwiY29vcmRpbmF0ZXNcIicpKSksaS5hbmltYXRlJiZcImJvb2xlYW5cIiE9dHlwZW9mIGkuYW5pbWF0ZSYmdGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IGUuVmFsaWRhdGlvbkVycm9yKGBzb3VyY2VzLiR7dH1gLG51bGwsJ29wdGlvbmFsIFwiYW5pbWF0ZVwiIHByb3BlcnR5IG11c3QgYmUgYSBib29sZWFuIHZhbHVlJykpKSxpLmNhbnZhcz9cInN0cmluZ1wiPT10eXBlb2YgaS5jYW52YXN8fGkuY2FudmFzIGluc3RhbmNlb2YgZS53aW5kb3cuSFRNTENhbnZhc0VsZW1lbnR8fHRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBlLlZhbGlkYXRpb25FcnJvcihgc291cmNlcy4ke3R9YCxudWxsLCdcImNhbnZhc1wiIG11c3QgYmUgZWl0aGVyIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgSUQgb2YgdGhlIGNhbnZhcyBlbGVtZW50IGZyb20gd2hpY2ggdG8gcmVhZCwgb3IgYW4gSFRNTENhbnZhc0VsZW1lbnQgaW5zdGFuY2UnKSkpOnRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBlLlZhbGlkYXRpb25FcnJvcihgc291cmNlcy4ke3R9YCxudWxsLCdtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IFwiY2FudmFzXCInKSkpLHRoaXMub3B0aW9ucz1pLHRoaXMuYW5pbWF0ZT12b2lkIDA9PT1pLmFuaW1hdGV8fGkuYW5pbWF0ZTt9bG9hZCgpe3RoaXMuX2xvYWRlZD0hMCx0aGlzLmNhbnZhc3x8KHRoaXMuY2FudmFzPXRoaXMub3B0aW9ucy5jYW52YXMgaW5zdGFuY2VvZiBlLndpbmRvdy5IVE1MQ2FudmFzRWxlbWVudD90aGlzLm9wdGlvbnMuY2FudmFzOmUud2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMub3B0aW9ucy5jYW52YXMpKSx0aGlzLndpZHRoPXRoaXMuY2FudmFzLndpZHRoLHRoaXMuaGVpZ2h0PXRoaXMuY2FudmFzLmhlaWdodCx0aGlzLl9oYXNJbnZhbGlkRGltZW5zaW9ucygpP3RoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihcIkNhbnZhcyBkaW1lbnNpb25zIGNhbm5vdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVyby5cIikpKToodGhpcy5wbGF5PWZ1bmN0aW9uKCl7dGhpcy5fcGxheWluZz0hMCx0aGlzLm1hcC50cmlnZ2VyUmVwYWludCgpO30sdGhpcy5wYXVzZT1mdW5jdGlvbigpe3RoaXMuX3BsYXlpbmcmJih0aGlzLnByZXBhcmUoKSx0aGlzLl9wbGF5aW5nPSExKTt9LHRoaXMuX2ZpbmlzaExvYWRpbmcoKSk7fWdldENhbnZhcygpe3JldHVybiB0aGlzLmNhbnZhc31vbkFkZChlKXt0aGlzLm1hcD1lLHRoaXMubG9hZCgpLHRoaXMuY2FudmFzJiZ0aGlzLmFuaW1hdGUmJnRoaXMucGxheSgpO31vblJlbW92ZSgpe3RoaXMucGF1c2UoKTt9cHJlcGFyZSgpe2xldCB0PSExO2lmKHRoaXMuY2FudmFzLndpZHRoIT09dGhpcy53aWR0aCYmKHRoaXMud2lkdGg9dGhpcy5jYW52YXMud2lkdGgsdD0hMCksdGhpcy5jYW52YXMuaGVpZ2h0IT09dGhpcy5oZWlnaHQmJih0aGlzLmhlaWdodD10aGlzLmNhbnZhcy5oZWlnaHQsdD0hMCksdGhpcy5faGFzSW52YWxpZERpbWVuc2lvbnMoKSlyZXR1cm47aWYoMD09PU9iamVjdC5rZXlzKHRoaXMudGlsZXMpLmxlbmd0aClyZXR1cm47Y29uc3QgaT10aGlzLm1hcC5wYWludGVyLmNvbnRleHQ7dGhpcy50ZXh0dXJlPyh0fHx0aGlzLl9wbGF5aW5nKSYmdGhpcy50ZXh0dXJlLnVwZGF0ZSh0aGlzLmNhbnZhcyx7cHJlbXVsdGlwbHk6ITB9KTp0aGlzLnRleHR1cmU9bmV3IGUuVGV4dHVyZShpLHRoaXMuY2FudmFzLGkuZ2wuUkdCQSx7cHJlbXVsdGlwbHk6ITB9KSx0aGlzLl9wcmVwYXJlRGF0YShpKTt9c2VyaWFsaXplKCl7cmV0dXJuIHt0eXBlOlwiY2FudmFzXCIsY29vcmRpbmF0ZXM6dGhpcy5jb29yZGluYXRlc319aGFzVHJhbnNpdGlvbigpe3JldHVybiB0aGlzLl9wbGF5aW5nfV9oYXNJbnZhbGlkRGltZW5zaW9ucygpe2Zvcihjb25zdCBlIG9mIFt0aGlzLmNhbnZhcy53aWR0aCx0aGlzLmNhbnZhcy5oZWlnaHRdKWlmKGlzTmFOKGUpfHxlPD0wKXJldHVybiAhMDtyZXR1cm4gITF9fSxjdXN0b206Y2xhc3MgZXh0ZW5kcyBlLkV2ZW50ZWR7Y29uc3RydWN0b3IodCxpLG8scil7c3VwZXIoKSx0aGlzLmlkPXQsdGhpcy50eXBlPVwiY3VzdG9tXCIsdGhpcy5fZGF0YVR5cGU9XCJyYXN0ZXJcIix0aGlzLl9kaXNwYXRjaGVyPW8sdGhpcy5faW1wbGVtZW50YXRpb249aSx0aGlzLnNldEV2ZW50ZWRQYXJlbnQociksdGhpcy5zY2hlbWU9XCJ4eXpcIix0aGlzLm1pbnpvb209MCx0aGlzLm1heHpvb209MjIsdGhpcy50aWxlU2l6ZT01MTIsdGhpcy5fbG9hZGVkPSExLHRoaXMucm91bmRab29tPSEwLHRoaXMuX2ltcGxlbWVudGF0aW9ufHx0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoYE1pc3NpbmcgaW1wbGVtZW50YXRpb24gZm9yICR7dGhpcy5pZH0gY3VzdG9tIHNvdXJjZWApKSksdGhpcy5faW1wbGVtZW50YXRpb24ubG9hZFRpbGV8fHRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihgTWlzc2luZyBsb2FkVGlsZSBpbXBsZW1lbnRhdGlvbiBmb3IgJHt0aGlzLmlkfSBjdXN0b20gc291cmNlYCkpKSx0aGlzLl9pbXBsZW1lbnRhdGlvbi5ib3VuZHMmJih0aGlzLnRpbGVCb3VuZHM9bmV3IEIodGhpcy5faW1wbGVtZW50YXRpb24uYm91bmRzLHRoaXMubWluem9vbSx0aGlzLm1heHpvb20pKSxpLnVwZGF0ZT10aGlzLl91cGRhdGUuYmluZCh0aGlzKSxpLmNsZWFyVGlsZXM9dGhpcy5fY2xlYXJUaWxlcy5iaW5kKHRoaXMpLGkuY292ZXJpbmdUaWxlcz10aGlzLl9jb3ZlcmluZ1RpbGVzLmJpbmQodGhpcyksZS5leHRlbmQodGhpcyxlLnBpY2soaSxbXCJkYXRhVHlwZVwiLFwic2NoZW1lXCIsXCJtaW56b29tXCIsXCJtYXh6b29tXCIsXCJ0aWxlU2l6ZVwiLFwiYXR0cmlidXRpb25cIixcIm1pblRpbGVDYWNoZVNpemVcIixcIm1heFRpbGVDYWNoZVNpemVcIl0pKTt9c2VyaWFsaXplKCl7cmV0dXJuIGUucGljayh0aGlzLFtcInR5cGVcIixcInNjaGVtZVwiLFwibWluem9vbVwiLFwibWF4em9vbVwiLFwidGlsZVNpemVcIixcImF0dHJpYnV0aW9uXCJdKX1sb2FkKCl7dGhpcy5fbG9hZGVkPSEwLHRoaXMuZmlyZShuZXcgZS5FdmVudChcImRhdGFcIix7ZGF0YVR5cGU6XCJzb3VyY2VcIixzb3VyY2VEYXRhVHlwZTpcIm1ldGFkYXRhXCJ9KSksdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZGF0YVwiLHtkYXRhVHlwZTpcInNvdXJjZVwiLHNvdXJjZURhdGFUeXBlOlwiY29udGVudFwifSkpO31sb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkfW9uQWRkKHQpe3RoaXMuX21hcD10LHRoaXMuX2xvYWRlZD0hMSx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJkYXRhbG9hZGluZ1wiLHtkYXRhVHlwZTpcInNvdXJjZVwifSkpLHRoaXMuX2ltcGxlbWVudGF0aW9uLm9uQWRkJiZ0aGlzLl9pbXBsZW1lbnRhdGlvbi5vbkFkZCh0KSx0aGlzLmxvYWQoKTt9b25SZW1vdmUoZSl7dGhpcy5faW1wbGVtZW50YXRpb24ub25SZW1vdmUmJnRoaXMuX2ltcGxlbWVudGF0aW9uLm9uUmVtb3ZlKGUpO31oYXNUaWxlKGUpe2lmKHRoaXMuX2ltcGxlbWVudGF0aW9uLmhhc1RpbGUpe2NvbnN0e3g6dCx5OmksejpvfT1lLmNhbm9uaWNhbDtyZXR1cm4gdGhpcy5faW1wbGVtZW50YXRpb24uaGFzVGlsZSh7eDp0LHk6aSx6Om99KX1yZXR1cm4gIXRoaXMudGlsZUJvdW5kc3x8dGhpcy50aWxlQm91bmRzLmNvbnRhaW5zKGUuY2Fub25pY2FsKX1sb2FkVGlsZSh0LGkpe2NvbnN0e3g6byx5OnIsejpufT10LnRpbGVJRC5jYW5vbmljYWwscz1uZXcgZS53aW5kb3cuQWJvcnRDb250cm9sbGVyO3QucmVxdWVzdD1Qcm9taXNlLnJlc29sdmUodGhpcy5faW1wbGVtZW50YXRpb24ubG9hZFRpbGUoe3g6byx5OnIsejpufSx7c2lnbmFsOnMuc2lnbmFsfSkpLnRoZW4oZnVuY3Rpb24obyl7cmV0dXJuIGRlbGV0ZSB0LnJlcXVlc3QsdC5hYm9ydGVkPyh0LnN0YXRlPVwidW5sb2FkZWRcIixpKG51bGwpKTp2b2lkIDA9PT1vPyh0LnN0YXRlPVwiZXJyb3JlZFwiLGkobnVsbCkpOm51bGw9PT1vPyh0aGlzLmxvYWRUaWxlRGF0YSh0LHt3aWR0aDp0aGlzLnRpbGVTaXplLGhlaWdodDp0aGlzLnRpbGVTaXplLGRhdGE6bnVsbH0pLHQuc3RhdGU9XCJsb2FkZWRcIixpKG51bGwpKTpmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGUud2luZG93LkltYWdlRGF0YXx8dCBpbnN0YW5jZW9mIGUud2luZG93LkhUTUxDYW52YXNFbGVtZW50fHx0IGluc3RhbmNlb2YgZS53aW5kb3cuSW1hZ2VCaXRtYXB8fHQgaW5zdGFuY2VvZiBlLndpbmRvdy5IVE1MSW1hZ2VFbGVtZW50fShvKT8odGhpcy5sb2FkVGlsZURhdGEodCxvKSx0LnN0YXRlPVwibG9hZGVkXCIsdm9pZCBpKG51bGwpKToodC5zdGF0ZT1cImVycm9yZWRcIixpKG5ldyBFcnJvcihgQ2FuJ3QgaW5mZXIgZGF0YSB0eXBlIGZvciAke3RoaXMuaWR9LCBvbmx5IHJhc3RlciBkYXRhIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50YCkpKX0uYmluZCh0aGlzKSkuY2F0Y2goKGU9PnsyMCE9PWUuY29kZSYmKHQuc3RhdGU9XCJlcnJvcmVkXCIsaShlKSk7fSkpLHQucmVxdWVzdC5jYW5jZWw9KCk9PnMuYWJvcnQoKTt9bG9hZFRpbGVEYXRhKGUsdCl7TWUubG9hZFRpbGVEYXRhKGUsdCx0aGlzLl9tYXAucGFpbnRlcik7fXVubG9hZFRpbGVEYXRhKGUpe01lLnVubG9hZFRpbGVEYXRhKGUsdGhpcy5fbWFwLnBhaW50ZXIpO311bmxvYWRUaWxlKGUsdCl7aWYodGhpcy51bmxvYWRUaWxlRGF0YShlKSx0aGlzLl9pbXBsZW1lbnRhdGlvbi51bmxvYWRUaWxlKXtjb25zdHt4OnQseTppLHo6b309ZS50aWxlSUQuY2Fub25pY2FsO3RoaXMuX2ltcGxlbWVudGF0aW9uLnVubG9hZFRpbGUoe3g6dCx5OmksejpvfSk7fXQoKTt9YWJvcnRUaWxlKGUsdCl7ZS5yZXF1ZXN0JiZlLnJlcXVlc3QuY2FuY2VsJiYoZS5yZXF1ZXN0LmNhbmNlbCgpLGRlbGV0ZSBlLnJlcXVlc3QpLHQoKTt9aGFzVHJhbnNpdGlvbigpe3JldHVybiAhMX1fY292ZXJpbmdUaWxlcygpe3JldHVybiB0aGlzLl9tYXAudHJhbnNmb3JtLmNvdmVyaW5nVGlsZXMoe3RpbGVTaXplOnRoaXMudGlsZVNpemUsbWluem9vbTp0aGlzLm1pbnpvb20sbWF4em9vbTp0aGlzLm1heHpvb20scm91bmRab29tOnRoaXMucm91bmRab29tfSkubWFwKChlPT4oe3g6ZS5jYW5vbmljYWwueCx5OmUuY2Fub25pY2FsLnksejplLmNhbm9uaWNhbC56fSkpKX1fY2xlYXJUaWxlcygpe3RoaXMuX21hcC5zdHlsZS5fY2xlYXJTb3VyY2UodGhpcy5pZCk7fV91cGRhdGUoKXt0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJkYXRhXCIse2RhdGFUeXBlOlwic291cmNlXCIsc291cmNlRGF0YVR5cGU6XCJjb250ZW50XCJ9KSk7fX19LERlPWZ1bmN0aW9uKHQsaSxvLHIpe2NvbnN0IG49bmV3IFNlW2kudHlwZV0odCxpLG8scik7aWYobi5pZCE9PXQpdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBTb3VyY2UgaWQgdG8gYmUgJHt0fSBpbnN0ZWFkIG9mICR7bi5pZH1gKTtyZXR1cm4gZS5iaW5kQWxsKFtcImxvYWRcIixcImFib3J0XCIsXCJ1bmxvYWRcIixcInNlcmlhbGl6ZVwiLFwicHJlcGFyZVwiXSxuKSxufTtmdW5jdGlvbiBMZSh0LGkpe2NvbnN0IG89ZS5pZGVudGl0eShbXSk7cmV0dXJuIGUuc2NhbGUobyxvLFsuNSp0LndpZHRoLC41Ki10LmhlaWdodCwxXSksZS50cmFuc2xhdGUobyxvLFsxLC0xLDBdKSxlLm11bHRpcGx5KG8sbyx0LmNhbGN1bGF0ZVByb2pNYXRyaXgoaS50b1Vud3JhcHBlZCgpKSksRmxvYXQzMkFycmF5LmZyb20obyl9ZnVuY3Rpb24gQWUoZSx0LGksbyxyLG4scyxhPSExKXtjb25zdCBsPWUudGlsZXNJbihvLHMsYSk7bC5zb3J0KFJlKTtjb25zdCBjPVtdO2Zvcihjb25zdCBvIG9mIGwpYy5wdXNoKHt3cmFwcGVkVGlsZUlEOm8udGlsZS50aWxlSUQud3JhcHBlZCgpLmtleSxxdWVyeVJlc3VsdHM6by50aWxlLnF1ZXJ5UmVuZGVyZWRGZWF0dXJlcyh0LGksZS5fc3RhdGUsbyxyLG4sTGUoZS50cmFuc2Zvcm0sby50aWxlLnRpbGVJRCksYSl9KTtjb25zdCBoPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9e30saT17fTtmb3IoY29uc3QgbyBvZiBlKXtjb25zdCBlPW8ucXVlcnlSZXN1bHRzLHI9by53cmFwcGVkVGlsZUlELG49aVtyXT1pW3JdfHx7fTtmb3IoY29uc3QgaSBpbiBlKXtjb25zdCBvPWVbaV0scj1uW2ldPW5baV18fHt9LHM9dFtpXT10W2ldfHxbXTtmb3IoY29uc3QgZSBvZiBvKXJbZS5mZWF0dXJlSW5kZXhdfHwocltlLmZlYXR1cmVJbmRleF09ITAscy5wdXNoKGUpKTt9fXJldHVybiB0fShjKTtmb3IoY29uc3QgdCBpbiBoKWhbdF0uZm9yRWFjaCgodD0+e2NvbnN0IGk9dC5mZWF0dXJlLG89aS5sYXllcjtvJiZcImJhY2tncm91bmRcIiE9PW8udHlwZSYmXCJza3lcIiE9PW8udHlwZSYmKGkuc291cmNlPW8uc291cmNlLG9bXCJzb3VyY2UtbGF5ZXJcIl0mJihpLnNvdXJjZUxheWVyPW9bXCJzb3VyY2UtbGF5ZXJcIl0pLGkuc3RhdGU9dm9pZCAwIT09aS5pZD9lLmdldEZlYXR1cmVTdGF0ZShvW1wic291cmNlLWxheWVyXCJdLGkuaWQpOnt9KTt9KSk7cmV0dXJuIGh9ZnVuY3Rpb24gemUoZSx0KXtjb25zdCBpPWUuZ2V0UmVuZGVyYWJsZUlkcygpLm1hcCgodD0+ZS5nZXRUaWxlQnlJRCh0KSkpLG89W10scj17fTtmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrKyl7Y29uc3Qgbj1pW2VdLHM9bi50aWxlSUQuY2Fub25pY2FsLmtleTtyW3NdfHwocltzXT0hMCxuLnF1ZXJ5U291cmNlRmVhdHVyZXMobyx0KSk7fXJldHVybiBvfWZ1bmN0aW9uIFJlKGUsdCl7Y29uc3QgaT1lLnRpbGVJRCxvPXQudGlsZUlEO3JldHVybiBpLm92ZXJzY2FsZWRaLW8ub3ZlcnNjYWxlZFp8fGkuY2Fub25pY2FsLnktby5jYW5vbmljYWwueXx8aS53cmFwLW8ud3JhcHx8aS5jYW5vbmljYWwueC1vLmNhbm9uaWNhbC54fWZ1bmN0aW9uIE9lKCl7cmV0dXJuIG51bGwhPWRuLndvcmtlckNsYXNzP25ldyBkbi53b3JrZXJDbGFzczpuZXcgZS53aW5kb3cuV29ya2VyKGRuLndvcmtlclVybCl9Y29uc3QgQmU9XCJtYXBib3hnbF9wcmVsb2FkZWRfd29ya2VyX3Bvb2xcIjtjbGFzcyBrZXtjb25zdHJ1Y3Rvcigpe3RoaXMuYWN0aXZlPXt9O31hY3F1aXJlKGUpe2lmKCF0aGlzLndvcmtlcnMpZm9yKHRoaXMud29ya2Vycz1bXTt0aGlzLndvcmtlcnMubGVuZ3RoPGtlLndvcmtlckNvdW50Oyl0aGlzLndvcmtlcnMucHVzaChuZXcgT2UpO3JldHVybiB0aGlzLmFjdGl2ZVtlXT0hMCx0aGlzLndvcmtlcnMuc2xpY2UoKX1yZWxlYXNlKGUpe2RlbGV0ZSB0aGlzLmFjdGl2ZVtlXSwwPT09dGhpcy5udW1BY3RpdmUoKSYmKHRoaXMud29ya2Vycy5mb3JFYWNoKChlPT57ZS50ZXJtaW5hdGUoKTt9KSksdGhpcy53b3JrZXJzPW51bGwpO31pc1ByZWxvYWRlZCgpe3JldHVybiAhIXRoaXMuYWN0aXZlW0JlXX1udW1BY3RpdmUoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5hY3RpdmUpLmxlbmd0aH19bGV0IEZlO2Z1bmN0aW9uIFVlKCl7cmV0dXJuIEZlfHwoRmU9bmV3IGtlKSxGZX1mdW5jdGlvbiBOZSh0LGkpe2NvbnN0IG89e307Zm9yKGNvbnN0IGUgaW4gdClcInJlZlwiIT09ZSYmKG9bZV09dFtlXSk7cmV0dXJuIGUucmVmUHJvcGVydGllcy5mb3JFYWNoKChlPT57ZSBpbiBpJiYob1tlXT1pW2VdKTt9KSksb31mdW5jdGlvbiBqZShlKXtlPWUuc2xpY2UoKTtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspdFtlW2ldLmlkXT1lW2ldO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKVwicmVmXCJpbiBlW2ldJiYoZVtpXT1OZShlW2ldLHRbZVtpXS5yZWZdKSk7cmV0dXJuIGV9a2Uud29ya2VyQ291bnQ9Mjtjb25zdCBHZT17c2V0U3R5bGU6XCJzZXRTdHlsZVwiLGFkZExheWVyOlwiYWRkTGF5ZXJcIixyZW1vdmVMYXllcjpcInJlbW92ZUxheWVyXCIsc2V0UGFpbnRQcm9wZXJ0eTpcInNldFBhaW50UHJvcGVydHlcIixzZXRMYXlvdXRQcm9wZXJ0eTpcInNldExheW91dFByb3BlcnR5XCIsc2V0RmlsdGVyOlwic2V0RmlsdGVyXCIsYWRkU291cmNlOlwiYWRkU291cmNlXCIscmVtb3ZlU291cmNlOlwicmVtb3ZlU291cmNlXCIsc2V0R2VvSlNPTlNvdXJjZURhdGE6XCJzZXRHZW9KU09OU291cmNlRGF0YVwiLHNldExheWVyWm9vbVJhbmdlOlwic2V0TGF5ZXJab29tUmFuZ2VcIixzZXRMYXllclByb3BlcnR5Olwic2V0TGF5ZXJQcm9wZXJ0eVwiLHNldENlbnRlcjpcInNldENlbnRlclwiLHNldFpvb206XCJzZXRab29tXCIsc2V0QmVhcmluZzpcInNldEJlYXJpbmdcIixzZXRQaXRjaDpcInNldFBpdGNoXCIsc2V0U3ByaXRlOlwic2V0U3ByaXRlXCIsc2V0R2x5cGhzOlwic2V0R2x5cGhzXCIsc2V0VHJhbnNpdGlvbjpcInNldFRyYW5zaXRpb25cIixzZXRMaWdodDpcInNldExpZ2h0XCIsc2V0VGVycmFpbjpcInNldFRlcnJhaW5cIixzZXRGb2c6XCJzZXRGb2dcIixzZXRQcm9qZWN0aW9uOlwic2V0UHJvamVjdGlvblwifTtmdW5jdGlvbiBaZShlLHQsaSl7aS5wdXNoKHtjb21tYW5kOkdlLmFkZFNvdXJjZSxhcmdzOltlLHRbZV1dfSk7fWZ1bmN0aW9uIFZlKGUsdCxpKXt0LnB1c2goe2NvbW1hbmQ6R2UucmVtb3ZlU291cmNlLGFyZ3M6W2VdfSksaVtlXT0hMDt9ZnVuY3Rpb24gV2UoZSx0LGksbyl7VmUoZSxpLG8pLFplKGUsdCxpKTt9ZnVuY3Rpb24gWGUoZSxpLG8pe2xldCByO2ZvcihyIGluIGVbb10paWYoZVtvXS5oYXNPd25Qcm9wZXJ0eShyKSYmXCJkYXRhXCIhPT1yJiYhdChlW29dW3JdLGlbb11bcl0pKXJldHVybiAhMTtmb3IociBpbiBpW29dKWlmKGlbb10uaGFzT3duUHJvcGVydHkocikmJlwiZGF0YVwiIT09ciYmIXQoZVtvXVtyXSxpW29dW3JdKSlyZXR1cm4gITE7cmV0dXJuICEwfWZ1bmN0aW9uIHFlKGUsaSxvLHIsbixzKXtsZXQgYTtmb3IoYSBpbiBpPWl8fHt9LGU9ZXx8e30pZS5oYXNPd25Qcm9wZXJ0eShhKSYmKHQoZVthXSxpW2FdKXx8by5wdXNoKHtjb21tYW5kOnMsYXJnczpbcixhLGlbYV0sbl19KSk7Zm9yKGEgaW4gaSlpLmhhc093blByb3BlcnR5KGEpJiYhZS5oYXNPd25Qcm9wZXJ0eShhKSYmKHQoZVthXSxpW2FdKXx8by5wdXNoKHtjb21tYW5kOnMsYXJnczpbcixhLGlbYV0sbl19KSk7fWZ1bmN0aW9uICRlKGUpe3JldHVybiBlLmlkfWZ1bmN0aW9uIEhlKGUsdCl7cmV0dXJuIGVbdC5pZF09dCxlfWNsYXNzIFlle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5yZXNldChlLHQpO31yZXNldChlLHQpe3RoaXMucG9pbnRzPWV8fFtdLHRoaXMuX2Rpc3RhbmNlcz1bMF07Zm9yKGxldCBlPTE7ZTx0aGlzLnBvaW50cy5sZW5ndGg7ZSsrKXRoaXMuX2Rpc3RhbmNlc1tlXT10aGlzLl9kaXN0YW5jZXNbZS0xXSt0aGlzLnBvaW50c1tlXS5kaXN0KHRoaXMucG9pbnRzW2UtMV0pO3RoaXMubGVuZ3RoPXRoaXMuX2Rpc3RhbmNlc1t0aGlzLl9kaXN0YW5jZXMubGVuZ3RoLTFdLHRoaXMucGFkZGluZz1NYXRoLm1pbih0fHwwLC41KnRoaXMubGVuZ3RoKSx0aGlzLnBhZGRlZExlbmd0aD10aGlzLmxlbmd0aC0yKnRoaXMucGFkZGluZzt9bGVycCh0KXtpZigxPT09dGhpcy5wb2ludHMubGVuZ3RoKXJldHVybiB0aGlzLnBvaW50c1swXTt0PWUuY2xhbXAodCwwLDEpO2xldCBpPTEsbz10aGlzLl9kaXN0YW5jZXNbaV07Y29uc3Qgcj10KnRoaXMucGFkZGVkTGVuZ3RoK3RoaXMucGFkZGluZztmb3IoO288ciYmaTx0aGlzLl9kaXN0YW5jZXMubGVuZ3RoOylvPXRoaXMuX2Rpc3RhbmNlc1srK2ldO2NvbnN0IG49aS0xLHM9dGhpcy5fZGlzdGFuY2VzW25dLGE9by1zLGw9YT4wPyhyLXMpL2E6MDtyZXR1cm4gdGhpcy5wb2ludHNbbl0ubXVsdCgxLWwpLmFkZCh0aGlzLnBvaW50c1tpXS5tdWx0KGwpKX19Y2xhc3MgS2V7Y29uc3RydWN0b3IoZSx0LGkpe2NvbnN0IG89dGhpcy5ib3hDZWxscz1bXSxyPXRoaXMuY2lyY2xlQ2VsbHM9W107dGhpcy54Q2VsbENvdW50PU1hdGguY2VpbChlL2kpLHRoaXMueUNlbGxDb3VudD1NYXRoLmNlaWwodC9pKTtmb3IobGV0IGU9MDtlPHRoaXMueENlbGxDb3VudCp0aGlzLnlDZWxsQ291bnQ7ZSsrKW8ucHVzaChbXSksci5wdXNoKFtdKTt0aGlzLmNpcmNsZUtleXM9W10sdGhpcy5ib3hLZXlzPVtdLHRoaXMuYmJveGVzPVtdLHRoaXMuY2lyY2xlcz1bXSx0aGlzLndpZHRoPWUsdGhpcy5oZWlnaHQ9dCx0aGlzLnhTY2FsZT10aGlzLnhDZWxsQ291bnQvZSx0aGlzLnlTY2FsZT10aGlzLnlDZWxsQ291bnQvdCx0aGlzLmJveFVpZD0wLHRoaXMuY2lyY2xlVWlkPTA7fWtleXNMZW5ndGgoKXtyZXR1cm4gdGhpcy5ib3hLZXlzLmxlbmd0aCt0aGlzLmNpcmNsZUtleXMubGVuZ3RofWluc2VydChlLHQsaSxvLHIpe3RoaXMuX2ZvckVhY2hDZWxsKHQsaSxvLHIsdGhpcy5faW5zZXJ0Qm94Q2VsbCx0aGlzLmJveFVpZCsrKSx0aGlzLmJveEtleXMucHVzaChlKSx0aGlzLmJib3hlcy5wdXNoKHQpLHRoaXMuYmJveGVzLnB1c2goaSksdGhpcy5iYm94ZXMucHVzaChvKSx0aGlzLmJib3hlcy5wdXNoKHIpO31pbnNlcnRDaXJjbGUoZSx0LGksbyl7dGhpcy5fZm9yRWFjaENlbGwodC1vLGktbyx0K28saStvLHRoaXMuX2luc2VydENpcmNsZUNlbGwsdGhpcy5jaXJjbGVVaWQrKyksdGhpcy5jaXJjbGVLZXlzLnB1c2goZSksdGhpcy5jaXJjbGVzLnB1c2godCksdGhpcy5jaXJjbGVzLnB1c2goaSksdGhpcy5jaXJjbGVzLnB1c2gobyk7fV9pbnNlcnRCb3hDZWxsKGUsdCxpLG8scixuKXt0aGlzLmJveENlbGxzW3JdLnB1c2gobik7fV9pbnNlcnRDaXJjbGVDZWxsKGUsdCxpLG8scixuKXt0aGlzLmNpcmNsZUNlbGxzW3JdLnB1c2gobik7fV9xdWVyeShlLHQsaSxvLHIsbil7aWYoaTwwfHxlPnRoaXMud2lkdGh8fG88MHx8dD50aGlzLmhlaWdodClyZXR1cm4gIXImJltdO2NvbnN0IHM9W107aWYoZTw9MCYmdDw9MCYmdGhpcy53aWR0aDw9aSYmdGhpcy5oZWlnaHQ8PW8pe2lmKHIpcmV0dXJuICEwO2ZvcihsZXQgZT0wO2U8dGhpcy5ib3hLZXlzLmxlbmd0aDtlKyspcy5wdXNoKHtrZXk6dGhpcy5ib3hLZXlzW2VdLHgxOnRoaXMuYmJveGVzWzQqZV0seTE6dGhpcy5iYm94ZXNbNCplKzFdLHgyOnRoaXMuYmJveGVzWzQqZSsyXSx5Mjp0aGlzLmJib3hlc1s0KmUrM119KTtmb3IobGV0IGU9MDtlPHRoaXMuY2lyY2xlS2V5cy5sZW5ndGg7ZSsrKXtjb25zdCB0PXRoaXMuY2lyY2xlc1szKmVdLGk9dGhpcy5jaXJjbGVzWzMqZSsxXSxvPXRoaXMuY2lyY2xlc1szKmUrMl07cy5wdXNoKHtrZXk6dGhpcy5jaXJjbGVLZXlzW2VdLHgxOnQtbyx5MTppLW8seDI6dCtvLHkyOmkrb30pO31yZXR1cm4gbj9zLmZpbHRlcihuKTpzfXJldHVybiB0aGlzLl9mb3JFYWNoQ2VsbChlLHQsaSxvLHRoaXMuX3F1ZXJ5Q2VsbCxzLHtoaXRUZXN0OnIsc2VlblVpZHM6e2JveDp7fSxjaXJjbGU6e319fSxuKSxyP3MubGVuZ3RoPjA6c31fcXVlcnlDaXJjbGUoZSx0LGksbyxyKXtjb25zdCBuPWUtaSxzPWUraSxhPXQtaSxsPXQraTtpZihzPDB8fG4+dGhpcy53aWR0aHx8bDwwfHxhPnRoaXMuaGVpZ2h0KXJldHVybiAhbyYmW107Y29uc3QgYz1bXTtyZXR1cm4gdGhpcy5fZm9yRWFjaENlbGwobixhLHMsbCx0aGlzLl9xdWVyeUNlbGxDaXJjbGUsYyx7aGl0VGVzdDpvLGNpcmNsZTp7eDplLHk6dCxyYWRpdXM6aX0sc2VlblVpZHM6e2JveDp7fSxjaXJjbGU6e319fSxyKSxvP2MubGVuZ3RoPjA6Y31xdWVyeShlLHQsaSxvLHIpe3JldHVybiB0aGlzLl9xdWVyeShlLHQsaSxvLCExLHIpfWhpdFRlc3QoZSx0LGksbyxyKXtyZXR1cm4gdGhpcy5fcXVlcnkoZSx0LGksbywhMCxyKX1oaXRUZXN0Q2lyY2xlKGUsdCxpLG8pe3JldHVybiB0aGlzLl9xdWVyeUNpcmNsZShlLHQsaSwhMCxvKX1fcXVlcnlDZWxsKGUsdCxpLG8scixuLHMsYSl7Y29uc3QgbD1zLnNlZW5VaWRzLGM9dGhpcy5ib3hDZWxsc1tyXTtpZihudWxsIT09Yyl7Y29uc3Qgcj10aGlzLmJib3hlcztmb3IoY29uc3QgaCBvZiBjKWlmKCFsLmJveFtoXSl7bC5ib3hbaF09ITA7Y29uc3QgYz00Kmg7aWYoZTw9cltjKzJdJiZ0PD1yW2MrM10mJmk+PXJbYyswXSYmbz49cltjKzFdJiYoIWF8fGEodGhpcy5ib3hLZXlzW2hdKSkpe2lmKHMuaGl0VGVzdClyZXR1cm4gbi5wdXNoKCEwKSwhMDtuLnB1c2goe2tleTp0aGlzLmJveEtleXNbaF0seDE6cltjXSx5MTpyW2MrMV0seDI6cltjKzJdLHkyOnJbYyszXX0pO319fWNvbnN0IGg9dGhpcy5jaXJjbGVDZWxsc1tyXTtpZihudWxsIT09aCl7Y29uc3Qgcj10aGlzLmNpcmNsZXM7Zm9yKGNvbnN0IGMgb2YgaClpZighbC5jaXJjbGVbY10pe2wuY2lyY2xlW2NdPSEwO2NvbnN0IGg9MypjO2lmKHRoaXMuX2NpcmNsZUFuZFJlY3RDb2xsaWRlKHJbaF0scltoKzFdLHJbaCsyXSxlLHQsaSxvKSYmKCFhfHxhKHRoaXMuY2lyY2xlS2V5c1tjXSkpKXtpZihzLmhpdFRlc3QpcmV0dXJuIG4ucHVzaCghMCksITA7e2NvbnN0IGU9cltoXSx0PXJbaCsxXSxpPXJbaCsyXTtuLnB1c2goe2tleTp0aGlzLmNpcmNsZUtleXNbY10seDE6ZS1pLHkxOnQtaSx4MjplK2kseTI6dCtpfSk7fX19fX1fcXVlcnlDZWxsQ2lyY2xlKGUsdCxpLG8scixuLHMsYSl7Y29uc3QgbD1zLmNpcmNsZSxjPXMuc2VlblVpZHMsaD10aGlzLmJveENlbGxzW3JdO2lmKG51bGwhPT1oKXtjb25zdCBlPXRoaXMuYmJveGVzO2Zvcihjb25zdCB0IG9mIGgpaWYoIWMuYm94W3RdKXtjLmJveFt0XT0hMDtjb25zdCBpPTQqdDtpZih0aGlzLl9jaXJjbGVBbmRSZWN0Q29sbGlkZShsLngsbC55LGwucmFkaXVzLGVbaSswXSxlW2krMV0sZVtpKzJdLGVbaSszXSkmJighYXx8YSh0aGlzLmJveEtleXNbdF0pKSlyZXR1cm4gbi5wdXNoKCEwKSwhMH19Y29uc3QgdT10aGlzLmNpcmNsZUNlbGxzW3JdO2lmKG51bGwhPT11KXtjb25zdCBlPXRoaXMuY2lyY2xlcztmb3IoY29uc3QgdCBvZiB1KWlmKCFjLmNpcmNsZVt0XSl7Yy5jaXJjbGVbdF09ITA7Y29uc3QgaT0zKnQ7aWYodGhpcy5fY2lyY2xlc0NvbGxpZGUoZVtpXSxlW2krMV0sZVtpKzJdLGwueCxsLnksbC5yYWRpdXMpJiYoIWF8fGEodGhpcy5jaXJjbGVLZXlzW3RdKSkpcmV0dXJuIG4ucHVzaCghMCksITB9fX1fZm9yRWFjaENlbGwoZSx0LGksbyxyLG4scyxhKXtjb25zdCBsPXRoaXMuX2NvbnZlcnRUb1hDZWxsQ29vcmQoZSksYz10aGlzLl9jb252ZXJ0VG9ZQ2VsbENvb3JkKHQpLGg9dGhpcy5fY29udmVydFRvWENlbGxDb29yZChpKSx1PXRoaXMuX2NvbnZlcnRUb1lDZWxsQ29vcmQobyk7Zm9yKGxldCBfPWw7Xzw9aDtfKyspZm9yKGxldCBsPWM7bDw9dTtsKyspaWYoci5jYWxsKHRoaXMsZSx0LGksbyx0aGlzLnhDZWxsQ291bnQqbCtfLG4scyxhKSlyZXR1cm59X2NvbnZlcnRUb1hDZWxsQ29vcmQoZSl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4odGhpcy54Q2VsbENvdW50LTEsTWF0aC5mbG9vcihlKnRoaXMueFNjYWxlKSkpfV9jb252ZXJ0VG9ZQ2VsbENvb3JkKGUpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKHRoaXMueUNlbGxDb3VudC0xLE1hdGguZmxvb3IoZSp0aGlzLnlTY2FsZSkpKX1fY2lyY2xlc0NvbGxpZGUoZSx0LGksbyxyLG4pe2NvbnN0IHM9by1lLGE9ci10LGw9aStuO3JldHVybiBsKmw+cypzK2EqYX1fY2lyY2xlQW5kUmVjdENvbGxpZGUoZSx0LGksbyxyLG4scyl7Y29uc3QgYT0obi1vKS8yLGw9TWF0aC5hYnMoZS0obythKSk7aWYobD5hK2kpcmV0dXJuICExO2NvbnN0IGM9KHMtcikvMixoPU1hdGguYWJzKHQtKHIrYykpO2lmKGg+YytpKXJldHVybiAhMTtpZihsPD1hfHxoPD1jKXJldHVybiAhMDtjb25zdCB1PWwtYSxfPWgtYztyZXR1cm4gdSp1K18qXzw9aSppfX1jb25zdCBKZT17dW5rbm93bjowLGZsaXBSZXF1aXJlZDoxLGZsaXBOb3RSZXF1aXJlZDoyfSxRZT1NYXRoLnRhbig4NSpNYXRoLlBJLzE4MCk7ZnVuY3Rpb24gZXQodCxpLG8scixuLHMsYSl7Y29uc3QgbD1lLmNyZWF0ZSgpO2lmKG8paWYoXCJnbG9iZVwiPT09cy5uYW1lKXtjb25zdCB0PWUuY2FsY3VsYXRlR2xvYmVMYWJlbE1hdHJpeChuLGkpO2UubXVsdGlwbHkobCxsLHQpO31lbHNlIHtjb25zdCB0PXYoW10sYSk7bFswXT10WzBdLGxbMV09dFsxXSxsWzRdPXRbMl0sbFs1XT10WzNdLHJ8fGUucm90YXRlWihsLGwsbi5hbmdsZSk7fWVsc2UgZS5tdWx0aXBseShsLG4ubGFiZWxQbGFuZU1hdHJpeCx0KTtyZXR1cm4gbH1mdW5jdGlvbiB0dChlLHQsaSxvLHIsbixzKXtjb25zdCBhPWV0KGUsdCxpLG8scixuLHMpO3JldHVybiBcImdsb2JlXCI9PT1uLm5hbWUmJml8fChhWzJdPWFbNl09YVsxMF09YVsxNF09MCksYX1mdW5jdGlvbiBpdCh0LGksbyxyLG4scyxhKXtpZihvKXtpZihcImdsb2JlXCI9PT1zLm5hbWUpe2NvbnN0IGw9ZXQodCxpLG8scixuLHMsYSk7cmV0dXJuIGUuaW52ZXJ0KGwsbCksZS5tdWx0aXBseShsLHQsbCksbH17Y29uc3QgaT1lLmNsb25lKHQpLG89ZS5pZGVudGl0eShbXSk7cmV0dXJuIG9bMF09YVswXSxvWzFdPWFbMV0sb1s0XT1hWzJdLG9bNV09YVszXSxlLm11bHRpcGx5KGksaSxvKSxyfHxlLnJvdGF0ZVooaSxpLC1uLmFuZ2xlKSxpfX1yZXR1cm4gbi5nbENvb3JkTWF0cml4fWZ1bmN0aW9uIG90KHQsaSxvLHIpe2NvbnN0IG49W3QsaSxvLDFdO28/ZS50cmFuc2Zvcm1NYXQ0JDEobixuLHIpOnB0KG4sbixyKTtjb25zdCBzPW5bM107cmV0dXJuIG5bMF0vPXMsblsxXS89cyxuWzJdLz1zLG59ZnVuY3Rpb24gcnQoZSx0KXtyZXR1cm4gTWF0aC5taW4oLjUrZS90Ki41LDEuNSl9ZnVuY3Rpb24gbnQoZSx0KXtjb25zdCBpPWVbMF0vZVszXSxvPWVbMV0vZVszXTtyZXR1cm4gaT49LXRbMF0mJmk8PXRbMF0mJm8+PS10WzFdJiZvPD10WzFdfWZ1bmN0aW9uIHN0KHQsaSxvLHIsbixzLGEsbCxjLGgpe2NvbnN0IHU9by50cmFuc2Zvcm0sXz1yP3QudGV4dFNpemVEYXRhOnQuaWNvblNpemVEYXRhLGQ9ZS5ldmFsdWF0ZVNpemVGb3Jab29tKF8sby50cmFuc2Zvcm0uem9vbSkscD1cImdsb2JlXCI9PT11LnByb2plY3Rpb24ubmFtZSxtPVsyNTYvby53aWR0aCoyKzEsMjU2L28uaGVpZ2h0KjIrMV0sZj1yP3QudGV4dC5keW5hbWljTGF5b3V0VmVydGV4QXJyYXk6dC5pY29uLmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJheTtmLmNsZWFyKCk7bGV0IGc9bnVsbDtwJiYoZz1yP3QudGV4dC5nbG9iZUV4dFZlcnRleEFycmF5OnQuaWNvbi5nbG9iZUV4dFZlcnRleEFycmF5KTtjb25zdCB2PXQubGluZVZlcnRleEFycmF5LHg9cj90LnRleHQucGxhY2VkU3ltYm9sQXJyYXk6dC5pY29uLnBsYWNlZFN5bWJvbEFycmF5LHk9by50cmFuc2Zvcm0ud2lkdGgvby50cmFuc2Zvcm0uaGVpZ2h0O2xldCBiLHc9ITE7Zm9yKGxldCByPTA7cjx4Lmxlbmd0aDtyKyspe2NvbnN0IHA9eC5nZXQocikse251bUdseXBoczpULHdyaXRpbmdNb2RlOkV9PXA7aWYoRSE9PWUuV3JpdGluZ01vZGUudmVydGljYWx8fHd8fGI9PT1lLldyaXRpbmdNb2RlLmhvcml6b250YWx8fCh3PSEwKSxiPUUsKHAuaGlkZGVufHxFPT09ZS5Xcml0aW5nTW9kZS52ZXJ0aWNhbCkmJiF3KXtkdChULGYpO2NvbnRpbnVlfXc9ITE7Y29uc3QgQz1uZXcgZS5Qb2ludChwLnRpbGVBbmNob3JYLHAudGlsZUFuY2hvclkpO2xldHt4Ok0seTpJLHo6UH09dS5wcm9qZWN0aW9uLnByb2plY3RUaWxlUG9pbnQoQy54LEMueSxoLmNhbm9uaWNhbCk7aWYoYyl7Y29uc3RbZSx0LGldPWMoQyk7TSs9ZSxJKz10LFArPWk7fWNvbnN0IFM9W00sSSxQLDFdO2lmKGUudHJhbnNmb3JtTWF0NCQxKFMsUyxpKSwhbnQoUyxtKSl7ZHQoVCxmKTtjb250aW51ZX1jb25zdCBEPXJ0KG8udHJhbnNmb3JtLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UsU1szXSksTD1lLmV2YWx1YXRlU2l6ZUZvckZlYXR1cmUoXyxkLHApLEE9YT9ML0Q6TCpELHo9b3QoTSxJLFAsbik7aWYoelszXTw9MCl7ZHQoVCxmKTtjb250aW51ZX1sZXQgUj17fTtjb25zdCBPPWE/bnVsbDpjLEI9Y3QocCxBLCExLGwsaSxuLHMsdC5nbHlwaE9mZnNldEFycmF5LHYsZixnLHosQyxSLHksTyx1LnByb2plY3Rpb24saCxhKTt3PUIudXNlVmVydGljYWwsTyYmQi5uZWVkc0ZsaXBwaW5nJiYoUj17fSksKEIubm90RW5vdWdoUm9vbXx8d3x8Qi5uZWVkc0ZsaXBwaW5nJiZjdChwLEEsITAsbCxpLG4scyx0LmdseXBoT2Zmc2V0QXJyYXksdixmLGcseixDLFIseSxPLHUucHJvamVjdGlvbixoLGEpLm5vdEVub3VnaFJvb20pJiZkdChULGYpO31yPyh0LnRleHQuZHluYW1pY0xheW91dFZlcnRleEJ1ZmZlci51cGRhdGVEYXRhKGYpLGcmJnQudGV4dC5nbG9iZUV4dFZlcnRleEJ1ZmZlci51cGRhdGVEYXRhKGcpKToodC5pY29uLmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YShmKSxnJiZ0Lmljb24uZ2xvYmVFeHRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YShnKSk7fWZ1bmN0aW9uIGF0KGUsdCxpLG8scixuLHMsYSxsLGMsaCx1LF8sZCxwLG0pe2NvbnN0e2xpbmVTdGFydEluZGV4OmYsZ2x5cGhTdGFydEluZGV4Omcsc2VnbWVudDp2fT1hLHg9ZythLm51bUdseXBocyx5PWYrYS5saW5lTGVuZ3RoLGI9dC5nZXRvZmZzZXRYKGcpLHc9dC5nZXRvZmZzZXRYKHgtMSksVD1fdChlKmIsaSxvLHIsbixzLHYsZix5LGwsYyxoLHUsXywhMCxkLHAsbSk7aWYoIVQpcmV0dXJuIG51bGw7Y29uc3QgRT1fdChlKncsaSxvLHIsbixzLHYsZix5LGwsYyxoLHUsXywhMCxkLHAsbSk7cmV0dXJuIEU/e2ZpcnN0OlQsbGFzdDpFfTpudWxsfWZ1bmN0aW9uIGx0KHQsaSxvLHIpe3JldHVybiB0PT09ZS5Xcml0aW5nTW9kZS5ob3Jpem9udGFsJiZNYXRoLmFicyhyKT5NYXRoLmFicyhvKT97dXNlVmVydGljYWw6ITB9OnQ9PT1lLldyaXRpbmdNb2RlLnZlcnRpY2FsP3I+MD97bmVlZHNGbGlwcGluZzohMH06bnVsbDppIT09SmUudW5rbm93biYmZnVuY3Rpb24oZSx0KXtyZXR1cm4gMD09PWV8fE1hdGguYWJzKHQvZSk+UWV9KG8scik/aT09PUplLmZsaXBSZXF1aXJlZD97bmVlZHNGbGlwcGluZzohMH06bnVsbDpvPDA/e25lZWRzRmxpcHBpbmc6ITB9Om51bGx9ZnVuY3Rpb24gY3QodCxpLG8scixuLHMsYSxsLGMsaCx1LF8sZCxwLG0sZixnLHYseCl7Y29uc3QgeT1pLzI0LGI9dC5saW5lT2Zmc2V0WCp5LHc9dC5saW5lT2Zmc2V0WSp5LHtsaW5lU3RhcnRJbmRleDpULGdseXBoU3RhcnRJbmRleDpFLG51bUdseXBoczpDLHNlZ21lbnQ6TSx3cml0aW5nTW9kZTpJLGZsaXBTdGF0ZTpQfT10LFM9VCt0LmxpbmVMZW5ndGgsRD10PT57aWYodSl7Y29uc3RbaSxvLHJdPXQudXAsbj1oLmxlbmd0aDtlLnVwZGF0ZUdsb2JlVmVydGV4Tm9ybWFsKHUsbiswLGksbyxyKSxlLnVwZGF0ZUdsb2JlVmVydGV4Tm9ybWFsKHUsbisxLGksbyxyKSxlLnVwZGF0ZUdsb2JlVmVydGV4Tm9ybWFsKHUsbisyLGksbyxyKSxlLnVwZGF0ZUdsb2JlVmVydGV4Tm9ybWFsKHUsbiszLGksbyxyKTt9Y29uc3RbaSxvLHJdPXQucG9pbnQ7ZS5hZGREeW5hbWljQXR0cmlidXRlcyhoLGksbyxyLHQuYW5nbGUpO307aWYoQz4xKXtjb25zdCBlPWF0KHksbCxiLHcsbyxfLGQsdCxjLHMscCxmLCExLGcsdix4KTtpZighZSlyZXR1cm4ge25vdEVub3VnaFJvb206ITB9O2lmKHImJiFvKXtsZXRbaSxvLHJdPWUuZmlyc3QucG9pbnQsW24scyxsXT1lLmxhc3QucG9pbnQ7W2ksb109b3QoaSxvLHIsYSksW24sc109b3QobixzLGwsYSk7Y29uc3QgYz1sdChJLFAsKG4taSkqbSxzLW8pO2lmKHQuZmxpcFN0YXRlPWMmJmMubmVlZHNGbGlwcGluZz9KZS5mbGlwUmVxdWlyZWQ6SmUuZmxpcE5vdFJlcXVpcmVkLGMpcmV0dXJuIGN9RChlLmZpcnN0KTtmb3IobGV0IGU9RSsxO2U8RStDLTE7ZSsrKXtjb25zdCB0PV90KHkqbC5nZXRvZmZzZXRYKGUpLGIsdyxvLF8sZCxNLFQsUyxjLHMscCxmLCExLCExLGcsdix4KTtpZighdClyZXR1cm4gaC5sZW5ndGgtPTQqKGUtRSkse25vdEVub3VnaFJvb206ITB9O0QodCk7fUQoZS5sYXN0KTt9ZWxzZSB7aWYociYmIW8pe2NvbnN0IGk9b3QoZC54LGQueSwwLG4pLG89VCtNKzEscj1uZXcgZS5Qb2ludChjLmdldHgobyksYy5nZXR5KG8pKSxzPW90KHIueCxyLnksMCxuKSxhPXNbM10+MD9zOnV0KGQscixpLDEsbix2b2lkIDAsZyx2LmNhbm9uaWNhbCksbD1sdChJLFAsKGFbMF0taVswXSkqbSxhWzFdLWlbMV0pO2lmKHQuZmxpcFN0YXRlPWwmJmwubmVlZHNGbGlwcGluZz9KZS5mbGlwUmVxdWlyZWQ6SmUuZmxpcE5vdFJlcXVpcmVkLGwpcmV0dXJuIGx9Y29uc3QgaT1fdCh5KmwuZ2V0b2Zmc2V0WChFKSxiLHcsbyxfLGQsTSxULFMsYyxzLHAsZiwhMSwhMSxnLHYseCk7aWYoIWkpcmV0dXJuIHtub3RFbm91Z2hSb29tOiEwfTtEKGkpO31yZXR1cm4ge319ZnVuY3Rpb24gaHQoZSx0LGksbyxyKXtjb25zdHt4Om4seTpzLHo6YX09by5wcm9qZWN0VGlsZVBvaW50KGUueCxlLnksdCk7aWYoIXIpcmV0dXJuIG90KG4scyxhLGkpO2NvbnN0W2wsYyxoXT1yKGUpO3JldHVybiBvdChuK2wscytjLGEraCxpKX1mdW5jdGlvbiB1dCh0LGksbyxyLG4scyxhLGwpe2NvbnN0IGM9aHQodC5zdWIoaSkuX3VuaXQoKS5fYWRkKHQpLGwsbixhLHMpO3JldHVybiBlLnN1YihjLG8sYyksZS5ub3JtYWxpemUoYyxjKSxlLnNjYWxlQW5kQWRkKGMsbyxjLHIpfWZ1bmN0aW9uIF90KHQsaSxvLHIsbixzLGEsbCxjLGgsdSxfLGQscCxtLGYsZyx2KXtjb25zdCB4PXI/dC1pOnQraTtsZXQgeT14PjA/MTotMSxiPTA7ciYmKHkqPS0xLGI9TWF0aC5QSSkseTwwJiYoYis9TWF0aC5QSSk7bGV0IHc9bCthKyh5PjA/MDoxKXwwLFQ9bixFPW4sQz0wLE09MDtjb25zdCBJPU1hdGguYWJzKHgpLFA9W10sUz1bXTtsZXQgRD1zLEw9RDtjb25zdCBBPSgpPT51dChMLEQsRSxJLUMrMSx1LGQsZixnLmNhbm9uaWNhbCk7Zm9yKDtDK008PUk7KXtpZih3Kz15LHc8bHx8dz49YylyZXR1cm4gbnVsbDtpZihFPVQsTD1ELFAucHVzaChFKSxwJiZTLnB1c2goTCksRD1uZXcgZS5Qb2ludChoLmdldHgodyksaC5nZXR5KHcpKSxUPV9bd10sIVQpe2NvbnN0IGU9aHQoRCxnLmNhbm9uaWNhbCx1LGYsZCk7VD1lWzNdPjA/X1t3XT1lOkEoKTt9Qys9TSxNPWUuZGlzdGFuY2UoRSxUKTt9bSYmZCYmKF9bd10mJihUPUEoKSxNPWUuZGlzdGFuY2UoRSxUKSksX1t3XT1UKTtjb25zdCB6PShJLUMpL00sUj1ELnN1YihMKS5fbXVsdCh6KS5fYWRkKEwpLE89ZS5zdWIoW10sVCxFKSxCPWUuc2NhbGVBbmRBZGQoW10sRSxPLHopO2xldCBrPVswLDAsMV0sRj1PWzBdLFU9T1sxXTtpZih2JiYoaz1mLnVwVmVjdG9yKGcuY2Fub25pY2FsLFIueCxSLnkpLDAhPT1rWzBdfHwwIT09a1sxXXx8MSE9PWtbMl0pKXtjb25zdCB0PVtrWzJdLDAsLWtbMF1dLGk9ZS5jcm9zcyhbXSxrLHQpO2Uubm9ybWFsaXplKHQsdCksZS5ub3JtYWxpemUoaSxpKSxGPWUuZG90KE8sdCksVT1lLmRvdChPLGkpO31pZihvKXtjb25zdCB0PWUuY3Jvc3MoW10sayxPKTtlLm5vcm1hbGl6ZSh0LHQpLGUuc2NhbGVBbmRBZGQoQixCLHQsbyp5KTt9Y29uc3QgTj1iK01hdGguYXRhbjIoVSxGKTtyZXR1cm4gUC5wdXNoKEIpLHAmJlMucHVzaChSKSx7cG9pbnQ6QixhbmdsZTpOLHBhdGg6UCx0aWxlUGF0aDpTLHVwOmt9fWZ1bmN0aW9uIGR0KGUsdCl7Y29uc3QgaT10Lmxlbmd0aCxvPWkrNCplO3QucmVzaXplKG8pLHQuZmxvYXQzMi5maWxsKC0xLzAsNCppLDQqbyk7fWZ1bmN0aW9uIHB0KGUsdCxpKXtjb25zdCBvPXRbMF0scj10WzFdO3JldHVybiBlWzBdPWlbMF0qbytpWzRdKnIraVsxMl0sZVsxXT1pWzFdKm8raVs1XSpyK2lbMTNdLGVbM109aVszXSpvK2lbN10qcitpWzE1XSxlfWNvbnN0IG10PTEwMDtjbGFzcyBmdHtjb25zdHJ1Y3RvcihlLHQsaT1uZXcgS2UoZS53aWR0aCsyMDAsZS5oZWlnaHQrMjAwLDI1KSxvPW5ldyBLZShlLndpZHRoKzIwMCxlLmhlaWdodCsyMDAsMjUpKXt0aGlzLnRyYW5zZm9ybT1lLHRoaXMuZ3JpZD1pLHRoaXMuaWdub3JlZEdyaWQ9byx0aGlzLnBpdGNoZmFjdG9yPU1hdGguY29zKGUuX3BpdGNoKSplLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UsdGhpcy5zY3JlZW5SaWdodEJvdW5kYXJ5PWUud2lkdGgrbXQsdGhpcy5zY3JlZW5Cb3R0b21Cb3VuZGFyeT1lLmhlaWdodCttdCx0aGlzLmdyaWRSaWdodEJvdW5kYXJ5PWUud2lkdGgrMjAwLHRoaXMuZ3JpZEJvdHRvbUJvdW5kYXJ5PWUuaGVpZ2h0KzIwMCx0aGlzLmZvZ1N0YXRlPXQ7fXBsYWNlQ29sbGlzaW9uQm94KGUsdCxpLG8scixuLHMsYSl7bGV0IGw9aS5wcm9qZWN0ZWRBbmNob3JYLGM9aS5wcm9qZWN0ZWRBbmNob3JZLGg9aS5wcm9qZWN0ZWRBbmNob3JaO2NvbnN0IHU9aS5lbGV2YXRpb24sXz1pLnRpbGVJRCxkPWUuZ2V0UHJvamVjdGlvbigpO2lmKHUmJl8pe2NvbnN0W2UsdCxvXT1kLnVwVmVjdG9yKF8uY2Fub25pY2FsLGkudGlsZUFuY2hvclgsaS50aWxlQW5jaG9yWSkscj1kLnVwVmVjdG9yU2NhbGUoXy5jYW5vbmljYWwsdGhpcy50cmFuc2Zvcm0uY2VudGVyLmxhdCx0aGlzLnRyYW5zZm9ybS53b3JsZFNpemUpLm1ldGVyc1RvVGlsZTtsKz1lKnUqcixjKz10KnUqcixoKz1vKnUqcjt9Y29uc3QgcD10aGlzLnByb2plY3RBbmRHZXRQZXJzcGVjdGl2ZVJhdGlvKHMsbCxjLGgsaS50aWxlSUQsXCJnbG9iZVwiPT09ZC5uYW1lfHwhIXV8fHRoaXMudHJhbnNmb3JtLnBpdGNoPjAsZCksbT1uKnAucGVyc3BlY3RpdmVSYXRpbyxmPShpLngxKnQrby54LWkucGFkZGluZykqbStwLnBvaW50LngsZz0oaS55MSp0K28ueS1pLnBhZGRpbmcpKm0rcC5wb2ludC55LHY9KGkueDIqdCtvLngraS5wYWRkaW5nKSptK3AucG9pbnQueCx4PShpLnkyKnQrby55K2kucGFkZGluZykqbStwLnBvaW50LnkseT1wLnBlcnNwZWN0aXZlUmF0aW88PS41NXx8cC5vY2NsdWRlZDtyZXR1cm4gIXRoaXMuaXNJbnNpZGVHcmlkKGYsZyx2LHgpfHwhciYmdGhpcy5ncmlkLmhpdFRlc3QoZixnLHYseCxhKXx8eT97Ym94OltdLG9mZnNjcmVlbjohMSxvY2NsdWRlZDpwLm9jY2x1ZGVkfTp7Ym94OltmLGcsdix4XSxvZmZzY3JlZW46dGhpcy5pc09mZnNjcmVlbihmLGcsdix4KSxvY2NsdWRlZDohMX19cGxhY2VDb2xsaXNpb25DaXJjbGVzKHQsaSxvLHIsbixzLGEsbCxjLGgsdSxfLGQscCxtKXtjb25zdCBmPVtdLGc9dGhpcy50cmFuc2Zvcm0uZWxldmF0aW9uLHY9dC5nZXRQcm9qZWN0aW9uKCkseD1nP2cuZ2V0QXRUaWxlT2Zmc2V0RnVuYyhtLHRoaXMudHJhbnNmb3JtLmNlbnRlci5sYXQsdGhpcy50cmFuc2Zvcm0ud29ybGRTaXplLHYpOm51bGwseT1uZXcgZS5Qb2ludChvLnRpbGVBbmNob3JYLG8udGlsZUFuY2hvclkpO2xldHt4OmIseTp3LHo6VH09di5wcm9qZWN0VGlsZVBvaW50KHkueCx5LnksbS5jYW5vbmljYWwpO2lmKHgpe2NvbnN0W2UsdCxpXT14KHkpO2IrPWUsdys9dCxUKz1pO31jb25zdCBFPVwiZ2xvYmVcIj09PXYubmFtZSxDPXRoaXMucHJvamVjdEFuZEdldFBlcnNwZWN0aXZlUmF0aW8oYSxiLHcsVCxtLEV8fCEhZ3x8dGhpcy50cmFuc2Zvcm0ucGl0Y2g+MCx2KSx7cGVyc3BlY3RpdmVSYXRpbzpNfT1DLEk9KHU/cy9NOnMqTSkvZS5PTkVfRU0sUD1vdChiLHcsVCxsKSxTPUMuc2lnbmVkRGlzdGFuY2VGcm9tQ2FtZXJhPjA/YXQoSSxuLG8ubGluZU9mZnNldFgqSSxvLmxpbmVPZmZzZXRZKkksITEsUCx5LG8scixsLHt9LGcmJiF1P3g6bnVsbCx1JiYhIWcsdixtLHUpOm51bGw7bGV0IEQ9ITEsTD0hMSxBPSEwO2lmKFMmJiFDLm9jY2x1ZGVkKXtjb25zdCB0PS41KmQqTStwLG89bmV3IGUuUG9pbnQoLTEwMCwtMTAwKSxyPW5ldyBlLlBvaW50KHRoaXMuc2NyZWVuUmlnaHRCb3VuZGFyeSx0aGlzLnNjcmVlbkJvdHRvbUJvdW5kYXJ5KSxuPW5ldyBZZSx7Zmlyc3Q6cyxsYXN0OmF9PVMsbD1zLnBhdGgubGVuZ3RoO2xldCB1PVtdO2ZvcihsZXQgZT1sLTE7ZT49MTtlLS0pdS5wdXNoKHMucGF0aFtlXSk7Zm9yKGxldCBlPTE7ZTxhLnBhdGgubGVuZ3RoO2UrKyl1LnB1c2goYS5wYXRoW2VdKTtjb25zdCBtPTIuNSp0O2MmJih1PXUubWFwKCgoW2UsdCxpXSxvKT0+KHgmJiFFJiYoaT14KG88bC0xP3MudGlsZVBhdGhbbC0xLW9dOmEudGlsZVBhdGhbby1sKzJdKVsyXSksb3QoZSx0LGksYykpKSksdS5zb21lKChlPT5lWzNdPD0wKSkmJih1PVtdKSk7bGV0IGc9W107aWYodS5sZW5ndGg+MCl7bGV0IHQ9MS8wLGk9LTEvMCxuPTEvMCxzPS0xLzA7Zm9yKGNvbnN0IGUgb2YgdSl0PU1hdGgubWluKHQsZVswXSksbj1NYXRoLm1pbihuLGVbMV0pLGk9TWF0aC5tYXgoaSxlWzBdKSxzPU1hdGgubWF4KHMsZVsxXSk7aT49by54JiZ0PD1yLngmJnM+PW8ueSYmbjw9ci55JiYoZz1bdS5tYXAoKHQ9Pm5ldyBlLlBvaW50KHRbMF0sdFsxXSkpKV0sKHQ8by54fHxpPnIueHx8bjxvLnl8fHM+ci55KSYmKGc9ZS5jbGlwTGluZShnLG8ueCxvLnksci54LHIueSkpKTt9Zm9yKGNvbnN0IGUgb2YgZyl7bi5yZXNldChlLC4yNSp0KTtsZXQgbz0wO289bi5sZW5ndGg8PS41KnQ/MTpNYXRoLmNlaWwobi5wYWRkZWRMZW5ndGgvbSkrMTtmb3IobGV0IGU9MDtlPG87ZSsrKXtjb25zdCByPWUvTWF0aC5tYXgoby0xLDEpLHM9bi5sZXJwKHIpLGE9cy54K210LGw9cy55K210O2YucHVzaChhLGwsdCwwKTtjb25zdCBjPWEtdCx1PWwtdCxkPWErdCxwPWwrdDtpZihBPUEmJnRoaXMuaXNPZmZzY3JlZW4oYyx1LGQscCksTD1MfHx0aGlzLmlzSW5zaWRlR3JpZChjLHUsZCxwKSwhaSYmdGhpcy5ncmlkLmhpdFRlc3RDaXJjbGUoYSxsLHQsXykmJihEPSEwLCFoKSlyZXR1cm4ge2NpcmNsZXM6W10sb2Zmc2NyZWVuOiExLGNvbGxpc2lvbkRldGVjdGVkOkQsb2NjbHVkZWQ6ITF9fX19cmV0dXJuIHtjaXJjbGVzOiFoJiZEfHwhTD9bXTpmLG9mZnNjcmVlbjpBLGNvbGxpc2lvbkRldGVjdGVkOkQsb2NjbHVkZWQ6Qy5vY2NsdWRlZH19cXVlcnlSZW5kZXJlZFN5bWJvbHModCl7aWYoMD09PXQubGVuZ3RofHwwPT09dGhpcy5ncmlkLmtleXNMZW5ndGgoKSYmMD09PXRoaXMuaWdub3JlZEdyaWQua2V5c0xlbmd0aCgpKXJldHVybiB7fTtjb25zdCBpPVtdO2xldCBvPTEvMCxyPTEvMCxuPS0xLzAscz0tMS8wO2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0IHQ9bmV3IGUuUG9pbnQoYS54K210LGEueSttdCk7bz1NYXRoLm1pbihvLHQueCkscj1NYXRoLm1pbihyLHQueSksbj1NYXRoLm1heChuLHQueCkscz1NYXRoLm1heChzLHQueSksaS5wdXNoKHQpO31jb25zdCBhPXRoaXMuZ3JpZC5xdWVyeShvLHIsbixzKS5jb25jYXQodGhpcy5pZ25vcmVkR3JpZC5xdWVyeShvLHIsbixzKSksbD17fSxjPXt9O2Zvcihjb25zdCB0IG9mIGEpe2NvbnN0IG89dC5rZXk7aWYodm9pZCAwPT09bFtvLmJ1Y2tldEluc3RhbmNlSWRdJiYobFtvLmJ1Y2tldEluc3RhbmNlSWRdPXt9KSxsW28uYnVja2V0SW5zdGFuY2VJZF1bby5mZWF0dXJlSW5kZXhdKWNvbnRpbnVlO2NvbnN0IHI9W25ldyBlLlBvaW50KHQueDEsdC55MSksbmV3IGUuUG9pbnQodC54Mix0LnkxKSxuZXcgZS5Qb2ludCh0LngyLHQueTIpLG5ldyBlLlBvaW50KHQueDEsdC55MildO2UucG9seWdvbkludGVyc2VjdHNQb2x5Z29uKGkscikmJihsW28uYnVja2V0SW5zdGFuY2VJZF1bby5mZWF0dXJlSW5kZXhdPSEwLHZvaWQgMD09PWNbby5idWNrZXRJbnN0YW5jZUlkXSYmKGNbby5idWNrZXRJbnN0YW5jZUlkXT1bXSksY1tvLmJ1Y2tldEluc3RhbmNlSWRdLnB1c2goby5mZWF0dXJlSW5kZXgpKTt9cmV0dXJuIGN9aW5zZXJ0Q29sbGlzaW9uQm94KGUsdCxpLG8scil7KHQ/dGhpcy5pZ25vcmVkR3JpZDp0aGlzLmdyaWQpLmluc2VydCh7YnVja2V0SW5zdGFuY2VJZDppLGZlYXR1cmVJbmRleDpvLGNvbGxpc2lvbkdyb3VwSUQ6cn0sZVswXSxlWzFdLGVbMl0sZVszXSk7fWluc2VydENvbGxpc2lvbkNpcmNsZXMoZSx0LGksbyxyKXtjb25zdCBuPXQ/dGhpcy5pZ25vcmVkR3JpZDp0aGlzLmdyaWQscz17YnVja2V0SW5zdGFuY2VJZDppLGZlYXR1cmVJbmRleDpvLGNvbGxpc2lvbkdyb3VwSUQ6cn07Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kz00KW4uaW5zZXJ0Q2lyY2xlKHMsZVt0XSxlW3QrMV0sZVt0KzJdKTt9cHJvamVjdEFuZEdldFBlcnNwZWN0aXZlUmF0aW8odCxpLG8scixuLHMsYSl7Y29uc3QgbD1baSxvLHIsMV07bGV0IGM9ITE7aWYocnx8dGhpcy50cmFuc2Zvcm0ucGl0Y2g+MCl7aWYoZS50cmFuc2Zvcm1NYXQ0JDEobCxsLHQpLHRoaXMuZm9nU3RhdGUmJm4mJlwiZ2xvYmVcIiE9PWEubmFtZSl7Y29uc3QgdD1mdW5jdGlvbih0LGksbyxyLG4scyl7Y29uc3QgYT1zLmNhbGN1bGF0ZUZvZ1RpbGVNYXRyaXgobiksbD1baSxvLHJdO3JldHVybiBlLnRyYW5zZm9ybU1hdDQobCxsLGEpLEModCxsLHMucGl0Y2gscy5fZm92KX0odGhpcy5mb2dTdGF0ZSxpLG8scixuLnRvVW53cmFwcGVkKCksdGhpcy50cmFuc2Zvcm0pO2M9dD4uOTt9fWVsc2UgcHQobCxsLHQpO2NvbnN0IGg9bFszXTtyZXR1cm4ge3BvaW50Om5ldyBlLlBvaW50KChsWzBdL2grMSkvMip0aGlzLnRyYW5zZm9ybS53aWR0aCttdCwoLWxbMV0vaCsxKS8yKnRoaXMudHJhbnNmb3JtLmhlaWdodCttdCkscGVyc3BlY3RpdmVSYXRpbzpNYXRoLm1pbiguNSt0aGlzLnRyYW5zZm9ybS5nZXRDYW1lcmFUb0NlbnRlckRpc3RhbmNlKGEpL2gqLjUsMS41KSxzaWduZWREaXN0YW5jZUZyb21DYW1lcmE6aCxvY2NsdWRlZDpzJiZsWzJdPmh8fGN9fWlzT2Zmc2NyZWVuKGUsdCxpLG8pe3JldHVybiBpPG10fHxlPj10aGlzLnNjcmVlblJpZ2h0Qm91bmRhcnl8fG88bXR8fHQ+dGhpcy5zY3JlZW5Cb3R0b21Cb3VuZGFyeX1pc0luc2lkZUdyaWQoZSx0LGksbyl7cmV0dXJuIGk+PTAmJmU8dGhpcy5ncmlkUmlnaHRCb3VuZGFyeSYmbz49MCYmdDx0aGlzLmdyaWRCb3R0b21Cb3VuZGFyeX1nZXRWaWV3cG9ydE1hdHJpeCgpe2NvbnN0IHQ9ZS5pZGVudGl0eShbXSk7cmV0dXJuIGUudHJhbnNsYXRlKHQsdCxbLTEwMCwtMTAwLDBdKSx0fX1mdW5jdGlvbiBndCh0LGksbyl7Y29uc3Qgcj1pLmNyZWF0ZVRpbGVNYXRyaXgodCx0LndvcmxkU2l6ZSxvLnRvVW53cmFwcGVkKCkpO3JldHVybiBlLm11bHRpcGx5KG5ldyBGbG9hdDMyQXJyYXkoMTYpLHQucHJvak1hdHJpeCxyKX1mdW5jdGlvbiB2dChlLHQsaSl7aWYodC5wcm9qZWN0aW9uLm5hbWU9PT1pLnByb2plY3Rpb24ubmFtZSlyZXR1cm4gZS5wcm9qTWF0cml4O2NvbnN0IG89aS5jbG9uZSgpO3JldHVybiBvLnNldFByb2plY3Rpb24odC5wcm9qZWN0aW9uKSxndChvLHQuZ2V0UHJvamVjdGlvbigpLGUpfWZ1bmN0aW9uIHh0KGUsdCxpKXtyZXR1cm4gdC5uYW1lPT09aS5wcm9qZWN0aW9uLm5hbWU/ZS5wcm9qTWF0cml4Omd0KGksdCxlKX1jbGFzcyB5dHtjb25zdHJ1Y3RvcihlLHQsaSxvKXt0aGlzLm9wYWNpdHk9ZT9NYXRoLm1heCgwLE1hdGgubWluKDEsZS5vcGFjaXR5KyhlLnBsYWNlZD90Oi10KSkpOm8mJmk/MTowLHRoaXMucGxhY2VkPWk7fWlzSGlkZGVuKCl7cmV0dXJuIDA9PT10aGlzLm9wYWNpdHkmJiF0aGlzLnBsYWNlZH19Y2xhc3MgYnR7Y29uc3RydWN0b3IoZSx0LGksbyxyLG49ITEpe3RoaXMudGV4dD1uZXcgeXQoZT9lLnRleHQ6bnVsbCx0LGksciksdGhpcy5pY29uPW5ldyB5dChlP2UuaWNvbjpudWxsLHQsbyxyKSx0aGlzLmNsaXBwZWQ9bjt9aXNIaWRkZW4oKXtyZXR1cm4gdGhpcy50ZXh0LmlzSGlkZGVuKCkmJnRoaXMuaWNvbi5pc0hpZGRlbigpfX1jbGFzcyB3dHtjb25zdHJ1Y3RvcihlLHQsaSxvPSExKXt0aGlzLnRleHQ9ZSx0aGlzLmljb249dCx0aGlzLnNraXBGYWRlPWksdGhpcy5jbGlwcGVkPW87fX1jbGFzcyBUdHtjb25zdHJ1Y3Rvcigpe3RoaXMuaW52UHJvak1hdHJpeD1lLmNyZWF0ZSgpLHRoaXMudmlld3BvcnRNYXRyaXg9ZS5jcmVhdGUoKSx0aGlzLmNpcmNsZXM9W107fX1jbGFzcyBFdHtjb25zdHJ1Y3RvcihlLHQsaSxvLHIpe3RoaXMuYnVja2V0SW5zdGFuY2VJZD1lLHRoaXMuZmVhdHVyZUluZGV4PXQsdGhpcy5zb3VyY2VMYXllckluZGV4PWksdGhpcy5idWNrZXRJbmRleD1vLHRoaXMudGlsZUlEPXI7fX1jbGFzcyBDdHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNyb3NzU291cmNlQ29sbGlzaW9ucz1lLHRoaXMubWF4R3JvdXBJRD0wLHRoaXMuY29sbGlzaW9uR3JvdXBzPXt9O31nZXQoZSl7aWYodGhpcy5jcm9zc1NvdXJjZUNvbGxpc2lvbnMpcmV0dXJuIHtJRDowLHByZWRpY2F0ZTpudWxsfTtpZighdGhpcy5jb2xsaXNpb25Hcm91cHNbZV0pe2NvbnN0IHQ9Kyt0aGlzLm1heEdyb3VwSUQ7dGhpcy5jb2xsaXNpb25Hcm91cHNbZV09e0lEOnQscHJlZGljYXRlOmU9PmUuY29sbGlzaW9uR3JvdXBJRD09PXR9O31yZXR1cm4gdGhpcy5jb2xsaXNpb25Hcm91cHNbZV19fWZ1bmN0aW9uIE10KHQsaSxvLHIsbil7Y29uc3R7aG9yaXpvbnRhbEFsaWduOnMsdmVydGljYWxBbGlnbjphfT1lLmdldEFuY2hvckFsaWdubWVudCh0KSxsPS0ocy0uNSkqaSxjPS0oYS0uNSkqbyxoPWUuZXZhbHVhdGVWYXJpYWJsZU9mZnNldCh0LHIpO3JldHVybiBuZXcgZS5Qb2ludChsK2hbMF0qbixjK2hbMV0qbil9ZnVuY3Rpb24gSXQodCxpLG8scixuKXtjb25zdCBzPW5ldyBlLlBvaW50KHQsaSk7cmV0dXJuIG8mJnMuX3JvdGF0ZShyP246LW4pLHN9Y2xhc3MgUHR7Y29uc3RydWN0b3IoZSx0LGksbyxyKXt0aGlzLnRyYW5zZm9ybT1lLmNsb25lKCksdGhpcy5wcm9qZWN0aW9uPWUucHJvamVjdGlvbi5uYW1lLHRoaXMuY29sbGlzaW9uSW5kZXg9bmV3IGZ0KHRoaXMudHJhbnNmb3JtLHIpLHRoaXMucGxhY2VtZW50cz17fSx0aGlzLm9wYWNpdGllcz17fSx0aGlzLnZhcmlhYmxlT2Zmc2V0cz17fSx0aGlzLnN0YWxlPSExLHRoaXMuY29tbWl0VGltZT0wLHRoaXMuZmFkZUR1cmF0aW9uPXQsdGhpcy5yZXRhaW5lZFF1ZXJ5RGF0YT17fSx0aGlzLmNvbGxpc2lvbkdyb3Vwcz1uZXcgQ3QoaSksdGhpcy5jb2xsaXNpb25DaXJjbGVBcnJheXM9e30sdGhpcy5wcmV2UGxhY2VtZW50PW8sbyYmKG8ucHJldlBsYWNlbWVudD12b2lkIDApLHRoaXMucGxhY2VkT3JpZW50YXRpb25zPXt9O31nZXRCdWNrZXRQYXJ0cyh0LGksbyxyKXtjb25zdCBuPW8uZ2V0QnVja2V0KGkpLHM9by5sYXRlc3RGZWF0dXJlSW5kZXg7aWYoIW58fCFzfHxpLmlkIT09bi5sYXllcklkc1swXSlyZXR1cm47Y29uc3QgYT1uLmxheWVyc1swXS5sYXlvdXQsbD1vLmNvbGxpc2lvbkJveEFycmF5LGM9TWF0aC5wb3coMix0aGlzLnRyYW5zZm9ybS56b29tLW8udGlsZUlELm92ZXJzY2FsZWRaKSxoPW8udGlsZVNpemUvZS5FWFRFTlQsdT1vLnRpbGVJRC50b1Vud3JhcHBlZCgpO3RoaXMudHJhbnNmb3JtLnNldFByb2plY3Rpb24obi5wcm9qZWN0aW9uKTtjb25zdCBfPShkPW8udGlsZUlELHA9bi5nZXRQcm9qZWN0aW9uKCksbT10aGlzLnRyYW5zZm9ybSxwLm5hbWU9PT10aGlzLnByb2plY3Rpb24/bS5jYWxjdWxhdGVQcm9qTWF0cml4KGQudG9VbndyYXBwZWQoKSk6Z3QobSxwLGQpKTt2YXIgZCxwLG07Y29uc3QgZj1cIm1hcFwiPT09YS5nZXQoXCJ0ZXh0LXBpdGNoLWFsaWdubWVudFwiKSxnPVwibWFwXCI9PT1hLmdldChcInRleHQtcm90YXRpb24tYWxpZ25tZW50XCIpO2kuY29tcGlsZUZpbHRlcigpO2NvbnN0IHY9aS5keW5hbWljRmlsdGVyKCkseD1pLmR5bmFtaWNGaWx0ZXJOZWVkc0ZlYXR1cmUoKSx5PXRoaXMudHJhbnNmb3JtLmNhbGN1bGF0ZVBpeGVsc1RvVGlsZVVuaXRzTWF0cml4KG8pLGI9dHQoXyxvLnRpbGVJRC5jYW5vbmljYWwsZixnLHRoaXMudHJhbnNmb3JtLG4uZ2V0UHJvamVjdGlvbigpLHkpO2xldCB3PW51bGw7aWYoZil7Y29uc3QgdD1pdChfLG8udGlsZUlELmNhbm9uaWNhbCxmLGcsdGhpcy50cmFuc2Zvcm0sbi5nZXRQcm9qZWN0aW9uKCkseSk7dz1lLm11bHRpcGx5KFtdLHRoaXMudHJhbnNmb3JtLmxhYmVsUGxhbmVNYXRyaXgsdCk7fWxldCBUPW51bGw7diYmby5sYXRlc3RGZWF0dXJlSW5kZXgmJihUPXt1bndyYXBwZWRUaWxlSUQ6dSxkeW5hbWljRmlsdGVyOnYsZHluYW1pY0ZpbHRlck5lZWRzRmVhdHVyZTp4LGZlYXR1cmVJbmRleDpvLmxhdGVzdEZlYXR1cmVJbmRleH0pLHRoaXMucmV0YWluZWRRdWVyeURhdGFbbi5idWNrZXRJbnN0YW5jZUlkXT1uZXcgRXQobi5idWNrZXRJbnN0YW5jZUlkLHMsbi5zb3VyY2VMYXllckluZGV4LG4uaW5kZXgsby50aWxlSUQpO2NvbnN0IEU9e2J1Y2tldDpuLGxheW91dDphLHBvc01hdHJpeDpfLHRleHRMYWJlbFBsYW5lTWF0cml4OmIsbGFiZWxUb1NjcmVlbk1hdHJpeDp3LGNsaXBwaW5nRGF0YTpULHNjYWxlOmMsdGV4dFBpeGVsUmF0aW86aCxob2xkaW5nRm9yRmFkZTpvLmhvbGRpbmdGb3JGYWRlKCksY29sbGlzaW9uQm94QXJyYXk6bCxwYXJ0aWFsbHlFdmFsdWF0ZWRUZXh0U2l6ZTplLmV2YWx1YXRlU2l6ZUZvclpvb20obi50ZXh0U2l6ZURhdGEsdGhpcy50cmFuc2Zvcm0uem9vbSkscGFydGlhbGx5RXZhbHVhdGVkSWNvblNpemU6ZS5ldmFsdWF0ZVNpemVGb3Jab29tKG4uaWNvblNpemVEYXRhLHRoaXMudHJhbnNmb3JtLnpvb20pLGNvbGxpc2lvbkdyb3VwOnRoaXMuY29sbGlzaW9uR3JvdXBzLmdldChuLnNvdXJjZUlEKX07aWYocilmb3IoY29uc3QgZSBvZiBuLnNvcnRLZXlSYW5nZXMpe2NvbnN0e3NvcnRLZXk6aSxzeW1ib2xJbnN0YW5jZVN0YXJ0Om8sc3ltYm9sSW5zdGFuY2VFbmQ6cn09ZTt0LnB1c2goe3NvcnRLZXk6aSxzeW1ib2xJbnN0YW5jZVN0YXJ0Om8sc3ltYm9sSW5zdGFuY2VFbmQ6cixwYXJhbWV0ZXJzOkV9KTt9ZWxzZSB0LnB1c2goe3N5bWJvbEluc3RhbmNlU3RhcnQ6MCxzeW1ib2xJbnN0YW5jZUVuZDpuLnN5bWJvbEluc3RhbmNlcy5sZW5ndGgscGFyYW1ldGVyczpFfSk7fWF0dGVtcHRBbmNob3JQbGFjZW1lbnQoZSx0LGksbyxyLG4scyxhLGwsYyxoLHUsXyxkLHAsbSxmLGcpe2NvbnN0e3RleHRPZmZzZXQwOnYsdGV4dE9mZnNldDE6eCxjcm9zc1RpbGVJRDp5fT11LGI9W3YseF0sdz1NdChlLGksbyxiLHIpLFQ9dGhpcy5jb2xsaXNpb25JbmRleC5wbGFjZUNvbGxpc2lvbkJveChkLHIsdCxJdCh3Lngsdy55LG4scyx0aGlzLnRyYW5zZm9ybS5hbmdsZSksaCxhLGwsYy5wcmVkaWNhdGUpO2lmKG0pe2NvbnN0IGU9ZC5nZXRTeW1ib2xJbnN0YW5jZUljb25TaXplKGcsdGhpcy50cmFuc2Zvcm0uem9vbSx1LnBsYWNlZEljb25TeW1ib2xJbmRleCk7aWYoMD09PXRoaXMuY29sbGlzaW9uSW5kZXgucGxhY2VDb2xsaXNpb25Cb3goZCxlLG0sSXQody54LHcueSxuLHMsdGhpcy50cmFuc2Zvcm0uYW5nbGUpLGgsYSxsLGMucHJlZGljYXRlKS5ib3gubGVuZ3RoKXJldHVybn1pZihULmJveC5sZW5ndGg+MCl7bGV0IHQ7cmV0dXJuIHRoaXMucHJldlBsYWNlbWVudCYmdGhpcy5wcmV2UGxhY2VtZW50LnZhcmlhYmxlT2Zmc2V0c1t5XSYmdGhpcy5wcmV2UGxhY2VtZW50LnBsYWNlbWVudHNbeV0mJnRoaXMucHJldlBsYWNlbWVudC5wbGFjZW1lbnRzW3ldLnRleHQmJih0PXRoaXMucHJldlBsYWNlbWVudC52YXJpYWJsZU9mZnNldHNbeV0uYW5jaG9yKSx0aGlzLnZhcmlhYmxlT2Zmc2V0c1t5XT17dGV4dE9mZnNldDpiLHdpZHRoOmksaGVpZ2h0Om8sYW5jaG9yOmUsdGV4dFNjYWxlOnIscHJldkFuY2hvcjp0fSx0aGlzLm1hcmtVc2VkSnVzdGlmaWNhdGlvbihkLGUsdSxwKSxkLmFsbG93VmVydGljYWxQbGFjZW1lbnQmJih0aGlzLm1hcmtVc2VkT3JpZW50YXRpb24oZCxwLHUpLHRoaXMucGxhY2VkT3JpZW50YXRpb25zW3ldPXApLHtzaGlmdDp3LHBsYWNlZEdseXBoQm94ZXM6VH19fXBsYWNlTGF5ZXJCdWNrZXRQYXJ0KHQsaSxvLHIpe2NvbnN0e2J1Y2tldDpuLGxheW91dDpzLHBvc01hdHJpeDphLHRleHRMYWJlbFBsYW5lTWF0cml4OmwsbGFiZWxUb1NjcmVlbk1hdHJpeDpjLGNsaXBwaW5nRGF0YTpoLHRleHRQaXhlbFJhdGlvOnUsaG9sZGluZ0ZvckZhZGU6Xyxjb2xsaXNpb25Cb3hBcnJheTpkLHBhcnRpYWxseUV2YWx1YXRlZFRleHRTaXplOnAscGFydGlhbGx5RXZhbHVhdGVkSWNvblNpemU6bSxjb2xsaXNpb25Hcm91cDpmfT10LnBhcmFtZXRlcnMsZz1zLmdldChcInRleHQtb3B0aW9uYWxcIiksdj1zLmdldChcImljb24tb3B0aW9uYWxcIikseD1zLmdldChcInRleHQtYWxsb3ctb3ZlcmxhcFwiKSx5PXMuZ2V0KFwiaWNvbi1hbGxvdy1vdmVybGFwXCIpLGI9XCJtYXBcIj09PXMuZ2V0KFwidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnRcIiksdz1cIm1hcFwiPT09cy5nZXQoXCJ0ZXh0LXBpdGNoLWFsaWdubWVudFwiKSxUPVwibm9uZVwiIT09cy5nZXQoXCJpY29uLXRleHQtZml0XCIpLEU9XCJ2aWV3cG9ydC15XCI9PT1zLmdldChcInN5bWJvbC16LW9yZGVyXCIpO3RoaXMudHJhbnNmb3JtLnNldFByb2plY3Rpb24obi5wcm9qZWN0aW9uKTtsZXQgQz14JiYoeXx8IW4uaGFzSWNvbkRhdGEoKXx8diksTT15JiYoeHx8IW4uaGFzVGV4dERhdGEoKXx8Zyk7IW4uY29sbGlzaW9uQXJyYXlzJiZkJiZuLmRlc2VyaWFsaXplQ29sbGlzaW9uQm94ZXMoZCksbyYmciYmbi51cGRhdGVDb2xsaXNpb25EZWJ1Z0J1ZmZlcnModGhpcy50cmFuc2Zvcm0uem9vbSxkKTtjb25zdCBJPSh0LHIsZCk9Pntjb25zdHtjcm9zc1RpbGVJRDpFLG51bVZlcnRpY2FsR2x5cGhWZXJ0aWNlczpJfT10O2lmKGgpe2NvbnN0IG89e3pvb206dGhpcy50cmFuc2Zvcm0uem9vbSxwaXRjaDp0aGlzLnRyYW5zZm9ybS5waXRjaH07bGV0IHI9bnVsbDtpZihoLmR5bmFtaWNGaWx0ZXJOZWVkc0ZlYXR1cmUpe2NvbnN0IGU9dGhpcy5yZXRhaW5lZFF1ZXJ5RGF0YVtuLmJ1Y2tldEluc3RhbmNlSWRdO3I9aC5mZWF0dXJlSW5kZXgubG9hZEZlYXR1cmUoe2ZlYXR1cmVJbmRleDp0LmZlYXR1cmVJbmRleCxidWNrZXRJbmRleDplLmJ1Y2tldEluZGV4LHNvdXJjZUxheWVySW5kZXg6ZS5zb3VyY2VMYXllckluZGV4LGxheW91dFZlcnRleEFycmF5T2Zmc2V0OjB9KTt9aWYoISgwLGguZHluYW1pY0ZpbHRlcikobyxyLHRoaXMucmV0YWluZWRRdWVyeURhdGFbbi5idWNrZXRJbnN0YW5jZUlkXS50aWxlSUQuY2Fub25pY2FsLG5ldyBlLlBvaW50KHQudGlsZUFuY2hvclgsdC50aWxlQW5jaG9yWSksdGhpcy50cmFuc2Zvcm0uY2FsY3VsYXRlRGlzdGFuY2VUaWxlRGF0YShoLnVud3JhcHBlZFRpbGVJRCkpKXJldHVybiB0aGlzLnBsYWNlbWVudHNbRV09bmV3IHd0KCExLCExLCExLCEwKSx2b2lkIGkuYWRkKEUpfWlmKGkuaGFzKEUpKXJldHVybjtpZihfKXJldHVybiB2b2lkKHRoaXMucGxhY2VtZW50c1tFXT1uZXcgd3QoITEsITEsITEpKTtsZXQgUD0hMSxTPSExLEQ9ITAsTD0hMSxBPSExLHo9bnVsbCxSPXtib3g6bnVsbCxvZmZzY3JlZW46bnVsbCxvY2NsdWRlZDpudWxsfSxPPXtib3g6bnVsbCxvZmZzY3JlZW46bnVsbCxvY2NsdWRlZDpudWxsfSxCPW51bGwsaz1udWxsLEY9bnVsbCxVPTAsTj0wLGo9MDtkLnRleHRGZWF0dXJlSW5kZXg/VT1kLnRleHRGZWF0dXJlSW5kZXg6dC51c2VSdW50aW1lQ29sbGlzaW9uQ2lyY2xlcyYmKFU9dC5mZWF0dXJlSW5kZXgpLGQudmVydGljYWxUZXh0RmVhdHVyZUluZGV4JiYoTj1kLnZlcnRpY2FsVGV4dEZlYXR1cmVJbmRleCk7Y29uc3QgRz1lPT57ZS50aWxlSUQ9dGhpcy5yZXRhaW5lZFF1ZXJ5RGF0YVtuLmJ1Y2tldEluc3RhbmNlSWRdLnRpbGVJRDtjb25zdCB0PXRoaXMudHJhbnNmb3JtLmVsZXZhdGlvbjsodHx8ZS5lbGV2YXRpb24pJiYoZS5lbGV2YXRpb249dD90LmdldEF0VGlsZU9mZnNldChlLnRpbGVJRCxlLnRpbGVBbmNob3JYLGUudGlsZUFuY2hvclkpOjApO30sWj1kLnRleHRCb3g7aWYoWil7RyhaKTtjb25zdCBpPWk9PntsZXQgbz1lLldyaXRpbmdNb2RlLmhvcml6b250YWw7aWYobi5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiYhaSYmdGhpcy5wcmV2UGxhY2VtZW50KXtjb25zdCBlPXRoaXMucHJldlBsYWNlbWVudC5wbGFjZWRPcmllbnRhdGlvbnNbRV07ZSYmKHRoaXMucGxhY2VkT3JpZW50YXRpb25zW0VdPWUsbz1lLHRoaXMubWFya1VzZWRPcmllbnRhdGlvbihuLG8sdCkpO31yZXR1cm4gb30sbz0odCxpKT0+e2lmKG4uYWxsb3dWZXJ0aWNhbFBsYWNlbWVudCYmST4wJiZkLnZlcnRpY2FsVGV4dEJveCl7Zm9yKGNvbnN0IG8gb2Ygbi53cml0aW5nTW9kZXMpaWYobz09PWUuV3JpdGluZ01vZGUudmVydGljYWw/KFI9aSgpLE89Uik6Uj10KCksUiYmUi5ib3gmJlIuYm94Lmxlbmd0aClicmVha31lbHNlIFI9dCgpO307aWYocy5nZXQoXCJ0ZXh0LXZhcmlhYmxlLWFuY2hvclwiKSl7bGV0IGw9cy5nZXQoXCJ0ZXh0LXZhcmlhYmxlLWFuY2hvclwiKTtpZih0aGlzLnByZXZQbGFjZW1lbnQmJnRoaXMucHJldlBsYWNlbWVudC52YXJpYWJsZU9mZnNldHNbRV0pe2NvbnN0IGU9dGhpcy5wcmV2UGxhY2VtZW50LnZhcmlhYmxlT2Zmc2V0c1tFXTtsLmluZGV4T2YoZS5hbmNob3IpPjAmJihsPWwuZmlsdGVyKCh0PT50IT09ZS5hbmNob3IpKSxsLnVuc2hpZnQoZS5hbmNob3IpKTt9Y29uc3QgYz0oZSxpLG8pPT57Y29uc3Qgcz1uLmdldFN5bWJvbEluc3RhbmNlVGV4dFNpemUocCx0LHRoaXMudHJhbnNmb3JtLnpvb20sciksYz0oZS54Mi1lLngxKSpzKzIqZS5wYWRkaW5nLGg9KGUueTItZS55MSkqcysyKmUucGFkZGluZyxfPVQmJiF5P2k6bnVsbDtfJiZHKF8pO2xldCBkPXtib3g6W10sb2Zmc2NyZWVuOiExLG9jY2x1ZGVkOiExfTtjb25zdCBnPXg/MipsLmxlbmd0aDpsLmxlbmd0aDtmb3IobGV0IGk9MDtpPGc7KytpKXtjb25zdCBnPXRoaXMuYXR0ZW1wdEFuY2hvclBsYWNlbWVudChsW2klbC5sZW5ndGhdLGUsYyxoLHMsYix3LHUsYSxmLGk+PWwubGVuZ3RoLHQscixuLG8sXyxwLG0pO2lmKGcmJihkPWcucGxhY2VkR2x5cGhCb3hlcyxkJiZkLmJveCYmZC5ib3gubGVuZ3RoKSl7UD0hMCx6PWcuc2hpZnQ7YnJlYWt9fXJldHVybiBkfTtvKCgoKT0+YyhaLGQuaWNvbkJveCxlLldyaXRpbmdNb2RlLmhvcml6b250YWwpKSwoKCk9Pntjb25zdCB0PWQudmVydGljYWxUZXh0Qm94O3JldHVybiB0JiZHKHQpLG4uYWxsb3dWZXJ0aWNhbFBsYWNlbWVudCYmIShSJiZSLmJveCYmUi5ib3gubGVuZ3RoKSYmST4wJiZ0P2ModCxkLnZlcnRpY2FsSWNvbkJveCxlLldyaXRpbmdNb2RlLnZlcnRpY2FsKTp7Ym94Om51bGwsb2Zmc2NyZWVuOm51bGwsb2NjbHVkZWQ6bnVsbH19KSksUiYmKFA9Ui5ib3gsRD1SLm9mZnNjcmVlbixMPVIub2NjbHVkZWQpO2NvbnN0IGg9aSghKCFSfHwhUi5ib3gpKTtpZighUCYmdGhpcy5wcmV2UGxhY2VtZW50KXtjb25zdCBlPXRoaXMucHJldlBsYWNlbWVudC52YXJpYWJsZU9mZnNldHNbRV07ZSYmKHRoaXMudmFyaWFibGVPZmZzZXRzW0VdPWUsdGhpcy5tYXJrVXNlZEp1c3RpZmljYXRpb24obixlLmFuY2hvcix0LGgpKTt9fWVsc2Uge2NvbnN0IHM9KGksbyk9Pntjb25zdCBzPW4uZ2V0U3ltYm9sSW5zdGFuY2VUZXh0U2l6ZShwLHQsdGhpcy50cmFuc2Zvcm0uem9vbSxyKSxsPXRoaXMuY29sbGlzaW9uSW5kZXgucGxhY2VDb2xsaXNpb25Cb3gobixzLGksbmV3IGUuUG9pbnQoMCwwKSx4LHUsYSxmLnByZWRpY2F0ZSk7cmV0dXJuIGwmJmwuYm94JiZsLmJveC5sZW5ndGgmJih0aGlzLm1hcmtVc2VkT3JpZW50YXRpb24obixvLHQpLHRoaXMucGxhY2VkT3JpZW50YXRpb25zW0VdPW8pLGx9O28oKCgpPT5zKFosZS5Xcml0aW5nTW9kZS5ob3Jpem9udGFsKSksKCgpPT57Y29uc3QgdD1kLnZlcnRpY2FsVGV4dEJveDtyZXR1cm4gbi5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiZJPjAmJnQ/KEcodCkscyh0LGUuV3JpdGluZ01vZGUudmVydGljYWwpKTp7Ym94Om51bGwsb2Zmc2NyZWVuOm51bGwsb2NjbHVkZWQ6bnVsbH19KSksaSghIShSJiZSLmJveCYmUi5ib3gubGVuZ3RoKSk7fX1pZihCPVIsUD1CJiZCLmJveCYmQi5ib3gubGVuZ3RoPjAsRD1CJiZCLm9mZnNjcmVlbixMPUImJkIub2NjbHVkZWQsdC51c2VSdW50aW1lQ29sbGlzaW9uQ2lyY2xlcyl7Y29uc3QgaT1uLnRleHQucGxhY2VkU3ltYm9sQXJyYXkuZ2V0KHQuY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4Pj0wP3QuY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4OnQudmVydGljYWxQbGFjZWRUZXh0U3ltYm9sSW5kZXgpLHI9ZS5ldmFsdWF0ZVNpemVGb3JGZWF0dXJlKG4udGV4dFNpemVEYXRhLHAsaSksaD1zLmdldChcInRleHQtcGFkZGluZ1wiKTtrPXRoaXMuY29sbGlzaW9uSW5kZXgucGxhY2VDb2xsaXNpb25DaXJjbGVzKG4seCxpLG4ubGluZVZlcnRleEFycmF5LG4uZ2x5cGhPZmZzZXRBcnJheSxyLGEsbCxjLG8sdyxmLnByZWRpY2F0ZSx0LmNvbGxpc2lvbkNpcmNsZURpYW1ldGVyKnIvZS5PTkVfRU0saCx0aGlzLnJldGFpbmVkUXVlcnlEYXRhW24uYnVja2V0SW5zdGFuY2VJZF0udGlsZUlEKSxQPXh8fGsuY2lyY2xlcy5sZW5ndGg+MCYmIWsuY29sbGlzaW9uRGV0ZWN0ZWQsRD1EJiZrLm9mZnNjcmVlbixMPWsub2NjbHVkZWQ7fWlmKGQuaWNvbkZlYXR1cmVJbmRleCYmKGo9ZC5pY29uRmVhdHVyZUluZGV4KSxkLmljb25Cb3gpe2NvbnN0IGk9aT0+e0coaSk7Y29uc3Qgbz1UJiZ6P0l0KHoueCx6LnksYix3LHRoaXMudHJhbnNmb3JtLmFuZ2xlKTpuZXcgZS5Qb2ludCgwLDApLHI9bi5nZXRTeW1ib2xJbnN0YW5jZUljb25TaXplKG0sdGhpcy50cmFuc2Zvcm0uem9vbSx0LnBsYWNlZEljb25TeW1ib2xJbmRleCk7cmV0dXJuIHRoaXMuY29sbGlzaW9uSW5kZXgucGxhY2VDb2xsaXNpb25Cb3gobixyLGksbyx5LHUsYSxmLnByZWRpY2F0ZSl9O08mJk8uYm94JiZPLmJveC5sZW5ndGgmJmQudmVydGljYWxJY29uQm94PyhGPWkoZC52ZXJ0aWNhbEljb25Cb3gpLFM9Ri5ib3gubGVuZ3RoPjApOihGPWkoZC5pY29uQm94KSxTPUYuYm94Lmxlbmd0aD4wKSxEPUQmJkYub2Zmc2NyZWVuLEE9Ri5vY2NsdWRlZDt9Y29uc3QgVj1nfHwwPT09dC5udW1Ib3Jpem9udGFsR2x5cGhWZXJ0aWNlcyYmMD09PUksVz12fHwwPT09dC5udW1JY29uVmVydGljZXM7aWYoVnx8Vz9XP1Z8fChTPVMmJlApOlA9UyYmUDpTPVA9UyYmUCxQJiZCJiZCLmJveCYmdGhpcy5jb2xsaXNpb25JbmRleC5pbnNlcnRDb2xsaXNpb25Cb3goQi5ib3gscy5nZXQoXCJ0ZXh0LWlnbm9yZS1wbGFjZW1lbnRcIiksbi5idWNrZXRJbnN0YW5jZUlkLE8mJk8uYm94JiZOP046VSxmLklEKSxTJiZGJiZ0aGlzLmNvbGxpc2lvbkluZGV4Lmluc2VydENvbGxpc2lvbkJveChGLmJveCxzLmdldChcImljb24taWdub3JlLXBsYWNlbWVudFwiKSxuLmJ1Y2tldEluc3RhbmNlSWQsaixmLklEKSxrJiYoUCYmdGhpcy5jb2xsaXNpb25JbmRleC5pbnNlcnRDb2xsaXNpb25DaXJjbGVzKGsuY2lyY2xlcyxzLmdldChcInRleHQtaWdub3JlLXBsYWNlbWVudFwiKSxuLmJ1Y2tldEluc3RhbmNlSWQsVSxmLklEKSxvKSl7Y29uc3QgZT1uLmJ1Y2tldEluc3RhbmNlSWQ7bGV0IHQ9dGhpcy5jb2xsaXNpb25DaXJjbGVBcnJheXNbZV07dm9pZCAwPT09dCYmKHQ9dGhpcy5jb2xsaXNpb25DaXJjbGVBcnJheXNbZV09bmV3IFR0KTtmb3IobGV0IGU9MDtlPGsuY2lyY2xlcy5sZW5ndGg7ZSs9NCl0LmNpcmNsZXMucHVzaChrLmNpcmNsZXNbZSswXSksdC5jaXJjbGVzLnB1c2goay5jaXJjbGVzW2UrMV0pLHQuY2lyY2xlcy5wdXNoKGsuY2lyY2xlc1tlKzJdKSx0LmNpcmNsZXMucHVzaChrLmNvbGxpc2lvbkRldGVjdGVkPzE6MCk7fWNvbnN0IFg9XCJnbG9iZVwiIT09bi5wcm9qZWN0aW9uLm5hbWU7Qz1DJiYoWHx8IUwpLE09TSYmKFh8fCFBKSx0aGlzLnBsYWNlbWVudHNbRV09bmV3IHd0KFB8fEMsU3x8TSxEfHxuLmp1c3RSZWxvYWRlZCksaS5hZGQoRSk7fTtpZihFKXtjb25zdCBlPW4uZ2V0U29ydGVkU3ltYm9sSW5kZXhlcyh0aGlzLnRyYW5zZm9ybS5hbmdsZSk7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDstLXQpe2NvbnN0IGk9ZVt0XTtJKG4uc3ltYm9sSW5zdGFuY2VzLmdldChpKSxpLG4uY29sbGlzaW9uQXJyYXlzW2ldKTt9fWVsc2UgZm9yKGxldCBlPXQuc3ltYm9sSW5zdGFuY2VTdGFydDtlPHQuc3ltYm9sSW5zdGFuY2VFbmQ7ZSsrKUkobi5zeW1ib2xJbnN0YW5jZXMuZ2V0KGUpLGUsbi5jb2xsaXNpb25BcnJheXNbZV0pO2lmKG8mJm4uYnVja2V0SW5zdGFuY2VJZCBpbiB0aGlzLmNvbGxpc2lvbkNpcmNsZUFycmF5cyl7Y29uc3QgdD10aGlzLmNvbGxpc2lvbkNpcmNsZUFycmF5c1tuLmJ1Y2tldEluc3RhbmNlSWRdO2UuaW52ZXJ0KHQuaW52UHJvak1hdHJpeCxhKSx0LnZpZXdwb3J0TWF0cml4PXRoaXMuY29sbGlzaW9uSW5kZXguZ2V0Vmlld3BvcnRNYXRyaXgoKTt9bi5qdXN0UmVsb2FkZWQ9ITE7fW1hcmtVc2VkSnVzdGlmaWNhdGlvbih0LGksbyxyKXtjb25zdHtsZWZ0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4Om4sY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4OnMscmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXg6YSx2ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleDpsLGNyb3NzVGlsZUlEOmN9PW8saD1lLmdldEFuY2hvckp1c3RpZmljYXRpb24oaSksdT1yPT09ZS5Xcml0aW5nTW9kZS52ZXJ0aWNhbD9sOlwibGVmdFwiPT09aD9uOlwiY2VudGVyXCI9PT1oP3M6XCJyaWdodFwiPT09aD9hOi0xO24+PTAmJih0LnRleHQucGxhY2VkU3ltYm9sQXJyYXkuZ2V0KG4pLmNyb3NzVGlsZUlEPXU+PTAmJm4hPT11PzA6Yykscz49MCYmKHQudGV4dC5wbGFjZWRTeW1ib2xBcnJheS5nZXQocykuY3Jvc3NUaWxlSUQ9dT49MCYmcyE9PXU/MDpjKSxhPj0wJiYodC50ZXh0LnBsYWNlZFN5bWJvbEFycmF5LmdldChhKS5jcm9zc1RpbGVJRD11Pj0wJiZhIT09dT8wOmMpLGw+PTAmJih0LnRleHQucGxhY2VkU3ltYm9sQXJyYXkuZ2V0KGwpLmNyb3NzVGlsZUlEPXU+PTAmJmwhPT11PzA6Yyk7fW1hcmtVc2VkT3JpZW50YXRpb24odCxpLG8pe2NvbnN0IHI9aT09PWUuV3JpdGluZ01vZGUuaG9yaXpvbnRhbHx8aT09PWUuV3JpdGluZ01vZGUuaG9yaXpvbnRhbE9ubHk/aTowLG49aT09PWUuV3JpdGluZ01vZGUudmVydGljYWw/aTowLHtsZWZ0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4OnMsY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4OmEscmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXg6bCx2ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleDpjfT1vLGg9dC50ZXh0LnBsYWNlZFN5bWJvbEFycmF5O3M+PTAmJihoLmdldChzKS5wbGFjZWRPcmllbnRhdGlvbj1yKSxhPj0wJiYoaC5nZXQoYSkucGxhY2VkT3JpZW50YXRpb249ciksbD49MCYmKGguZ2V0KGwpLnBsYWNlZE9yaWVudGF0aW9uPXIpLGM+PTAmJihoLmdldChjKS5wbGFjZWRPcmllbnRhdGlvbj1uKTt9Y29tbWl0KGUpe3RoaXMuY29tbWl0VGltZT1lLHRoaXMuem9vbUF0TGFzdFJlY2VuY3lDaGVjaz10aGlzLnRyYW5zZm9ybS56b29tO2NvbnN0IHQ9dGhpcy5wcmV2UGxhY2VtZW50O2xldCBpPSExO3RoaXMucHJldlpvb21BZGp1c3RtZW50PXQ/dC56b29tQWRqdXN0bWVudCh0aGlzLnRyYW5zZm9ybS56b29tKTowO2NvbnN0IG89dD90LnN5bWJvbEZhZGVDaGFuZ2UoZSk6MSxyPXQ/dC5vcGFjaXRpZXM6e30sbj10P3QudmFyaWFibGVPZmZzZXRzOnt9LHM9dD90LnBsYWNlZE9yaWVudGF0aW9uczp7fTtmb3IoY29uc3QgZSBpbiB0aGlzLnBsYWNlbWVudHMpe2NvbnN0IHQ9dGhpcy5wbGFjZW1lbnRzW2VdLG49cltlXTtuPyh0aGlzLm9wYWNpdGllc1tlXT1uZXcgYnQobixvLHQudGV4dCx0Lmljb24sbnVsbCx0LmNsaXBwZWQpLGk9aXx8dC50ZXh0IT09bi50ZXh0LnBsYWNlZHx8dC5pY29uIT09bi5pY29uLnBsYWNlZCk6KHRoaXMub3BhY2l0aWVzW2VdPW5ldyBidChudWxsLG8sdC50ZXh0LHQuaWNvbix0LnNraXBGYWRlLHQuY2xpcHBlZCksaT1pfHx0LnRleHR8fHQuaWNvbik7fWZvcihjb25zdCBlIGluIHIpe2NvbnN0IHQ9cltlXTtpZighdGhpcy5vcGFjaXRpZXNbZV0pe2NvbnN0IHI9bmV3IGJ0KHQsbywhMSwhMSk7ci5pc0hpZGRlbigpfHwodGhpcy5vcGFjaXRpZXNbZV09cixpPWl8fHQudGV4dC5wbGFjZWR8fHQuaWNvbi5wbGFjZWQpO319Zm9yKGNvbnN0IGUgaW4gbil0aGlzLnZhcmlhYmxlT2Zmc2V0c1tlXXx8IXRoaXMub3BhY2l0aWVzW2VdfHx0aGlzLm9wYWNpdGllc1tlXS5pc0hpZGRlbigpfHwodGhpcy52YXJpYWJsZU9mZnNldHNbZV09bltlXSk7Zm9yKGNvbnN0IGUgaW4gcyl0aGlzLnBsYWNlZE9yaWVudGF0aW9uc1tlXXx8IXRoaXMub3BhY2l0aWVzW2VdfHx0aGlzLm9wYWNpdGllc1tlXS5pc0hpZGRlbigpfHwodGhpcy5wbGFjZWRPcmllbnRhdGlvbnNbZV09c1tlXSk7aT90aGlzLmxhc3RQbGFjZW1lbnRDaGFuZ2VUaW1lPWU6XCJudW1iZXJcIiE9dHlwZW9mIHRoaXMubGFzdFBsYWNlbWVudENoYW5nZVRpbWUmJih0aGlzLmxhc3RQbGFjZW1lbnRDaGFuZ2VUaW1lPXQ/dC5sYXN0UGxhY2VtZW50Q2hhbmdlVGltZTplKTt9dXBkYXRlTGF5ZXJPcGFjaXRpZXMoZSx0KXtjb25zdCBpPW5ldyBTZXQ7Zm9yKGNvbnN0IG8gb2YgdCl7Y29uc3QgdD1vLmdldEJ1Y2tldChlKTt0JiZvLmxhdGVzdEZlYXR1cmVJbmRleCYmZS5pZD09PXQubGF5ZXJJZHNbMF0mJnRoaXMudXBkYXRlQnVja2V0T3BhY2l0aWVzKHQsaSxvLmNvbGxpc2lvbkJveEFycmF5KTt9fXVwZGF0ZUJ1Y2tldE9wYWNpdGllcyh0LGksbyl7dC5oYXNUZXh0RGF0YSgpJiZ0LnRleHQub3BhY2l0eVZlcnRleEFycmF5LmNsZWFyKCksdC5oYXNJY29uRGF0YSgpJiZ0Lmljb24ub3BhY2l0eVZlcnRleEFycmF5LmNsZWFyKCksdC5oYXNJY29uQ29sbGlzaW9uQm94RGF0YSgpJiZ0Lmljb25Db2xsaXNpb25Cb3guY29sbGlzaW9uVmVydGV4QXJyYXkuY2xlYXIoKSx0Lmhhc1RleHRDb2xsaXNpb25Cb3hEYXRhKCkmJnQudGV4dENvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhBcnJheS5jbGVhcigpO2NvbnN0IHI9dC5sYXllcnNbMF0ubGF5b3V0LG49ISF0LmxheWVyc1swXS5keW5hbWljRmlsdGVyKCkscz1uZXcgYnQobnVsbCwwLCExLCExLCEwKSxhPXIuZ2V0KFwidGV4dC1hbGxvdy1vdmVybGFwXCIpLGw9ci5nZXQoXCJpY29uLWFsbG93LW92ZXJsYXBcIiksYz1yLmdldChcInRleHQtdmFyaWFibGUtYW5jaG9yXCIpLGg9XCJtYXBcIj09PXIuZ2V0KFwidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnRcIiksdT1cIm1hcFwiPT09ci5nZXQoXCJ0ZXh0LXBpdGNoLWFsaWdubWVudFwiKSxfPVwibm9uZVwiIT09ci5nZXQoXCJpY29uLXRleHQtZml0XCIpLGQ9bmV3IGJ0KG51bGwsMCxhJiYobHx8IXQuaGFzSWNvbkRhdGEoKXx8ci5nZXQoXCJpY29uLW9wdGlvbmFsXCIpKSxsJiYoYXx8IXQuaGFzVGV4dERhdGEoKXx8ci5nZXQoXCJ0ZXh0LW9wdGlvbmFsXCIpKSwhMCk7IXQuY29sbGlzaW9uQXJyYXlzJiZvJiYodC5oYXNJY29uQ29sbGlzaW9uQm94RGF0YSgpfHx0Lmhhc1RleHRDb2xsaXNpb25Cb3hEYXRhKCkpJiZ0LmRlc2VyaWFsaXplQ29sbGlzaW9uQm94ZXMobyk7Y29uc3QgcD0oZSx0LGkpPT57Zm9yKGxldCBvPTA7bzx0LzQ7bysrKWUub3BhY2l0eVZlcnRleEFycmF5LmVtcGxhY2VCYWNrKGkpO307bGV0IG09MDtmb3IobGV0IG89MDtvPHQuc3ltYm9sSW5zdGFuY2VzLmxlbmd0aDtvKyspe2NvbnN0IHI9dC5zeW1ib2xJbnN0YW5jZXMuZ2V0KG8pLHtudW1Ib3Jpem9udGFsR2x5cGhWZXJ0aWNlczphLG51bVZlcnRpY2FsR2x5cGhWZXJ0aWNlczpsLGNyb3NzVGlsZUlEOmYsbnVtSWNvblZlcnRpY2VzOmd9PXIsdj1pLmhhcyhmKTtsZXQgeD10aGlzLm9wYWNpdGllc1tmXTt2P3g9czp4fHwoeD1kLHRoaXMub3BhY2l0aWVzW2ZdPXgpLGkuYWRkKGYpO2NvbnN0IHk9YT4wfHxsPjAsYj1nPjAsdz10aGlzLnBsYWNlZE9yaWVudGF0aW9uc1tmXSxUPXc9PT1lLldyaXRpbmdNb2RlLnZlcnRpY2FsLEU9dz09PWUuV3JpdGluZ01vZGUuaG9yaXpvbnRhbHx8dz09PWUuV3JpdGluZ01vZGUuaG9yaXpvbnRhbE9ubHk7aWYoIXkmJiFifHx4LmlzSGlkZGVuKCl8fG0rKyx5KXtjb25zdCBlPWt0KHgudGV4dCk7cCh0LnRleHQsYSxUP0Z0OmUpLHAodC50ZXh0LGwsRT9GdDplKTtjb25zdCBpPXgudGV4dC5pc0hpZGRlbigpLHtsZWZ0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4Om8sY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4Om4scmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXg6cyx2ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleDpjfT1yLGg9dC50ZXh0LnBsYWNlZFN5bWJvbEFycmF5LHU9aXx8VD8xOjA7bz49MCYmKGguZ2V0KG8pLmhpZGRlbj11KSxuPj0wJiYoaC5nZXQobikuaGlkZGVuPXUpLHM+PTAmJihoLmdldChzKS5oaWRkZW49dSksYz49MCYmKGguZ2V0KGMpLmhpZGRlbj1pfHxFPzE6MCk7Y29uc3QgXz10aGlzLnZhcmlhYmxlT2Zmc2V0c1tmXTtfJiZ0aGlzLm1hcmtVc2VkSnVzdGlmaWNhdGlvbih0LF8uYW5jaG9yLHIsdyk7Y29uc3QgZD10aGlzLnBsYWNlZE9yaWVudGF0aW9uc1tmXTtkJiYodGhpcy5tYXJrVXNlZEp1c3RpZmljYXRpb24odCxcImxlZnRcIixyLGQpLHRoaXMubWFya1VzZWRPcmllbnRhdGlvbih0LGQscikpO31pZihiKXtjb25zdCBlPWt0KHguaWNvbikse3BsYWNlZEljb25TeW1ib2xJbmRleDppLHZlcnRpY2FsUGxhY2VkSWNvblN5bWJvbEluZGV4Om99PXIsbj10Lmljb24ucGxhY2VkU3ltYm9sQXJyYXkscz14Lmljb24uaXNIaWRkZW4oKT8xOjA7aT49MCYmKHAodC5pY29uLGcsVD9GdDplKSxuLmdldChpKS5oaWRkZW49cyksbz49MCYmKHAodC5pY29uLHIubnVtVmVydGljYWxJY29uVmVydGljZXMsRT9GdDplKSxuLmdldChvKS5oaWRkZW49cyk7fWlmKHQuaGFzSWNvbkNvbGxpc2lvbkJveERhdGEoKXx8dC5oYXNUZXh0Q29sbGlzaW9uQm94RGF0YSgpKXtjb25zdCBpPXQuY29sbGlzaW9uQXJyYXlzW29dO2lmKGkpe2xldCBvPW5ldyBlLlBvaW50KDAsMCkscj0hMDtpZihpLnRleHRCb3h8fGkudmVydGljYWxUZXh0Qm94KXtpZihjKXtjb25zdCBlPXRoaXMudmFyaWFibGVPZmZzZXRzW2ZdO2U/KG89TXQoZS5hbmNob3IsZS53aWR0aCxlLmhlaWdodCxlLnRleHRPZmZzZXQsZS50ZXh0U2NhbGUpLGgmJm8uX3JvdGF0ZSh1P3RoaXMudHJhbnNmb3JtLmFuZ2xlOi10aGlzLnRyYW5zZm9ybS5hbmdsZSkpOnI9ITE7fW4mJihyPSF4LmNsaXBwZWQpLGkudGV4dEJveCYmU3QodC50ZXh0Q29sbGlzaW9uQm94LmNvbGxpc2lvblZlcnRleEFycmF5LHgudGV4dC5wbGFjZWQsIXJ8fFQsby54LG8ueSksaS52ZXJ0aWNhbFRleHRCb3gmJlN0KHQudGV4dENvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhBcnJheSx4LnRleHQucGxhY2VkLCFyfHxFLG8ueCxvLnkpO31jb25zdCBzPXImJkJvb2xlYW4oIUUmJmkudmVydGljYWxJY29uQm94KTtpLmljb25Cb3gmJlN0KHQuaWNvbkNvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhBcnJheSx4Lmljb24ucGxhY2VkLHMsXz9vLng6MCxfP28ueTowKSxpLnZlcnRpY2FsSWNvbkJveCYmU3QodC5pY29uQ29sbGlzaW9uQm94LmNvbGxpc2lvblZlcnRleEFycmF5LHguaWNvbi5wbGFjZWQsIXMsXz9vLng6MCxfP28ueTowKTt9fX1pZih0LmZ1bGx5Q2xpcHBlZD0wPT09bSx0LnNvcnRGZWF0dXJlcyh0aGlzLnRyYW5zZm9ybS5hbmdsZSksdGhpcy5yZXRhaW5lZFF1ZXJ5RGF0YVt0LmJ1Y2tldEluc3RhbmNlSWRdJiYodGhpcy5yZXRhaW5lZFF1ZXJ5RGF0YVt0LmJ1Y2tldEluc3RhbmNlSWRdLmZlYXR1cmVTb3J0T3JkZXI9dC5mZWF0dXJlU29ydE9yZGVyKSx0Lmhhc1RleHREYXRhKCkmJnQudGV4dC5vcGFjaXR5VmVydGV4QnVmZmVyJiZ0LnRleHQub3BhY2l0eVZlcnRleEJ1ZmZlci51cGRhdGVEYXRhKHQudGV4dC5vcGFjaXR5VmVydGV4QXJyYXkpLHQuaGFzSWNvbkRhdGEoKSYmdC5pY29uLm9wYWNpdHlWZXJ0ZXhCdWZmZXImJnQuaWNvbi5vcGFjaXR5VmVydGV4QnVmZmVyLnVwZGF0ZURhdGEodC5pY29uLm9wYWNpdHlWZXJ0ZXhBcnJheSksdC5oYXNJY29uQ29sbGlzaW9uQm94RGF0YSgpJiZ0Lmljb25Db2xsaXNpb25Cb3guY29sbGlzaW9uVmVydGV4QnVmZmVyJiZ0Lmljb25Db2xsaXNpb25Cb3guY29sbGlzaW9uVmVydGV4QnVmZmVyLnVwZGF0ZURhdGEodC5pY29uQ29sbGlzaW9uQm94LmNvbGxpc2lvblZlcnRleEFycmF5KSx0Lmhhc1RleHRDb2xsaXNpb25Cb3hEYXRhKCkmJnQudGV4dENvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhCdWZmZXImJnQudGV4dENvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YSh0LnRleHRDb2xsaXNpb25Cb3guY29sbGlzaW9uVmVydGV4QXJyYXkpLHQuYnVja2V0SW5zdGFuY2VJZCBpbiB0aGlzLmNvbGxpc2lvbkNpcmNsZUFycmF5cyl7Y29uc3QgZT10aGlzLmNvbGxpc2lvbkNpcmNsZUFycmF5c1t0LmJ1Y2tldEluc3RhbmNlSWRdO3QucGxhY2VtZW50SW52UHJvak1hdHJpeD1lLmludlByb2pNYXRyaXgsdC5wbGFjZW1lbnRWaWV3cG9ydE1hdHJpeD1lLnZpZXdwb3J0TWF0cml4LHQuY29sbGlzaW9uQ2lyY2xlQXJyYXk9ZS5jaXJjbGVzLGRlbGV0ZSB0aGlzLmNvbGxpc2lvbkNpcmNsZUFycmF5c1t0LmJ1Y2tldEluc3RhbmNlSWRdO319c3ltYm9sRmFkZUNoYW5nZShlKXtyZXR1cm4gMD09PXRoaXMuZmFkZUR1cmF0aW9uPzE6KGUtdGhpcy5jb21taXRUaW1lKS90aGlzLmZhZGVEdXJhdGlvbit0aGlzLnByZXZab29tQWRqdXN0bWVudH16b29tQWRqdXN0bWVudChlKXtyZXR1cm4gTWF0aC5tYXgoMCwodGhpcy50cmFuc2Zvcm0uem9vbS1lKS8xLjUpfWhhc1RyYW5zaXRpb25zKGUpe3JldHVybiB0aGlzLnN0YWxlfHxlLXRoaXMubGFzdFBsYWNlbWVudENoYW5nZVRpbWU8dGhpcy5mYWRlRHVyYXRpb259c3RpbGxSZWNlbnQoZSx0KXtjb25zdCBpPXRoaXMuem9vbUF0TGFzdFJlY2VuY3lDaGVjaz09PXQ/MS10aGlzLnpvb21BZGp1c3RtZW50KHQpOjE7cmV0dXJuIHRoaXMuem9vbUF0TGFzdFJlY2VuY3lDaGVjaz10LHRoaXMuY29tbWl0VGltZSt0aGlzLmZhZGVEdXJhdGlvbippPmV9c2V0U3RhbGUoKXt0aGlzLnN0YWxlPSEwO319ZnVuY3Rpb24gU3QoZSx0LGksbyxyKXtlLmVtcGxhY2VCYWNrKHQ/MTowLGk/MTowLG98fDAscnx8MCksZS5lbXBsYWNlQmFjayh0PzE6MCxpPzE6MCxvfHwwLHJ8fDApLGUuZW1wbGFjZUJhY2sodD8xOjAsaT8xOjAsb3x8MCxyfHwwKSxlLmVtcGxhY2VCYWNrKHQ/MTowLGk/MTowLG98fDAscnx8MCk7fWNvbnN0IER0PU1hdGgucG93KDIsMjUpLEx0PU1hdGgucG93KDIsMjQpLEF0PU1hdGgucG93KDIsMTcpLHp0PU1hdGgucG93KDIsMTYpLFJ0PU1hdGgucG93KDIsOSksT3Q9TWF0aC5wb3coMiw4KSxCdD1NYXRoLnBvdygyLDEpO2Z1bmN0aW9uIGt0KGUpe2lmKDA9PT1lLm9wYWNpdHkmJiFlLnBsYWNlZClyZXR1cm4gMDtpZigxPT09ZS5vcGFjaXR5JiZlLnBsYWNlZClyZXR1cm4gNDI5NDk2NzI5NTtjb25zdCB0PWUucGxhY2VkPzE6MCxpPU1hdGguZmxvb3IoMTI3KmUub3BhY2l0eSk7cmV0dXJuIGkqRHQrdCpMdCtpKkF0K3QqenQraSpSdCt0Kk90K2kqQnQrdH1jb25zdCBGdD0wO2NsYXNzIFV0e2NvbnN0cnVjdG9yKGUpe3RoaXMuX3NvcnRBY3Jvc3NUaWxlcz1cInZpZXdwb3J0LXlcIiE9PWUubGF5b3V0LmdldChcInN5bWJvbC16LW9yZGVyXCIpJiZ2b2lkIDAhPT1lLmxheW91dC5nZXQoXCJzeW1ib2wtc29ydC1rZXlcIikuY29uc3RhbnRPcigxKSx0aGlzLl9jdXJyZW50VGlsZUluZGV4PTAsdGhpcy5fY3VycmVudFBhcnRJbmRleD0wLHRoaXMuX3NlZW5Dcm9zc1RpbGVJRHM9bmV3IFNldCx0aGlzLl9idWNrZXRQYXJ0cz1bXTt9Y29udGludWVQbGFjZW1lbnQoZSx0LGksbyxyKXtjb25zdCBuPXRoaXMuX2J1Y2tldFBhcnRzO2Zvcig7dGhpcy5fY3VycmVudFRpbGVJbmRleDxlLmxlbmd0aDspaWYodC5nZXRCdWNrZXRQYXJ0cyhuLG8sZVt0aGlzLl9jdXJyZW50VGlsZUluZGV4XSx0aGlzLl9zb3J0QWNyb3NzVGlsZXMpLHRoaXMuX2N1cnJlbnRUaWxlSW5kZXgrKyxyKCkpcmV0dXJuICEwO2Zvcih0aGlzLl9zb3J0QWNyb3NzVGlsZXMmJih0aGlzLl9zb3J0QWNyb3NzVGlsZXM9ITEsbi5zb3J0KCgoZSx0KT0+ZS5zb3J0S2V5LXQuc29ydEtleSkpKTt0aGlzLl9jdXJyZW50UGFydEluZGV4PG4ubGVuZ3RoOyl7Y29uc3QgZT1uW3RoaXMuX2N1cnJlbnRQYXJ0SW5kZXhdO2lmKHQucGxhY2VMYXllckJ1Y2tldFBhcnQoZSx0aGlzLl9zZWVuQ3Jvc3NUaWxlSURzLGksMD09PWUuc3ltYm9sSW5zdGFuY2VTdGFydCksdGhpcy5fY3VycmVudFBhcnRJbmRleCsrLHIoKSlyZXR1cm4gITB9cmV0dXJuICExfX1jbGFzcyBOdHtjb25zdHJ1Y3RvcihlLHQsaSxvLHIsbixzLGEpe3RoaXMucGxhY2VtZW50PW5ldyBQdChlLHIsbixzLGEpLHRoaXMuX2N1cnJlbnRQbGFjZW1lbnRJbmRleD10Lmxlbmd0aC0xLHRoaXMuX2ZvcmNlRnVsbFBsYWNlbWVudD1pLHRoaXMuX3Nob3dDb2xsaXNpb25Cb3hlcz1vLHRoaXMuX2RvbmU9ITE7fWlzRG9uZSgpe3JldHVybiB0aGlzLl9kb25lfWNvbnRpbnVlUGxhY2VtZW50KHQsaSxvKXtjb25zdCByPWUuZXhwb3J0ZWQubm93KCksbj0oKT0+e2NvbnN0IHQ9ZS5leHBvcnRlZC5ub3coKS1yO3JldHVybiAhdGhpcy5fZm9yY2VGdWxsUGxhY2VtZW50JiZ0PjJ9O2Zvcig7dGhpcy5fY3VycmVudFBsYWNlbWVudEluZGV4Pj0wOyl7Y29uc3QgZT1pW3RbdGhpcy5fY3VycmVudFBsYWNlbWVudEluZGV4XV0scj10aGlzLnBsYWNlbWVudC5jb2xsaXNpb25JbmRleC50cmFuc2Zvcm0uem9vbTtpZihcInN5bWJvbFwiPT09ZS50eXBlJiYoIWUubWluem9vbXx8ZS5taW56b29tPD1yKSYmKCFlLm1heHpvb218fGUubWF4em9vbT5yKSl7aWYodGhpcy5faW5Qcm9ncmVzc0xheWVyfHwodGhpcy5faW5Qcm9ncmVzc0xheWVyPW5ldyBVdChlKSksdGhpcy5faW5Qcm9ncmVzc0xheWVyLmNvbnRpbnVlUGxhY2VtZW50KG9bZS5zb3VyY2VdLHRoaXMucGxhY2VtZW50LHRoaXMuX3Nob3dDb2xsaXNpb25Cb3hlcyxlLG4pKXJldHVybjtkZWxldGUgdGhpcy5faW5Qcm9ncmVzc0xheWVyO310aGlzLl9jdXJyZW50UGxhY2VtZW50SW5kZXgtLTt9dGhpcy5fZG9uZT0hMDt9Y29tbWl0KGUpe3JldHVybiB0aGlzLnBsYWNlbWVudC5jb21taXQoZSksdGhpcy5wbGFjZW1lbnR9fWNvbnN0IGp0PTUxMi9lLkVYVEVOVC8yO2NsYXNzIEd0e2NvbnN0cnVjdG9yKHQsaSxvKXt0aGlzLnRpbGVJRD10LHRoaXMuYnVja2V0SW5zdGFuY2VJZD1vLHRoaXMuaW5kZXg9bmV3IGUuS0RCdXNoKGkubGVuZ3RoLDE2LEludDMyQXJyYXkpLHRoaXMua2V5cz1bXSx0aGlzLmNyb3NzVGlsZUlEcz1bXTtjb25zdCByPXQuY2Fub25pY2FsLngqZS5FWFRFTlQsbj10LmNhbm9uaWNhbC55KmUuRVhURU5UO2ZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSsrKXtjb25zdHtrZXk6dCxjcm9zc1RpbGVJRDpvLHRpbGVBbmNob3JYOnMsdGlsZUFuY2hvclk6YX09aS5nZXQoZSksbD1NYXRoLmZsb29yKChyK3MpKmp0KSxjPU1hdGguZmxvb3IoKG4rYSkqanQpO3RoaXMuaW5kZXguYWRkKGwsYyksdGhpcy5rZXlzLnB1c2godCksdGhpcy5jcm9zc1RpbGVJRHMucHVzaChvKTt9dGhpcy5pbmRleC5maW5pc2goKTt9ZmluZE1hdGNoZXModCxpLG8pe2NvbnN0IHI9dGhpcy50aWxlSUQuY2Fub25pY2FsLno8aS5jYW5vbmljYWwuej8xOk1hdGgucG93KDIsdGhpcy50aWxlSUQuY2Fub25pY2FsLnotaS5jYW5vbmljYWwueiksbj1qdC9NYXRoLnBvdygyLGkuY2Fub25pY2FsLnotdGhpcy50aWxlSUQuY2Fub25pY2FsLnopLHM9aS5jYW5vbmljYWwueCplLkVYVEVOVCxhPWkuY2Fub25pY2FsLnkqZS5FWFRFTlQ7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IGk9dC5nZXQoZSk7aWYoaS5jcm9zc1RpbGVJRCljb250aW51ZTtjb25zdHtrZXk6bCx0aWxlQW5jaG9yWDpjLHRpbGVBbmNob3JZOmh9PWksdT1NYXRoLmZsb29yKChzK2MpKm4pLF89TWF0aC5mbG9vcigoYStoKSpuKSxkPXRoaXMuaW5kZXgucmFuZ2UodS1yLF8tcix1K3IsXytyKTtmb3IoY29uc3QgZSBvZiBkKXtjb25zdCB0PXRoaXMuY3Jvc3NUaWxlSURzW2VdO2lmKHRoaXMua2V5c1tlXT09PWwmJiFvLmhhcyh0KSl7by5hZGQodCksaS5jcm9zc1RpbGVJRD10O2JyZWFrfX19fX1jbGFzcyBadHtjb25zdHJ1Y3Rvcigpe3RoaXMubWF4Q3Jvc3NUaWxlSUQ9MDt9Z2VuZXJhdGUoKXtyZXR1cm4gKyt0aGlzLm1heENyb3NzVGlsZUlEfX1jbGFzcyBWdHtjb25zdHJ1Y3Rvcigpe3RoaXMuaW5kZXhlcz17fSx0aGlzLnVzZWRDcm9zc1RpbGVJRHM9e30sdGhpcy5sbmc9MDt9aGFuZGxlV3JhcEp1bXAoZSl7Y29uc3QgdD1NYXRoLnJvdW5kKChlLXRoaXMubG5nKS8zNjApO2lmKDAhPT10KWZvcihjb25zdCBlIGluIHRoaXMuaW5kZXhlcyl7Y29uc3QgaT10aGlzLmluZGV4ZXNbZV0sbz17fTtmb3IoY29uc3QgZSBpbiBpKXtjb25zdCByPWlbZV07ci50aWxlSUQ9ci50aWxlSUQudW53cmFwVG8oci50aWxlSUQud3JhcCt0KSxvW3IudGlsZUlELmtleV09cjt9dGhpcy5pbmRleGVzW2VdPW87fXRoaXMubG5nPWU7fWFkZEJ1Y2tldChlLHQsaSl7aWYodGhpcy5pbmRleGVzW2Uub3ZlcnNjYWxlZFpdJiZ0aGlzLmluZGV4ZXNbZS5vdmVyc2NhbGVkWl1bZS5rZXldKXtpZih0aGlzLmluZGV4ZXNbZS5vdmVyc2NhbGVkWl1bZS5rZXldLmJ1Y2tldEluc3RhbmNlSWQ9PT10LmJ1Y2tldEluc3RhbmNlSWQpcmV0dXJuICExO3RoaXMucmVtb3ZlQnVja2V0Q3Jvc3NUaWxlSURzKGUub3ZlcnNjYWxlZFosdGhpcy5pbmRleGVzW2Uub3ZlcnNjYWxlZFpdW2Uua2V5XSk7fWZvcihsZXQgZT0wO2U8dC5zeW1ib2xJbnN0YW5jZXMubGVuZ3RoO2UrKyl0LnN5bWJvbEluc3RhbmNlcy5nZXQoZSkuY3Jvc3NUaWxlSUQ9MDt0aGlzLnVzZWRDcm9zc1RpbGVJRHNbZS5vdmVyc2NhbGVkWl18fCh0aGlzLnVzZWRDcm9zc1RpbGVJRHNbZS5vdmVyc2NhbGVkWl09bmV3IFNldCk7Y29uc3Qgbz10aGlzLnVzZWRDcm9zc1RpbGVJRHNbZS5vdmVyc2NhbGVkWl07Zm9yKGNvbnN0IGkgaW4gdGhpcy5pbmRleGVzKXtjb25zdCByPXRoaXMuaW5kZXhlc1tpXTtpZihOdW1iZXIoaSk+ZS5vdmVyc2NhbGVkWilmb3IoY29uc3QgaSBpbiByKXtjb25zdCBuPXJbaV07bi50aWxlSUQuaXNDaGlsZE9mKGUpJiZuLmZpbmRNYXRjaGVzKHQuc3ltYm9sSW5zdGFuY2VzLGUsbyk7fWVsc2Uge2NvbnN0IG49cltlLnNjYWxlZFRvKE51bWJlcihpKSkua2V5XTtuJiZuLmZpbmRNYXRjaGVzKHQuc3ltYm9sSW5zdGFuY2VzLGUsbyk7fX1mb3IobGV0IGU9MDtlPHQuc3ltYm9sSW5zdGFuY2VzLmxlbmd0aDtlKyspe2NvbnN0IHI9dC5zeW1ib2xJbnN0YW5jZXMuZ2V0KGUpO3IuY3Jvc3NUaWxlSUR8fChyLmNyb3NzVGlsZUlEPWkuZ2VuZXJhdGUoKSxvLmFkZChyLmNyb3NzVGlsZUlEKSk7fXJldHVybiB2b2lkIDA9PT10aGlzLmluZGV4ZXNbZS5vdmVyc2NhbGVkWl0mJih0aGlzLmluZGV4ZXNbZS5vdmVyc2NhbGVkWl09e30pLHRoaXMuaW5kZXhlc1tlLm92ZXJzY2FsZWRaXVtlLmtleV09bmV3IEd0KGUsdC5zeW1ib2xJbnN0YW5jZXMsdC5idWNrZXRJbnN0YW5jZUlkKSwhMH1yZW1vdmVCdWNrZXRDcm9zc1RpbGVJRHMoZSx0KXtmb3IoY29uc3QgaSBvZiB0LmNyb3NzVGlsZUlEcyl0aGlzLnVzZWRDcm9zc1RpbGVJRHNbZV0uZGVsZXRlKGkpO31yZW1vdmVTdGFsZUJ1Y2tldHMoZSl7bGV0IHQ9ITE7Zm9yKGNvbnN0IGkgaW4gdGhpcy5pbmRleGVzKXtjb25zdCBvPXRoaXMuaW5kZXhlc1tpXTtmb3IoY29uc3QgciBpbiBvKWVbb1tyXS5idWNrZXRJbnN0YW5jZUlkXXx8KHRoaXMucmVtb3ZlQnVja2V0Q3Jvc3NUaWxlSURzKGksb1tyXSksZGVsZXRlIG9bcl0sdD0hMCk7fXJldHVybiB0fX1jbGFzcyBXdHtjb25zdHJ1Y3Rvcigpe3RoaXMubGF5ZXJJbmRleGVzPXt9LHRoaXMuY3Jvc3NUaWxlSURzPW5ldyBadCx0aGlzLm1heEJ1Y2tldEluc3RhbmNlSWQ9MCx0aGlzLmJ1Y2tldHNJbkN1cnJlbnRQbGFjZW1lbnQ9e307fWFkZExheWVyKGUsdCxpLG8pe2xldCByPXRoaXMubGF5ZXJJbmRleGVzW2UuaWRdO3ZvaWQgMD09PXImJihyPXRoaXMubGF5ZXJJbmRleGVzW2UuaWRdPW5ldyBWdCk7bGV0IG49ITE7Y29uc3Qgcz17fTtcImdsb2JlXCIhPT1vLm5hbWUmJnIuaGFuZGxlV3JhcEp1bXAoaSk7Zm9yKGNvbnN0IGkgb2YgdCl7Y29uc3QgdD1pLmdldEJ1Y2tldChlKTt0JiZlLmlkPT09dC5sYXllcklkc1swXSYmKHQuYnVja2V0SW5zdGFuY2VJZHx8KHQuYnVja2V0SW5zdGFuY2VJZD0rK3RoaXMubWF4QnVja2V0SW5zdGFuY2VJZCksci5hZGRCdWNrZXQoaS50aWxlSUQsdCx0aGlzLmNyb3NzVGlsZUlEcykmJihuPSEwKSxzW3QuYnVja2V0SW5zdGFuY2VJZF09ITApO31yZXR1cm4gci5yZW1vdmVTdGFsZUJ1Y2tldHMocykmJihuPSEwKSxufXBydW5lVW51c2VkTGF5ZXJzKGUpe2NvbnN0IHQ9e307ZS5mb3JFYWNoKChlPT57dFtlXT0hMDt9KSk7Zm9yKGNvbnN0IGUgaW4gdGhpcy5sYXllckluZGV4ZXMpdFtlXXx8ZGVsZXRlIHRoaXMubGF5ZXJJbmRleGVzW2VdO319Y29uc3QgWHQ9KHQsaSk9PmUuZW1pdFZhbGlkYXRpb25FcnJvcnModCxpJiZpLmZpbHRlcigoZT0+XCJzb3VyY2UuY2FudmFzXCIhPT1lLmlkZW50aWZpZXIpKSkscXQ9ZS5waWNrKEdlLFtcImFkZExheWVyXCIsXCJyZW1vdmVMYXllclwiLFwic2V0UGFpbnRQcm9wZXJ0eVwiLFwic2V0TGF5b3V0UHJvcGVydHlcIixcInNldEZpbHRlclwiLFwiYWRkU291cmNlXCIsXCJyZW1vdmVTb3VyY2VcIixcInNldExheWVyWm9vbVJhbmdlXCIsXCJzZXRMaWdodFwiLFwic2V0VHJhbnNpdGlvblwiLFwic2V0R2VvSlNPTlNvdXJjZURhdGFcIixcInNldFRlcnJhaW5cIixcInNldEZvZ1wiLFwic2V0UHJvamVjdGlvblwiXSksJHQ9ZS5waWNrKEdlLFtcInNldENlbnRlclwiLFwic2V0Wm9vbVwiLFwic2V0QmVhcmluZ1wiLFwic2V0UGl0Y2hcIl0pLEh0PXt2ZXJzaW9uOjgsbGF5ZXJzOltdLHNvdXJjZXM6e319LFl0PXtmaWxsOiEwLGxpbmU6ITAsYmFja2dyb3VuZDohMCxoaWxsc2hhZGU6ITAscmFzdGVyOiEwfTtjbGFzcyBLdCBleHRlbmRzIGUuRXZlbnRlZHtjb25zdHJ1Y3Rvcih0LGk9e30pe3N1cGVyKCksdGhpcy5tYXA9dCx0aGlzLmRpc3BhdGNoZXI9bmV3IFMoVWUoKSx0aGlzKSx0aGlzLmltYWdlTWFuYWdlcj1uZXcgeSx0aGlzLmltYWdlTWFuYWdlci5zZXRFdmVudGVkUGFyZW50KHRoaXMpLHRoaXMuZ2x5cGhNYW5hZ2VyPW5ldyBlLkdseXBoTWFuYWdlcih0Ll9yZXF1ZXN0TWFuYWdlcixpLmxvY2FsRm9udEZhbWlseT9lLkxvY2FsR2x5cGhNb2RlLmFsbDppLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseT9lLkxvY2FsR2x5cGhNb2RlLmlkZW9ncmFwaHM6ZS5Mb2NhbEdseXBoTW9kZS5ub25lLGkubG9jYWxGb250RmFtaWx5fHxpLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseSksdGhpcy5jcm9zc1RpbGVTeW1ib2xJbmRleD1uZXcgV3QsdGhpcy5fbGF5ZXJzPXt9LHRoaXMuX251bTNETGF5ZXJzPTAsdGhpcy5fbnVtU3ltYm9sTGF5ZXJzPTAsdGhpcy5fbnVtQ2lyY2xlTGF5ZXJzPTAsdGhpcy5fc2VyaWFsaXplZExheWVycz17fSx0aGlzLl9zb3VyY2VDYWNoZXM9e30sdGhpcy5fb3RoZXJTb3VyY2VDYWNoZXM9e30sdGhpcy5fc3ltYm9sU291cmNlQ2FjaGVzPXt9LHRoaXMuX2xvYWRlZD0hMSx0aGlzLl9hdmFpbGFibGVJbWFnZXM9W10sdGhpcy5fb3JkZXI9W10sdGhpcy5fZHJhcGVkRmlyc3RPcmRlcj1bXSx0aGlzLl9tYXJrZXJzTmVlZFVwZGF0ZT0hMSx0aGlzLl9yZXNldFVwZGF0ZXMoKSx0aGlzLmRpc3BhdGNoZXIuYnJvYWRjYXN0KFwic2V0UmVmZXJyZXJcIixlLmdldFJlZmVycmVyKCkpO2NvbnN0IG89dGhpczt0aGlzLl9ydGxUZXh0UGx1Z2luQ2FsbGJhY2s9S3QucmVnaXN0ZXJGb3JQbHVnaW5TdGF0ZUNoYW5nZSgodD0+e28uZGlzcGF0Y2hlci5icm9hZGNhc3QoXCJzeW5jUlRMUGx1Z2luU3RhdGVcIix7cGx1Z2luU3RhdHVzOnQucGx1Z2luU3RhdHVzLHBsdWdpblVSTDp0LnBsdWdpblVSTH0sKCh0LGkpPT57aWYoZS50cmlnZ2VyUGx1Z2luQ29tcGxldGlvbkV2ZW50KHQpLGkmJmkuZXZlcnkoKGU9PmUpKSlmb3IoY29uc3QgZSBpbiBvLl9zb3VyY2VDYWNoZXMpe2NvbnN0IHQ9by5fc291cmNlQ2FjaGVzW2VdLGk9dC5nZXRTb3VyY2UoKS50eXBlO1widmVjdG9yXCIhPT1pJiZcImdlb2pzb25cIiE9PWl8fHQucmVsb2FkKCk7fX0pKTt9KSksdGhpcy5vbihcImRhdGFcIiwoZT0+e2lmKFwic291cmNlXCIhPT1lLmRhdGFUeXBlfHxcIm1ldGFkYXRhXCIhPT1lLnNvdXJjZURhdGFUeXBlKXJldHVybjtjb25zdCB0PXRoaXMuZ2V0U291cmNlKGUuc291cmNlSWQpO2lmKHQmJnQudmVjdG9yTGF5ZXJJZHMpZm9yKGNvbnN0IGUgaW4gdGhpcy5fbGF5ZXJzKXtjb25zdCBpPXRoaXMuX2xheWVyc1tlXTtpLnNvdXJjZT09PXQuaWQmJnRoaXMuX3ZhbGlkYXRlTGF5ZXIoaSk7fX0pKTt9bG9hZFVSTCh0LGk9e30pe3RoaXMuZmlyZShuZXcgZS5FdmVudChcImRhdGFsb2FkaW5nXCIse2RhdGFUeXBlOlwic3R5bGVcIn0pKTtjb25zdCBvPVwiYm9vbGVhblwiPT10eXBlb2YgaS52YWxpZGF0ZT9pLnZhbGlkYXRlOiFlLmlzTWFwYm94VVJMKHQpO3Q9dGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLm5vcm1hbGl6ZVN0eWxlVVJMKHQsaS5hY2Nlc3NUb2tlbik7Y29uc3Qgcj10aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdCh0LGUuUmVzb3VyY2VUeXBlLlN0eWxlKTt0aGlzLl9yZXF1ZXN0PWUuZ2V0SlNPTihyLCgodCxpKT0+e3RoaXMuX3JlcXVlc3Q9bnVsbCx0P3RoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KHQpKTppJiZ0aGlzLl9sb2FkKGksbyk7fSkpO31sb2FkSlNPTih0LGk9e30pe3RoaXMuZmlyZShuZXcgZS5FdmVudChcImRhdGFsb2FkaW5nXCIse2RhdGFUeXBlOlwic3R5bGVcIn0pKSx0aGlzLl9yZXF1ZXN0PWUuZXhwb3J0ZWQuZnJhbWUoKCgpPT57dGhpcy5fcmVxdWVzdD1udWxsLHRoaXMuX2xvYWQodCwhMSE9PWkudmFsaWRhdGUpO30pKTt9bG9hZEVtcHR5KCl7dGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZGF0YWxvYWRpbmdcIix7ZGF0YVR5cGU6XCJzdHlsZVwifSkpLHRoaXMuX2xvYWQoSHQsITEpO31fdXBkYXRlTGF5ZXJDb3VudChlLHQpe2NvbnN0IGk9dD8xOi0xO2UuaXMzRCgpJiYodGhpcy5fbnVtM0RMYXllcnMrPWkpLFwiY2lyY2xlXCI9PT1lLnR5cGUmJih0aGlzLl9udW1DaXJjbGVMYXllcnMrPWkpLFwic3ltYm9sXCI9PT1lLnR5cGUmJih0aGlzLl9udW1TeW1ib2xMYXllcnMrPWkpO31fbG9hZCh0LGkpe2lmKGkmJlh0KHRoaXMsZS52YWxpZGF0ZVN0eWxlKHQpKSlyZXR1cm47dGhpcy5fbG9hZGVkPSEwLHRoaXMuc3R5bGVzaGVldD1lLmNsb25lJDEodCksdGhpcy5fdXBkYXRlTWFwUHJvamVjdGlvbigpO2Zvcihjb25zdCBlIGluIHQuc291cmNlcyl0aGlzLmFkZFNvdXJjZShlLHQuc291cmNlc1tlXSx7dmFsaWRhdGU6ITF9KTt0aGlzLl9jaGFuZ2VkPSExLHQuc3ByaXRlP3RoaXMuX2xvYWRTcHJpdGUodC5zcHJpdGUpOih0aGlzLmltYWdlTWFuYWdlci5zZXRMb2FkZWQoITApLHRoaXMuZGlzcGF0Y2hlci5icm9hZGNhc3QoXCJzcHJpdGVMb2FkZWRcIiwhMCkpLHRoaXMuZ2x5cGhNYW5hZ2VyLnNldFVSTCh0LmdseXBocyk7Y29uc3Qgbz1qZSh0aGlzLnN0eWxlc2hlZXQubGF5ZXJzKTt0aGlzLl9vcmRlcj1vLm1hcCgoZT0+ZS5pZCkpLHRoaXMuX2xheWVycz17fSx0aGlzLl9zZXJpYWxpemVkTGF5ZXJzPXt9O2Zvcihjb25zdCB0IG9mIG8pe2NvbnN0IGk9ZS5jcmVhdGVTdHlsZUxheWVyKHQpO2kuc2V0RXZlbnRlZFBhcmVudCh0aGlzLHtsYXllcjp7aWQ6aS5pZH19KSx0aGlzLl9sYXllcnNbaS5pZF09aSx0aGlzLl9zZXJpYWxpemVkTGF5ZXJzW2kuaWRdPWkuc2VyaWFsaXplKCksdGhpcy5fdXBkYXRlTGF5ZXJDb3VudChpLCEwKTt9dGhpcy5kaXNwYXRjaGVyLmJyb2FkY2FzdChcInNldExheWVyc1wiLHRoaXMuX3NlcmlhbGl6ZUxheWVycyh0aGlzLl9vcmRlcikpLHRoaXMubGlnaHQ9bmV3IHcodGhpcy5zdHlsZXNoZWV0LmxpZ2h0KSx0aGlzLnN0eWxlc2hlZXQudGVycmFpbiYmIXRoaXMudGVycmFpblNldEZvckRyYXBpbmdPbmx5KCkmJnRoaXMuX2NyZWF0ZVRlcnJhaW4odGhpcy5zdHlsZXNoZWV0LnRlcnJhaW4sMSksdGhpcy5zdHlsZXNoZWV0LmZvZyYmdGhpcy5fY3JlYXRlRm9nKHRoaXMuc3R5bGVzaGVldC5mb2cpLHRoaXMuX3VwZGF0ZURyYXBlRmlyc3RMYXllcnMoKSx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJkYXRhXCIse2RhdGFUeXBlOlwic3R5bGVcIn0pKSx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJzdHlsZS5sb2FkXCIpKTt9dGVycmFpblNldEZvckRyYXBpbmdPbmx5KCl7cmV0dXJuICEhdGhpcy50ZXJyYWluJiYwPT09dGhpcy50ZXJyYWluLmRyYXBlUmVuZGVyTW9kZX1zZXRQcm9qZWN0aW9uKGUpe2U/dGhpcy5zdHlsZXNoZWV0LnByb2plY3Rpb249ZTpkZWxldGUgdGhpcy5zdHlsZXNoZWV0LnByb2plY3Rpb24sdGhpcy5fdXBkYXRlTWFwUHJvamVjdGlvbigpO31hcHBseVByb2plY3Rpb25VcGRhdGUoKXt0aGlzLl9sb2FkZWQmJih0aGlzLmRpc3BhdGNoZXIuYnJvYWRjYXN0KFwic2V0UHJvamVjdGlvblwiLHRoaXMubWFwLnRyYW5zZm9ybS5wcm9qZWN0aW9uT3B0aW9ucyksdGhpcy5tYXAudHJhbnNmb3JtLnByb2plY3Rpb24ucmVxdWlyZXNEcmFwaW5nP3RoaXMuZ2V0VGVycmFpbigpfHx0aGlzLnN0eWxlc2hlZXQudGVycmFpbnx8dGhpcy5zZXRUZXJyYWluRm9yRHJhcGluZygpOnRoaXMudGVycmFpblNldEZvckRyYXBpbmdPbmx5KCkmJnRoaXMuc2V0VGVycmFpbihudWxsKSk7fV91cGRhdGVNYXBQcm9qZWN0aW9uKCl7dGhpcy5tYXAuX3VzZUV4cGxpY2l0UHJvamVjdGlvbj90aGlzLmFwcGx5UHJvamVjdGlvblVwZGF0ZSgpOnRoaXMubWFwLl9wcmlvcml0aXplQW5kVXBkYXRlUHJvamVjdGlvbihudWxsLHRoaXMuc3R5bGVzaGVldC5wcm9qZWN0aW9uKTt9X2xvYWRTcHJpdGUodCl7dGhpcy5fc3ByaXRlUmVxdWVzdD1mdW5jdGlvbih0LGksbyl7bGV0IHIsbixzO2NvbnN0IGE9ZS5leHBvcnRlZC5kZXZpY2VQaXhlbFJhdGlvPjE/XCJAMnhcIjpcIlwiO2xldCBsPWUuZ2V0SlNPTihpLnRyYW5zZm9ybVJlcXVlc3QoaS5ub3JtYWxpemVTcHJpdGVVUkwodCxhLFwiLmpzb25cIiksZS5SZXNvdXJjZVR5cGUuU3ByaXRlSlNPTiksKChlLHQpPT57bD1udWxsLHN8fChzPWUscj10LGgoKSk7fSkpLGM9ZS5nZXRJbWFnZShpLnRyYW5zZm9ybVJlcXVlc3QoaS5ub3JtYWxpemVTcHJpdGVVUkwodCxhLFwiLnBuZ1wiKSxlLlJlc291cmNlVHlwZS5TcHJpdGVJbWFnZSksKChlLHQpPT57Yz1udWxsLHN8fChzPWUsbj10LGgoKSk7fSkpO2Z1bmN0aW9uIGgoKXtpZihzKW8ocyk7ZWxzZSBpZihyJiZuKXtjb25zdCB0PWUuZXhwb3J0ZWQuZ2V0SW1hZ2VEYXRhKG4pLGk9e307Zm9yKGNvbnN0IG8gaW4gcil7Y29uc3R7d2lkdGg6bixoZWlnaHQ6cyx4OmEseTpsLHNkZjpjLHBpeGVsUmF0aW86aCxzdHJldGNoWDp1LHN0cmV0Y2hZOl8sY29udGVudDpkfT1yW29dLHA9bmV3IGUuUkdCQUltYWdlKHt3aWR0aDpuLGhlaWdodDpzfSk7ZS5SR0JBSW1hZ2UuY29weSh0LHAse3g6YSx5Omx9LHt4OjAseTowfSx7d2lkdGg6bixoZWlnaHQ6c30pLGlbb109e2RhdGE6cCxwaXhlbFJhdGlvOmgsc2RmOmMsc3RyZXRjaFg6dSxzdHJldGNoWTpfLGNvbnRlbnQ6ZH07fW8obnVsbCxpKTt9fXJldHVybiB7Y2FuY2VsKCl7bCYmKGwuY2FuY2VsKCksbD1udWxsKSxjJiYoYy5jYW5jZWwoKSxjPW51bGwpO319fSh0LHRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlciwoKHQsaSk9PntpZih0aGlzLl9zcHJpdGVSZXF1ZXN0PW51bGwsdCl0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudCh0KSk7ZWxzZSBpZihpKWZvcihjb25zdCBlIGluIGkpdGhpcy5pbWFnZU1hbmFnZXIuYWRkSW1hZ2UoZSxpW2VdKTt0aGlzLmltYWdlTWFuYWdlci5zZXRMb2FkZWQoITApLHRoaXMuX2F2YWlsYWJsZUltYWdlcz10aGlzLmltYWdlTWFuYWdlci5saXN0SW1hZ2VzKCksdGhpcy5kaXNwYXRjaGVyLmJyb2FkY2FzdChcInNldEltYWdlc1wiLHRoaXMuX2F2YWlsYWJsZUltYWdlcyksdGhpcy5kaXNwYXRjaGVyLmJyb2FkY2FzdChcInNwcml0ZUxvYWRlZFwiLCEwKSx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJkYXRhXCIse2RhdGFUeXBlOlwic3R5bGVcIn0pKTt9KSk7fV92YWxpZGF0ZUxheWVyKHQpe2NvbnN0IGk9dGhpcy5nZXRTb3VyY2UodC5zb3VyY2UpO2lmKCFpKXJldHVybjtjb25zdCBvPXQuc291cmNlTGF5ZXI7byYmKFwiZ2VvanNvblwiPT09aS50eXBlfHxpLnZlY3RvckxheWVySWRzJiYtMT09PWkudmVjdG9yTGF5ZXJJZHMuaW5kZXhPZihvKSkmJnRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihgU291cmNlIGxheWVyIFwiJHtvfVwiIGRvZXMgbm90IGV4aXN0IG9uIHNvdXJjZSBcIiR7aS5pZH1cIiBhcyBzcGVjaWZpZWQgYnkgc3R5bGUgbGF5ZXIgXCIke3QuaWR9XCJgKSkpO31sb2FkZWQoKXtpZighdGhpcy5fbG9hZGVkKXJldHVybiAhMTtpZihPYmplY3Qua2V5cyh0aGlzLl91cGRhdGVkU291cmNlcykubGVuZ3RoKXJldHVybiAhMTtmb3IoY29uc3QgZSBpbiB0aGlzLl9zb3VyY2VDYWNoZXMpaWYoIXRoaXMuX3NvdXJjZUNhY2hlc1tlXS5sb2FkZWQoKSlyZXR1cm4gITE7cmV0dXJuICEhdGhpcy5pbWFnZU1hbmFnZXIuaXNMb2FkZWQoKX1fc2VyaWFsaXplTGF5ZXJzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT10aGlzLl9sYXllcnNbaV07XCJjdXN0b21cIiE9PWUudHlwZSYmdC5wdXNoKGUuc2VyaWFsaXplKCkpO31yZXR1cm4gdH1oYXNUcmFuc2l0aW9ucygpe2lmKHRoaXMubGlnaHQmJnRoaXMubGlnaHQuaGFzVHJhbnNpdGlvbigpKXJldHVybiAhMDtpZih0aGlzLmZvZyYmdGhpcy5mb2cuaGFzVHJhbnNpdGlvbigpKXJldHVybiAhMDtmb3IoY29uc3QgZSBpbiB0aGlzLl9zb3VyY2VDYWNoZXMpaWYodGhpcy5fc291cmNlQ2FjaGVzW2VdLmhhc1RyYW5zaXRpb24oKSlyZXR1cm4gITA7Zm9yKGNvbnN0IGUgaW4gdGhpcy5fbGF5ZXJzKWlmKHRoaXMuX2xheWVyc1tlXS5oYXNUcmFuc2l0aW9uKCkpcmV0dXJuICEwO3JldHVybiAhMX1nZXQgb3JkZXIoKXtyZXR1cm4gdGhpcy5tYXAuX29wdGltaXplRm9yVGVycmFpbiYmdGhpcy50ZXJyYWluP3RoaXMuX2RyYXBlZEZpcnN0T3JkZXI6dGhpcy5fb3JkZXJ9aXNMYXllckRyYXBlZChlKXtyZXR1cm4gISF0aGlzLnRlcnJhaW4mJihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmlzTGF5ZXJEcmFwZWQ/ZS5pc0xheWVyRHJhcGVkKCk6WXRbZS50eXBlXSl9X2NoZWNrTG9hZGVkKCl7aWYoIXRoaXMuX2xvYWRlZCl0aHJvdyBuZXcgRXJyb3IoXCJTdHlsZSBpcyBub3QgZG9uZSBsb2FkaW5nXCIpfXVwZGF0ZSh0KXtpZighdGhpcy5fbG9hZGVkKXJldHVybjtjb25zdCBpPXRoaXMuX2NoYW5nZWQ7aWYodGhpcy5fY2hhbmdlZCl7Y29uc3QgZT1PYmplY3Qua2V5cyh0aGlzLl91cGRhdGVkTGF5ZXJzKSxpPU9iamVjdC5rZXlzKHRoaXMuX3JlbW92ZWRMYXllcnMpOyhlLmxlbmd0aHx8aS5sZW5ndGgpJiZ0aGlzLl91cGRhdGVXb3JrZXJMYXllcnMoZSxpKTtmb3IoY29uc3QgZSBpbiB0aGlzLl91cGRhdGVkU291cmNlcyl7Y29uc3QgdD10aGlzLl91cGRhdGVkU291cmNlc1tlXTtcInJlbG9hZFwiPT09dD90aGlzLl9yZWxvYWRTb3VyY2UoZSk6XCJjbGVhclwiPT09dCYmdGhpcy5fY2xlYXJTb3VyY2UoZSk7fXRoaXMuX3VwZGF0ZVRpbGVzRm9yQ2hhbmdlZEltYWdlcygpO2Zvcihjb25zdCBlIGluIHRoaXMuX3VwZGF0ZWRQYWludFByb3BzKXRoaXMuX2xheWVyc1tlXS51cGRhdGVUcmFuc2l0aW9ucyh0KTt0aGlzLmxpZ2h0LnVwZGF0ZVRyYW5zaXRpb25zKHQpLHRoaXMuZm9nJiZ0aGlzLmZvZy51cGRhdGVUcmFuc2l0aW9ucyh0KSx0aGlzLl9yZXNldFVwZGF0ZXMoKTt9Y29uc3Qgbz17fTtmb3IoY29uc3QgZSBpbiB0aGlzLl9zb3VyY2VDYWNoZXMpe2NvbnN0IHQ9dGhpcy5fc291cmNlQ2FjaGVzW2VdO29bZV09dC51c2VkLHQudXNlZD0hMTt9Zm9yKGNvbnN0IGUgb2YgdGhpcy5fb3JkZXIpe2NvbnN0IGk9dGhpcy5fbGF5ZXJzW2VdO2lmKGkucmVjYWxjdWxhdGUodCx0aGlzLl9hdmFpbGFibGVJbWFnZXMpLCFpLmlzSGlkZGVuKHQuem9vbSkpe2NvbnN0IGU9dGhpcy5fZ2V0TGF5ZXJTb3VyY2VDYWNoZShpKTtlJiYoZS51c2VkPSEwKTt9Y29uc3Qgbz10aGlzLm1hcC5wYWludGVyO2lmKG8pe2NvbnN0IGU9aS5nZXRQcm9ncmFtSWRzKCk7aWYoIWUpY29udGludWU7Y29uc3Qgcj1pLmdldFByb2dyYW1Db25maWd1cmF0aW9uKHQuem9vbSk7Zm9yKGNvbnN0IHQgb2YgZSlvLnVzZVByb2dyYW0odCxyKTt9fWZvcihjb25zdCB0IGluIG8pe2NvbnN0IGk9dGhpcy5fc291cmNlQ2FjaGVzW3RdO29bdF0hPT1pLnVzZWQmJmkuZ2V0U291cmNlKCkuZmlyZShuZXcgZS5FdmVudChcImRhdGFcIix7c291cmNlRGF0YVR5cGU6XCJ2aXNpYmlsaXR5XCIsZGF0YVR5cGU6XCJzb3VyY2VcIixzb3VyY2VJZDppLmdldFNvdXJjZSgpLmlkfSkpO310aGlzLmxpZ2h0LnJlY2FsY3VsYXRlKHQpLHRoaXMudGVycmFpbiYmdGhpcy50ZXJyYWluLnJlY2FsY3VsYXRlKHQpLHRoaXMuZm9nJiZ0aGlzLmZvZy5yZWNhbGN1bGF0ZSh0KSx0aGlzLno9dC56b29tLHRoaXMuX21hcmtlcnNOZWVkVXBkYXRlJiYodGhpcy5fdXBkYXRlTWFya2Vyc09wYWNpdHkoKSx0aGlzLl9tYXJrZXJzTmVlZFVwZGF0ZT0hMSksaSYmdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZGF0YVwiLHtkYXRhVHlwZTpcInN0eWxlXCJ9KSk7fV91cGRhdGVUaWxlc0ZvckNoYW5nZWRJbWFnZXMoKXtjb25zdCBlPU9iamVjdC5rZXlzKHRoaXMuX2NoYW5nZWRJbWFnZXMpO2lmKGUubGVuZ3RoKXtmb3IoY29uc3QgdCBpbiB0aGlzLl9zb3VyY2VDYWNoZXMpdGhpcy5fc291cmNlQ2FjaGVzW3RdLnJlbG9hZFRpbGVzRm9yRGVwZW5kZW5jaWVzKFtcImljb25zXCIsXCJwYXR0ZXJuc1wiXSxlKTt0aGlzLl9jaGFuZ2VkSW1hZ2VzPXt9O319X3VwZGF0ZVdvcmtlckxheWVycyhlLHQpe3RoaXMuZGlzcGF0Y2hlci5icm9hZGNhc3QoXCJ1cGRhdGVMYXllcnNcIix7bGF5ZXJzOnRoaXMuX3NlcmlhbGl6ZUxheWVycyhlKSxyZW1vdmVkSWRzOnR9KTt9X3Jlc2V0VXBkYXRlcygpe3RoaXMuX2NoYW5nZWQ9ITEsdGhpcy5fdXBkYXRlZExheWVycz17fSx0aGlzLl9yZW1vdmVkTGF5ZXJzPXt9LHRoaXMuX3VwZGF0ZWRTb3VyY2VzPXt9LHRoaXMuX3VwZGF0ZWRQYWludFByb3BzPXt9LHRoaXMuX2NoYW5nZWRJbWFnZXM9e307fXNldFN0YXRlKGkpe2lmKHRoaXMuX2NoZWNrTG9hZGVkKCksWHQodGhpcyxlLnZhbGlkYXRlU3R5bGUoaSkpKXJldHVybiAhMTsoaT1lLmNsb25lJDEoaSkpLmxheWVycz1qZShpLmxheWVycyk7Y29uc3Qgbz1mdW5jdGlvbihlLGkpe2lmKCFlKXJldHVybiBbe2NvbW1hbmQ6R2Uuc2V0U3R5bGUsYXJnczpbaV19XTtsZXQgbz1bXTt0cnl7aWYoIXQoZS52ZXJzaW9uLGkudmVyc2lvbikpcmV0dXJuIFt7Y29tbWFuZDpHZS5zZXRTdHlsZSxhcmdzOltpXX1dO3QoZS5jZW50ZXIsaS5jZW50ZXIpfHxvLnB1c2goe2NvbW1hbmQ6R2Uuc2V0Q2VudGVyLGFyZ3M6W2kuY2VudGVyXX0pLHQoZS56b29tLGkuem9vbSl8fG8ucHVzaCh7Y29tbWFuZDpHZS5zZXRab29tLGFyZ3M6W2kuem9vbV19KSx0KGUuYmVhcmluZyxpLmJlYXJpbmcpfHxvLnB1c2goe2NvbW1hbmQ6R2Uuc2V0QmVhcmluZyxhcmdzOltpLmJlYXJpbmddfSksdChlLnBpdGNoLGkucGl0Y2gpfHxvLnB1c2goe2NvbW1hbmQ6R2Uuc2V0UGl0Y2gsYXJnczpbaS5waXRjaF19KSx0KGUuc3ByaXRlLGkuc3ByaXRlKXx8by5wdXNoKHtjb21tYW5kOkdlLnNldFNwcml0ZSxhcmdzOltpLnNwcml0ZV19KSx0KGUuZ2x5cGhzLGkuZ2x5cGhzKXx8by5wdXNoKHtjb21tYW5kOkdlLnNldEdseXBocyxhcmdzOltpLmdseXBoc119KSx0KGUudHJhbnNpdGlvbixpLnRyYW5zaXRpb24pfHxvLnB1c2goe2NvbW1hbmQ6R2Uuc2V0VHJhbnNpdGlvbixhcmdzOltpLnRyYW5zaXRpb25dfSksdChlLmxpZ2h0LGkubGlnaHQpfHxvLnB1c2goe2NvbW1hbmQ6R2Uuc2V0TGlnaHQsYXJnczpbaS5saWdodF19KSx0KGUuZm9nLGkuZm9nKXx8by5wdXNoKHtjb21tYW5kOkdlLnNldEZvZyxhcmdzOltpLmZvZ119KSx0KGUucHJvamVjdGlvbixpLnByb2plY3Rpb24pfHxvLnB1c2goe2NvbW1hbmQ6R2Uuc2V0UHJvamVjdGlvbixhcmdzOltpLnByb2plY3Rpb25dfSk7Y29uc3Qgcj17fSxuPVtdOyFmdW5jdGlvbihlLGksbyxyKXtsZXQgbjtmb3IobiBpbiBpPWl8fHt9LGU9ZXx8e30pZS5oYXNPd25Qcm9wZXJ0eShuKSYmKGkuaGFzT3duUHJvcGVydHkobil8fFZlKG4sbyxyKSk7Zm9yKG4gaW4gaSl7aWYoIWkuaGFzT3duUHJvcGVydHkobikpY29udGludWU7Y29uc3Qgcz1pW25dO2UuaGFzT3duUHJvcGVydHkobik/dChlW25dLHMpfHwoXCJnZW9qc29uXCI9PT1lW25dLnR5cGUmJlwiZ2VvanNvblwiPT09cy50eXBlJiZYZShlLGksbik/by5wdXNoKHtjb21tYW5kOkdlLnNldEdlb0pTT05Tb3VyY2VEYXRhLGFyZ3M6W24scy5kYXRhXX0pOldlKG4saSxvLHIpKTpaZShuLGksbyk7fX0oZS5zb3VyY2VzLGkuc291cmNlcyxuLHIpO2NvbnN0IHM9W107ZS5sYXllcnMmJmUubGF5ZXJzLmZvckVhY2goKGU9PntlLnNvdXJjZSYmcltlLnNvdXJjZV0/by5wdXNoKHtjb21tYW5kOkdlLnJlbW92ZUxheWVyLGFyZ3M6W2UuaWRdfSk6cy5wdXNoKGUpO30pKTtsZXQgYT1lLnRlcnJhaW47YSYmclthLnNvdXJjZV0mJihvLnB1c2goe2NvbW1hbmQ6R2Uuc2V0VGVycmFpbixhcmdzOlt2b2lkIDBdfSksYT12b2lkIDApLG89by5jb25jYXQobiksdChhLGkudGVycmFpbil8fG8ucHVzaCh7Y29tbWFuZDpHZS5zZXRUZXJyYWluLGFyZ3M6W2kudGVycmFpbl19KSxmdW5jdGlvbihlLGksbyl7aT1pfHxbXTtjb25zdCByPShlPWV8fFtdKS5tYXAoJGUpLG49aS5tYXAoJGUpLHM9ZS5yZWR1Y2UoSGUse30pLGE9aS5yZWR1Y2UoSGUse30pLGw9ci5zbGljZSgpLGM9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgaCx1LF8sZCxwLG0sZjtmb3IoaD0wLHU9MDtoPHIubGVuZ3RoO2grKylfPXJbaF0sYS5oYXNPd25Qcm9wZXJ0eShfKT91Kys6KG8ucHVzaCh7Y29tbWFuZDpHZS5yZW1vdmVMYXllcixhcmdzOltfXX0pLGwuc3BsaWNlKGwuaW5kZXhPZihfLHUpLDEpKTtmb3IoaD0wLHU9MDtoPG4ubGVuZ3RoO2grKylfPW5bbi5sZW5ndGgtMS1oXSxsW2wubGVuZ3RoLTEtaF0hPT1fJiYocy5oYXNPd25Qcm9wZXJ0eShfKT8oby5wdXNoKHtjb21tYW5kOkdlLnJlbW92ZUxheWVyLGFyZ3M6W19dfSksbC5zcGxpY2UobC5sYXN0SW5kZXhPZihfLGwubGVuZ3RoLXUpLDEpKTp1KyssbT1sW2wubGVuZ3RoLWhdLG8ucHVzaCh7Y29tbWFuZDpHZS5hZGRMYXllcixhcmdzOlthW19dLG1dfSksbC5zcGxpY2UobC5sZW5ndGgtaCwwLF8pLGNbX109ITApO2ZvcihoPTA7aDxuLmxlbmd0aDtoKyspaWYoXz1uW2hdLGQ9c1tfXSxwPWFbX10sIWNbX10mJiF0KGQscCkpaWYodChkLnNvdXJjZSxwLnNvdXJjZSkmJnQoZFtcInNvdXJjZS1sYXllclwiXSxwW1wic291cmNlLWxheWVyXCJdKSYmdChkLnR5cGUscC50eXBlKSl7Zm9yKGYgaW4gcWUoZC5sYXlvdXQscC5sYXlvdXQsbyxfLG51bGwsR2Uuc2V0TGF5b3V0UHJvcGVydHkpLHFlKGQucGFpbnQscC5wYWludCxvLF8sbnVsbCxHZS5zZXRQYWludFByb3BlcnR5KSx0KGQuZmlsdGVyLHAuZmlsdGVyKXx8by5wdXNoKHtjb21tYW5kOkdlLnNldEZpbHRlcixhcmdzOltfLHAuZmlsdGVyXX0pLHQoZC5taW56b29tLHAubWluem9vbSkmJnQoZC5tYXh6b29tLHAubWF4em9vbSl8fG8ucHVzaCh7Y29tbWFuZDpHZS5zZXRMYXllclpvb21SYW5nZSxhcmdzOltfLHAubWluem9vbSxwLm1heHpvb21dfSksZClkLmhhc093blByb3BlcnR5KGYpJiZcImxheW91dFwiIT09ZiYmXCJwYWludFwiIT09ZiYmXCJmaWx0ZXJcIiE9PWYmJlwibWV0YWRhdGFcIiE9PWYmJlwibWluem9vbVwiIT09ZiYmXCJtYXh6b29tXCIhPT1mJiYoMD09PWYuaW5kZXhPZihcInBhaW50LlwiKT9xZShkW2ZdLHBbZl0sbyxfLGYuc2xpY2UoNiksR2Uuc2V0UGFpbnRQcm9wZXJ0eSk6dChkW2ZdLHBbZl0pfHxvLnB1c2goe2NvbW1hbmQ6R2Uuc2V0TGF5ZXJQcm9wZXJ0eSxhcmdzOltfLGYscFtmXV19KSk7Zm9yKGYgaW4gcClwLmhhc093blByb3BlcnR5KGYpJiYhZC5oYXNPd25Qcm9wZXJ0eShmKSYmXCJsYXlvdXRcIiE9PWYmJlwicGFpbnRcIiE9PWYmJlwiZmlsdGVyXCIhPT1mJiZcIm1ldGFkYXRhXCIhPT1mJiZcIm1pbnpvb21cIiE9PWYmJlwibWF4em9vbVwiIT09ZiYmKDA9PT1mLmluZGV4T2YoXCJwYWludC5cIik/cWUoZFtmXSxwW2ZdLG8sXyxmLnNsaWNlKDYpLEdlLnNldFBhaW50UHJvcGVydHkpOnQoZFtmXSxwW2ZdKXx8by5wdXNoKHtjb21tYW5kOkdlLnNldExheWVyUHJvcGVydHksYXJnczpbXyxmLHBbZl1dfSkpO31lbHNlIG8ucHVzaCh7Y29tbWFuZDpHZS5yZW1vdmVMYXllcixhcmdzOltfXX0pLG09bFtsLmxhc3RJbmRleE9mKF8pKzFdLG8ucHVzaCh7Y29tbWFuZDpHZS5hZGRMYXllcixhcmdzOltwLG1dfSk7fShzLGkubGF5ZXJzLG8pO31jYXRjaChlKXtjb25zb2xlLndhcm4oXCJVbmFibGUgdG8gY29tcHV0ZSBzdHlsZSBkaWZmOlwiLGUpLG89W3tjb21tYW5kOkdlLnNldFN0eWxlLGFyZ3M6W2ldfV07fXJldHVybiBvfSh0aGlzLnNlcmlhbGl6ZSgpLGkpLmZpbHRlcigoZT0+IShlLmNvbW1hbmQgaW4gJHQpKSk7aWYoMD09PW8ubGVuZ3RoKXJldHVybiAhMTtjb25zdCByPW8uZmlsdGVyKChlPT4hKGUuY29tbWFuZCBpbiBxdCkpKTtpZihyLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZDogJHtyLm1hcCgoZT0+ZS5jb21tYW5kKSkuam9pbihcIiwgXCIpfS5gKTtyZXR1cm4gby5mb3JFYWNoKChlPT57XCJzZXRUcmFuc2l0aW9uXCIhPT1lLmNvbW1hbmQmJlwic2V0UHJvamVjdGlvblwiIT09ZS5jb21tYW5kJiZ0aGlzW2UuY29tbWFuZF0uYXBwbHkodGhpcyxlLmFyZ3MpO30pKSx0aGlzLnN0eWxlc2hlZXQ9aSx0aGlzLl91cGRhdGVNYXBQcm9qZWN0aW9uKCksITB9YWRkSW1hZ2UodCxpKXtyZXR1cm4gdGhpcy5nZXRJbWFnZSh0KT90aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoXCJBbiBpbWFnZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cy5cIikpKToodGhpcy5pbWFnZU1hbmFnZXIuYWRkSW1hZ2UodCxpKSx0aGlzLl9hZnRlckltYWdlVXBkYXRlZCh0KSx0aGlzKX11cGRhdGVJbWFnZShlLHQpe3RoaXMuaW1hZ2VNYW5hZ2VyLnVwZGF0ZUltYWdlKGUsdCk7fWdldEltYWdlKGUpe3JldHVybiB0aGlzLmltYWdlTWFuYWdlci5nZXRJbWFnZShlKX1yZW1vdmVJbWFnZSh0KXtyZXR1cm4gdGhpcy5nZXRJbWFnZSh0KT8odGhpcy5pbWFnZU1hbmFnZXIucmVtb3ZlSW1hZ2UodCksdGhpcy5fYWZ0ZXJJbWFnZVVwZGF0ZWQodCksdGhpcyk6dGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKFwiTm8gaW1hZ2Ugd2l0aCB0aGlzIG5hbWUgZXhpc3RzLlwiKSkpfV9hZnRlckltYWdlVXBkYXRlZCh0KXt0aGlzLl9hdmFpbGFibGVJbWFnZXM9dGhpcy5pbWFnZU1hbmFnZXIubGlzdEltYWdlcygpLHRoaXMuX2NoYW5nZWRJbWFnZXNbdF09ITAsdGhpcy5fY2hhbmdlZD0hMCx0aGlzLmRpc3BhdGNoZXIuYnJvYWRjYXN0KFwic2V0SW1hZ2VzXCIsdGhpcy5fYXZhaWxhYmxlSW1hZ2VzKSx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJkYXRhXCIse2RhdGFUeXBlOlwic3R5bGVcIn0pKTt9bGlzdEltYWdlcygpe3JldHVybiB0aGlzLl9jaGVja0xvYWRlZCgpLHRoaXMuX2F2YWlsYWJsZUltYWdlcy5zbGljZSgpfWFkZFNvdXJjZSh0LGksbz17fSl7aWYodGhpcy5fY2hlY2tMb2FkZWQoKSx2b2lkIDAhPT10aGlzLmdldFNvdXJjZSh0KSl0aHJvdyBuZXcgRXJyb3IoXCJUaGVyZSBpcyBhbHJlYWR5IGEgc291cmNlIHdpdGggdGhpcyBJRFwiKTtpZighaS50eXBlKXRocm93IG5ldyBFcnJvcihgVGhlIHR5cGUgcHJvcGVydHkgbXVzdCBiZSBkZWZpbmVkLCBidXQgb25seSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgd2VyZSBnaXZlbjogJHtPYmplY3Qua2V5cyhpKS5qb2luKFwiLCBcIil9LmApO2lmKFtcInZlY3RvclwiLFwicmFzdGVyXCIsXCJnZW9qc29uXCIsXCJ2aWRlb1wiLFwiaW1hZ2VcIl0uaW5kZXhPZihpLnR5cGUpPj0wJiZ0aGlzLl92YWxpZGF0ZShlLnZhbGlkYXRlU291cmNlLGBzb3VyY2VzLiR7dH1gLGksbnVsbCxvKSlyZXR1cm47dGhpcy5tYXAmJnRoaXMubWFwLl9jb2xsZWN0UmVzb3VyY2VUaW1pbmcmJihpLmNvbGxlY3RSZXNvdXJjZVRpbWluZz0hMCk7Y29uc3Qgcj1EZSh0LGksdGhpcy5kaXNwYXRjaGVyLHRoaXMpO3Iuc2V0RXZlbnRlZFBhcmVudCh0aGlzLCgoKT0+KHtpc1NvdXJjZUxvYWRlZDp0aGlzLl9pc1NvdXJjZUNhY2hlTG9hZGVkKHQpLHNvdXJjZTpyLnNlcmlhbGl6ZSgpLHNvdXJjZUlkOnR9KSkpO2NvbnN0IG49aT0+e2NvbnN0IG89KGk/XCJzeW1ib2w6XCI6XCJvdGhlcjpcIikrdCxuPXRoaXMuX3NvdXJjZUNhY2hlc1tvXT1uZXcgZS5Tb3VyY2VDYWNoZShvLHIsaSk7KGk/dGhpcy5fc3ltYm9sU291cmNlQ2FjaGVzOnRoaXMuX290aGVyU291cmNlQ2FjaGVzKVt0XT1uLG4uc3R5bGU9dGhpcyxuLm9uQWRkKHRoaXMubWFwKTt9O24oITEpLFwidmVjdG9yXCIhPT1pLnR5cGUmJlwiZ2VvanNvblwiIT09aS50eXBlfHxuKCEwKSxyLm9uQWRkJiZyLm9uQWRkKHRoaXMubWFwKSx0aGlzLl9jaGFuZ2VkPSEwO31yZW1vdmVTb3VyY2UodCl7dGhpcy5fY2hlY2tMb2FkZWQoKTtjb25zdCBpPXRoaXMuZ2V0U291cmNlKHQpO2lmKCFpKXRocm93IG5ldyBFcnJvcihcIlRoZXJlIGlzIG5vIHNvdXJjZSB3aXRoIHRoaXMgSURcIik7Zm9yKGNvbnN0IGkgaW4gdGhpcy5fbGF5ZXJzKWlmKHRoaXMuX2xheWVyc1tpXS5zb3VyY2U9PT10KXJldHVybiB0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoYFNvdXJjZSBcIiR7dH1cIiBjYW5ub3QgYmUgcmVtb3ZlZCB3aGlsZSBsYXllciBcIiR7aX1cIiBpcyB1c2luZyBpdC5gKSkpO2lmKHRoaXMudGVycmFpbiYmdGhpcy50ZXJyYWluLmdldCgpLnNvdXJjZT09PXQpcmV0dXJuIHRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihgU291cmNlIFwiJHt0fVwiIGNhbm5vdCBiZSByZW1vdmVkIHdoaWxlIHRlcnJhaW4gaXMgdXNpbmcgaXQuYCkpKTtjb25zdCBvPXRoaXMuX2dldFNvdXJjZUNhY2hlcyh0KTtmb3IoY29uc3QgdCBvZiBvKWRlbGV0ZSB0aGlzLl9zb3VyY2VDYWNoZXNbdC5pZF0sZGVsZXRlIHRoaXMuX3VwZGF0ZWRTb3VyY2VzW3QuaWRdLHQuZmlyZShuZXcgZS5FdmVudChcImRhdGFcIix7c291cmNlRGF0YVR5cGU6XCJtZXRhZGF0YVwiLGRhdGFUeXBlOlwic291cmNlXCIsc291cmNlSWQ6dC5nZXRTb3VyY2UoKS5pZH0pKSx0LnNldEV2ZW50ZWRQYXJlbnQobnVsbCksdC5jbGVhclRpbGVzKCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9vdGhlclNvdXJjZUNhY2hlc1t0XSxkZWxldGUgdGhpcy5fc3ltYm9sU291cmNlQ2FjaGVzW3RdLGkuc2V0RXZlbnRlZFBhcmVudChudWxsKSxpLm9uUmVtb3ZlJiZpLm9uUmVtb3ZlKHRoaXMubWFwKSx0aGlzLl9jaGFuZ2VkPSEwLHRoaXN9c2V0R2VvSlNPTlNvdXJjZURhdGEoZSx0KXt0aGlzLl9jaGVja0xvYWRlZCgpLHRoaXMuZ2V0U291cmNlKGUpLnNldERhdGEodCksdGhpcy5fY2hhbmdlZD0hMDt9Z2V0U291cmNlKGUpe2NvbnN0IHQ9dGhpcy5fZ2V0U291cmNlQ2FjaGUoZSk7cmV0dXJuIHQmJnQuZ2V0U291cmNlKCl9X2dldFNvdXJjZXMoKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IGluIHRoaXMuX290aGVyU291cmNlQ2FjaGVzKXtjb25zdCBpPXRoaXMuX2dldFNvdXJjZUNhY2hlKHQpO2kmJmUucHVzaChpLmdldFNvdXJjZSgpKTt9cmV0dXJuIGV9YWRkTGF5ZXIodCxpLG89e30pe3RoaXMuX2NoZWNrTG9hZGVkKCk7Y29uc3Qgcj10LmlkO2lmKHRoaXMuZ2V0TGF5ZXIocikpcmV0dXJuIHZvaWQgdGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKGBMYXllciB3aXRoIGlkIFwiJHtyfVwiIGFscmVhZHkgZXhpc3RzIG9uIHRoaXMgbWFwYCkpKTtsZXQgbjtpZihcImN1c3RvbVwiPT09dC50eXBlKXtpZihYdCh0aGlzLGUudmFsaWRhdGVDdXN0b21TdHlsZUxheWVyKHQpKSlyZXR1cm47bj1lLmNyZWF0ZVN0eWxlTGF5ZXIodCk7fWVsc2Uge2lmKFwib2JqZWN0XCI9PXR5cGVvZiB0LnNvdXJjZSYmKHRoaXMuYWRkU291cmNlKHIsdC5zb3VyY2UpLHQ9ZS5jbG9uZSQxKHQpLHQ9ZS5leHRlbmQodCx7c291cmNlOnJ9KSksdGhpcy5fdmFsaWRhdGUoZS52YWxpZGF0ZUxheWVyLGBsYXllcnMuJHtyfWAsdCx7YXJyYXlJbmRleDotMX0sbykpcmV0dXJuO249ZS5jcmVhdGVTdHlsZUxheWVyKHQpLHRoaXMuX3ZhbGlkYXRlTGF5ZXIobiksbi5zZXRFdmVudGVkUGFyZW50KHRoaXMse2xheWVyOntpZDpyfX0pLHRoaXMuX3NlcmlhbGl6ZWRMYXllcnNbbi5pZF09bi5zZXJpYWxpemUoKSx0aGlzLl91cGRhdGVMYXllckNvdW50KG4sITApO31jb25zdCBzPWk/dGhpcy5fb3JkZXIuaW5kZXhPZihpKTp0aGlzLl9vcmRlci5sZW5ndGg7aWYoaSYmLTE9PT1zKXJldHVybiB2b2lkIHRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihgTGF5ZXIgd2l0aCBpZCBcIiR7aX1cIiBkb2VzIG5vdCBleGlzdCBvbiB0aGlzIG1hcC5gKSkpO3RoaXMuX29yZGVyLnNwbGljZShzLDAsciksdGhpcy5fbGF5ZXJPcmRlckNoYW5nZWQ9ITAsdGhpcy5fbGF5ZXJzW3JdPW47Y29uc3QgYT10aGlzLl9nZXRMYXllclNvdXJjZUNhY2hlKG4pO2lmKHRoaXMuX3JlbW92ZWRMYXllcnNbcl0mJm4uc291cmNlJiZhJiZcImN1c3RvbVwiIT09bi50eXBlKXtjb25zdCBlPXRoaXMuX3JlbW92ZWRMYXllcnNbcl07ZGVsZXRlIHRoaXMuX3JlbW92ZWRMYXllcnNbcl0sZS50eXBlIT09bi50eXBlP3RoaXMuX3VwZGF0ZWRTb3VyY2VzW24uc291cmNlXT1cImNsZWFyXCI6KHRoaXMuX3VwZGF0ZWRTb3VyY2VzW24uc291cmNlXT1cInJlbG9hZFwiLGEucGF1c2UoKSk7fXRoaXMuX3VwZGF0ZUxheWVyKG4pLG4ub25BZGQmJm4ub25BZGQodGhpcy5tYXApLHRoaXMuX3VwZGF0ZURyYXBlRmlyc3RMYXllcnMoKTt9bW92ZUxheWVyKHQsaSl7aWYodGhpcy5fY2hlY2tMb2FkZWQoKSx0aGlzLl9jaGFuZ2VkPSEwLCF0aGlzLl9sYXllcnNbdF0pcmV0dXJuIHZvaWQgdGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKGBUaGUgbGF5ZXIgJyR7dH0nIGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAncyBzdHlsZSBhbmQgY2Fubm90IGJlIG1vdmVkLmApKSk7aWYodD09PWkpcmV0dXJuO2NvbnN0IG89dGhpcy5fb3JkZXIuaW5kZXhPZih0KTt0aGlzLl9vcmRlci5zcGxpY2UobywxKTtjb25zdCByPWk/dGhpcy5fb3JkZXIuaW5kZXhPZihpKTp0aGlzLl9vcmRlci5sZW5ndGg7aSYmLTE9PT1yP3RoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihgTGF5ZXIgd2l0aCBpZCBcIiR7aX1cIiBkb2VzIG5vdCBleGlzdCBvbiB0aGlzIG1hcC5gKSkpOih0aGlzLl9vcmRlci5zcGxpY2UociwwLHQpLHRoaXMuX2xheWVyT3JkZXJDaGFuZ2VkPSEwLHRoaXMuX3VwZGF0ZURyYXBlRmlyc3RMYXllcnMoKSk7fXJlbW92ZUxheWVyKHQpe3RoaXMuX2NoZWNrTG9hZGVkKCk7Y29uc3QgaT10aGlzLl9sYXllcnNbdF07aWYoIWkpcmV0dXJuIHZvaWQgdGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKGBUaGUgbGF5ZXIgJyR7dH0nIGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAncyBzdHlsZSBhbmQgY2Fubm90IGJlIHJlbW92ZWQuYCkpKTtpLnNldEV2ZW50ZWRQYXJlbnQobnVsbCksdGhpcy5fdXBkYXRlTGF5ZXJDb3VudChpLCExKTtjb25zdCBvPXRoaXMuX29yZGVyLmluZGV4T2YodCk7dGhpcy5fb3JkZXIuc3BsaWNlKG8sMSksdGhpcy5fbGF5ZXJPcmRlckNoYW5nZWQ9ITAsdGhpcy5fY2hhbmdlZD0hMCx0aGlzLl9yZW1vdmVkTGF5ZXJzW3RdPWksZGVsZXRlIHRoaXMuX2xheWVyc1t0XSxkZWxldGUgdGhpcy5fc2VyaWFsaXplZExheWVyc1t0XSxkZWxldGUgdGhpcy5fdXBkYXRlZExheWVyc1t0XSxkZWxldGUgdGhpcy5fdXBkYXRlZFBhaW50UHJvcHNbdF0saS5vblJlbW92ZSYmaS5vblJlbW92ZSh0aGlzLm1hcCksdGhpcy5fdXBkYXRlRHJhcGVGaXJzdExheWVycygpO31nZXRMYXllcihlKXtyZXR1cm4gdGhpcy5fbGF5ZXJzW2VdfWhhc0xheWVyKGUpe3JldHVybiBlIGluIHRoaXMuX2xheWVyc31oYXNMYXllclR5cGUoZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbGF5ZXJzKWlmKHRoaXMuX2xheWVyc1t0XS50eXBlPT09ZSlyZXR1cm4gITA7cmV0dXJuICExfXNldExheWVyWm9vbVJhbmdlKHQsaSxvKXt0aGlzLl9jaGVja0xvYWRlZCgpO2NvbnN0IHI9dGhpcy5nZXRMYXllcih0KTtyP3IubWluem9vbT09PWkmJnIubWF4em9vbT09PW98fChudWxsIT1pJiYoci5taW56b29tPWkpLG51bGwhPW8mJihyLm1heHpvb209byksdGhpcy5fdXBkYXRlTGF5ZXIocikpOnRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihgVGhlIGxheWVyICcke3R9JyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUgYW5kIGNhbm5vdCBoYXZlIHpvb20gZXh0ZW50LmApKSk7fXNldEZpbHRlcihpLG8scj17fSl7dGhpcy5fY2hlY2tMb2FkZWQoKTtjb25zdCBuPXRoaXMuZ2V0TGF5ZXIoaSk7aWYobil7aWYoIXQobi5maWx0ZXIsbykpcmV0dXJuIG51bGw9PW8/KG4uZmlsdGVyPXZvaWQgMCx2b2lkIHRoaXMuX3VwZGF0ZUxheWVyKG4pKTp2b2lkKHRoaXMuX3ZhbGlkYXRlKGUudmFsaWRhdGVGaWx0ZXIsYGxheWVycy4ke24uaWR9LmZpbHRlcmAsbyx7bGF5ZXJUeXBlOm4udHlwZX0scil8fChuLmZpbHRlcj1lLmNsb25lJDEobyksdGhpcy5fdXBkYXRlTGF5ZXIobikpKX1lbHNlIHRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihgVGhlIGxheWVyICcke2l9JyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUgYW5kIGNhbm5vdCBiZSBmaWx0ZXJlZC5gKSkpO31nZXRGaWx0ZXIodCl7Y29uc3QgaT10aGlzLmdldExheWVyKHQpO3JldHVybiBpJiZlLmNsb25lJDEoaS5maWx0ZXIpfXNldExheW91dFByb3BlcnR5KGksbyxyLG49e30pe3RoaXMuX2NoZWNrTG9hZGVkKCk7Y29uc3Qgcz10aGlzLmdldExheWVyKGkpO3M/dChzLmdldExheW91dFByb3BlcnR5KG8pLHIpfHwocy5zZXRMYXlvdXRQcm9wZXJ0eShvLHIsbiksdGhpcy5fdXBkYXRlTGF5ZXIocykpOnRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihgVGhlIGxheWVyICcke2l9JyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUgYW5kIGNhbm5vdCBiZSBzdHlsZWQuYCkpKTt9Z2V0TGF5b3V0UHJvcGVydHkodCxpKXtjb25zdCBvPXRoaXMuZ2V0TGF5ZXIodCk7aWYobylyZXR1cm4gby5nZXRMYXlvdXRQcm9wZXJ0eShpKTt0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoYFRoZSBsYXllciAnJHt0fScgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCdzIHN0eWxlLmApKSk7fXNldFBhaW50UHJvcGVydHkoaSxvLHIsbj17fSl7dGhpcy5fY2hlY2tMb2FkZWQoKTtjb25zdCBzPXRoaXMuZ2V0TGF5ZXIoaSk7cz90KHMuZ2V0UGFpbnRQcm9wZXJ0eShvKSxyKXx8KHMuc2V0UGFpbnRQcm9wZXJ0eShvLHIsbikmJnRoaXMuX3VwZGF0ZUxheWVyKHMpLHRoaXMuX2NoYW5nZWQ9ITAsdGhpcy5fdXBkYXRlZFBhaW50UHJvcHNbaV09ITApOnRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihgVGhlIGxheWVyICcke2l9JyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUgYW5kIGNhbm5vdCBiZSBzdHlsZWQuYCkpKTt9Z2V0UGFpbnRQcm9wZXJ0eShlLHQpe2NvbnN0IGk9dGhpcy5nZXRMYXllcihlKTtyZXR1cm4gaSYmaS5nZXRQYWludFByb3BlcnR5KHQpfXNldEZlYXR1cmVTdGF0ZSh0LGkpe3RoaXMuX2NoZWNrTG9hZGVkKCk7Y29uc3Qgbz10LnNvdXJjZSxyPXQuc291cmNlTGF5ZXIsbj10aGlzLmdldFNvdXJjZShvKTtpZighbilyZXR1cm4gdm9pZCB0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoYFRoZSBzb3VyY2UgJyR7b30nIGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAncyBzdHlsZS5gKSkpO2NvbnN0IHM9bi50eXBlO2lmKFwiZ2VvanNvblwiPT09cyYmcilyZXR1cm4gdm9pZCB0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoXCJHZW9KU09OIHNvdXJjZXMgY2Fubm90IGhhdmUgYSBzb3VyY2VMYXllciBwYXJhbWV0ZXIuXCIpKSk7aWYoXCJ2ZWN0b3JcIj09PXMmJiFyKXJldHVybiB2b2lkIHRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihcIlRoZSBzb3VyY2VMYXllciBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZCBmb3IgdmVjdG9yIHNvdXJjZSB0eXBlcy5cIikpKTt2b2lkIDA9PT10LmlkJiZ0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoXCJUaGUgZmVhdHVyZSBpZCBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZC5cIikpKTtjb25zdCBhPXRoaXMuX2dldFNvdXJjZUNhY2hlcyhvKTtmb3IoY29uc3QgZSBvZiBhKWUuc2V0RmVhdHVyZVN0YXRlKHIsdC5pZCxpKTt9cmVtb3ZlRmVhdHVyZVN0YXRlKHQsaSl7dGhpcy5fY2hlY2tMb2FkZWQoKTtjb25zdCBvPXQuc291cmNlLHI9dGhpcy5nZXRTb3VyY2Uobyk7aWYoIXIpcmV0dXJuIHZvaWQgdGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKGBUaGUgc291cmNlICcke299JyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUuYCkpKTtjb25zdCBuPXIudHlwZSxzPVwidmVjdG9yXCI9PT1uP3Quc291cmNlTGF5ZXI6dm9pZCAwO2lmKFwidmVjdG9yXCI9PT1uJiYhcylyZXR1cm4gdm9pZCB0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoXCJUaGUgc291cmNlTGF5ZXIgcGFyYW1ldGVyIG11c3QgYmUgcHJvdmlkZWQgZm9yIHZlY3RvciBzb3VyY2UgdHlwZXMuXCIpKSk7aWYoaSYmXCJzdHJpbmdcIiE9dHlwZW9mIHQuaWQmJlwibnVtYmVyXCIhPXR5cGVvZiB0LmlkKXJldHVybiB2b2lkIHRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihcIkEgZmVhdHVyZSBpZCBpcyByZXF1aXJlZCB0byByZW1vdmUgaXRzIHNwZWNpZmljIHN0YXRlIHByb3BlcnR5LlwiKSkpO2NvbnN0IGE9dGhpcy5fZ2V0U291cmNlQ2FjaGVzKG8pO2Zvcihjb25zdCBlIG9mIGEpZS5yZW1vdmVGZWF0dXJlU3RhdGUocyx0LmlkLGkpO31nZXRGZWF0dXJlU3RhdGUodCl7dGhpcy5fY2hlY2tMb2FkZWQoKTtjb25zdCBpPXQuc291cmNlLG89dC5zb3VyY2VMYXllcixyPXRoaXMuZ2V0U291cmNlKGkpO2lmKHIpe2lmKFwidmVjdG9yXCIhPT1yLnR5cGV8fG8pcmV0dXJuIHZvaWQgMD09PXQuaWQmJnRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihcIlRoZSBmZWF0dXJlIGlkIHBhcmFtZXRlciBtdXN0IGJlIHByb3ZpZGVkLlwiKSkpLHRoaXMuX2dldFNvdXJjZUNhY2hlcyhpKVswXS5nZXRGZWF0dXJlU3RhdGUobyx0LmlkKTt0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoXCJUaGUgc291cmNlTGF5ZXIgcGFyYW1ldGVyIG11c3QgYmUgcHJvdmlkZWQgZm9yIHZlY3RvciBzb3VyY2UgdHlwZXMuXCIpKSk7fWVsc2UgdGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKGBUaGUgc291cmNlICcke2l9JyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUuYCkpKTt9Z2V0VHJhbnNpdGlvbigpe3JldHVybiBlLmV4dGVuZCh7ZHVyYXRpb246MzAwLGRlbGF5OjB9LHRoaXMuc3R5bGVzaGVldCYmdGhpcy5zdHlsZXNoZWV0LnRyYW5zaXRpb24pfXNlcmlhbGl6ZSgpe2NvbnN0IHQ9e307Zm9yKGNvbnN0IGUgaW4gdGhpcy5fc291cmNlQ2FjaGVzKXtjb25zdCBpPXRoaXMuX3NvdXJjZUNhY2hlc1tlXS5nZXRTb3VyY2UoKTt0W2kuaWRdfHwodFtpLmlkXT1pLnNlcmlhbGl6ZSgpKTt9cmV0dXJuIGUuZmlsdGVyT2JqZWN0KHt2ZXJzaW9uOnRoaXMuc3R5bGVzaGVldC52ZXJzaW9uLG5hbWU6dGhpcy5zdHlsZXNoZWV0Lm5hbWUsbWV0YWRhdGE6dGhpcy5zdHlsZXNoZWV0Lm1ldGFkYXRhLGxpZ2h0OnRoaXMuc3R5bGVzaGVldC5saWdodCx0ZXJyYWluOnRoaXMuZ2V0VGVycmFpbigpfHx2b2lkIDAsZm9nOnRoaXMuc3R5bGVzaGVldC5mb2csY2VudGVyOnRoaXMuc3R5bGVzaGVldC5jZW50ZXIsem9vbTp0aGlzLnN0eWxlc2hlZXQuem9vbSxiZWFyaW5nOnRoaXMuc3R5bGVzaGVldC5iZWFyaW5nLHBpdGNoOnRoaXMuc3R5bGVzaGVldC5waXRjaCxzcHJpdGU6dGhpcy5zdHlsZXNoZWV0LnNwcml0ZSxnbHlwaHM6dGhpcy5zdHlsZXNoZWV0LmdseXBocyx0cmFuc2l0aW9uOnRoaXMuc3R5bGVzaGVldC50cmFuc2l0aW9uLHByb2plY3Rpb246dGhpcy5zdHlsZXNoZWV0LnByb2plY3Rpb24sc291cmNlczp0LGxheWVyczp0aGlzLl9zZXJpYWxpemVMYXllcnModGhpcy5fb3JkZXIpfSwoZT0+dm9pZCAwIT09ZSkpfV91cGRhdGVMYXllcihlKXt0aGlzLl91cGRhdGVkTGF5ZXJzW2UuaWRdPSEwO2NvbnN0IHQ9dGhpcy5fZ2V0TGF5ZXJTb3VyY2VDYWNoZShlKTtlLnNvdXJjZSYmIXRoaXMuX3VwZGF0ZWRTb3VyY2VzW2Uuc291cmNlXSYmdCYmXCJyYXN0ZXJcIiE9PXQuZ2V0U291cmNlKCkudHlwZSYmKHRoaXMuX3VwZGF0ZWRTb3VyY2VzW2Uuc291cmNlXT1cInJlbG9hZFwiLHQucGF1c2UoKSksdGhpcy5fY2hhbmdlZD0hMCxlLmludmFsaWRhdGVDb21waWxlZEZpbHRlcigpO31fZmxhdHRlbkFuZFNvcnRSZW5kZXJlZEZlYXR1cmVzKGUpe2NvbnN0IHQ9ZT0+XCJmaWxsLWV4dHJ1c2lvblwiPT09dGhpcy5fbGF5ZXJzW2VdLnR5cGUsaT17fSxvPVtdO2ZvcihsZXQgcj10aGlzLl9vcmRlci5sZW5ndGgtMTtyPj0wO3ItLSl7Y29uc3Qgbj10aGlzLl9vcmRlcltyXTtpZih0KG4pKXtpW25dPXI7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10W25dO2lmKGUpZm9yKGNvbnN0IHQgb2YgZSlvLnB1c2godCk7fX19by5zb3J0KCgoZSx0KT0+dC5pbnRlcnNlY3Rpb25aLWUuaW50ZXJzZWN0aW9uWikpO2NvbnN0IHI9W107Zm9yKGxldCBuPXRoaXMuX29yZGVyLmxlbmd0aC0xO24+PTA7bi0tKXtjb25zdCBzPXRoaXMuX29yZGVyW25dO2lmKHQocykpZm9yKGxldCBlPW8ubGVuZ3RoLTE7ZT49MDtlLS0pe2NvbnN0IHQ9b1tlXS5mZWF0dXJlO2lmKGlbdC5sYXllci5pZF08bilicmVhaztyLnB1c2godCksby5wb3AoKTt9ZWxzZSBmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXRbc107aWYoZSlmb3IoY29uc3QgdCBvZiBlKXIucHVzaCh0LmZlYXR1cmUpO319cmV0dXJuIHJ9cXVlcnlSZW5kZXJlZEZlYXR1cmVzKHQsaSxvKXtpJiZpLmZpbHRlciYmdGhpcy5fdmFsaWRhdGUoZS52YWxpZGF0ZUZpbHRlcixcInF1ZXJ5UmVuZGVyZWRGZWF0dXJlcy5maWx0ZXJcIixpLmZpbHRlcixudWxsLGkpO2NvbnN0IHI9e307aWYoaSYmaS5sYXllcnMpe2lmKCFBcnJheS5pc0FycmF5KGkubGF5ZXJzKSlyZXR1cm4gdGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKFwicGFyYW1ldGVycy5sYXllcnMgbXVzdCBiZSBhbiBBcnJheS5cIikpKSxbXTtmb3IoY29uc3QgdCBvZiBpLmxheWVycyl7Y29uc3QgaT10aGlzLl9sYXllcnNbdF07aWYoIWkpcmV0dXJuIHRoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KG5ldyBFcnJvcihgVGhlIGxheWVyICcke3R9JyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUgYW5kIGNhbm5vdCBiZSBxdWVyaWVkIGZvciBmZWF0dXJlcy5gKSkpLFtdO3JbaS5zb3VyY2VdPSEwO319Y29uc3Qgbj1bXTtpLmF2YWlsYWJsZUltYWdlcz10aGlzLl9hdmFpbGFibGVJbWFnZXM7Y29uc3Qgcz1pJiZpLmxheWVycz9pLmxheWVycy5zb21lKChlPT57Y29uc3QgdD10aGlzLmdldExheWVyKGUpO3JldHVybiB0JiZ0LmlzM0QoKX0pKTp0aGlzLmhhczNETGF5ZXJzKCksYT1MLmNyZWF0ZUZyb21TY3JlZW5Qb2ludHModCxvKTtmb3IoY29uc3QgZSBpbiB0aGlzLl9zb3VyY2VDYWNoZXMpe2NvbnN0IHQ9dGhpcy5fc291cmNlQ2FjaGVzW2VdLmdldFNvdXJjZSgpLmlkO2kubGF5ZXJzJiYhclt0XXx8bi5wdXNoKEFlKHRoaXMuX3NvdXJjZUNhY2hlc1tlXSx0aGlzLl9sYXllcnMsdGhpcy5fc2VyaWFsaXplZExheWVycyxhLGksbyxzLCEhdGhpcy5tYXAuX3Nob3dRdWVyeUdlb21ldHJ5KSk7fXJldHVybiB0aGlzLnBsYWNlbWVudCYmbi5wdXNoKGZ1bmN0aW9uKGUsdCxpLG8scixuLHMpe2NvbnN0IGE9e30sbD1uLnF1ZXJ5UmVuZGVyZWRTeW1ib2xzKG8pLGM9W107Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXMobCkubWFwKE51bWJlcikpYy5wdXNoKHNbZV0pO2Muc29ydChSZSk7Zm9yKGNvbnN0IGkgb2YgYyl7Y29uc3Qgbz1pLmZlYXR1cmVJbmRleC5sb29rdXBTeW1ib2xGZWF0dXJlcyhsW2kuYnVja2V0SW5zdGFuY2VJZF0sdCxpLmJ1Y2tldEluZGV4LGkuc291cmNlTGF5ZXJJbmRleCxyLmZpbHRlcixyLmxheWVycyxyLmF2YWlsYWJsZUltYWdlcyxlKTtmb3IoY29uc3QgZSBpbiBvKXtjb25zdCB0PWFbZV09YVtlXXx8W10scj1vW2VdO3Iuc29ydCgoKGUsdCk9Pntjb25zdCBvPWkuZmVhdHVyZVNvcnRPcmRlcjtpZihvKXtjb25zdCBpPW8uaW5kZXhPZihlLmZlYXR1cmVJbmRleCk7cmV0dXJuIG8uaW5kZXhPZih0LmZlYXR1cmVJbmRleCktaX1yZXR1cm4gdC5mZWF0dXJlSW5kZXgtZS5mZWF0dXJlSW5kZXh9KSk7Zm9yKGNvbnN0IGUgb2Ygcil0LnB1c2goZSk7fX1mb3IoY29uc3QgdCBpbiBhKWFbdF0uZm9yRWFjaCgobz0+e2NvbnN0IHI9by5mZWF0dXJlLG49aShlW3RdKTtpZighbilyZXR1cm47Y29uc3Qgcz1uLmdldEZlYXR1cmVTdGF0ZShyLmxheWVyW1wic291cmNlLWxheWVyXCJdLHIuaWQpO3Iuc291cmNlPXIubGF5ZXIuc291cmNlLHIubGF5ZXJbXCJzb3VyY2UtbGF5ZXJcIl0mJihyLnNvdXJjZUxheWVyPXIubGF5ZXJbXCJzb3VyY2UtbGF5ZXJcIl0pLHIuc3RhdGU9czt9KSk7cmV0dXJuIGF9KHRoaXMuX2xheWVycyx0aGlzLl9zZXJpYWxpemVkTGF5ZXJzLHRoaXMuX2dldExheWVyU291cmNlQ2FjaGUuYmluZCh0aGlzKSxhLnNjcmVlbkdlb21ldHJ5LGksdGhpcy5wbGFjZW1lbnQuY29sbGlzaW9uSW5kZXgsdGhpcy5wbGFjZW1lbnQucmV0YWluZWRRdWVyeURhdGEpKSx0aGlzLl9mbGF0dGVuQW5kU29ydFJlbmRlcmVkRmVhdHVyZXMobil9cXVlcnlTb3VyY2VGZWF0dXJlcyh0LGkpe2kmJmkuZmlsdGVyJiZ0aGlzLl92YWxpZGF0ZShlLnZhbGlkYXRlRmlsdGVyLFwicXVlcnlTb3VyY2VGZWF0dXJlcy5maWx0ZXJcIixpLmZpbHRlcixudWxsLGkpO2NvbnN0IG89dGhpcy5fZ2V0U291cmNlQ2FjaGVzKHQpO2xldCByPVtdO2Zvcihjb25zdCBlIG9mIG8pcj1yLmNvbmNhdCh6ZShlLGkpKTtyZXR1cm4gcn1hZGRTb3VyY2VUeXBlKGUsdCxpKXtyZXR1cm4gS3QuZ2V0U291cmNlVHlwZShlKT9pKG5ldyBFcnJvcihgQSBzb3VyY2UgdHlwZSBjYWxsZWQgXCIke2V9XCIgYWxyZWFkeSBleGlzdHMuYCkpOihLdC5zZXRTb3VyY2VUeXBlKGUsdCksdC53b3JrZXJTb3VyY2VVUkw/dm9pZCB0aGlzLmRpc3BhdGNoZXIuYnJvYWRjYXN0KFwibG9hZFdvcmtlclNvdXJjZVwiLHtuYW1lOmUsdXJsOnQud29ya2VyU291cmNlVVJMfSxpKTppKG51bGwsbnVsbCkpfWdldExpZ2h0KCl7cmV0dXJuIHRoaXMubGlnaHQuZ2V0TGlnaHQoKX1zZXRMaWdodChlLGk9e30pe3RoaXMuX2NoZWNrTG9hZGVkKCk7Y29uc3Qgbz10aGlzLmxpZ2h0LmdldExpZ2h0KCk7bGV0IHI9ITE7Zm9yKGNvbnN0IGkgaW4gZSlpZighdChlW2ldLG9baV0pKXtyPSEwO2JyZWFrfWlmKCFyKXJldHVybjtjb25zdCBuPXRoaXMuX3NldFRyYW5zaXRpb25QYXJhbWV0ZXJzKHtkdXJhdGlvbjozMDAsZGVsYXk6MH0pO3RoaXMubGlnaHQuc2V0TGlnaHQoZSxpKSx0aGlzLmxpZ2h0LnVwZGF0ZVRyYW5zaXRpb25zKG4pO31nZXRUZXJyYWluKCl7cmV0dXJuIHRoaXMudGVycmFpbiYmMT09PXRoaXMudGVycmFpbi5kcmFwZVJlbmRlck1vZGU/dGhpcy50ZXJyYWluLmdldCgpOm51bGx9c2V0VGVycmFpbkZvckRyYXBpbmcoKXt0aGlzLnNldFRlcnJhaW4oe3NvdXJjZTpcIlwiLGV4YWdnZXJhdGlvbjowfSwwKTt9c2V0VGVycmFpbihpLG89MSl7aWYodGhpcy5fY2hlY2tMb2FkZWQoKSwhaSlyZXR1cm4gZGVsZXRlIHRoaXMudGVycmFpbixkZWxldGUgdGhpcy5zdHlsZXNoZWV0LnRlcnJhaW4sdGhpcy5kaXNwYXRjaGVyLmJyb2FkY2FzdChcImVuYWJsZVRlcnJhaW5cIiwhMSksdGhpcy5fZm9yY2UzRExheWVyVXBkYXRlKCksdm9pZCh0aGlzLl9tYXJrZXJzTmVlZFVwZGF0ZT0hMCk7bGV0IHI9aTtpZigxPT09byl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHIuc291cmNlKXtjb25zdCB0PVwidGVycmFpbi1kZW0tc3JjXCI7dGhpcy5hZGRTb3VyY2UodCxyLnNvdXJjZSkscj1lLmNsb25lJDEocikscj1lLmV4dGVuZChyLHtzb3VyY2U6dH0pO31pZih0aGlzLl92YWxpZGF0ZShlLnZhbGlkYXRlVGVycmFpbixcInRlcnJhaW5cIixyKSlyZXR1cm59aWYoIXRoaXMudGVycmFpbnx8dGhpcy50ZXJyYWluJiZvIT09dGhpcy50ZXJyYWluLmRyYXBlUmVuZGVyTW9kZSl7aWYoIXIpcmV0dXJuO3RoaXMuX2NyZWF0ZVRlcnJhaW4ocixvKTt9ZWxzZSB7Y29uc3QgaT10aGlzLnRlcnJhaW4sbz1pLmdldCgpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKGUuc3BlYy50ZXJyYWluKSkhci5oYXNPd25Qcm9wZXJ0eSh0KSYmZS5zcGVjLnRlcnJhaW5bdF0uZGVmYXVsdCYmKHJbdF09ZS5zcGVjLnRlcnJhaW5bdF0uZGVmYXVsdCk7Zm9yKGNvbnN0IGUgaW4gcilpZighdChyW2VdLG9bZV0pKXtpLnNldChyKSx0aGlzLnN0eWxlc2hlZXQudGVycmFpbj1yO2NvbnN0IGU9dGhpcy5fc2V0VHJhbnNpdGlvblBhcmFtZXRlcnMoe2R1cmF0aW9uOjB9KTtpLnVwZGF0ZVRyYW5zaXRpb25zKGUpO2JyZWFrfX10aGlzLl91cGRhdGVEcmFwZUZpcnN0TGF5ZXJzKCksdGhpcy5fbWFya2Vyc05lZWRVcGRhdGU9ITA7fV9jcmVhdGVGb2coZSl7Y29uc3QgdD10aGlzLmZvZz1uZXcgUChlLHRoaXMubWFwLnRyYW5zZm9ybSk7dGhpcy5zdHlsZXNoZWV0LmZvZz1lO2NvbnN0IGk9dGhpcy5fc2V0VHJhbnNpdGlvblBhcmFtZXRlcnMoe2R1cmF0aW9uOjB9KTt0LnVwZGF0ZVRyYW5zaXRpb25zKGkpO31fdXBkYXRlTWFya2Vyc09wYWNpdHkoKXswIT09dGhpcy5tYXAuX21hcmtlcnMubGVuZ3RoJiZ0aGlzLm1hcC5fcmVxdWVzdERvbVRhc2soKCgpPT57Zm9yKGNvbnN0IGUgb2YgdGhpcy5tYXAuX21hcmtlcnMpZS5fZXZhbHVhdGVPcGFjaXR5KCk7fSkpO31nZXRGb2coKXtyZXR1cm4gdGhpcy5mb2c/dGhpcy5mb2cuZ2V0KCk6bnVsbH1zZXRGb2coZSl7aWYodGhpcy5fY2hlY2tMb2FkZWQoKSwhZSlyZXR1cm4gZGVsZXRlIHRoaXMuZm9nLGRlbGV0ZSB0aGlzLnN0eWxlc2hlZXQuZm9nLHZvaWQodGhpcy5fbWFya2Vyc05lZWRVcGRhdGU9ITApO2lmKHRoaXMuZm9nKXtjb25zdCBpPXRoaXMuZm9nLG89aS5nZXQoKTswPT09T2JqZWN0LmtleXMoZSkubGVuZ3RoJiZpLnNldChlKTtmb3IoY29uc3QgciBpbiBlKWlmKCF0KGVbcl0sb1tyXSkpe2kuc2V0KGUpLHRoaXMuc3R5bGVzaGVldC5mb2c9ZTtjb25zdCB0PXRoaXMuX3NldFRyYW5zaXRpb25QYXJhbWV0ZXJzKHtkdXJhdGlvbjowfSk7aS51cGRhdGVUcmFuc2l0aW9ucyh0KTticmVha319ZWxzZSB0aGlzLl9jcmVhdGVGb2coZSk7dGhpcy5fbWFya2Vyc05lZWRVcGRhdGU9ITA7fV9zZXRUcmFuc2l0aW9uUGFyYW1ldGVycyh0KXtyZXR1cm4ge25vdzplLmV4cG9ydGVkLm5vdygpLHRyYW5zaXRpb246ZS5leHRlbmQodCx0aGlzLnN0eWxlc2hlZXQudHJhbnNpdGlvbil9fV91cGRhdGVEcmFwZUZpcnN0TGF5ZXJzKCl7aWYoIXRoaXMubWFwLl9vcHRpbWl6ZUZvclRlcnJhaW58fCF0aGlzLnRlcnJhaW4pcmV0dXJuO2NvbnN0IGU9dGhpcy5fb3JkZXIuZmlsdGVyKChlPT50aGlzLmlzTGF5ZXJEcmFwZWQodGhpcy5fbGF5ZXJzW2VdKSkpLHQ9dGhpcy5fb3JkZXIuZmlsdGVyKChlPT4hdGhpcy5pc0xheWVyRHJhcGVkKHRoaXMuX2xheWVyc1tlXSkpKTt0aGlzLl9kcmFwZWRGaXJzdE9yZGVyPVtdLHRoaXMuX2RyYXBlZEZpcnN0T3JkZXIucHVzaCguLi5lKSx0aGlzLl9kcmFwZWRGaXJzdE9yZGVyLnB1c2goLi4udCk7fV9jcmVhdGVUZXJyYWluKGUsdCl7Y29uc3QgaT10aGlzLnRlcnJhaW49bmV3IEUoZSx0KTt0aGlzLnN0eWxlc2hlZXQudGVycmFpbj1lLHRoaXMuZGlzcGF0Y2hlci5icm9hZGNhc3QoXCJlbmFibGVUZXJyYWluXCIsIXRoaXMudGVycmFpblNldEZvckRyYXBpbmdPbmx5KCkpLHRoaXMuX2ZvcmNlM0RMYXllclVwZGF0ZSgpO2NvbnN0IG89dGhpcy5fc2V0VHJhbnNpdGlvblBhcmFtZXRlcnMoe2R1cmF0aW9uOjB9KTtpLnVwZGF0ZVRyYW5zaXRpb25zKG8pO31fZm9yY2UzRExheWVyVXBkYXRlKCl7Zm9yKGNvbnN0IGUgaW4gdGhpcy5fbGF5ZXJzKXtjb25zdCB0PXRoaXMuX2xheWVyc1tlXTtcImZpbGwtZXh0cnVzaW9uXCI9PT10LnR5cGUmJnRoaXMuX3VwZGF0ZUxheWVyKHQpO319X2ZvcmNlU3ltYm9sTGF5ZXJVcGRhdGUoKXtmb3IoY29uc3QgZSBpbiB0aGlzLl9sYXllcnMpe2NvbnN0IHQ9dGhpcy5fbGF5ZXJzW2VdO1wic3ltYm9sXCI9PT10LnR5cGUmJnRoaXMuX3VwZGF0ZUxheWVyKHQpO319X3ZhbGlkYXRlKHQsaSxvLHIsbj17fSl7cmV0dXJuICghbnx8ITEhPT1uLnZhbGlkYXRlKSYmWHQodGhpcyx0LmNhbGwoZS52YWxpZGF0ZVN0eWxlLGUuZXh0ZW5kKHtrZXk6aSxzdHlsZTp0aGlzLnNlcmlhbGl6ZSgpLHZhbHVlOm8sc3R5bGVTcGVjOmUuc3BlY30scikpKX1fcmVtb3ZlKCl7dGhpcy5fcmVxdWVzdCYmKHRoaXMuX3JlcXVlc3QuY2FuY2VsKCksdGhpcy5fcmVxdWVzdD1udWxsKSx0aGlzLl9zcHJpdGVSZXF1ZXN0JiYodGhpcy5fc3ByaXRlUmVxdWVzdC5jYW5jZWwoKSx0aGlzLl9zcHJpdGVSZXF1ZXN0PW51bGwpLGUuZXZlbnRlZC5vZmYoXCJwbHVnaW5TdGF0ZUNoYW5nZVwiLHRoaXMuX3J0bFRleHRQbHVnaW5DYWxsYmFjayk7Zm9yKGNvbnN0IGUgaW4gdGhpcy5fbGF5ZXJzKXRoaXMuX2xheWVyc1tlXS5zZXRFdmVudGVkUGFyZW50KG51bGwpO2Zvcihjb25zdCBlIGluIHRoaXMuX3NvdXJjZUNhY2hlcyl0aGlzLl9zb3VyY2VDYWNoZXNbZV0uY2xlYXJUaWxlcygpLHRoaXMuX3NvdXJjZUNhY2hlc1tlXS5zZXRFdmVudGVkUGFyZW50KG51bGwpO3RoaXMuaW1hZ2VNYW5hZ2VyLnNldEV2ZW50ZWRQYXJlbnQobnVsbCksdGhpcy5zZXRFdmVudGVkUGFyZW50KG51bGwpLHRoaXMuZGlzcGF0Y2hlci5yZW1vdmUoKTt9X2NsZWFyU291cmNlKGUpe2NvbnN0IHQ9dGhpcy5fZ2V0U291cmNlQ2FjaGVzKGUpO2Zvcihjb25zdCBlIG9mIHQpZS5jbGVhclRpbGVzKCk7fV9yZWxvYWRTb3VyY2UoZSl7Y29uc3QgdD10aGlzLl9nZXRTb3VyY2VDYWNoZXMoZSk7Zm9yKGNvbnN0IGUgb2YgdCllLnJlc3VtZSgpLGUucmVsb2FkKCk7fV9yZWxvYWRTb3VyY2VzKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fZ2V0U291cmNlcygpKWUucmVsb2FkJiZlLnJlbG9hZCgpO31fdXBkYXRlU291cmNlcyhlKXtmb3IoY29uc3QgdCBpbiB0aGlzLl9zb3VyY2VDYWNoZXMpdGhpcy5fc291cmNlQ2FjaGVzW3RdLnVwZGF0ZShlKTt9X2dlbmVyYXRlQ29sbGlzaW9uQm94ZXMoKXtmb3IoY29uc3QgZSBpbiB0aGlzLl9zb3VyY2VDYWNoZXMpe2NvbnN0IHQ9dGhpcy5fc291cmNlQ2FjaGVzW2VdO3QucmVzdW1lKCksdC5yZWxvYWQoKTt9fV91cGRhdGVQbGFjZW1lbnQodCxpLG8scixuPSExKXtsZXQgcz0hMSxhPSExO2NvbnN0IGw9e307Zm9yKGNvbnN0IGUgb2YgdGhpcy5fb3JkZXIpe2NvbnN0IGk9dGhpcy5fbGF5ZXJzW2VdO2lmKFwic3ltYm9sXCIhPT1pLnR5cGUpY29udGludWU7aWYoIWxbaS5zb3VyY2VdKXtjb25zdCBlPXRoaXMuX2dldExheWVyU291cmNlQ2FjaGUoaSk7aWYoIWUpY29udGludWU7bFtpLnNvdXJjZV09ZS5nZXRSZW5kZXJhYmxlSWRzKCEwKS5tYXAoKHQ9PmUuZ2V0VGlsZUJ5SUQodCkpKS5zb3J0KCgoZSx0KT0+dC50aWxlSUQub3ZlcnNjYWxlZFotZS50aWxlSUQub3ZlcnNjYWxlZFp8fChlLnRpbGVJRC5pc0xlc3NUaGFuKHQudGlsZUlEKT8tMToxKSkpO31jb25zdCBvPXRoaXMuY3Jvc3NUaWxlU3ltYm9sSW5kZXguYWRkTGF5ZXIoaSxsW2kuc291cmNlXSx0LmNlbnRlci5sbmcsdC5wcm9qZWN0aW9uKTtzPXN8fG87fWlmKHRoaXMuY3Jvc3NUaWxlU3ltYm9sSW5kZXgucHJ1bmVVbnVzZWRMYXllcnModGhpcy5fb3JkZXIpLG49bnx8dGhpcy5fbGF5ZXJPcmRlckNoYW5nZWR8fDA9PT1vLHRoaXMuX2xheWVyT3JkZXJDaGFuZ2VkJiZ0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJuZXdvcmRlclwiKSksKG58fCF0aGlzLnBhdXNlYWJsZVBsYWNlbWVudHx8dGhpcy5wYXVzZWFibGVQbGFjZW1lbnQuaXNEb25lKCkmJiF0aGlzLnBsYWNlbWVudC5zdGlsbFJlY2VudChlLmV4cG9ydGVkLm5vdygpLHQuem9vbSkpJiYodGhpcy5wYXVzZWFibGVQbGFjZW1lbnQ9bmV3IE50KHQsdGhpcy5fb3JkZXIsbixpLG8scix0aGlzLnBsYWNlbWVudCx0aGlzLmZvZyYmdC5wcm9qZWN0aW9uLnN1cHBvcnRzRm9nP3RoaXMuZm9nLnN0YXRlOm51bGwpLHRoaXMuX2xheWVyT3JkZXJDaGFuZ2VkPSExKSx0aGlzLnBhdXNlYWJsZVBsYWNlbWVudC5pc0RvbmUoKT90aGlzLnBsYWNlbWVudC5zZXRTdGFsZSgpOih0aGlzLnBhdXNlYWJsZVBsYWNlbWVudC5jb250aW51ZVBsYWNlbWVudCh0aGlzLl9vcmRlcix0aGlzLl9sYXllcnMsbCksdGhpcy5wYXVzZWFibGVQbGFjZW1lbnQuaXNEb25lKCkmJih0aGlzLnBsYWNlbWVudD10aGlzLnBhdXNlYWJsZVBsYWNlbWVudC5jb21taXQoZS5leHBvcnRlZC5ub3coKSksYT0hMCkscyYmdGhpcy5wYXVzZWFibGVQbGFjZW1lbnQucGxhY2VtZW50LnNldFN0YWxlKCkpLGF8fHMpZm9yKGNvbnN0IGUgb2YgdGhpcy5fb3JkZXIpe2NvbnN0IHQ9dGhpcy5fbGF5ZXJzW2VdO1wic3ltYm9sXCI9PT10LnR5cGUmJnRoaXMucGxhY2VtZW50LnVwZGF0ZUxheWVyT3BhY2l0aWVzKHQsbFt0LnNvdXJjZV0pO31yZXR1cm4gIXRoaXMucGF1c2VhYmxlUGxhY2VtZW50LmlzRG9uZSgpfHx0aGlzLnBsYWNlbWVudC5oYXNUcmFuc2l0aW9ucyhlLmV4cG9ydGVkLm5vdygpKX1fcmVsZWFzZVN5bWJvbEZhZGVUaWxlcygpe2Zvcihjb25zdCBlIGluIHRoaXMuX3NvdXJjZUNhY2hlcyl0aGlzLl9zb3VyY2VDYWNoZXNbZV0ucmVsZWFzZVN5bWJvbEZhZGVUaWxlcygpO31nZXRJbWFnZXMoZSx0LGkpe3RoaXMuaW1hZ2VNYW5hZ2VyLmdldEltYWdlcyh0Lmljb25zLGkpLHRoaXMuX3VwZGF0ZVRpbGVzRm9yQ2hhbmdlZEltYWdlcygpO2NvbnN0IG89ZT0+e2UmJmUuc2V0RGVwZW5kZW5jaWVzKHQudGlsZUlELmtleSx0LnR5cGUsdC5pY29ucyk7fTtvKHRoaXMuX290aGVyU291cmNlQ2FjaGVzW3Quc291cmNlXSksbyh0aGlzLl9zeW1ib2xTb3VyY2VDYWNoZXNbdC5zb3VyY2VdKTt9Z2V0R2x5cGhzKGUsdCxpKXt0aGlzLmdseXBoTWFuYWdlci5nZXRHbHlwaHModC5zdGFja3MsaSk7fWdldFJlc291cmNlKHQsaSxvKXtyZXR1cm4gZS5tYWtlUmVxdWVzdChpLG8pfV9nZXRTb3VyY2VDYWNoZShlKXtyZXR1cm4gdGhpcy5fb3RoZXJTb3VyY2VDYWNoZXNbZV19X2dldExheWVyU291cmNlQ2FjaGUoZSl7cmV0dXJuIFwic3ltYm9sXCI9PT1lLnR5cGU/dGhpcy5fc3ltYm9sU291cmNlQ2FjaGVzW2Uuc291cmNlXTp0aGlzLl9vdGhlclNvdXJjZUNhY2hlc1tlLnNvdXJjZV19X2dldFNvdXJjZUNhY2hlcyhlKXtjb25zdCB0PVtdO3JldHVybiB0aGlzLl9vdGhlclNvdXJjZUNhY2hlc1tlXSYmdC5wdXNoKHRoaXMuX290aGVyU291cmNlQ2FjaGVzW2VdKSx0aGlzLl9zeW1ib2xTb3VyY2VDYWNoZXNbZV0mJnQucHVzaCh0aGlzLl9zeW1ib2xTb3VyY2VDYWNoZXNbZV0pLHR9X2lzU291cmNlQ2FjaGVMb2FkZWQodCl7Y29uc3QgaT10aGlzLl9nZXRTb3VyY2VDYWNoZXModCk7cmV0dXJuIDA9PT1pLmxlbmd0aD8odGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKGBUaGVyZSBpcyBubyBzb3VyY2Ugd2l0aCBJRCAnJHt0fSdgKSkpLCExKTppLmV2ZXJ5KChlPT5lLmxvYWRlZCgpKSl9aGFzM0RMYXllcnMoKXtyZXR1cm4gdGhpcy5fbnVtM0RMYXllcnM+MH1oYXNTeW1ib2xMYXllcnMoKXtyZXR1cm4gdGhpcy5fbnVtU3ltYm9sTGF5ZXJzPjB9aGFzQ2lyY2xlTGF5ZXJzKCl7cmV0dXJuIHRoaXMuX251bUNpcmNsZUxheWVycz4wfV9jbGVhcldvcmtlckNhY2hlcygpe3RoaXMuZGlzcGF0Y2hlci5icm9hZGNhc3QoXCJjbGVhckNhY2hlc1wiKTt9ZGVzdHJveSgpe3RoaXMuX2NsZWFyV29ya2VyQ2FjaGVzKCksdGhpcy50ZXJyYWluU2V0Rm9yRHJhcGluZ09ubHkoKSYmKGRlbGV0ZSB0aGlzLnRlcnJhaW4sZGVsZXRlIHRoaXMuc3R5bGVzaGVldC50ZXJyYWluKTt9fUt0LmdldFNvdXJjZVR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIFNlW2VdfSxLdC5zZXRTb3VyY2VUeXBlPWZ1bmN0aW9uKGUsdCl7U2VbZV09dDt9LEt0LnJlZ2lzdGVyRm9yUGx1Z2luU3RhdGVDaGFuZ2U9ZS5yZWdpc3RlckZvclBsdWdpblN0YXRlQ2hhbmdlO3ZhciBKdD1cIlxcbiNkZWZpbmUgRVBTSUxPTiAwLjAwMDAwMDFcXG4jZGVmaW5lIFBJIDMuMTQxNTkyNjUzNTg5NzkzXFxuI2RlZmluZSBFWFRFTlQgODE5Mi4wXFxuI2RlZmluZSBIQUxGX1BJIFBJLzIuMFxcbiNkZWZpbmUgUVVBUlRFUl9QSSBQSS80LjBcXG4jZGVmaW5lIFJBRF9UT19ERUcgMTgwLjAvUElcXG4jZGVmaW5lIERFR19UT19SQUQgUEkvMTgwLjBcXG4jZGVmaW5lIEdMT0JFX1JBRElVUyBFWFRFTlQvUEkvMi4wXCIsUXQ9XCJhdHRyaWJ1dGUgaGlnaHAgdmVjMyBhX3Bvc18zZjt1bmlmb3JtIGxvd3AgbWF0NCB1X21hdHJpeDt2YXJ5aW5nIGhpZ2hwIHZlYzMgdl91djt2b2lkIG1haW4oKSB7Y29uc3QgbWF0MyBoYWxmX25lZ19waV9hcm91bmRfeD1tYXQzKDEuMCwwLjAsIDAuMCwwLjAsMC4wLC0xLjAsMC4wLDEuMCwgMC4wKTt2X3V2PWhhbGZfbmVnX3BpX2Fyb3VuZF94KmFfcG9zXzNmO3ZlYzQgcG9zPXVfbWF0cml4KnZlYzQoYV9wb3NfM2YsMS4wKTtnbF9Qb3NpdGlvbj1wb3MueHl3dzt9XCIsZWk9XCJcXG4jZGVmaW5lIEVMRVZBVElPTl9TQ0FMRSA3LjBcXG4jZGVmaW5lIEVMRVZBVElPTl9PRkZTRVQgNDUwLjBcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxudW5pZm9ybSB2ZWMzIHVfdGlsZV90bF91cDt1bmlmb3JtIHZlYzMgdV90aWxlX3RyX3VwO3VuaWZvcm0gdmVjMyB1X3RpbGVfYnJfdXA7dW5pZm9ybSB2ZWMzIHVfdGlsZV9ibF91cDt1bmlmb3JtIGZsb2F0IHVfdGlsZV91cF9zY2FsZTt2ZWMzIGVsZXZhdGlvblZlY3Rvcih2ZWMyIHBvcykge3ZlYzIgdXY9cG9zL0VYVEVOVDt2ZWMzIHVwPW5vcm1hbGl6ZShtaXgoXFxubWl4KHVfdGlsZV90bF91cCx1X3RpbGVfdHJfdXAsdXYueHh4KSxtaXgodV90aWxlX2JsX3VwLHVfdGlsZV9icl91cCx1di54eHgpLHV2Lnl5eSkpO3JldHVybiB1cCp1X3RpbGVfdXBfc2NhbGU7fVxcbiNlbHNlXFxudmVjMyBlbGV2YXRpb25WZWN0b3IodmVjMiBwb3MpIHsgcmV0dXJuIHZlYzMoMCwwLDEpOyB9XFxuI2VuZGlmXFxuY29uc3QgZmxvYXQgc2tpcnRPZmZzZXQ9MjQ1NzUuMDt2ZWMzIGRlY29tcG9zZVRvUG9zQW5kU2tpcnQodmVjMiBwb3NXaXRoQ29tcG9zZWRTa2lydClcXG57ZmxvYXQgc2tpcnQ9ZmxvYXQocG9zV2l0aENvbXBvc2VkU2tpcnQueCA+PXNraXJ0T2Zmc2V0KTt2ZWMyIHBvcz1wb3NXaXRoQ29tcG9zZWRTa2lydC12ZWMyKHNraXJ0KnNraXJ0T2Zmc2V0LDAuMCk7cmV0dXJuIHZlYzMocG9zLHNraXJ0KTt9XFxuI2lmZGVmIFRFUlJBSU5cXG4jaWZkZWYgVEVSUkFJTl9ERU1fRkxPQVRfRk9STUFUXFxudW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgdV9kZW07dW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgdV9kZW1fcHJldjtcXG4jZWxzZVxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfZGVtO3VuaWZvcm0gc2FtcGxlcjJEIHVfZGVtX3ByZXY7XFxuI2VuZGlmXFxudW5pZm9ybSB2ZWM0IHVfZGVtX3VucGFjazt1bmlmb3JtIHZlYzIgdV9kZW1fdGw7dW5pZm9ybSB2ZWMyIHVfZGVtX3RsX3ByZXY7dW5pZm9ybSBmbG9hdCB1X2RlbV9zY2FsZTt1bmlmb3JtIGZsb2F0IHVfZGVtX3NjYWxlX3ByZXY7dW5pZm9ybSBmbG9hdCB1X2RlbV9zaXplO3VuaWZvcm0gZmxvYXQgdV9kZW1fbGVycDt1bmlmb3JtIGZsb2F0IHVfZXhhZ2dlcmF0aW9uO3VuaWZvcm0gZmxvYXQgdV9tZXRlcl90b19kZW07dW5pZm9ybSBtYXQ0IHVfbGFiZWxfcGxhbmVfbWF0cml4X2ludjt1bmlmb3JtIHNhbXBsZXIyRCB1X2RlcHRoO3VuaWZvcm0gdmVjMiB1X2RlcHRoX3NpemVfaW52O3ZlYzQgdGlsZVV2VG9EZW1TYW1wbGUodmVjMiB1dixmbG9hdCBkZW1fc2l6ZSxmbG9hdCBkZW1fc2NhbGUsdmVjMiBkZW1fdGwpIHt2ZWMyIHBvcz1kZW1fc2l6ZSoodXYqZGVtX3NjYWxlK2RlbV90bCkrMS4wO3ZlYzIgZj1mcmFjdChwb3MpO3JldHVybiB2ZWM0KChwb3MtZiswLjUpLyhkZW1fc2l6ZSsyLjApLGYpO31mbG9hdCBkZWNvZGVFbGV2YXRpb24odmVjNCB2KSB7cmV0dXJuIGRvdCh2ZWM0KHYueHl6KjI1NS4wLC0xLjApLHVfZGVtX3VucGFjayk7fWZsb2F0IGN1cnJlbnRFbGV2YXRpb24odmVjMiBhcG9zKSB7XFxuI2lmZGVmIFRFUlJBSU5fREVNX0ZMT0FUX0ZPUk1BVFxcbnZlYzIgcG9zPSh1X2RlbV9zaXplKihhcG9zLzgxOTIuMCp1X2RlbV9zY2FsZSt1X2RlbV90bCkrMS41KS8odV9kZW1fc2l6ZSsyLjApO3JldHVybiB1X2V4YWdnZXJhdGlvbip0ZXh0dXJlMkQodV9kZW0scG9zKS5hO1xcbiNlbHNlXFxuZmxvYXQgZGQ9MS4wLyh1X2RlbV9zaXplKzIuMCk7dmVjNCByPXRpbGVVdlRvRGVtU2FtcGxlKGFwb3MvODE5Mi4wLHVfZGVtX3NpemUsdV9kZW1fc2NhbGUsdV9kZW1fdGwpO3ZlYzIgcG9zPXIueHk7dmVjMiBmPXIuenc7ZmxvYXQgdGw9ZGVjb2RlRWxldmF0aW9uKHRleHR1cmUyRCh1X2RlbSxwb3MpKTtcXG4jaWZkZWYgVEVSUkFJTl9ERU1fTkVBUkVTVF9GSUxURVJcXG5yZXR1cm4gdV9leGFnZ2VyYXRpb24qdGw7XFxuI2VuZGlmXFxuZmxvYXQgdHI9ZGVjb2RlRWxldmF0aW9uKHRleHR1cmUyRCh1X2RlbSxwb3MrdmVjMihkZCwwLjApKSk7ZmxvYXQgYmw9ZGVjb2RlRWxldmF0aW9uKHRleHR1cmUyRCh1X2RlbSxwb3MrdmVjMigwLjAsZGQpKSk7ZmxvYXQgYnI9ZGVjb2RlRWxldmF0aW9uKHRleHR1cmUyRCh1X2RlbSxwb3MrdmVjMihkZCxkZCkpKTtyZXR1cm4gdV9leGFnZ2VyYXRpb24qbWl4KG1peCh0bCx0cixmLngpLG1peChibCxicixmLngpLGYueSk7XFxuI2VuZGlmXFxufWZsb2F0IHByZXZFbGV2YXRpb24odmVjMiBhcG9zKSB7XFxuI2lmZGVmIFRFUlJBSU5fREVNX0ZMT0FUX0ZPUk1BVFxcbnZlYzIgcG9zPSh1X2RlbV9zaXplKihhcG9zLzgxOTIuMCp1X2RlbV9zY2FsZV9wcmV2K3VfZGVtX3RsX3ByZXYpKzEuNSkvKHVfZGVtX3NpemUrMi4wKTtyZXR1cm4gdV9leGFnZ2VyYXRpb24qdGV4dHVyZTJEKHVfZGVtX3ByZXYscG9zKS5hO1xcbiNlbHNlXFxuZmxvYXQgZGQ9MS4wLyh1X2RlbV9zaXplKzIuMCk7dmVjNCByPXRpbGVVdlRvRGVtU2FtcGxlKGFwb3MvODE5Mi4wLHVfZGVtX3NpemUsdV9kZW1fc2NhbGVfcHJldix1X2RlbV90bF9wcmV2KTt2ZWMyIHBvcz1yLnh5O3ZlYzIgZj1yLnp3O2Zsb2F0IHRsPWRlY29kZUVsZXZhdGlvbih0ZXh0dXJlMkQodV9kZW1fcHJldixwb3MpKTtmbG9hdCB0cj1kZWNvZGVFbGV2YXRpb24odGV4dHVyZTJEKHVfZGVtX3ByZXYscG9zK3ZlYzIoZGQsMC4wKSkpO2Zsb2F0IGJsPWRlY29kZUVsZXZhdGlvbih0ZXh0dXJlMkQodV9kZW1fcHJldixwb3MrdmVjMigwLjAsZGQpKSk7ZmxvYXQgYnI9ZGVjb2RlRWxldmF0aW9uKHRleHR1cmUyRCh1X2RlbV9wcmV2LHBvcyt2ZWMyKGRkLGRkKSkpO3JldHVybiB1X2V4YWdnZXJhdGlvbiptaXgobWl4KHRsLHRyLGYueCksbWl4KGJsLGJyLGYueCksZi55KTtcXG4jZW5kaWZcXG59XFxuI2lmZGVmIFRFUlJBSU5fVkVSVEVYX01PUlBISU5HXFxuZmxvYXQgZWxldmF0aW9uKHZlYzIgYXBvcykge1xcbiNpZmRlZiBaRVJPX0VYQUdHRVJBVElPTlxcbnJldHVybiAwLjA7XFxuI2VuZGlmXFxuZmxvYXQgbmV4dEVsZXZhdGlvbj1jdXJyZW50RWxldmF0aW9uKGFwb3MpO2Zsb2F0IHByZXZFbGV2YXRpb249cHJldkVsZXZhdGlvbihhcG9zKTtyZXR1cm4gbWl4KHByZXZFbGV2YXRpb24sbmV4dEVsZXZhdGlvbix1X2RlbV9sZXJwKTt9XFxuI2Vsc2VcXG5mbG9hdCBlbGV2YXRpb24odmVjMiBhcG9zKSB7XFxuI2lmZGVmIFpFUk9fRVhBR0dFUkFUSU9OXFxucmV0dXJuIDAuMDtcXG4jZW5kaWZcXG5yZXR1cm4gY3VycmVudEVsZXZhdGlvbihhcG9zKTt9XFxuI2VuZGlmXFxuaGlnaHAgZmxvYXQgdW5wYWNrX2RlcHRoKGhpZ2hwIHZlYzQgcmdiYV9kZXB0aClcXG57Y29uc3QgaGlnaHAgdmVjNCBiaXRfc2hpZnQ9dmVjNCgxLjAvKDI1NS4wKjI1NS4wKjI1NS4wKSwxLjAvKDI1NS4wKjI1NS4wKSwxLjAvMjU1LjAsMS4wKTtyZXR1cm4gZG90KHJnYmFfZGVwdGgsYml0X3NoaWZ0KSoyLjAtMS4wO31ib29sIGlzT2NjbHVkZWQodmVjNCBmcmFnKSB7dmVjMyBjb29yZD1mcmFnLnh5ei9mcmFnLnc7ZmxvYXQgZGVwdGg9dW5wYWNrX2RlcHRoKHRleHR1cmUyRCh1X2RlcHRoLChjb29yZC54eSsxLjApKjAuNSkpO3JldHVybiBjb29yZC56ID4gZGVwdGgrMC4wMDA1O31mbG9hdCBvY2NsdXNpb25GYWRlKHZlYzQgZnJhZykge3ZlYzMgY29vcmQ9ZnJhZy54eXovZnJhZy53O3ZlYzMgZGY9dmVjMyg1LjAqdV9kZXB0aF9zaXplX2ludiwwLjApO3ZlYzIgdXY9MC41KmNvb3JkLnh5KzAuNTt2ZWM0IGRlcHRoPXZlYzQoXFxudW5wYWNrX2RlcHRoKHRleHR1cmUyRCh1X2RlcHRoLHV2LWRmLnh6KSksdW5wYWNrX2RlcHRoKHRleHR1cmUyRCh1X2RlcHRoLHV2K2RmLnh6KSksdW5wYWNrX2RlcHRoKHRleHR1cmUyRCh1X2RlcHRoLHV2LWRmLnp5KSksdW5wYWNrX2RlcHRoKHRleHR1cmUyRCh1X2RlcHRoLHV2K2RmLnp5KSlcXG4pO3JldHVybiBkb3QodmVjNCgwLjI1KSx2ZWM0KDEuMCktY2xhbXAoMzAwLjAqKHZlYzQoY29vcmQuei0wLjAwMSktZGVwdGgpLDAuMCwxLjApKTt9dmVjNCBmb3VyU2FtcGxlKHZlYzIgcG9zLHZlYzIgb2ZmKSB7XFxuI2lmZGVmIFRFUlJBSU5fREVNX0ZMT0FUX0ZPUk1BVFxcbmZsb2F0IHRsPXRleHR1cmUyRCh1X2RlbSxwb3MpLmE7ZmxvYXQgdHI9dGV4dHVyZTJEKHVfZGVtLHBvcyt2ZWMyKG9mZi54LDAuMCkpLmE7ZmxvYXQgYmw9dGV4dHVyZTJEKHVfZGVtLHBvcyt2ZWMyKDAuMCxvZmYueSkpLmE7ZmxvYXQgYnI9dGV4dHVyZTJEKHVfZGVtLHBvcytvZmYpLmE7XFxuI2Vsc2VcXG52ZWM0IGRlbXRsPXZlYzQodGV4dHVyZTJEKHVfZGVtLHBvcykueHl6KjI1NS4wLC0xLjApO2Zsb2F0IHRsPWRvdChkZW10bCx1X2RlbV91bnBhY2spO3ZlYzQgZGVtdHI9dmVjNCh0ZXh0dXJlMkQodV9kZW0scG9zK3ZlYzIob2ZmLngsMC4wKSkueHl6KjI1NS4wLC0xLjApO2Zsb2F0IHRyPWRvdChkZW10cix1X2RlbV91bnBhY2spO3ZlYzQgZGVtYmw9dmVjNCh0ZXh0dXJlMkQodV9kZW0scG9zK3ZlYzIoMC4wLG9mZi55KSkueHl6KjI1NS4wLC0xLjApO2Zsb2F0IGJsPWRvdChkZW1ibCx1X2RlbV91bnBhY2spO3ZlYzQgZGVtYnI9dmVjNCh0ZXh0dXJlMkQodV9kZW0scG9zK29mZikueHl6KjI1NS4wLC0xLjApO2Zsb2F0IGJyPWRvdChkZW1icix1X2RlbV91bnBhY2spO1xcbiNlbmRpZlxcbnJldHVybiB2ZWM0KHRsLHRyLGJsLGJyKTt9ZmxvYXQgZmxhdEVsZXZhdGlvbih2ZWMyIHBhY2spIHt2ZWMyIGFwb3M9Zmxvb3IocGFjay84LjApO3ZlYzIgc3Bhbj0xMC4wKihwYWNrLWFwb3MqOC4wKTt2ZWMyIHV2VGV4PShhcG9zLXZlYzIoMS4wLDEuMCkpLzgxOTAuMDtmbG9hdCBzaXplPXVfZGVtX3NpemUrMi4wO2Zsb2F0IGRkPTEuMC9zaXplO3ZlYzIgcG9zPXVfZGVtX3NpemUqKHV2VGV4KnVfZGVtX3NjYWxlK3VfZGVtX3RsKSsxLjA7dmVjMiBmPWZyYWN0KHBvcyk7cG9zPShwb3MtZiswLjUpKmRkO3ZlYzQgaD1mb3VyU2FtcGxlKHBvcyx2ZWMyKGRkKSk7ZmxvYXQgej1taXgobWl4KGgueCxoLnksZi54KSxtaXgoaC56LGgudyxmLngpLGYueSk7dmVjMiB3PWZsb29yKDAuNSooc3Bhbip1X21ldGVyX3RvX2RlbS0xLjApKTt2ZWMyIGQ9ZGQqdztoPWZvdXJTYW1wbGUocG9zLWQsMi4wKmQrdmVjMihkZCkpO3ZlYzQgZGlmZj1hYnMoaC54enh5LWgueXd6dyk7dmVjMiBzbG9wZT1taW4odmVjMigwLjI1KSx1X21ldGVyX3RvX2RlbSowLjUqKGRpZmYueHorZGlmZi55dykvKDIuMCp3K3ZlYzIoMS4wKSkpO3ZlYzIgZml4PXNsb3BlKnNwYW47ZmxvYXQgYmFzZT16K21heChmaXgueCxmaXgueSk7cmV0dXJuIHVfZXhhZ2dlcmF0aW9uKmJhc2U7fWZsb2F0IGVsZXZhdGlvbkZyb21VaW50MTYoZmxvYXQgd29yZCkge3JldHVybiB1X2V4YWdnZXJhdGlvbiood29yZC9FTEVWQVRJT05fU0NBTEUtRUxFVkFUSU9OX09GRlNFVCk7fVxcbiNlbHNlXFxuZmxvYXQgZWxldmF0aW9uKHZlYzIgcG9zKSB7IHJldHVybiAwLjA7IH1ib29sIGlzT2NjbHVkZWQodmVjNCBmcmFnKSB7IHJldHVybiBmYWxzZTsgfWZsb2F0IG9jY2x1c2lvbkZhZGUodmVjNCBmcmFnKSB7IHJldHVybiAxLjA7IH1cXG4jZW5kaWZcIix0aT1cIiNpZmRlZiBGT0dcXG51bmlmb3JtIG1lZGl1bXAgdmVjNCB1X2ZvZ19jb2xvcjt1bmlmb3JtIG1lZGl1bXAgdmVjMiB1X2ZvZ19yYW5nZTt1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdV9mb2dfaG9yaXpvbl9ibGVuZDt1bmlmb3JtIG1lZGl1bXAgbWF0NCB1X2ZvZ19tYXRyaXg7dmFyeWluZyB2ZWMzIHZfZm9nX3BvcztmbG9hdCBmb2dfcmFuZ2UoZmxvYXQgZGVwdGgpIHtyZXR1cm4gKGRlcHRoLXVfZm9nX3JhbmdlWzBdKS8odV9mb2dfcmFuZ2VbMV0tdV9mb2dfcmFuZ2VbMF0pO31mbG9hdCBmb2dfaG9yaXpvbl9ibGVuZGluZyh2ZWMzIGNhbWVyYV9kaXIpIHtmbG9hdCB0PW1heCgwLjAsY2FtZXJhX2Rpci56L3VfZm9nX2hvcml6b25fYmxlbmQpO3JldHVybiB1X2ZvZ19jb2xvci5hKmV4cCgtMy4wKnQqdCk7fWZsb2F0IGZvZ19vcGFjaXR5KGZsb2F0IHQpIHtjb25zdCBmbG9hdCBkZWNheT02LjA7ZmxvYXQgZmFsbG9mZj0xLjAtbWluKDEuMCxleHAoLWRlY2F5KnQpKTtmYWxsb2ZmKj1mYWxsb2ZmKmZhbGxvZmY7cmV0dXJuIHVfZm9nX2NvbG9yLmEqbWluKDEuMCwxLjAwNzQ3KmZhbGxvZmYpO312ZWMzIGZvZ19wb3NpdGlvbih2ZWMzIHBvcykge3JldHVybiAodV9mb2dfbWF0cml4KnZlYzQocG9zLDEuMCkpLnh5ejt9dmVjMyBmb2dfcG9zaXRpb24odmVjMiBwb3MpIHtyZXR1cm4gZm9nX3Bvc2l0aW9uKHZlYzMocG9zLDAuMCkpO31mbG9hdCBmb2codmVjMyBwb3MpIHtmbG9hdCBkZXB0aD1sZW5ndGgocG9zKTtmbG9hdCBvcGFjaXR5PWZvZ19vcGFjaXR5KGZvZ19yYW5nZShkZXB0aCkpO3JldHVybiBvcGFjaXR5KmZvZ19ob3Jpem9uX2JsZW5kaW5nKHBvcy9kZXB0aCk7fVxcbiNlbmRpZlwiLGlpPVwiI2lmZGVmIEZPR1xcbnVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVfZm9nX2NvbG9yO3VuaWZvcm0gbWVkaXVtcCB2ZWMyIHVfZm9nX3JhbmdlO3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1X2ZvZ19ob3Jpem9uX2JsZW5kO3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1X2ZvZ190ZW1wb3JhbF9vZmZzZXQ7dmFyeWluZyB2ZWMzIHZfZm9nX3Bvczt1bmlmb3JtIGhpZ2hwIHZlYzMgdV9mcnVzdHVtX3RsO3VuaWZvcm0gaGlnaHAgdmVjMyB1X2ZydXN0dW1fdHI7dW5pZm9ybSBoaWdocCB2ZWMzIHVfZnJ1c3R1bV9icjt1bmlmb3JtIGhpZ2hwIHZlYzMgdV9mcnVzdHVtX2JsO3VuaWZvcm0gaGlnaHAgdmVjMyB1X2dsb2JlX3Bvczt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfZ2xvYmVfcmFkaXVzO3VuaWZvcm0gaGlnaHAgdmVjMiB1X3ZpZXdwb3J0O3VuaWZvcm0gZmxvYXQgdV9nbG9iZV90cmFuc2l0aW9uO3VuaWZvcm0gaW50IHVfaXNfZ2xvYmU7ZmxvYXQgZm9nX3JhbmdlKGZsb2F0IGRlcHRoKSB7cmV0dXJuIChkZXB0aC11X2ZvZ19yYW5nZVswXSkvKHVfZm9nX3JhbmdlWzFdLXVfZm9nX3JhbmdlWzBdKTt9ZmxvYXQgZm9nX2hvcml6b25fYmxlbmRpbmcodmVjMyBjYW1lcmFfZGlyKSB7ZmxvYXQgdD1tYXgoMC4wLGNhbWVyYV9kaXIuei91X2ZvZ19ob3Jpem9uX2JsZW5kKTtyZXR1cm4gdV9mb2dfY29sb3IuYSpleHAoLTMuMCp0KnQpO31mbG9hdCBmb2dfb3BhY2l0eShmbG9hdCB0KSB7Y29uc3QgZmxvYXQgZGVjYXk9Ni4wO2Zsb2F0IGZhbGxvZmY9MS4wLW1pbigxLjAsZXhwKC1kZWNheSp0KSk7ZmFsbG9mZio9ZmFsbG9mZipmYWxsb2ZmO3JldHVybiB1X2ZvZ19jb2xvci5hKm1pbigxLjAsMS4wMDc0NypmYWxsb2ZmKTt9ZmxvYXQgZ2xvYmVfZ2xvd19wcm9ncmVzcygpIHtoaWdocCB2ZWMyIHV2PWdsX0ZyYWdDb29yZC54eS91X3ZpZXdwb3J0O2hpZ2hwIHZlYzMgcmF5X2Rpcj1taXgoXFxubWl4KHVfZnJ1c3R1bV90bCx1X2ZydXN0dW1fdHIsdXYueCksbWl4KHVfZnJ1c3R1bV9ibCx1X2ZydXN0dW1fYnIsdXYueCksMS4wLXV2LnkpO2hpZ2hwIHZlYzMgZGlyPW5vcm1hbGl6ZShyYXlfZGlyKTtoaWdocCB2ZWMzIGNsb3Nlc3RfcG9pbnQ9ZG90KHVfZ2xvYmVfcG9zLGRpcikqZGlyO2hpZ2hwIGZsb2F0IHNkZj1sZW5ndGgoY2xvc2VzdF9wb2ludC11X2dsb2JlX3BvcykvdV9nbG9iZV9yYWRpdXM7cmV0dXJuIHNkZitQSSowLjU7fWZsb2F0IGZvZ19vcGFjaXR5KHZlYzMgcG9zKSB7ZmxvYXQgZGVwdGg9bGVuZ3RoKHBvcyk7cmV0dXJuIGZvZ19vcGFjaXR5KGZvZ19yYW5nZShkZXB0aCkpO312ZWMzIGZvZ19hcHBseSh2ZWMzIGNvbG9yLHZlYzMgcG9zKSB7ZmxvYXQgZGVwdGg9bGVuZ3RoKHBvcyk7ZmxvYXQgb3BhY2l0eTtpZiAodV9pc19nbG9iZT09MSkge2Zsb2F0IGdsb3dfcHJvZ3Jlc3M9Z2xvYmVfZ2xvd19wcm9ncmVzcygpO2Zsb2F0IHQ9bWl4KGdsb3dfcHJvZ3Jlc3MsZGVwdGgsdV9nbG9iZV90cmFuc2l0aW9uKTtvcGFjaXR5PWZvZ19vcGFjaXR5KGZvZ19yYW5nZSh0KSk7fSBlbHNlIHtvcGFjaXR5PWZvZ19vcGFjaXR5KGZvZ19yYW5nZShkZXB0aCkpO29wYWNpdHkqPWZvZ19ob3Jpem9uX2JsZW5kaW5nKHBvcy9kZXB0aCk7fXJldHVybiBtaXgoY29sb3IsdV9mb2dfY29sb3IucmdiLG9wYWNpdHkpO312ZWM0IGZvZ19hcHBseV9mcm9tX3ZlcnQodmVjNCBjb2xvcixmbG9hdCBmb2dfb3BhYykge2Zsb2F0IGFscGhhPUVQU0lMT04rY29sb3IuYTtjb2xvci5yZ2I9bWl4KGNvbG9yLnJnYi9hbHBoYSx1X2ZvZ19jb2xvci5yZ2IsZm9nX29wYWMpKmFscGhhO3JldHVybiBjb2xvcjt9dmVjMyBmb2dfYXBwbHlfc2t5X2dyYWRpZW50KHZlYzMgY2FtZXJhX3JheSx2ZWMzIHNreV9jb2xvcikge2Zsb2F0IGhvcml6b25fYmxlbmQ9Zm9nX2hvcml6b25fYmxlbmRpbmcobm9ybWFsaXplKGNhbWVyYV9yYXkpKTtyZXR1cm4gbWl4KHNreV9jb2xvcix1X2ZvZ19jb2xvci5yZ2IsaG9yaXpvbl9ibGVuZCk7fXZlYzQgZm9nX2FwcGx5X3ByZW11bHRpcGxpZWQodmVjNCBjb2xvcix2ZWMzIHBvcykge2Zsb2F0IGFscGhhPUVQU0lMT04rY29sb3IuYTtjb2xvci5yZ2I9Zm9nX2FwcGx5KGNvbG9yLnJnYi9hbHBoYSxwb3MpKmFscGhhO3JldHVybiBjb2xvcjt9dmVjMyBmb2dfZGl0aGVyKHZlYzMgY29sb3IpIHt2ZWMyIGRpdGhlcl9zZWVkPWdsX0ZyYWdDb29yZC54eSt1X2ZvZ190ZW1wb3JhbF9vZmZzZXQ7cmV0dXJuIGRpdGhlcihjb2xvcixkaXRoZXJfc2VlZCk7fXZlYzQgZm9nX2RpdGhlcih2ZWM0IGNvbG9yKSB7cmV0dXJuIHZlYzQoZm9nX2RpdGhlcihjb2xvci5yZ2IpLGNvbG9yLmEpO31cXG4jZW5kaWZcIjtsZXQgb2k9e30scmk9e307Y29uc3Qgbmk9W107aGkoSnQsbmkpLGhpKGVpLG5pKSxoaSh0aSxuaSksaGkoaWksbmkpLG9pPXVpKFwiXCIsZWkpLHJpPXVpKGlpLHRpKTtjb25zdCBzaT11aShcIlxcbiNpZiBfX1ZFUlNJT05fXyA+PTMwMFxcbiNkZWZpbmUgdmFyeWluZyBpblxcbiNkZWZpbmUgZ2xfRnJhZ0NvbG9yIGdsRnJhZ0NvbG9yXFxuI2RlZmluZSB0ZXh0dXJlMkQgdGV4dHVyZVxcbiNkZWZpbmUgdGV4dHVyZUN1YmUgdGV4dHVyZVxcbm91dCB2ZWM0IGdsRnJhZ0NvbG9yO1xcbiNlbmRpZlxcbmhpZ2hwIHZlYzMgaGFzaChoaWdocCB2ZWMyIHApIHtoaWdocCB2ZWMzIHAzPWZyYWN0KHAueHl4KnZlYzMoNDQzLjg5NzUsMzk3LjI5NzMsNDkxLjE4NzEpKTtwMys9ZG90KHAzLHAzLnl4eisxOS4xOSk7cmV0dXJuIGZyYWN0KChwMy54eHkrcDMueXp6KSpwMy56eXgpO312ZWMzIGRpdGhlcih2ZWMzIGNvbG9yLGhpZ2hwIHZlYzIgc2VlZCkge3ZlYzMgcm5kPWhhc2goc2VlZCkraGFzaChzZWVkKzAuNTkzNzQpLTAuNTtyZXR1cm4gY29sb3Ircm5kLzI1NS4wO31oaWdocCBmbG9hdCB1bnBhY2tfZGVwdGgoaGlnaHAgdmVjNCByZ2JhX2RlcHRoKVxcbntjb25zdCBoaWdocCB2ZWM0IGJpdF9zaGlmdD12ZWM0KDEuMC8oMjU1LjAqMjU1LjAqMjU1LjApLDEuMC8oMjU1LjAqMjU1LjApLDEuMC8yNTUuMCwxLjApO3JldHVybiBkb3QocmdiYV9kZXB0aCxiaXRfc2hpZnQpKjIuMC0xLjA7fWhpZ2hwIHZlYzQgcGFja19kZXB0aChoaWdocCBmbG9hdCBuZGNfeikge2hpZ2hwIGZsb2F0IGRlcHRoPW5kY196KjAuNSswLjU7Y29uc3QgaGlnaHAgdmVjNCBiaXRfc2hpZnQ9dmVjNCgyNTUuMCoyNTUuMCoyNTUuMCwyNTUuMCoyNTUuMCwyNTUuMCwxLjApO2NvbnN0IGhpZ2hwIHZlYzQgYml0X21hc2sgPXZlYzQoMC4wLDEuMC8yNTUuMCwxLjAvMjU1LjAsMS4wLzI1NS4wKTtoaWdocCB2ZWM0IHJlcz1mcmFjdChkZXB0aCpiaXRfc2hpZnQpO3Jlcy09cmVzLnh4eXoqYml0X21hc2s7cmV0dXJuIHJlczt9XCIsXCJcXG4jaWYgX19WRVJTSU9OX18gPj0zMDBcXG4jZGVmaW5lIGF0dHJpYnV0ZSBpblxcbiNkZWZpbmUgdmFyeWluZyBvdXRcXG4jZGVmaW5lIHRleHR1cmUyRCB0ZXh0dXJlXFxuI2VuZGlmXFxuZmxvYXQgd3JhcChmbG9hdCBuLGZsb2F0IG1pbixmbG9hdCBtYXgpIHtmbG9hdCBkPW1heC1taW47ZmxvYXQgdz1tb2QobW9kKG4tbWluLGQpK2QsZCkrbWluO3JldHVybiAodz09bWluKSA/IG1heCA6IHc7fVxcbiNpZmRlZiBQUk9KRUNUSU9OX0dMT0JFX1ZJRVdcXG52ZWMzIG1lcmNhdG9yX3RpbGVfcG9zaXRpb24obWF0NCBtYXRyaXgsdmVjMiB0aWxlX2FuY2hvcix2ZWMzIHRpbGVfaWQsdmVjMiBtZXJjYXRvcl9jZW50ZXIpIHtcXG4jaWZuZGVmIFBST0pFQ1RFRF9QT1NfT05fVklFV1BPUlRcXG5mbG9hdCB0aWxlcz10aWxlX2lkLno7dmVjMiBtZXJjYXRvcj0odGlsZV9hbmNob3IvRVhURU5UK3RpbGVfaWQueHkpL3RpbGVzO21lcmNhdG9yLT1tZXJjYXRvcl9jZW50ZXI7bWVyY2F0b3IueD13cmFwKG1lcmNhdG9yLngsLTAuNSwwLjUpO3ZlYzQgbWVyY2F0b3JfdGlsZT12ZWM0KG1lcmNhdG9yLnh5KkVYVEVOVCxFWFRFTlQvKDIuMCpQSSksMS4wKTttZXJjYXRvcl90aWxlPW1hdHJpeCptZXJjYXRvcl90aWxlO3JldHVybiBtZXJjYXRvcl90aWxlLnh5ejtcXG4jZWxzZVxcbnJldHVybiB2ZWMzKDAuMCk7XFxuI2VuZGlmXFxufXZlYzMgbWl4X2dsb2JlX21lcmNhdG9yKHZlYzMgZ2xvYmUsdmVjMyBtZXJjYXRvcixmbG9hdCB0KSB7cmV0dXJuIG1peChnbG9iZSxtZXJjYXRvcix0KTt9bWF0MyBnbG9iZV9tZXJjYXRvcl9zdXJmYWNlX3ZlY3RvcnModmVjMyBwb3Nfbm9ybWFsLHZlYzMgdXBfZGlyLGZsb2F0IHpvb21fdHJhbnNpdGlvbikge3ZlYzMgbm9ybWFsPXpvb21fdHJhbnNpdGlvbj09MC4wID8gcG9zX25vcm1hbCA6IG5vcm1hbGl6ZShtaXgocG9zX25vcm1hbCx1cF9kaXIsem9vbV90cmFuc2l0aW9uKSk7dmVjMyB4QXhpcz1ub3JtYWxpemUodmVjMyhub3JtYWwueiwwLjAsLW5vcm1hbC54KSk7dmVjMyB5QXhpcz1ub3JtYWxpemUoY3Jvc3Mobm9ybWFsLHhBeGlzKSk7cmV0dXJuIG1hdDMoeEF4aXMseUF4aXMsbm9ybWFsKTt9XFxuI2VuZGlmXFxudmVjMiB1bnBhY2tfZmxvYXQoY29uc3QgZmxvYXQgcGFja2VkVmFsdWUpIHtpbnQgcGFja2VkSW50VmFsdWU9aW50KHBhY2tlZFZhbHVlKTtpbnQgdjA9cGFja2VkSW50VmFsdWUvMjU2O3JldHVybiB2ZWMyKHYwLHBhY2tlZEludFZhbHVlLXYwKjI1Nik7fXZlYzIgdW5wYWNrX29wYWNpdHkoY29uc3QgZmxvYXQgcGFja2VkT3BhY2l0eSkge2ludCBpbnRPcGFjaXR5PWludChwYWNrZWRPcGFjaXR5KS8yO3JldHVybiB2ZWMyKGZsb2F0KGludE9wYWNpdHkpLzEyNy4wLG1vZChwYWNrZWRPcGFjaXR5LDIuMCkpO312ZWM0IGRlY29kZV9jb2xvcihjb25zdCB2ZWMyIGVuY29kZWRDb2xvcikge3JldHVybiB2ZWM0KFxcbnVucGFja19mbG9hdChlbmNvZGVkQ29sb3JbMF0pLzI1NS4wLHVucGFja19mbG9hdChlbmNvZGVkQ29sb3JbMV0pLzI1NS4wXFxuKTt9ZmxvYXQgdW5wYWNrX21peF92ZWMyKGNvbnN0IHZlYzIgcGFja2VkVmFsdWUsY29uc3QgZmxvYXQgdCkge3JldHVybiBtaXgocGFja2VkVmFsdWVbMF0scGFja2VkVmFsdWVbMV0sdCk7fXZlYzQgdW5wYWNrX21peF9jb2xvcihjb25zdCB2ZWM0IHBhY2tlZENvbG9ycyxjb25zdCBmbG9hdCB0KSB7dmVjNCBtaW5Db2xvcj1kZWNvZGVfY29sb3IodmVjMihwYWNrZWRDb2xvcnNbMF0scGFja2VkQ29sb3JzWzFdKSk7dmVjNCBtYXhDb2xvcj1kZWNvZGVfY29sb3IodmVjMihwYWNrZWRDb2xvcnNbMl0scGFja2VkQ29sb3JzWzNdKSk7cmV0dXJuIG1peChtaW5Db2xvcixtYXhDb2xvcix0KTt9dmVjMiBnZXRfcGF0dGVybl9wb3MoY29uc3QgdmVjMiBwaXhlbF9jb29yZF91cHBlcixjb25zdCB2ZWMyIHBpeGVsX2Nvb3JkX2xvd2VyLGNvbnN0IHZlYzIgcGF0dGVybl9zaXplLGNvbnN0IGZsb2F0IHRpbGVfdW5pdHNfdG9fcGl4ZWxzLGNvbnN0IHZlYzIgcG9zKSB7dmVjMiBvZmZzZXQ9bW9kKG1vZChtb2QocGl4ZWxfY29vcmRfdXBwZXIscGF0dGVybl9zaXplKSoyNTYuMCxwYXR0ZXJuX3NpemUpKjI1Ni4wK3BpeGVsX2Nvb3JkX2xvd2VyLHBhdHRlcm5fc2l6ZSk7cmV0dXJuICh0aWxlX3VuaXRzX3RvX3BpeGVscypwb3Mrb2Zmc2V0KS9wYXR0ZXJuX3NpemU7fWNvbnN0IHZlYzQgQVdBWT12ZWM0KC0xMDAwLjAsLTEwMDAuMCwtMTAwMC4wLDEpOy8vTm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZSB0aGF0IGlzIG5vdCByZW5kZXJlZC5cIiksYWk9SnQsbGk9XCJcXG4jaWZkZWYgR0xfRVNcXG5wcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcXG4jZWxzZVxcblxcbiNpZiAhZGVmaW5lZChsb3dwKVxcbiNkZWZpbmUgbG93cFxcbiNlbmRpZlxcblxcbiNpZiAhZGVmaW5lZChtZWRpdW1wKVxcbiNkZWZpbmUgbWVkaXVtcFxcbiNlbmRpZlxcblxcbiNpZiAhZGVmaW5lZChoaWdocClcXG4jZGVmaW5lIGhpZ2hwXFxuI2VuZGlmXFxuXFxuI2VuZGlmXCI7dmFyIGNpPXtiYWNrZ3JvdW5kOnVpKFwidW5pZm9ybSB2ZWM0IHVfY29sb3I7dW5pZm9ybSBmbG9hdCB1X29wYWNpdHk7XFxuI2lmZGVmIExJR0hUSU5HXzNEX01PREVcXG52YXJ5aW5nIHZlYzQgdl9jb2xvcjtcXG4jZW5kaWZcXG52b2lkIG1haW4oKSB7dmVjNCBvdXRfY29sb3I7XFxuI2lmZGVmIExJR0hUSU5HXzNEX01PREVcXG5vdXRfY29sb3I9dl9jb2xvcjtcXG4jZWxzZVxcbm91dF9jb2xvcj11X2NvbG9yO1xcbiNlbmRpZlxcbiNpZmRlZiBGT0dcXG5vdXRfY29sb3I9Zm9nX2RpdGhlcihmb2dfYXBwbHlfcHJlbXVsdGlwbGllZChvdXRfY29sb3Isdl9mb2dfcG9zKSk7XFxuI2VuZGlmXFxuZ2xfRnJhZ0NvbG9yPW91dF9jb2xvcip1X29wYWNpdHk7XFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVwiLFwiYXR0cmlidXRlIHZlYzIgYV9wb3M7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O1xcbiNpZmRlZiBMSUdIVElOR18zRF9NT0RFXFxudW5pZm9ybSB2ZWM0IHVfY29sb3I7dmFyeWluZyB2ZWM0IHZfY29sb3I7XFxuI2VuZGlmXFxudm9pZCBtYWluKCkge2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTtcXG4jaWZkZWYgTElHSFRJTkdfM0RfTU9ERVxcbnZfY29sb3I9YXBwbHlfbGlnaHRpbmcodV9jb2xvcik7XFxuI2VuZGlmXFxuI2lmZGVmIEZPR1xcbnZfZm9nX3Bvcz1mb2dfcG9zaXRpb24oYV9wb3MpO1xcbiNlbmRpZlxcbn1cIiksYmFja2dyb3VuZFBhdHRlcm46dWkoXCJ1bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3RsO3VuaWZvcm0gdmVjMiB1X3BhdHRlcm5fYnI7dW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTt1bmlmb3JtIGZsb2F0IHVfb3BhY2l0eTt1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO3ZhcnlpbmcgdmVjMiB2X3Bvczt2b2lkIG1haW4oKSB7dmVjMiBpbWFnZWNvb3JkPW1vZCh2X3BvcywxLjApO3ZlYzIgcG9zPW1peCh1X3BhdHRlcm5fdGwvdV90ZXhzaXplLHVfcGF0dGVybl9ici91X3RleHNpemUsaW1hZ2Vjb29yZCk7dmVjNCBvdXRfY29sb3I9dGV4dHVyZTJEKHVfaW1hZ2UscG9zKTtcXG4jaWZkZWYgTElHSFRJTkdfM0RfTU9ERVxcbm91dF9jb2xvcj1hcHBseV9saWdodGluZyhvdXRfY29sb3IpO1xcbiNlbmRpZlxcbiNpZmRlZiBGT0dcXG5vdXRfY29sb3I9Zm9nX2RpdGhlcihmb2dfYXBwbHlfcHJlbXVsdGlwbGllZChvdXRfY29sb3Isdl9mb2dfcG9zKSk7XFxuI2VuZGlmXFxuZ2xfRnJhZ0NvbG9yPW91dF9jb2xvcip1X29wYWNpdHk7XFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVwiLFwidW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gdmVjMiB1X3BhdHRlcm5fc2l6ZTt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF91cHBlcjt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF9sb3dlcjt1bmlmb3JtIGZsb2F0IHVfdGlsZV91bml0c190b19waXhlbHM7YXR0cmlidXRlIHZlYzIgYV9wb3M7dmFyeWluZyB2ZWMyIHZfcG9zO3ZvaWQgbWFpbigpIHtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7dl9wb3M9Z2V0X3BhdHRlcm5fcG9zKHVfcGl4ZWxfY29vcmRfdXBwZXIsdV9waXhlbF9jb29yZF9sb3dlcix1X3BhdHRlcm5fc2l6ZSx1X3RpbGVfdW5pdHNfdG9fcGl4ZWxzLGFfcG9zKTtcXG4jaWZkZWYgRk9HXFxudl9mb2dfcG9zPWZvZ19wb3NpdGlvbihhX3Bvcyk7XFxuI2VuZGlmXFxufVwiKSxjaXJjbGU6dWkoXCJ2YXJ5aW5nIHZlYzMgdl9kYXRhO3ZhcnlpbmcgZmxvYXQgdl92aXNpYmlsaXR5O1xcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCByYWRpdXNcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IHN0cm9rZV9jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCBzdHJva2Vfd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgc3Ryb2tlX29wYWNpdHlcXG52b2lkIG1haW4oKSB7XFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBjb2xvclxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgcmFkaXVzXFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBzdHJva2VfY29sb3JcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHN0cm9rZV93aWR0aFxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgc3Ryb2tlX29wYWNpdHlcXG52ZWMyIGV4dHJ1ZGU9dl9kYXRhLnh5O2Zsb2F0IGV4dHJ1ZGVfbGVuZ3RoPWxlbmd0aChleHRydWRlKTtsb3dwIGZsb2F0IGFudGlhbGlhc2JsdXI9dl9kYXRhLno7ZmxvYXQgYW50aWFsaWFzZWRfYmx1cj0tbWF4KGJsdXIsYW50aWFsaWFzYmx1cik7ZmxvYXQgb3BhY2l0eV90PXNtb290aHN0ZXAoMC4wLGFudGlhbGlhc2VkX2JsdXIsZXh0cnVkZV9sZW5ndGgtMS4wKTtmbG9hdCBjb2xvcl90PXN0cm9rZV93aWR0aCA8IDAuMDEgPyAwLjAgOiBzbW9vdGhzdGVwKFxcbmFudGlhbGlhc2VkX2JsdXIsMC4wLGV4dHJ1ZGVfbGVuZ3RoLXJhZGl1cy8ocmFkaXVzK3N0cm9rZV93aWR0aClcXG4pO3ZlYzQgb3V0X2NvbG9yPW1peChjb2xvcipvcGFjaXR5LHN0cm9rZV9jb2xvcipzdHJva2Vfb3BhY2l0eSxjb2xvcl90KTtcXG4jaWZkZWYgTElHSFRJTkdfM0RfTU9ERVxcbm91dF9jb2xvcj1hcHBseV9saWdodGluZyhvdXRfY29sb3IpO1xcbiNlbmRpZlxcbiNpZmRlZiBGT0dcXG5vdXRfY29sb3I9Zm9nX2FwcGx5X3ByZW11bHRpcGxpZWQob3V0X2NvbG9yLHZfZm9nX3Bvcyk7XFxuI2VuZGlmXFxuZ2xfRnJhZ0NvbG9yPW91dF9jb2xvcioodl92aXNpYmlsaXR5Km9wYWNpdHlfdCk7XFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVwiLFwiI2RlZmluZSBOVU1fVklTSUJJTElUWV9SSU5HUyAyXFxuI2RlZmluZSBJTlZfU1FSVDIgMC43MDcxMDY3OFxcbiNkZWZpbmUgRUxFVkFUSU9OX0JJQVMgMC4wMDAxXFxuI2RlZmluZSBOVU1fU0FNUExFU19QRVJfUklORyAxNlxcbnVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIG1hdDIgdV9leHRydWRlX3NjYWxlO3VuaWZvcm0gbG93cCBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbzt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTthdHRyaWJ1dGUgdmVjMiBhX3BvcztcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxuYXR0cmlidXRlIHZlYzMgYV9wb3NfMzthdHRyaWJ1dGUgdmVjMyBhX3Bvc19ub3JtYWxfMzt1bmlmb3JtIG1hdDQgdV9pbnZfcm90X21hdHJpeDt1bmlmb3JtIHZlYzIgdV9tZXJjX2NlbnRlcjt1bmlmb3JtIHZlYzMgdV90aWxlX2lkO3VuaWZvcm0gZmxvYXQgdV96b29tX3RyYW5zaXRpb247dW5pZm9ybSB2ZWMzIHVfdXBfZGlyO1xcbiNlbmRpZlxcbnZhcnlpbmcgdmVjMyB2X2RhdGE7dmFyeWluZyBmbG9hdCB2X3Zpc2liaWxpdHk7XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNvbG9yXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRpdW1wIGZsb2F0IHJhZGl1c1xcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBibHVyXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgc3Ryb2tlX2NvbG9yXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRpdW1wIGZsb2F0IHN0cm9rZV93aWR0aFxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBzdHJva2Vfb3BhY2l0eVxcbnZlYzIgY2FsY19vZmZzZXQodmVjMiBleHRydXNpb24sZmxvYXQgcmFkaXVzLGZsb2F0IHN0cm9rZV93aWR0aCwgZmxvYXQgdmlld19zY2FsZSkge3JldHVybiBleHRydXNpb24qKHJhZGl1cytzdHJva2Vfd2lkdGgpKnVfZXh0cnVkZV9zY2FsZSp2aWV3X3NjYWxlO31mbG9hdCBjYW50aWxldmVyZWRfZWxldmF0aW9uKHZlYzIgcG9zLGZsb2F0IHJhZGl1cyxmbG9hdCBzdHJva2Vfd2lkdGgsZmxvYXQgdmlld19zY2FsZSkge3ZlYzIgYzE9cG9zK2NhbGNfb2Zmc2V0KHZlYzIoLTEsLTEpLHJhZGl1cyxzdHJva2Vfd2lkdGgsdmlld19zY2FsZSk7dmVjMiBjMj1wb3MrY2FsY19vZmZzZXQodmVjMigxLC0xKSxyYWRpdXMsc3Ryb2tlX3dpZHRoLHZpZXdfc2NhbGUpO3ZlYzIgYzM9cG9zK2NhbGNfb2Zmc2V0KHZlYzIoMSwxKSxyYWRpdXMsc3Ryb2tlX3dpZHRoLHZpZXdfc2NhbGUpO3ZlYzIgYzQ9cG9zK2NhbGNfb2Zmc2V0KHZlYzIoLTEsMSkscmFkaXVzLHN0cm9rZV93aWR0aCx2aWV3X3NjYWxlKTtmbG9hdCBoMT1lbGV2YXRpb24oYzEpK0VMRVZBVElPTl9CSUFTO2Zsb2F0IGgyPWVsZXZhdGlvbihjMikrRUxFVkFUSU9OX0JJQVM7ZmxvYXQgaDM9ZWxldmF0aW9uKGMzKStFTEVWQVRJT05fQklBUztmbG9hdCBoND1lbGV2YXRpb24oYzQpK0VMRVZBVElPTl9CSUFTO3JldHVybiBtYXgoaDQsbWF4KGgzLG1heChoMSxoMikpKTt9ZmxvYXQgY2lyY2xlX2VsZXZhdGlvbih2ZWMyIHBvcykge1xcbiNpZiBkZWZpbmVkKFRFUlJBSU4pXFxucmV0dXJuIGVsZXZhdGlvbihwb3MpK0VMRVZBVElPTl9CSUFTO1xcbiNlbHNlXFxucmV0dXJuIDAuMDtcXG4jZW5kaWZcXG59dmVjNCBwcm9qZWN0X3ZlcnRleCh2ZWMyIGV4dHJ1c2lvbix2ZWM0IHdvcmxkX2NlbnRlcix2ZWM0IHByb2plY3RlZF9jZW50ZXIsZmxvYXQgcmFkaXVzLGZsb2F0IHN0cm9rZV93aWR0aCwgZmxvYXQgdmlld19zY2FsZSxtYXQzIHN1cmZhY2VfdmVjdG9ycykge3ZlYzIgc2FtcGxlX29mZnNldD1jYWxjX29mZnNldChleHRydXNpb24scmFkaXVzLHN0cm9rZV93aWR0aCx2aWV3X3NjYWxlKTtcXG4jaWZkZWYgUElUQ0hfV0lUSF9NQVBcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxucmV0dXJuIHVfbWF0cml4Kiggd29ybGRfY2VudGVyK3ZlYzQoc2FtcGxlX29mZnNldC54KnN1cmZhY2VfdmVjdG9yc1swXStzYW1wbGVfb2Zmc2V0Lnkqc3VyZmFjZV92ZWN0b3JzWzFdLDApICk7XFxuI2Vsc2VcXG5yZXR1cm4gdV9tYXRyaXgqKCB3b3JsZF9jZW50ZXIrdmVjNChzYW1wbGVfb2Zmc2V0LDAsMCkgKTtcXG4jZW5kaWZcXG4jZWxzZVxcbnJldHVybiBwcm9qZWN0ZWRfY2VudGVyK3ZlYzQoc2FtcGxlX29mZnNldCwwLDApO1xcbiNlbmRpZlxcbn1mbG9hdCBnZXRfc2FtcGxlX3N0ZXAoKSB7XFxuI2lmZGVmIFBJVENIX1dJVEhfTUFQXFxucmV0dXJuIDIuMCpQSS9mbG9hdChOVU1fU0FNUExFU19QRVJfUklORyk7XFxuI2Vsc2VcXG5yZXR1cm4gUEkvZmxvYXQoTlVNX1NBTVBMRVNfUEVSX1JJTkcpO1xcbiNlbmRpZlxcbn12b2lkIG1haW4odm9pZCkge1xcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHJhZGl1c1xcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgYmx1clxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgc3Ryb2tlX2NvbG9yXFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCBmbG9hdCBzdHJva2Vfd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IHN0cm9rZV9vcGFjaXR5XFxudmVjMiBleHRydWRlPXZlYzIobW9kKGFfcG9zLDIuMCkqMi4wLTEuMCk7dmVjMiBjaXJjbGVfY2VudGVyPWZsb29yKGFfcG9zKjAuNSk7dmVjNCB3b3JsZF9jZW50ZXI7bWF0MyBzdXJmYWNlX3ZlY3RvcnM7XFxuI2lmZGVmIFBST0pFQ1RJT05fR0xPQkVfVklFV1xcbnZlYzMgcG9zX25vcm1hbF8zPWFfcG9zX25vcm1hbF8zLzE2Mzg0LjA7c3VyZmFjZV92ZWN0b3JzPWdsb2JlX21lcmNhdG9yX3N1cmZhY2VfdmVjdG9ycyhwb3Nfbm9ybWFsXzMsdV91cF9kaXIsdV96b29tX3RyYW5zaXRpb24pO3ZlYzMgc3VyZmFjZV9leHRydXNpb249ZXh0cnVkZS54KnN1cmZhY2VfdmVjdG9yc1swXStleHRydWRlLnkqc3VyZmFjZV92ZWN0b3JzWzFdO3ZlYzMgZ2xvYmVfZWxldmF0aW9uPWVsZXZhdGlvblZlY3RvcihjaXJjbGVfY2VudGVyKSpjaXJjbGVfZWxldmF0aW9uKGNpcmNsZV9jZW50ZXIpO3ZlYzMgZ2xvYmVfcG9zPWFfcG9zXzMrc3VyZmFjZV9leHRydXNpb24rZ2xvYmVfZWxldmF0aW9uO3ZlYzMgbWVyY2F0b3JfZWxldmF0aW9uPXVfdXBfZGlyKnVfdGlsZV91cF9zY2FsZSpjaXJjbGVfZWxldmF0aW9uKGNpcmNsZV9jZW50ZXIpO3ZlYzMgbWVyY19wb3M9bWVyY2F0b3JfdGlsZV9wb3NpdGlvbih1X2ludl9yb3RfbWF0cml4LGNpcmNsZV9jZW50ZXIsdV90aWxlX2lkLHVfbWVyY19jZW50ZXIpK3N1cmZhY2VfZXh0cnVzaW9uK21lcmNhdG9yX2VsZXZhdGlvbjt2ZWMzIHBvcz1taXhfZ2xvYmVfbWVyY2F0b3IoZ2xvYmVfcG9zLG1lcmNfcG9zLHVfem9vbV90cmFuc2l0aW9uKTt3b3JsZF9jZW50ZXI9dmVjNChwb3MsMSk7XFxuI2Vsc2UgXFxuc3VyZmFjZV92ZWN0b3JzPW1hdDMoMS4wKTtmbG9hdCBoZWlnaHQ9Y2lyY2xlX2VsZXZhdGlvbihjaXJjbGVfY2VudGVyKTt3b3JsZF9jZW50ZXI9dmVjNChjaXJjbGVfY2VudGVyLGhlaWdodCwxKTtcXG4jZW5kaWZcXG52ZWM0IHByb2plY3RlZF9jZW50ZXI9dV9tYXRyaXgqd29ybGRfY2VudGVyO2Zsb2F0IHZpZXdfc2NhbGU9MC4wO1xcbiNpZmRlZiBQSVRDSF9XSVRIX01BUFxcbiNpZmRlZiBTQ0FMRV9XSVRIX01BUFxcbnZpZXdfc2NhbGU9MS4wO1xcbiNlbHNlXFxudmlld19zY2FsZT1wcm9qZWN0ZWRfY2VudGVyLncvdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO1xcbiNlbmRpZlxcbiNlbHNlXFxuI2lmZGVmIFNDQUxFX1dJVEhfTUFQXFxudmlld19zY2FsZT11X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U7XFxuI2Vsc2VcXG52aWV3X3NjYWxlPXByb2plY3RlZF9jZW50ZXIudztcXG4jZW5kaWZcXG4jZW5kaWZcXG5nbF9Qb3NpdGlvbj1wcm9qZWN0X3ZlcnRleChleHRydWRlLHdvcmxkX2NlbnRlcixwcm9qZWN0ZWRfY2VudGVyLHJhZGl1cyxzdHJva2Vfd2lkdGgsdmlld19zY2FsZSxzdXJmYWNlX3ZlY3RvcnMpO2Zsb2F0IHZpc2liaWxpdHk9MC4wO1xcbiNpZmRlZiBURVJSQUlOXFxuZmxvYXQgc3RlcD1nZXRfc2FtcGxlX3N0ZXAoKTt2ZWM0IG9jY2x1c2lvbl93b3JsZF9jZW50ZXI7dmVjNCBvY2NsdXNpb25fcHJvamVjdGVkX2NlbnRlcjtcXG4jaWZkZWYgUElUQ0hfV0lUSF9NQVBcXG5mbG9hdCBjYW50aWxldmVyZWRfaGVpZ2h0PWNhbnRpbGV2ZXJlZF9lbGV2YXRpb24oY2lyY2xlX2NlbnRlcixyYWRpdXMsc3Ryb2tlX3dpZHRoLHZpZXdfc2NhbGUpO29jY2x1c2lvbl93b3JsZF9jZW50ZXI9dmVjNChjaXJjbGVfY2VudGVyLGNhbnRpbGV2ZXJlZF9oZWlnaHQsMSk7b2NjbHVzaW9uX3Byb2plY3RlZF9jZW50ZXI9dV9tYXRyaXgqb2NjbHVzaW9uX3dvcmxkX2NlbnRlcjtcXG4jZWxzZVxcbm9jY2x1c2lvbl93b3JsZF9jZW50ZXI9d29ybGRfY2VudGVyO29jY2x1c2lvbl9wcm9qZWN0ZWRfY2VudGVyPXByb2plY3RlZF9jZW50ZXI7XFxuI2VuZGlmXFxuZm9yKGludCByaW5nPTA7IHJpbmcgPCBOVU1fVklTSUJJTElUWV9SSU5HUzsgcmluZysrKSB7ZmxvYXQgc2NhbGU9KGZsb2F0KHJpbmcpKzEuMCkvZmxvYXQoTlVNX1ZJU0lCSUxJVFlfUklOR1MpO2ZvcihpbnQgaT0wOyBpIDwgTlVNX1NBTVBMRVNfUEVSX1JJTkc7IGkrKykge3ZlYzIgZXh0cnVzaW9uPXZlYzIoY29zKHN0ZXAqZmxvYXQoaSkpLC1zaW4oc3RlcCpmbG9hdChpKSkpKnNjYWxlO3ZlYzQgZnJhZ19wb3M9cHJvamVjdF92ZXJ0ZXgoZXh0cnVzaW9uLG9jY2x1c2lvbl93b3JsZF9jZW50ZXIsb2NjbHVzaW9uX3Byb2plY3RlZF9jZW50ZXIscmFkaXVzLHN0cm9rZV93aWR0aCx2aWV3X3NjYWxlLHN1cmZhY2VfdmVjdG9ycyk7dmlzaWJpbGl0eSs9ZmxvYXQoIWlzT2NjbHVkZWQoZnJhZ19wb3MpKTt9fXZpc2liaWxpdHkvPWZsb2F0KE5VTV9WSVNJQklMSVRZX1JJTkdTKSpmbG9hdChOVU1fU0FNUExFU19QRVJfUklORyk7XFxuI2Vsc2VcXG52aXNpYmlsaXR5PTEuMDtcXG4jZW5kaWZcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxudmlzaWJpbGl0eT0xLjA7XFxuI2VuZGlmXFxudl92aXNpYmlsaXR5PXZpc2liaWxpdHk7bG93cCBmbG9hdCBhbnRpYWxpYXNibHVyPTEuMC91X2RldmljZV9waXhlbF9yYXRpby8ocmFkaXVzK3N0cm9rZV93aWR0aCk7dl9kYXRhPXZlYzMoZXh0cnVkZS54LGV4dHJ1ZGUueSxhbnRpYWxpYXNibHVyKTtcXG4jaWZkZWYgRk9HXFxudl9mb2dfcG9zPWZvZ19wb3NpdGlvbih3b3JsZF9jZW50ZXIueHl6KTtcXG4jZW5kaWZcXG59XCIpLGNsaXBwaW5nTWFzazp1aShcInZvaWQgbWFpbigpIHtnbF9GcmFnQ29sb3I9dmVjNCgxLjApO31cIixcImF0dHJpYnV0ZSB2ZWMyIGFfcG9zO3VuaWZvcm0gbWF0NCB1X21hdHJpeDt2b2lkIG1haW4oKSB7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3BvcywwLDEpO31cIiksaGVhdG1hcDp1aShcInVuaWZvcm0gaGlnaHAgZmxvYXQgdV9pbnRlbnNpdHk7dmFyeWluZyB2ZWMyIHZfZXh0cnVkZTtcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIGZsb2F0IHdlaWdodFxcbiNkZWZpbmUgR0FVU1NfQ09FRiAwLjM5ODk0MjI4MDQwMTQzMjdcXG52b2lkIG1haW4oKSB7XFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgZmxvYXQgd2VpZ2h0XFxuZmxvYXQgZD0tMC41KjMuMCozLjAqZG90KHZfZXh0cnVkZSx2X2V4dHJ1ZGUpO2Zsb2F0IHZhbD13ZWlnaHQqdV9pbnRlbnNpdHkqR0FVU1NfQ09FRipleHAoZCk7Z2xfRnJhZ0NvbG9yPXZlYzQodmFsLDEuMCwxLjAsMS4wKTtcXG4jaWZkZWYgRk9HXFxuaWYgKHVfaXNfZ2xvYmU9PTApIHtnbF9GcmFnQ29sb3Iucio9cG93KDEuMC1mb2dfb3BhY2l0eSh2X2ZvZ19wb3MpLDIuMCk7fVxcbiNlbmRpZlxcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cIixcInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIGZsb2F0IHVfZXh0cnVkZV9zY2FsZTt1bmlmb3JtIGZsb2F0IHVfb3BhY2l0eTt1bmlmb3JtIGZsb2F0IHVfaW50ZW5zaXR5O2F0dHJpYnV0ZSB2ZWMyIGFfcG9zO1xcbiNpZmRlZiBQUk9KRUNUSU9OX0dMT0JFX1ZJRVdcXG5hdHRyaWJ1dGUgdmVjMyBhX3Bvc18zO2F0dHJpYnV0ZSB2ZWMzIGFfcG9zX25vcm1hbF8zO3VuaWZvcm0gbWF0NCB1X2ludl9yb3RfbWF0cml4O3VuaWZvcm0gdmVjMiB1X21lcmNfY2VudGVyO3VuaWZvcm0gdmVjMyB1X3RpbGVfaWQ7dW5pZm9ybSBmbG9hdCB1X3pvb21fdHJhbnNpdGlvbjt1bmlmb3JtIHZlYzMgdV91cF9kaXI7XFxuI2VuZGlmXFxudmFyeWluZyB2ZWMyIHZfZXh0cnVkZTtcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIGZsb2F0IHdlaWdodFxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCByYWRpdXNcXG5jb25zdCBoaWdocCBmbG9hdCBaRVJPPTEuMC8yNTUuMC8xNi4wO1xcbiNkZWZpbmUgR0FVU1NfQ09FRiAwLjM5ODk0MjI4MDQwMTQzMjdcXG52b2lkIG1haW4odm9pZCkge1xcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIGZsb2F0IHdlaWdodFxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgcmFkaXVzXFxudmVjMiB1bnNjYWxlZF9leHRydWRlPXZlYzIobW9kKGFfcG9zLDIuMCkqMi4wLTEuMCk7ZmxvYXQgUz1zcXJ0KC0yLjAqbG9nKFpFUk8vd2VpZ2h0L3VfaW50ZW5zaXR5L0dBVVNTX0NPRUYpKS8zLjA7dl9leHRydWRlPVMqdW5zY2FsZWRfZXh0cnVkZTt2ZWMyIGV4dHJ1ZGU9dl9leHRydWRlKnJhZGl1cyp1X2V4dHJ1ZGVfc2NhbGU7dmVjMiB0aWxlUG9zPWZsb29yKGFfcG9zKjAuNSk7dmVjMyBwb3M7XFxuI2lmZGVmIFBST0pFQ1RJT05fR0xPQkVfVklFV1xcbnZlYzMgcG9zX25vcm1hbF8zPWFfcG9zX25vcm1hbF8zLzE2Mzg0LjA7bWF0MyBzdXJmYWNlX3ZlY3RvcnM9Z2xvYmVfbWVyY2F0b3Jfc3VyZmFjZV92ZWN0b3JzKHBvc19ub3JtYWxfMyx1X3VwX2Rpcix1X3pvb21fdHJhbnNpdGlvbik7dmVjMyBzdXJmYWNlX2V4dHJ1c2lvbj1leHRydWRlLngqc3VyZmFjZV92ZWN0b3JzWzBdK2V4dHJ1ZGUueSpzdXJmYWNlX3ZlY3RvcnNbMV07dmVjMyBnbG9iZV9lbGV2YXRpb249ZWxldmF0aW9uVmVjdG9yKHRpbGVQb3MpKmVsZXZhdGlvbih0aWxlUG9zKTt2ZWMzIGdsb2JlX3Bvcz1hX3Bvc18zK3N1cmZhY2VfZXh0cnVzaW9uK2dsb2JlX2VsZXZhdGlvbjt2ZWMzIG1lcmNhdG9yX2VsZXZhdGlvbj11X3VwX2Rpcip1X3RpbGVfdXBfc2NhbGUqZWxldmF0aW9uKHRpbGVQb3MpO3ZlYzMgbWVyY19wb3M9bWVyY2F0b3JfdGlsZV9wb3NpdGlvbih1X2ludl9yb3RfbWF0cml4LHRpbGVQb3MsdV90aWxlX2lkLHVfbWVyY19jZW50ZXIpK3N1cmZhY2VfZXh0cnVzaW9uK21lcmNhdG9yX2VsZXZhdGlvbjtwb3M9bWl4X2dsb2JlX21lcmNhdG9yKGdsb2JlX3BvcyxtZXJjX3Bvcyx1X3pvb21fdHJhbnNpdGlvbik7XFxuI2Vsc2VcXG5wb3M9dmVjMyh0aWxlUG9zK2V4dHJ1ZGUsZWxldmF0aW9uKHRpbGVQb3MpKTtcXG4jZW5kaWZcXG5nbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KHBvcywxKTtcXG4jaWZkZWYgRk9HXFxudl9mb2dfcG9zPWZvZ19wb3NpdGlvbihwb3MpO1xcbiNlbmRpZlxcbn1cIiksaGVhdG1hcFRleHR1cmU6dWkoXCJ1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO3VuaWZvcm0gc2FtcGxlcjJEIHVfY29sb3JfcmFtcDt1bmlmb3JtIGZsb2F0IHVfb3BhY2l0eTt2YXJ5aW5nIHZlYzIgdl9wb3M7dm9pZCBtYWluKCkge2Zsb2F0IHQ9dGV4dHVyZTJEKHVfaW1hZ2Usdl9wb3MpLnI7dmVjNCBjb2xvcj10ZXh0dXJlMkQodV9jb2xvcl9yYW1wLHZlYzIodCwwLjUpKTtnbF9GcmFnQ29sb3I9Y29sb3IqdV9vcGFjaXR5O1xcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgwLjApO1xcbiNlbmRpZlxcbn1cIixcImF0dHJpYnV0ZSB2ZWMyIGFfcG9zO3ZhcnlpbmcgdmVjMiB2X3Bvczt2b2lkIG1haW4oKSB7Z2xfUG9zaXRpb249dmVjNChhX3BvcywwLDEpO3ZfcG9zPWFfcG9zKjAuNSswLjU7fVwiKSxjb2xsaXNpb25Cb3g6dWkoXCJ2YXJ5aW5nIGZsb2F0IHZfcGxhY2VkO3ZhcnlpbmcgZmxvYXQgdl9ub3RVc2VkO3ZvaWQgbWFpbigpIHt2ZWM0IHJlZCA9dmVjNCgxLjAsMC4wLDAuMCwxLjApO3ZlYzQgYmx1ZT12ZWM0KDAuMCwwLjAsMS4wLDAuNSk7Z2xfRnJhZ0NvbG9yID1taXgocmVkLGJsdWUsc3RlcCgwLjUsdl9wbGFjZWQpKSowLjU7Z2xfRnJhZ0NvbG9yKj1taXgoMS4wLDAuMSxzdGVwKDAuNSx2X25vdFVzZWQpKTt9XCIsXCJhdHRyaWJ1dGUgdmVjMyBhX3BvczthdHRyaWJ1dGUgdmVjMiBhX2FuY2hvcl9wb3M7YXR0cmlidXRlIHZlYzIgYV9leHRydWRlO2F0dHJpYnV0ZSB2ZWMyIGFfcGxhY2VkO2F0dHJpYnV0ZSB2ZWMyIGFfc2hpZnQ7YXR0cmlidXRlIGZsb2F0IGFfc2l6ZV9zY2FsZTthdHRyaWJ1dGUgdmVjMiBhX3BhZGRpbmc7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gdmVjMiB1X2V4dHJ1ZGVfc2NhbGU7dW5pZm9ybSBmbG9hdCB1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U7dmFyeWluZyBmbG9hdCB2X3BsYWNlZDt2YXJ5aW5nIGZsb2F0IHZfbm90VXNlZDt2b2lkIG1haW4oKSB7dmVjNCBwcm9qZWN0ZWRQb2ludD11X21hdHJpeCp2ZWM0KGFfcG9zK2VsZXZhdGlvblZlY3RvcihhX2FuY2hvcl9wb3MpKmVsZXZhdGlvbihhX2FuY2hvcl9wb3MpLDEpO2hpZ2hwIGZsb2F0IGNhbWVyYV90b19hbmNob3JfZGlzdGFuY2U9cHJvamVjdGVkUG9pbnQudztoaWdocCBmbG9hdCBjb2xsaXNpb25fcGVyc3BlY3RpdmVfcmF0aW89Y2xhbXAoXFxuMC41KzAuNSoodV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlL2NhbWVyYV90b19hbmNob3JfZGlzdGFuY2UpLDAuMCwxLjUpO2dsX1Bvc2l0aW9uPXByb2plY3RlZFBvaW50O2dsX1Bvc2l0aW9uLnh5Kz0oYV9leHRydWRlKmFfc2l6ZV9zY2FsZSthX3NoaWZ0K2FfcGFkZGluZykqdV9leHRydWRlX3NjYWxlKmdsX1Bvc2l0aW9uLncqY29sbGlzaW9uX3BlcnNwZWN0aXZlX3JhdGlvO3ZfcGxhY2VkPWFfcGxhY2VkLng7dl9ub3RVc2VkPWFfcGxhY2VkLnk7fVwiKSxjb2xsaXNpb25DaXJjbGU6dWkoXCJ2YXJ5aW5nIGZsb2F0IHZfcmFkaXVzO3ZhcnlpbmcgdmVjMiB2X2V4dHJ1ZGU7dmFyeWluZyBmbG9hdCB2X3BlcnNwZWN0aXZlX3JhdGlvO3ZhcnlpbmcgZmxvYXQgdl9jb2xsaXNpb247dm9pZCBtYWluKCkge2Zsb2F0IGFscGhhPTAuNSptaW4odl9wZXJzcGVjdGl2ZV9yYXRpbywxLjApO2Zsb2F0IHN0cm9rZV9yYWRpdXM9MC45Km1heCh2X3BlcnNwZWN0aXZlX3JhdGlvLDEuMCk7ZmxvYXQgZGlzdGFuY2VfdG9fY2VudGVyPWxlbmd0aCh2X2V4dHJ1ZGUpO2Zsb2F0IGRpc3RhbmNlX3RvX2VkZ2U9YWJzKGRpc3RhbmNlX3RvX2NlbnRlci12X3JhZGl1cyk7ZmxvYXQgb3BhY2l0eV90PXNtb290aHN0ZXAoLXN0cm9rZV9yYWRpdXMsMC4wLC1kaXN0YW5jZV90b19lZGdlKTt2ZWM0IGNvbG9yPW1peCh2ZWM0KDAuMCwwLjAsMS4wLDAuNSksdmVjNCgxLjAsMC4wLDAuMCwxLjApLHZfY29sbGlzaW9uKTtnbF9GcmFnQ29sb3I9Y29sb3IqYWxwaGEqb3BhY2l0eV90O31cIixcImF0dHJpYnV0ZSB2ZWMyIGFfcG9zXzJmO2F0dHJpYnV0ZSBmbG9hdCBhX3JhZGl1czthdHRyaWJ1dGUgdmVjMiBhX2ZsYWdzO3VuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIG1hdDQgdV9pbnZfbWF0cml4O3VuaWZvcm0gdmVjMiB1X3ZpZXdwb3J0X3NpemU7dW5pZm9ybSBmbG9hdCB1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U7dmFyeWluZyBmbG9hdCB2X3JhZGl1czt2YXJ5aW5nIHZlYzIgdl9leHRydWRlO3ZhcnlpbmcgZmxvYXQgdl9wZXJzcGVjdGl2ZV9yYXRpbzt2YXJ5aW5nIGZsb2F0IHZfY29sbGlzaW9uO3ZlYzMgdG9UaWxlUG9zaXRpb24odmVjMiBzY3JlZW5Qb3MpIHt2ZWM0IHJheVN0YXJ0PXVfaW52X21hdHJpeCp2ZWM0KHNjcmVlblBvcywtMS4wLDEuMCk7dmVjNCByYXlFbmQgID11X2ludl9tYXRyaXgqdmVjNChzY3JlZW5Qb3MsIDEuMCwxLjApO3JheVN0YXJ0Lnh5ei89cmF5U3RhcnQudztyYXlFbmQueHl6ICAvPXJheUVuZC53O2hpZ2hwIGZsb2F0IHQ9KDAuMC1yYXlTdGFydC56KS8ocmF5RW5kLnotcmF5U3RhcnQueik7cmV0dXJuIG1peChyYXlTdGFydC54eXoscmF5RW5kLnh5eix0KTt9dm9pZCBtYWluKCkge3ZlYzIgcXVhZENlbnRlclBvcz1hX3Bvc18yZjtmbG9hdCByYWRpdXM9YV9yYWRpdXM7ZmxvYXQgY29sbGlzaW9uPWFfZmxhZ3MueDtmbG9hdCB2ZXJ0ZXhJZHg9YV9mbGFncy55O3ZlYzIgcXVhZFZlcnRleE9mZnNldD12ZWMyKFxcbm1peCgtMS4wLDEuMCxmbG9hdCh2ZXJ0ZXhJZHggPj0yLjApKSxtaXgoLTEuMCwxLjAsZmxvYXQodmVydGV4SWR4ID49MS4wICYmIHZlcnRleElkeCA8PTIuMCkpKTt2ZWMyIHF1YWRWZXJ0ZXhFeHRlbnQ9cXVhZFZlcnRleE9mZnNldCpyYWRpdXM7dmVjMyB0aWxlUG9zPXRvVGlsZVBvc2l0aW9uKHF1YWRDZW50ZXJQb3MpO3ZlYzQgY2xpcFBvcz11X21hdHJpeCp2ZWM0KHRpbGVQb3MsMS4wKTtoaWdocCBmbG9hdCBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlPWNsaXBQb3MudztoaWdocCBmbG9hdCBjb2xsaXNpb25fcGVyc3BlY3RpdmVfcmF0aW89Y2xhbXAoXFxuMC41KzAuNSoodV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlL2NhbWVyYV90b19hbmNob3JfZGlzdGFuY2UpLDAuMCw0LjApO2Zsb2F0IHBhZGRpbmdfZmFjdG9yPTEuMjt2X3JhZGl1cz1yYWRpdXM7dl9leHRydWRlPXF1YWRWZXJ0ZXhFeHRlbnQqcGFkZGluZ19mYWN0b3I7dl9wZXJzcGVjdGl2ZV9yYXRpbz1jb2xsaXNpb25fcGVyc3BlY3RpdmVfcmF0aW87dl9jb2xsaXNpb249Y29sbGlzaW9uO2dsX1Bvc2l0aW9uPXZlYzQoY2xpcFBvcy54eXovY2xpcFBvcy53LDEuMCkrdmVjNChxdWFkVmVydGV4RXh0ZW50KnBhZGRpbmdfZmFjdG9yL3Vfdmlld3BvcnRfc2l6ZSoyLjAsMC4wLDAuMCk7fVwiKSxkZWJ1Zzp1aShcInVuaWZvcm0gaGlnaHAgdmVjNCB1X2NvbG9yO3VuaWZvcm0gc2FtcGxlcjJEIHVfb3ZlcmxheTt2YXJ5aW5nIHZlYzIgdl91djt2b2lkIG1haW4oKSB7dmVjNCBvdmVybGF5X2NvbG9yPXRleHR1cmUyRCh1X292ZXJsYXksdl91dik7Z2xfRnJhZ0NvbG9yPW1peCh1X2NvbG9yLG92ZXJsYXlfY29sb3Isb3ZlcmxheV9jb2xvci5hKTt9XCIsXCJhdHRyaWJ1dGUgdmVjMiBhX3BvcztcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxuYXR0cmlidXRlIHZlYzMgYV9wb3NfMztcXG4jZW5kaWZcXG52YXJ5aW5nIHZlYzIgdl91djt1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSBmbG9hdCB1X292ZXJsYXlfc2NhbGU7dm9pZCBtYWluKCkge2Zsb2F0IGg9ZWxldmF0aW9uKGFfcG9zKTt2X3V2PWFfcG9zLzgxOTIuMDtcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxuZ2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3Bvc18zK2VsZXZhdGlvblZlY3RvcihhX3BvcykqaCwxKTtcXG4jZWxzZVxcbmdsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MqdV9vdmVybGF5X3NjYWxlLGgsMSk7XFxuI2VuZGlmXFxufVwiKSxmaWxsOnVpKFwiI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNvbG9yXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG52b2lkIG1haW4oKSB7XFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBjb2xvclxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcbnZlYzQgb3V0X2NvbG9yPWNvbG9yO1xcbiNpZmRlZiBMSUdIVElOR18zRF9NT0RFXFxub3V0X2NvbG9yPWFwcGx5X2xpZ2h0aW5nKG91dF9jb2xvcik7XFxuI2VuZGlmXFxuI2lmZGVmIEZPR1xcbm91dF9jb2xvcj1mb2dfZGl0aGVyKGZvZ19hcHBseV9wcmVtdWx0aXBsaWVkKG91dF9jb2xvcix2X2ZvZ19wb3MpKTtcXG4jZW5kaWZcXG5nbF9GcmFnQ29sb3I9b3V0X2NvbG9yKm9wYWNpdHk7XFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVwiLFwiYXR0cmlidXRlIHZlYzIgYV9wb3M7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O1xcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxudm9pZCBtYWluKCkge1xcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5nbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7XFxuI2lmZGVmIEZPR1xcbnZfZm9nX3Bvcz1mb2dfcG9zaXRpb24oYV9wb3MpO1xcbiNlbmRpZlxcbn1cIiksZmlsbE91dGxpbmU6dWkoXCJ2YXJ5aW5nIHZlYzIgdl9wb3M7XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IG91dGxpbmVfY29sb3JcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcbnZvaWQgbWFpbigpIHtcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IG91dGxpbmVfY29sb3JcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG5mbG9hdCBkaXN0PWxlbmd0aCh2X3Bvcy1nbF9GcmFnQ29vcmQueHkpO2Zsb2F0IGFscGhhPTEuMC1zbW9vdGhzdGVwKDAuMCwxLjAsZGlzdCk7dmVjNCBvdXRfY29sb3I9b3V0bGluZV9jb2xvcjtcXG4jaWZkZWYgTElHSFRJTkdfM0RfTU9ERVxcbm91dF9jb2xvcj1hcHBseV9saWdodGluZyhvdXRfY29sb3IpO1xcbiNlbmRpZlxcbiNpZmRlZiBGT0dcXG5vdXRfY29sb3I9Zm9nX2RpdGhlcihmb2dfYXBwbHlfcHJlbXVsdGlwbGllZChvdXRfY29sb3Isdl9mb2dfcG9zKSk7XFxuI2VuZGlmXFxuZ2xfRnJhZ0NvbG9yPW91dF9jb2xvciooYWxwaGEqb3BhY2l0eSk7XFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVwiLFwiYXR0cmlidXRlIHZlYzIgYV9wb3M7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gdmVjMiB1X3dvcmxkO3ZhcnlpbmcgdmVjMiB2X3BvcztcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgb3V0bGluZV9jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxudm9pZCBtYWluKCkge1xcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgb3V0bGluZV9jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcbmdsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTt2X3Bvcz0oZ2xfUG9zaXRpb24ueHkvZ2xfUG9zaXRpb24udysxLjApLzIuMCp1X3dvcmxkO1xcbiNpZmRlZiBGT0dcXG52X2ZvZ19wb3M9Zm9nX3Bvc2l0aW9uKGFfcG9zKTtcXG4jZW5kaWZcXG59XCIpLGZpbGxPdXRsaW5lUGF0dGVybjp1aShcInVuaWZvcm0gdmVjMiB1X3RleHNpemU7dW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTt2YXJ5aW5nIHZlYzIgdl9wb3M7dmFyeWluZyB2ZWMyIHZfcG9zX3dvcmxkO1xcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVyblxcbnZvaWQgbWFpbigpIHtcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVyblxcbnZlYzIgcGF0dGVybl90bD1wYXR0ZXJuLnh5O3ZlYzIgcGF0dGVybl9icj1wYXR0ZXJuLnp3O3ZlYzIgaW1hZ2Vjb29yZD1tb2Qodl9wb3MsMS4wKTt2ZWMyIHBvcz1taXgocGF0dGVybl90bC91X3RleHNpemUscGF0dGVybl9ici91X3RleHNpemUsaW1hZ2Vjb29yZCk7ZmxvYXQgZGlzdD1sZW5ndGgodl9wb3Nfd29ybGQtZ2xfRnJhZ0Nvb3JkLnh5KTtmbG9hdCBhbHBoYT0xLjAtc21vb3Roc3RlcCgwLjAsMS4wLGRpc3QpO3ZlYzQgb3V0X2NvbG9yPXRleHR1cmUyRCh1X2ltYWdlLHBvcyk7XFxuI2lmZGVmIExJR0hUSU5HXzNEX01PREVcXG5vdXRfY29sb3I9YXBwbHlfbGlnaHRpbmcob3V0X2NvbG9yKTtcXG4jZW5kaWZcXG4jaWZkZWYgRk9HXFxub3V0X2NvbG9yPWZvZ19kaXRoZXIoZm9nX2FwcGx5X3ByZW11bHRpcGxpZWQob3V0X2NvbG9yLHZfZm9nX3BvcykpO1xcbiNlbmRpZlxcbmdsX0ZyYWdDb2xvcj1vdXRfY29sb3IqKGFscGhhKm9wYWNpdHkpO1xcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cIixcInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV93b3JsZDt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF91cHBlcjt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF9sb3dlcjt1bmlmb3JtIGZsb2F0IHVfdGlsZV91bml0c190b19waXhlbHM7YXR0cmlidXRlIHZlYzIgYV9wb3M7dmFyeWluZyB2ZWMyIHZfcG9zO3ZhcnlpbmcgdmVjMiB2X3Bvc193b3JsZDtcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBhdHRlcm5cXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9cXG52b2lkIG1haW4oKSB7XFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5cXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IHBpeGVsX3JhdGlvXFxudmVjMiBwYXR0ZXJuX3RsPXBhdHRlcm4ueHk7dmVjMiBwYXR0ZXJuX2JyPXBhdHRlcm4uenc7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3BvcywwLDEpO3ZlYzIgZGlzcGxheV9zaXplPShwYXR0ZXJuX2JyLXBhdHRlcm5fdGwpL3BpeGVsX3JhdGlvO3ZfcG9zPWdldF9wYXR0ZXJuX3Bvcyh1X3BpeGVsX2Nvb3JkX3VwcGVyLHVfcGl4ZWxfY29vcmRfbG93ZXIsZGlzcGxheV9zaXplLHVfdGlsZV91bml0c190b19waXhlbHMsYV9wb3MpO3ZfcG9zX3dvcmxkPShnbF9Qb3NpdGlvbi54eS9nbF9Qb3NpdGlvbi53KzEuMCkvMi4wKnVfd29ybGQ7XFxuI2lmZGVmIEZPR1xcbnZfZm9nX3Bvcz1mb2dfcG9zaXRpb24oYV9wb3MpO1xcbiNlbmRpZlxcbn1cIiksZmlsbFBhdHRlcm46dWkoXCJ1bmlmb3JtIHZlYzIgdV90ZXhzaXplO3VuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2U7dmFyeWluZyB2ZWMyIHZfcG9zO1xcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVyblxcbnZvaWQgbWFpbigpIHtcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVyblxcbnZlYzIgcGF0dGVybl90bD1wYXR0ZXJuLnh5O3ZlYzIgcGF0dGVybl9icj1wYXR0ZXJuLnp3O3ZlYzIgaW1hZ2Vjb29yZD1tb2Qodl9wb3MsMS4wKTt2ZWMyIHBvcz1taXgocGF0dGVybl90bC91X3RleHNpemUscGF0dGVybl9ici91X3RleHNpemUsaW1hZ2Vjb29yZCk7dmVjNCBvdXRfY29sb3I9dGV4dHVyZTJEKHVfaW1hZ2UscG9zKTtcXG4jaWZkZWYgTElHSFRJTkdfM0RfTU9ERVxcbm91dF9jb2xvcj1hcHBseV9saWdodGluZyhvdXRfY29sb3IpO1xcbiNlbmRpZlxcbiNpZmRlZiBGT0dcXG5vdXRfY29sb3I9Zm9nX2RpdGhlcihmb2dfYXBwbHlfcHJlbXVsdGlwbGllZChvdXRfY29sb3Isdl9mb2dfcG9zKSk7XFxuI2VuZGlmXFxuZ2xfRnJhZ0NvbG9yPW91dF9jb2xvcipvcGFjaXR5O1xcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cIixcInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF91cHBlcjt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF9sb3dlcjt1bmlmb3JtIGZsb2F0IHVfdGlsZV91bml0c190b19waXhlbHM7YXR0cmlidXRlIHZlYzIgYV9wb3M7dmFyeWluZyB2ZWMyIHZfcG9zO1xcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVyblxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBwaXhlbF9yYXRpb1xcbnZvaWQgbWFpbigpIHtcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVyblxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9cXG52ZWMyIHBhdHRlcm5fdGw9cGF0dGVybi54eTt2ZWMyIHBhdHRlcm5fYnI9cGF0dGVybi56dzt2ZWMyIGRpc3BsYXlfc2l6ZT0ocGF0dGVybl9ici1wYXR0ZXJuX3RsKS9waXhlbF9yYXRpbztnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7dl9wb3M9Z2V0X3BhdHRlcm5fcG9zKHVfcGl4ZWxfY29vcmRfdXBwZXIsdV9waXhlbF9jb29yZF9sb3dlcixkaXNwbGF5X3NpemUsdV90aWxlX3VuaXRzX3RvX3BpeGVscyxhX3Bvcyk7XFxuI2lmZGVmIEZPR1xcbnZfZm9nX3Bvcz1mb2dfcG9zaXRpb24oYV9wb3MpO1xcbiNlbmRpZlxcbn1cIiksZmlsbEV4dHJ1c2lvbjp1aShcInZhcnlpbmcgdmVjNCB2X2NvbG9yO1xcbiNpZmRlZiBSRU5ERVJfU0hBRE9XU1xcbnZhcnlpbmcgaGlnaHAgdmVjNCB2X3Bvc19saWdodF92aWV3XzA7dmFyeWluZyBoaWdocCB2ZWM0IHZfcG9zX2xpZ2h0X3ZpZXdfMTt2YXJ5aW5nIGZsb2F0IHZfZGVwdGg7XFxuI2VuZGlmXFxuI2lmZGVmIEZBVVhfQU9cXG51bmlmb3JtIGxvd3AgdmVjMiB1X2FvO3ZhcnlpbmcgdmVjMyB2X2FvO1xcbiNlbmRpZlxcbiNpZmRlZiBaRVJPX1JPT0ZfUkFESVVTXFxudmFyeWluZyB2ZWM0IHZfcm9vZl9jb2xvcjtcXG4jZW5kaWZcXG4jaWYgZGVmaW5lZChaRVJPX1JPT0ZfUkFESVVTKSB8fCBkZWZpbmVkKFJFTkRFUl9TSEFET1dTKVxcbnZhcnlpbmcgaGlnaHAgdmVjMyB2X25vcm1hbDtcXG4jZW5kaWZcXG52b2lkIG1haW4oKSB7XFxuI2lmIGRlZmluZWQoWkVST19ST09GX1JBRElVUykgfHwgZGVmaW5lZChSRU5ERVJfU0hBRE9XUylcXG52ZWMzIG5vcm1hbD12X25vcm1hbDtcXG4jZW5kaWZcXG5mbG9hdCB6O3ZlYzQgY29sb3I7XFxuI2lmZGVmIFpFUk9fUk9PRl9SQURJVVNcXG56PWZsb2F0KG5vcm1hbC56ID4gMC4wMDAwMSk7Y29sb3I9bWl4KHZfY29sb3Isdl9yb29mX2NvbG9yLHopO1xcbiNlbHNlXFxuY29sb3I9dl9jb2xvcjtcXG4jZW5kaWZcXG4jaWZkZWYgRkFVWF9BT1xcbmZsb2F0IGludGVuc2l0eT11X2FvWzBdO2Zsb2F0IGg9bWF4KDAuMCx2X2FvLnopO2Zsb2F0IGhfZmxvb3JzPWgvdV9hb1sxXTtmbG9hdCB5X3NoYWRlPTEuMC0wLjkqaW50ZW5zaXR5Km1pbih2X2FvLnksMS4wKTtmbG9hdCBzaGFkZT0oMS4wLTAuMDgqaW50ZW5zaXR5KSooeV9zaGFkZSsoMS4wLXlfc2hhZGUpKigxLjAtcG93KDEuMC1taW4oaF9mbG9vcnMvMTYuMCwxLjApLDE2LjApKSkrMC4wOCppbnRlbnNpdHkqbWluKGhfZmxvb3JzLzE2MC4wLDEuMCk7ZmxvYXQgY29uY2F2ZT12X2FvLngqdl9hby54O1xcbiNpZmRlZiBaRVJPX1JPT0ZfUkFESVVTXFxuY29uY2F2ZSo9KDEuMC16KTtcXG4jZW5kaWZcXG5mbG9hdCB4X3NoYWRlPW1peCgxLjAsbWl4KDAuNiwwLjc1LG1pbihoX2Zsb29ycy8zMC4wLDEuMCkpLGludGVuc2l0eSkrMC4xKmludGVuc2l0eSptaW4oaCwxLjApO3NoYWRlKj1taXgoMS4wLHhfc2hhZGUqeF9zaGFkZSp4X3NoYWRlLGNvbmNhdmUpO2NvbG9yLnJnYj1jb2xvci5yZ2Iqc2hhZGU7XFxuI2VuZGlmXFxuI2lmZGVmIFJFTkRFUl9TSEFET1dTXFxuI2lmZGVmIFpFUk9fUk9PRl9SQURJVVNcXG5ub3JtYWw9bWl4KG5vcm1hbCx2ZWMzKDAuMCwwLjAsMS4wKSx6KTtcXG4jZW5kaWZcXG5jb2xvci54eXo9c2hhZG93ZWRfY29sb3Jfbm9ybWFsKGNvbG9yLnh5eixub3JtYWxpemUobm9ybWFsKSx2X3Bvc19saWdodF92aWV3XzAsdl9wb3NfbGlnaHRfdmlld18xLHZfZGVwdGgpO1xcbiNlbmRpZlxcbiNpZmRlZiBGT0dcXG5jb2xvcj1mb2dfZGl0aGVyKGZvZ19hcHBseV9wcmVtdWx0aXBsaWVkKGNvbG9yLHZfZm9nX3BvcykpO1xcbiNlbmRpZlxcbmdsX0ZyYWdDb2xvcj1jb2xvcjtcXG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXFxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcXG4jZW5kaWZcXG59XCIsXCJ1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSB2ZWMzIHVfbGlnaHRjb2xvcjt1bmlmb3JtIGxvd3AgdmVjMyB1X2xpZ2h0cG9zO3VuaWZvcm0gbG93cCBmbG9hdCB1X2xpZ2h0aW50ZW5zaXR5O3VuaWZvcm0gZmxvYXQgdV92ZXJ0aWNhbF9ncmFkaWVudDt1bmlmb3JtIGxvd3AgZmxvYXQgdV9vcGFjaXR5O3VuaWZvcm0gZmxvYXQgdV9lZGdlX3JhZGl1czthdHRyaWJ1dGUgdmVjNCBhX3Bvc19ub3JtYWxfZWQ7YXR0cmlidXRlIHZlYzIgYV9jZW50cm9pZF9wb3M7XFxuI2lmZGVmIFBST0pFQ1RJT05fR0xPQkVfVklFV1xcbmF0dHJpYnV0ZSB2ZWMzIGFfcG9zXzM7YXR0cmlidXRlIHZlYzMgYV9wb3Nfbm9ybWFsXzM7dW5pZm9ybSBtYXQ0IHVfaW52X3JvdF9tYXRyaXg7dW5pZm9ybSB2ZWMyIHVfbWVyY19jZW50ZXI7dW5pZm9ybSB2ZWMzIHVfdGlsZV9pZDt1bmlmb3JtIGZsb2F0IHVfem9vbV90cmFuc2l0aW9uO3VuaWZvcm0gdmVjMyB1X3VwX2Rpcjt1bmlmb3JtIGZsb2F0IHVfaGVpZ2h0X2xpZnQ7XFxuI2VuZGlmXFxudmFyeWluZyB2ZWM0IHZfY29sb3I7XFxuI2lmZGVmIFJFTkRFUl9TSEFET1dTXFxudW5pZm9ybSBtYXQ0IHVfbGlnaHRfbWF0cml4XzA7dW5pZm9ybSBtYXQ0IHVfbGlnaHRfbWF0cml4XzE7dmFyeWluZyBoaWdocCB2ZWM0IHZfcG9zX2xpZ2h0X3ZpZXdfMDt2YXJ5aW5nIGhpZ2hwIHZlYzQgdl9wb3NfbGlnaHRfdmlld18xO3ZhcnlpbmcgZmxvYXQgdl9kZXB0aDtcXG4jZW5kaWZcXG4jaWZkZWYgWkVST19ST09GX1JBRElVU1xcbnZhcnlpbmcgdmVjNCB2X3Jvb2ZfY29sb3I7XFxuI2VuZGlmXFxuI2lmIGRlZmluZWQoWkVST19ST09GX1JBRElVUykgfHwgZGVmaW5lZChSRU5ERVJfU0hBRE9XUylcXG52YXJ5aW5nIGhpZ2hwIHZlYzMgdl9ub3JtYWw7XFxuI2VuZGlmXFxuI2lmZGVmIEZBVVhfQU9cXG51bmlmb3JtIGxvd3AgdmVjMiB1X2FvO3ZhcnlpbmcgdmVjMyB2X2FvO1xcbiNlbmRpZlxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgZmxvYXQgYmFzZVxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgZmxvYXQgaGVpZ2h0XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNvbG9yXFxudm9pZCBtYWluKCkge1xcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIGZsb2F0IGJhc2VcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCBmbG9hdCBoZWlnaHRcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGNvbG9yXFxudmVjNCBwb3Nfbng9Zmxvb3IoYV9wb3Nfbm9ybWFsX2VkKjAuNSk7dmVjNCB0b3BfdXBfbnlfc3RhcnQ9YV9wb3Nfbm9ybWFsX2VkLTIuMCpwb3Nfbng7dmVjMyB0b3BfdXBfbnk9dG9wX3VwX255X3N0YXJ0Lnh5ejtmbG9hdCB4X25vcm1hbD1wb3Nfbnguei84MTkyLjA7dmVjMyBub3JtYWw9dG9wX3VwX255Lnk9PTEuMCA/IHZlYzMoMC4wLDAuMCwxLjApIDogbm9ybWFsaXplKHZlYzMoeF9ub3JtYWwsKDIuMCp0b3BfdXBfbnkuei0xLjApKigxLjAtYWJzKHhfbm9ybWFsKSksMC4wKSk7XFxuI2lmIGRlZmluZWQoWkVST19ST09GX1JBRElVUykgfHwgZGVmaW5lZChSRU5ERVJfU0hBRE9XUylcXG52X25vcm1hbD1ub3JtYWw7XFxuI2VuZGlmXFxuYmFzZT1tYXgoMC4wLGJhc2UpO2hlaWdodD1tYXgoMC4wLHRvcF91cF9ueS55PT0wLjAgJiYgdG9wX3VwX255Lng9PTEuMCA/IGhlaWdodC11X2VkZ2VfcmFkaXVzIDogaGVpZ2h0KTtmbG9hdCB0PXRvcF91cF9ueS54O3ZlYzIgY2VudHJvaWRfcG9zPXZlYzIoMC4wKTtcXG4jaWYgZGVmaW5lZChIQVNfQ0VOVFJPSUQpIHx8IGRlZmluZWQoVEVSUkFJTilcXG5jZW50cm9pZF9wb3M9YV9jZW50cm9pZF9wb3M7XFxuI2VuZGlmXFxuZmxvYXQgZWxlPTAuMDtmbG9hdCBoPTAuMDtmbG9hdCBjX2VsZTt2ZWMzIHBvcztcXG4jaWZkZWYgVEVSUkFJTlxcbmJvb2wgZmxhdF9yb29mPWNlbnRyb2lkX3Bvcy54ICE9MC4wICYmIHQgPiAwLjA7ZWxlPWVsZXZhdGlvbihwb3NfbngueHkpO2NfZWxlPWZsYXRfcm9vZiA/IGNlbnRyb2lkX3Bvcy55PT0wLjAgPyBlbGV2YXRpb25Gcm9tVWludDE2KGNlbnRyb2lkX3Bvcy54KSA6IGZsYXRFbGV2YXRpb24oY2VudHJvaWRfcG9zKSA6IGVsZTtoPWZsYXRfcm9vZiA/IG1heChjX2VsZStoZWlnaHQsZWxlK2Jhc2UrMi4wKSA6IGVsZSsodCA+IDAuMCA/IGhlaWdodCA6IGJhc2U9PTAuMCA/LTUuMCA6IGJhc2UpO3Bvcz12ZWMzKHBvc19ueC54eSxoKTtcXG4jZWxzZVxcbmg9dCA+IDAuMCA/IGhlaWdodCA6IGJhc2U7cG9zPXZlYzMocG9zX254Lnh5LGgpO1xcbiNlbmRpZlxcbiNpZmRlZiBQUk9KRUNUSU9OX0dMT0JFX1ZJRVdcXG5mbG9hdCBsaWZ0PWZsb2F0KCh0K2Jhc2UpID4gMC4wKSp1X2hlaWdodF9saWZ0O2grPWxpZnQ7dmVjMyBnbG9iZV9ub3JtYWw9bm9ybWFsaXplKG1peChhX3Bvc19ub3JtYWxfMy8xNjM4NC4wLHVfdXBfZGlyLHVfem9vbV90cmFuc2l0aW9uKSk7dmVjMyBnbG9iZV9wb3M9YV9wb3NfMytnbG9iZV9ub3JtYWwqKHVfdGlsZV91cF9zY2FsZSpoKTt2ZWMzIG1lcmNfcG9zPW1lcmNhdG9yX3RpbGVfcG9zaXRpb24odV9pbnZfcm90X21hdHJpeCxwb3MueHksdV90aWxlX2lkLHVfbWVyY19jZW50ZXIpK3VfdXBfZGlyKnVfdGlsZV91cF9zY2FsZSpwb3Muejtwb3M9bWl4X2dsb2JlX21lcmNhdG9yKGdsb2JlX3BvcyxtZXJjX3Bvcyx1X3pvb21fdHJhbnNpdGlvbik7XFxuI2VuZGlmXFxuZmxvYXQgaGlkZGVuPWZsb2F0KGNlbnRyb2lkX3Bvcy54PT0wLjAgJiYgY2VudHJvaWRfcG9zLnk9PTEuMCk7Z2xfUG9zaXRpb249bWl4KHVfbWF0cml4KnZlYzQocG9zLDEpLEFXQVksaGlkZGVuKTtcXG4jaWZkZWYgUkVOREVSX1NIQURPV1NcXG52X3Bvc19saWdodF92aWV3XzA9dV9saWdodF9tYXRyaXhfMCp2ZWM0KHBvcywxKTt2X3Bvc19saWdodF92aWV3XzE9dV9saWdodF9tYXRyaXhfMSp2ZWM0KHBvcywxKTt2X2RlcHRoPWdsX1Bvc2l0aW9uLnc7XFxuI2VuZGlmXFxuZmxvYXQgTmRvdEw9MC4wO2Zsb2F0IGNvbG9ydmFsdWU9MC4wO1xcbiNpZmRlZiBMSUdIVElOR18zRF9NT0RFXFxuTmRvdEw9Y2FsY3VsYXRlX05kb3RMKG5vcm1hbCk7XFxuI2Vsc2VcXG5jb2xvcnZhbHVlPWNvbG9yLnIqMC4yMTI2K2NvbG9yLmcqMC43MTUyK2NvbG9yLmIqMC4wNzIyO3ZlYzQgYW1iaWVudGxpZ2h0PXZlYzQoMC4wMywwLjAzLDAuMDMsMS4wKTtjb2xvcis9YW1iaWVudGxpZ2h0O05kb3RMPWNsYW1wKGRvdChub3JtYWwsdV9saWdodHBvcyksMC4wLDEuMCk7TmRvdEw9bWl4KCgxLjAtdV9saWdodGludGVuc2l0eSksbWF4KCgxLjAtY29sb3J2YWx1ZSt1X2xpZ2h0aW50ZW5zaXR5KSwxLjApLE5kb3RMKTtcXG4jZW5kaWZcXG5pZiAobm9ybWFsLnkgIT0wLjApIHtmbG9hdCByPTAuODQ7XFxuI2lmbmRlZiBMSUdIVElOR18zRF9NT0RFXFxucj1taXgoMC43LDAuOTgsMS4wLXVfbGlnaHRpbnRlbnNpdHkpO1xcbiNlbmRpZlxcbk5kb3RMKj0oXFxuKDEuMC11X3ZlcnRpY2FsX2dyYWRpZW50KSsodV92ZXJ0aWNhbF9ncmFkaWVudCpjbGFtcCgodCtiYXNlKSpwb3coaGVpZ2h0LzE1MC4wLDAuNSksciwxLjApKSk7fXZfY29sb3I9dmVjNCgwLjAsMC4wLDAuMCwxLjApO1xcbiNpZmRlZiBGQVVYX0FPXFxuZmxvYXQgY29uY2F2ZT1wb3Nfbngudy1mbG9vcihwb3NfbngudyowLjUpKjIuMDtmbG9hdCBzdGFydD10b3BfdXBfbnlfc3RhcnQudztmbG9hdCB5X2dyb3VuZD0xLjAtY2xhbXAodCtiYXNlLDAuMCwxLjApO2Zsb2F0IHRvcF9oZWlnaHQ9aGVpZ2h0O1xcbiNpZmRlZiBURVJSQUlOXFxudG9wX2hlaWdodD1taXgobWF4KGNfZWxlK2hlaWdodCxlbGUrYmFzZSsyLjApLGVsZStoZWlnaHQsZmxvYXQoY2VudHJvaWRfcG9zLng9PTAuMCkpLWVsZTt5X2dyb3VuZCs9eV9ncm91bmQqNS4wL21heCgzLjAsdG9wX2hlaWdodCk7XFxuI2VuZGlmXFxudl9hbz12ZWMzKG1peChjb25jYXZlLC1jb25jYXZlLHN0YXJ0KSx5X2dyb3VuZCxoLWVsZSk7TmRvdEwqPSgxLjArMC4wNSooMS4wLXRvcF91cF9ueS55KSp1X2FvWzBdKTtcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxudG9wX2hlaWdodCs9dV9oZWlnaHRfbGlmdDtcXG4jZW5kaWZcXG5nbF9Qb3NpdGlvbi56LT0oMC4wMDAwMDA2KihtaW4odG9wX2hlaWdodCw1MDAuKSsyLjAqbWluKGJhc2UsNTAwLjApKzYwLjAqY29uY2F2ZSszLjAqc3RhcnQpKSpnbF9Qb3NpdGlvbi53O1xcbiNlbmRpZlxcbiNpZmRlZiBMSUdIVElOR18zRF9NT0RFXFxudl9jb2xvcj1hcHBseV9saWdodGluZyhjb2xvcixOZG90TCk7XFxuI2Vsc2VcXG52X2NvbG9yLnJnYis9Y2xhbXAoY29sb3IucmdiKk5kb3RMKnVfbGlnaHRjb2xvcixtaXgodmVjMygwLjApLHZlYzMoMC4zKSwxLjAtdV9saWdodGNvbG9yKSx2ZWMzKDEuMCkpO1xcbiNlbmRpZlxcbnZfY29sb3IqPXVfb3BhY2l0eTtcXG4jaWZkZWYgWkVST19ST09GX1JBRElVU1xcbnZfcm9vZl9jb2xvcj12ZWM0KDAuMCwwLjAsMC4wLDEuMCk7XFxuI2lmZGVmIExJR0hUSU5HXzNEX01PREVcXG52X3Jvb2ZfY29sb3I9YXBwbHlfbGlnaHRpbmcoY29sb3IsY2FsY3VsYXRlX05kb3RMKHZlYzMoMC4wLDAuMCwxLjApKSk7XFxuI2Vsc2VcXG5mbG9hdCByb29mTmRvdEw9Y2xhbXAodV9saWdodHBvcy56LDAuMCwxLjApO3Jvb2ZOZG90TD1taXgoKDEuMC11X2xpZ2h0aW50ZW5zaXR5KSxtYXgoKDEuMC1jb2xvcnZhbHVlK3VfbGlnaHRpbnRlbnNpdHkpLDEuMCkscm9vZk5kb3RMKTt2X3Jvb2ZfY29sb3IucmdiKz1jbGFtcChjb2xvci5yZ2Iqcm9vZk5kb3RMKnVfbGlnaHRjb2xvcixtaXgodmVjMygwLjApLHZlYzMoMC4zKSwxLjAtdV9saWdodGNvbG9yKSx2ZWMzKDEuMCkpO1xcbiNlbmRpZlxcbnZfcm9vZl9jb2xvcio9dV9vcGFjaXR5O1xcbiNlbmRpZlxcbiNpZmRlZiBGT0dcXG52X2ZvZ19wb3M9Zm9nX3Bvc2l0aW9uKHBvcyk7XFxuI2VuZGlmXFxufVwiKSxmaWxsRXh0cnVzaW9uUGF0dGVybjp1aShcInVuaWZvcm0gdmVjMiB1X3RleHNpemU7dW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTtcXG4jaWZkZWYgRkFVWF9BT1xcbnVuaWZvcm0gbG93cCB2ZWMyIHVfYW87dmFyeWluZyB2ZWMzIHZfYW87XFxuI2VuZGlmXFxuI2lmZGVmIExJR0hUSU5HXzNEX01PREVcXG52YXJ5aW5nIGZsb2F0IHZfTmRvdEw7XFxuI2VuZGlmXFxudmFyeWluZyB2ZWMyIHZfcG9zO3ZhcnlpbmcgdmVjNCB2X2xpZ2h0aW5nO3VuaWZvcm0gbG93cCBmbG9hdCB1X29wYWNpdHk7XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJhc2VcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgaGVpZ2h0XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVyblxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBwaXhlbF9yYXRpb1xcbnZvaWQgbWFpbigpIHtcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJhc2VcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGhlaWdodFxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0ZXJuXFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBwaXhlbF9yYXRpb1xcbnZlYzIgcGF0dGVybl90bD1wYXR0ZXJuLnh5O3ZlYzIgcGF0dGVybl9icj1wYXR0ZXJuLnp3O3ZlYzIgaW1hZ2Vjb29yZD1tb2Qodl9wb3MsMS4wKTt2ZWMyIHBvcz1taXgocGF0dGVybl90bC91X3RleHNpemUscGF0dGVybl9ici91X3RleHNpemUsaW1hZ2Vjb29yZCk7dmVjNCBvdXRfY29sb3I9dGV4dHVyZTJEKHVfaW1hZ2UscG9zKTtcXG4jaWZkZWYgTElHSFRJTkdfM0RfTU9ERVxcbm91dF9jb2xvcj1hcHBseV9saWdodGluZyhvdXRfY29sb3Isdl9OZG90TCkqdV9vcGFjaXR5O1xcbiNlbHNlXFxub3V0X2NvbG9yPW91dF9jb2xvcip2X2xpZ2h0aW5nO1xcbiNlbmRpZlxcbiNpZmRlZiBGQVVYX0FPXFxuZmxvYXQgaW50ZW5zaXR5PXVfYW9bMF07ZmxvYXQgaD1tYXgoMC4wLHZfYW8ueik7ZmxvYXQgaF9mbG9vcnM9aC91X2FvWzFdO2Zsb2F0IHlfc2hhZGU9MS4wLTAuOSppbnRlbnNpdHkqbWluKHZfYW8ueSwxLjApO2Zsb2F0IHNoYWRlPSgxLjAtMC4wOCppbnRlbnNpdHkpKih5X3NoYWRlKygxLjAteV9zaGFkZSkqKDEuMC1wb3coMS4wLW1pbihoX2Zsb29ycy8xNi4wLDEuMCksMTYuMCkpKSswLjA4KmludGVuc2l0eSptaW4oaF9mbG9vcnMvMTYwLjAsMS4wKTtmbG9hdCBjb25jYXZlPXZfYW8ueCp2X2FvLng7ZmxvYXQgeF9zaGFkZT1taXgoMS4wLG1peCgwLjYsMC43NSxtaW4oaF9mbG9vcnMvMzAuMCwxLjApKSxpbnRlbnNpdHkpKzAuMSppbnRlbnNpdHkqbWluKGgsMS4wKTtzaGFkZSo9bWl4KDEuMCx4X3NoYWRlKnhfc2hhZGUqeF9zaGFkZSxjb25jYXZlKTtvdXRfY29sb3IucmdiPW91dF9jb2xvci5yZ2Iqc2hhZGU7XFxuI2VuZGlmXFxuI2lmZGVmIEZPR1xcbm91dF9jb2xvcj1mb2dfZGl0aGVyKGZvZ19hcHBseV9wcmVtdWx0aXBsaWVkKG91dF9jb2xvcix2X2ZvZ19wb3MpKTtcXG4jZW5kaWZcXG5nbF9GcmFnQ29sb3I9b3V0X2NvbG9yO1xcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cIixcInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF91cHBlcjt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF9sb3dlcjt1bmlmb3JtIGZsb2F0IHVfaGVpZ2h0X2ZhY3Rvcjt1bmlmb3JtIGZsb2F0IHVfdGlsZV91bml0c190b19waXhlbHM7dW5pZm9ybSBmbG9hdCB1X3ZlcnRpY2FsX2dyYWRpZW50O3VuaWZvcm0gbG93cCBmbG9hdCB1X29wYWNpdHk7dW5pZm9ybSB2ZWMzIHVfbGlnaHRjb2xvcjt1bmlmb3JtIGxvd3AgdmVjMyB1X2xpZ2h0cG9zO3VuaWZvcm0gbG93cCBmbG9hdCB1X2xpZ2h0aW50ZW5zaXR5O2F0dHJpYnV0ZSB2ZWM0IGFfcG9zX25vcm1hbF9lZDthdHRyaWJ1dGUgdmVjMiBhX2NlbnRyb2lkX3BvcztcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxuYXR0cmlidXRlIHZlYzMgYV9wb3NfMzthdHRyaWJ1dGUgdmVjMyBhX3Bvc19ub3JtYWxfMzt1bmlmb3JtIG1hdDQgdV9pbnZfcm90X21hdHJpeDt1bmlmb3JtIHZlYzIgdV9tZXJjX2NlbnRlcjt1bmlmb3JtIHZlYzMgdV90aWxlX2lkO3VuaWZvcm0gZmxvYXQgdV96b29tX3RyYW5zaXRpb247dW5pZm9ybSB2ZWMzIHVfdXBfZGlyO3VuaWZvcm0gZmxvYXQgdV9oZWlnaHRfbGlmdDtcXG4jZW5kaWZcXG52YXJ5aW5nIHZlYzIgdl9wb3M7dmFyeWluZyB2ZWM0IHZfbGlnaHRpbmc7XFxuI2lmZGVmIEZBVVhfQU9cXG51bmlmb3JtIGxvd3AgdmVjMiB1X2FvO3ZhcnlpbmcgdmVjMyB2X2FvO1xcbiNlbmRpZlxcbiNpZmRlZiBMSUdIVElOR18zRF9NT0RFXFxudmFyeWluZyBmbG9hdCB2X05kb3RMO1xcbiNlbmRpZlxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBiYXNlXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGhlaWdodFxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBhdHRlcm5cXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9cXG52b2lkIG1haW4oKSB7XFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBiYXNlXFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBoZWlnaHRcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVyblxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9cXG52ZWMyIHBhdHRlcm5fdGw9cGF0dGVybi54eTt2ZWMyIHBhdHRlcm5fYnI9cGF0dGVybi56dzt2ZWM0IHBvc19ueD1mbG9vcihhX3Bvc19ub3JtYWxfZWQqMC41KTttZWRpdW1wIHZlYzQgdG9wX3VwX255X3N0YXJ0PWFfcG9zX25vcm1hbF9lZC0yLjAqcG9zX254O21lZGl1bXAgdmVjMyB0b3BfdXBfbnk9dG9wX3VwX255X3N0YXJ0Lnh5ejtmbG9hdCB4X25vcm1hbD1wb3Nfbnguei84MTkyLjA7dmVjMyBub3JtYWw9dG9wX3VwX255Lnk9PTEuMCA/IHZlYzMoMC4wLDAuMCwxLjApIDogbm9ybWFsaXplKHZlYzMoeF9ub3JtYWwsKDIuMCp0b3BfdXBfbnkuei0xLjApKigxLjAtYWJzKHhfbm9ybWFsKSksMC4wKSk7ZmxvYXQgZWRnZWRpc3RhbmNlPWFfcG9zX25vcm1hbF9lZC53O3ZlYzIgZGlzcGxheV9zaXplPShwYXR0ZXJuX2JyLXBhdHRlcm5fdGwpL3BpeGVsX3JhdGlvO2Jhc2U9bWF4KDAuMCxiYXNlKTtoZWlnaHQ9bWF4KDAuMCxoZWlnaHQpO2Zsb2F0IHQ9dG9wX3VwX255Lng7ZmxvYXQgej10ID4gMC4wID8gaGVpZ2h0IDogYmFzZTt2ZWMyIGNlbnRyb2lkX3Bvcz12ZWMyKDAuMCk7XFxuI2lmIGRlZmluZWQoSEFTX0NFTlRST0lEKSB8fCBkZWZpbmVkKFRFUlJBSU4pXFxuY2VudHJvaWRfcG9zPWFfY2VudHJvaWRfcG9zO1xcbiNlbmRpZlxcbmZsb2F0IGVsZT0wLjA7ZmxvYXQgaD16O3ZlYzMgcDtmbG9hdCBjX2VsZTtcXG4jaWZkZWYgVEVSUkFJTlxcbmJvb2wgZmxhdF9yb29mPWNlbnRyb2lkX3Bvcy54ICE9MC4wICYmIHQgPiAwLjA7ZWxlPWVsZXZhdGlvbihwb3NfbngueHkpO2NfZWxlPWZsYXRfcm9vZiA/IGNlbnRyb2lkX3Bvcy55PT0wLjAgPyBlbGV2YXRpb25Gcm9tVWludDE2KGNlbnRyb2lkX3Bvcy54KSA6IGZsYXRFbGV2YXRpb24oY2VudHJvaWRfcG9zKSA6IGVsZTtoPWZsYXRfcm9vZiA/IG1heChjX2VsZStoZWlnaHQsZWxlK2Jhc2UrMi4wKSA6IGVsZSsodCA+IDAuMCA/IGhlaWdodCA6IGJhc2U9PTAuMCA/LTUuMCA6IGJhc2UpO3A9dmVjMyhwb3NfbngueHksaCk7XFxuI2Vsc2VcXG5wPXZlYzMocG9zX254Lnh5LHopO1xcbiNlbmRpZlxcbiNpZmRlZiBQUk9KRUNUSU9OX0dMT0JFX1ZJRVdcXG5mbG9hdCBsaWZ0PWZsb2F0KCh0K2Jhc2UpID4gMC4wKSp1X2hlaWdodF9saWZ0O2grPWxpZnQ7dmVjMyBnbG9iZV9ub3JtYWw9bm9ybWFsaXplKG1peChhX3Bvc19ub3JtYWxfMy8xNjM4NC4wLHVfdXBfZGlyLHVfem9vbV90cmFuc2l0aW9uKSk7dmVjMyBnbG9iZV9wb3M9YV9wb3NfMytnbG9iZV9ub3JtYWwqKHVfdGlsZV91cF9zY2FsZSoocC56K2xpZnQpKTt2ZWMzIG1lcmNfcG9zPW1lcmNhdG9yX3RpbGVfcG9zaXRpb24odV9pbnZfcm90X21hdHJpeCxwLnh5LHVfdGlsZV9pZCx1X21lcmNfY2VudGVyKSt1X3VwX2Rpcip1X3RpbGVfdXBfc2NhbGUqcC56O3A9bWl4X2dsb2JlX21lcmNhdG9yKGdsb2JlX3BvcyxtZXJjX3Bvcyx1X3pvb21fdHJhbnNpdGlvbik7XFxuI2VuZGlmXFxuZmxvYXQgaGlkZGVuPWZsb2F0KGNlbnRyb2lkX3Bvcy54PT0wLjAgJiYgY2VudHJvaWRfcG9zLnk9PTEuMCk7Z2xfUG9zaXRpb249bWl4KHVfbWF0cml4KnZlYzQocCwxKSxBV0FZLGhpZGRlbik7dmVjMiBwb3M9bm9ybWFsLno9PTEuMFxcbj8gcG9zX254Lnh5XFxuOiB2ZWMyKGVkZ2VkaXN0YW5jZSx6KnVfaGVpZ2h0X2ZhY3Rvcik7dl9wb3M9Z2V0X3BhdHRlcm5fcG9zKHVfcGl4ZWxfY29vcmRfdXBwZXIsdV9waXhlbF9jb29yZF9sb3dlcixkaXNwbGF5X3NpemUsdV90aWxlX3VuaXRzX3RvX3BpeGVscyxwb3MpO3ZfbGlnaHRpbmc9dmVjNCgwLjAsMC4wLDAuMCwxLjApO2Zsb2F0IE5kb3RMPTAuMDtcXG4jaWZkZWYgTElHSFRJTkdfM0RfTU9ERVxcbk5kb3RMPWNhbGN1bGF0ZV9OZG90TChub3JtYWwpO1xcbiNlbHNlXFxuTmRvdEw9Y2xhbXAoZG90KG5vcm1hbCx1X2xpZ2h0cG9zKSwwLjAsMS4wKTtOZG90TD1taXgoKDEuMC11X2xpZ2h0aW50ZW5zaXR5KSxtYXgoKDAuNSt1X2xpZ2h0aW50ZW5zaXR5KSwxLjApLE5kb3RMKTtcXG4jZW5kaWZcXG5pZiAobm9ybWFsLnkgIT0wLjApIHtmbG9hdCByPTAuODQ7XFxuI2lmbmRlZiBMSUdIVElOR18zRF9NT0RFXFxucj1taXgoMC43LDAuOTgsMS4wLXVfbGlnaHRpbnRlbnNpdHkpO1xcbiNlbmRpZlxcbk5kb3RMKj0oXFxuKDEuMC11X3ZlcnRpY2FsX2dyYWRpZW50KSsodV92ZXJ0aWNhbF9ncmFkaWVudCpjbGFtcCgodCtiYXNlKSpwb3coaGVpZ2h0LzE1MC4wLDAuNSksciwxLjApKSk7fVxcbiNpZmRlZiBGQVVYX0FPXFxuZmxvYXQgY29uY2F2ZT1wb3Nfbngudy1mbG9vcihwb3NfbngudyowLjUpKjIuMDtmbG9hdCBzdGFydD10b3BfdXBfbnlfc3RhcnQudztmbG9hdCB5X2dyb3VuZD0xLjAtY2xhbXAodCtiYXNlLDAuMCwxLjApO2Zsb2F0IHRvcF9oZWlnaHQ9aGVpZ2h0O1xcbiNpZmRlZiBURVJSQUlOXFxudG9wX2hlaWdodD1taXgobWF4KGNfZWxlK2hlaWdodCxlbGUrYmFzZSsyLjApLGVsZStoZWlnaHQsZmxvYXQoY2VudHJvaWRfcG9zLng9PTAuMCkpLWVsZTt5X2dyb3VuZCs9eV9ncm91bmQqNS4wL21heCgzLjAsdG9wX2hlaWdodCk7XFxuI2VuZGlmXFxudl9hbz12ZWMzKG1peChjb25jYXZlLC1jb25jYXZlLHN0YXJ0KSx5X2dyb3VuZCxoLWVsZSk7TmRvdEwqPSgxLjArMC4wNSooMS4wLXRvcF91cF9ueS55KSp1X2FvWzBdKTtcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxudG9wX2hlaWdodCs9dV9oZWlnaHRfbGlmdDtcXG4jZW5kaWZcXG5nbF9Qb3NpdGlvbi56LT0oMC4wMDAwMDA2KihtaW4odG9wX2hlaWdodCw1MDAuKSsyLjAqbWluKGJhc2UsNTAwLjApKzYwLjAqY29uY2F2ZSszLjAqc3RhcnQpKSpnbF9Qb3NpdGlvbi53O1xcbiNlbmRpZlxcbiNpZmRlZiBMSUdIVElOR18zRF9NT0RFXFxudl9OZG90TD1OZG90TDtcXG4jZWxzZVxcbnZfbGlnaHRpbmcucmdiKz1jbGFtcChOZG90TCp1X2xpZ2h0Y29sb3IsbWl4KHZlYzMoMC4wKSx2ZWMzKDAuMyksMS4wLXVfbGlnaHRjb2xvciksdmVjMygxLjApKTt2X2xpZ2h0aW5nKj11X29wYWNpdHk7XFxuI2VuZGlmIFxcbiNpZmRlZiBGT0dcXG52X2ZvZ19wb3M9Zm9nX3Bvc2l0aW9uKHApO1xcbiNlbmRpZlxcbn1cIiksaGlsbHNoYWRlUHJlcGFyZTp1aShcIiNpZmRlZiBHTF9FU1xcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcXG4jZW5kaWZcXG51bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO3ZhcnlpbmcgdmVjMiB2X3Bvczt1bmlmb3JtIHZlYzIgdV9kaW1lbnNpb247dW5pZm9ybSBmbG9hdCB1X3pvb207dW5pZm9ybSB2ZWM0IHVfdW5wYWNrO2Zsb2F0IGdldEVsZXZhdGlvbih2ZWMyIGNvb3JkKSB7XFxuI2lmZGVmIFRFUlJBSU5fREVNX0ZMT0FUX0ZPUk1BVFxcbnJldHVybiB0ZXh0dXJlMkQodV9pbWFnZSxjb29yZCkuYS80LjA7XFxuI2Vsc2VcXG52ZWM0IGRhdGE9dGV4dHVyZTJEKHVfaW1hZ2UsY29vcmQpKjI1NS4wO2RhdGEuYT0tMS4wO3JldHVybiBkb3QoZGF0YSx1X3VucGFjaykvNC4wO1xcbiNlbmRpZlxcbn12b2lkIG1haW4oKSB7dmVjMiBlcHNpbG9uPTEuMC91X2RpbWVuc2lvbjtmbG9hdCBhPWdldEVsZXZhdGlvbih2X3Bvcyt2ZWMyKC1lcHNpbG9uLngsLWVwc2lsb24ueSkpO2Zsb2F0IGI9Z2V0RWxldmF0aW9uKHZfcG9zK3ZlYzIoMCwtZXBzaWxvbi55KSk7ZmxvYXQgYz1nZXRFbGV2YXRpb24odl9wb3MrdmVjMihlcHNpbG9uLngsLWVwc2lsb24ueSkpO2Zsb2F0IGQ9Z2V0RWxldmF0aW9uKHZfcG9zK3ZlYzIoLWVwc2lsb24ueCwwKSk7ZmxvYXQgZT1nZXRFbGV2YXRpb24odl9wb3MrdmVjMihlcHNpbG9uLngsMCkpO2Zsb2F0IGY9Z2V0RWxldmF0aW9uKHZfcG9zK3ZlYzIoLWVwc2lsb24ueCxlcHNpbG9uLnkpKTtmbG9hdCBnPWdldEVsZXZhdGlvbih2X3Bvcyt2ZWMyKDAsZXBzaWxvbi55KSk7ZmxvYXQgaD1nZXRFbGV2YXRpb24odl9wb3MrdmVjMihlcHNpbG9uLngsZXBzaWxvbi55KSk7ZmxvYXQgZXhhZ2dlcmF0aW9uRmFjdG9yPXVfem9vbSA8IDIuMCA/IDAuNCA6IHVfem9vbSA8IDQuNSA/IDAuMzUgOiAwLjM7ZmxvYXQgZXhhZ2dlcmF0aW9uPXVfem9vbSA8IDE1LjAgPyAodV96b29tLTE1LjApKmV4YWdnZXJhdGlvbkZhY3RvciA6IDAuMDt2ZWMyIGRlcml2PXZlYzIoXFxuKGMrZStlK2gpLShhK2QrZCtmKSwoZitnK2craCktKGErYitiK2MpXFxuKS9wb3coMi4wLGV4YWdnZXJhdGlvbisoMTkuMjU2Mi11X3pvb20pKTtnbF9GcmFnQ29sb3I9Y2xhbXAodmVjNChcXG5kZXJpdi54LzIuMCswLjUsZGVyaXYueS8yLjArMC41LDEuMCwxLjApLDAuMCwxLjApO1xcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cIixcInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV9kaW1lbnNpb247YXR0cmlidXRlIHZlYzIgYV9wb3M7YXR0cmlidXRlIHZlYzIgYV90ZXh0dXJlX3Bvczt2YXJ5aW5nIHZlYzIgdl9wb3M7dm9pZCBtYWluKCkge2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTtoaWdocCB2ZWMyIGVwc2lsb249MS4wL3VfZGltZW5zaW9uO2Zsb2F0IHNjYWxlPSh1X2RpbWVuc2lvbi54LTIuMCkvdV9kaW1lbnNpb24ueDt2X3Bvcz0oYV90ZXh0dXJlX3Bvcy84MTkyLjApKnNjYWxlK2Vwc2lsb247fVwiKSxoaWxsc2hhZGU6dWkoXCJ1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO3ZhcnlpbmcgdmVjMiB2X3Bvczt1bmlmb3JtIHZlYzIgdV9sYXRyYW5nZTt1bmlmb3JtIHZlYzIgdV9saWdodDt1bmlmb3JtIHZlYzQgdV9zaGFkb3c7dW5pZm9ybSB2ZWM0IHVfaGlnaGxpZ2h0O3VuaWZvcm0gdmVjNCB1X2FjY2VudDt2b2lkIG1haW4oKSB7dmVjNCBwaXhlbD10ZXh0dXJlMkQodV9pbWFnZSx2X3Bvcyk7dmVjMiBkZXJpdj0oKHBpeGVsLnJnKjIuMCktMS4wKTtmbG9hdCBzY2FsZUZhY3Rvcj1jb3MocmFkaWFucygodV9sYXRyYW5nZVswXS11X2xhdHJhbmdlWzFdKSooMS4wLXZfcG9zLnkpK3VfbGF0cmFuZ2VbMV0pKTtmbG9hdCBzbG9wZT1hdGFuKDEuMjUqbGVuZ3RoKGRlcml2KS9zY2FsZUZhY3Rvcik7ZmxvYXQgYXNwZWN0PWRlcml2LnggIT0wLjAgPyBhdGFuKGRlcml2LnksLWRlcml2LngpIDogUEkvMi4wKihkZXJpdi55ID4gMC4wID8gMS4wIDotMS4wKTtmbG9hdCBpbnRlbnNpdHk9dV9saWdodC54O2Zsb2F0IGF6aW11dGg9dV9saWdodC55K1BJO2Zsb2F0IGJhc2U9MS44NzUtaW50ZW5zaXR5KjEuNzU7ZmxvYXQgbWF4VmFsdWU9MC41KlBJO2Zsb2F0IHNjYWxlZFNsb3BlPWludGVuc2l0eSAhPTAuNSA/ICgocG93KGJhc2Usc2xvcGUpLTEuMCkvKHBvdyhiYXNlLG1heFZhbHVlKS0xLjApKSptYXhWYWx1ZSA6IHNsb3BlO2Zsb2F0IGFjY2VudD1jb3Moc2NhbGVkU2xvcGUpO3ZlYzQgYWNjZW50X2NvbG9yPSgxLjAtYWNjZW50KSp1X2FjY2VudCpjbGFtcChpbnRlbnNpdHkqMi4wLDAuMCwxLjApO2Zsb2F0IHNoYWRlPWFicyhtb2QoKGFzcGVjdCthemltdXRoKS9QSSswLjUsMi4wKS0xLjApO3ZlYzQgc2hhZGVfY29sb3I9bWl4KHVfc2hhZG93LHVfaGlnaGxpZ2h0LHNoYWRlKSpzaW4oc2NhbGVkU2xvcGUpKmNsYW1wKGludGVuc2l0eSoyLjAsMC4wLDEuMCk7Z2xfRnJhZ0NvbG9yPWFjY2VudF9jb2xvciooMS4wLXNoYWRlX2NvbG9yLmEpK3NoYWRlX2NvbG9yO1xcbiNpZmRlZiBMSUdIVElOR18zRF9NT0RFXFxuZ2xfRnJhZ0NvbG9yPWFwcGx5X2xpZ2h0aW5nKGdsX0ZyYWdDb2xvcik7XFxuI2VuZGlmXFxuI2lmZGVmIEZPR1xcbmdsX0ZyYWdDb2xvcj1mb2dfZGl0aGVyKGZvZ19hcHBseV9wcmVtdWx0aXBsaWVkKGdsX0ZyYWdDb2xvcix2X2ZvZ19wb3MpKTtcXG4jZW5kaWZcXG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXFxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcXG4jZW5kaWZcXG59XCIsXCJ1bmlmb3JtIG1hdDQgdV9tYXRyaXg7YXR0cmlidXRlIHZlYzIgYV9wb3M7YXR0cmlidXRlIHZlYzIgYV90ZXh0dXJlX3Bvczt2YXJ5aW5nIHZlYzIgdl9wb3M7dm9pZCBtYWluKCkge2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTt2X3Bvcz1hX3RleHR1cmVfcG9zLzgxOTIuMDtcXG4jaWZkZWYgRk9HXFxudl9mb2dfcG9zPWZvZ19wb3NpdGlvbihhX3Bvcyk7XFxuI2VuZGlmXFxufVwiKSxsaW5lOnVpKFwidW5pZm9ybSBsb3dwIGZsb2F0IHVfZGV2aWNlX3BpeGVsX3JhdGlvO3VuaWZvcm0gZmxvYXQgdV9hbHBoYV9kaXNjYXJkX3RocmVzaG9sZDt1bmlmb3JtIGhpZ2hwIHZlYzIgdV90cmltX29mZnNldDt2YXJ5aW5nIHZlYzIgdl93aWR0aDI7dmFyeWluZyB2ZWMyIHZfbm9ybWFsO3ZhcnlpbmcgZmxvYXQgdl9nYW1tYV9zY2FsZTt2YXJ5aW5nIGhpZ2hwIHZlYzQgdl91djtcXG4jaWZkZWYgUkVOREVSX0xJTkVfREFTSFxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfZGFzaF9pbWFnZTt2YXJ5aW5nIHZlYzIgdl90ZXg7XFxuI2VuZGlmXFxuI2lmZGVmIFJFTkRFUl9MSU5FX0dSQURJRU5UXFxudW5pZm9ybSBzYW1wbGVyMkQgdV9ncmFkaWVudF9pbWFnZTtcXG4jZW5kaWZcXG51bmlmb3JtIGZsb2F0IHVfYm9yZGVyX3dpZHRoO3VuaWZvcm0gdmVjNCB1X2JvcmRlcl9jb2xvcjtmbG9hdCBsdW1pbmFuY2UodmVjMyBjKSB7cmV0dXJuIChjLnIrYy5yK2MuYitjLmcrYy5nK2MuZykqMC4xNjY3O31cXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgY29sb3JcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgZmxvb3J3aWR0aFxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IGRhc2hcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuZmxvYXQgbGluZWFyc3RlcChmbG9hdCBlZGdlMCxmbG9hdCBlZGdlMSxmbG9hdCB4KSB7cmV0dXJuICBjbGFtcCgoeC1lZGdlMCkvKGVkZ2UxLWVkZ2UwKSwwLjAsMS4wKTt9dm9pZCBtYWluKCkge1xcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGZsb29yd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIHZlYzQgZGFzaFxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgYmx1clxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcbmZsb2F0IGRpc3Q9bGVuZ3RoKHZfbm9ybWFsKSp2X3dpZHRoMi5zO2Zsb2F0IGJsdXIyPShibHVyKzEuMC91X2RldmljZV9waXhlbF9yYXRpbykqdl9nYW1tYV9zY2FsZTtmbG9hdCBhbHBoYT1jbGFtcChtaW4oZGlzdC0odl93aWR0aDIudC1ibHVyMiksdl93aWR0aDIucy1kaXN0KS9ibHVyMiwwLjAsMS4wKTtcXG4jaWZkZWYgUkVOREVSX0xJTkVfREFTSFxcbmZsb2F0IHNkZmRpc3Q9dGV4dHVyZTJEKHVfZGFzaF9pbWFnZSx2X3RleCkuYTtmbG9hdCBzZGZnYW1tYT0xLjAvKDIuMCp1X2RldmljZV9waXhlbF9yYXRpbykvZGFzaC56O2FscGhhKj1saW5lYXJzdGVwKDAuNS1zZGZnYW1tYS9mbG9vcndpZHRoLDAuNStzZGZnYW1tYS9mbG9vcndpZHRoLHNkZmRpc3QpO1xcbiNlbmRpZlxcbmhpZ2hwIHZlYzQgb3V0X2NvbG9yO1xcbiNpZmRlZiBSRU5ERVJfTElORV9HUkFESUVOVFxcbm91dF9jb2xvcj10ZXh0dXJlMkQodV9ncmFkaWVudF9pbWFnZSx2X3V2Lnh5KTtcXG4jZWxzZVxcbm91dF9jb2xvcj1jb2xvcjtcXG4jZW5kaWZcXG5mbG9hdCB0cmltbWVkPTEuMDtcXG4jaWZkZWYgUkVOREVSX0xJTkVfVFJJTV9PRkZTRVRcXG5oaWdocCBmbG9hdCBzdGFydD12X3V2WzJdO2hpZ2hwIGZsb2F0IGVuZD12X3V2WzNdO2hpZ2hwIGZsb2F0IHRyaW1fc3RhcnQ9dV90cmltX29mZnNldFswXTtoaWdocCBmbG9hdCB0cmltX2VuZD11X3RyaW1fb2Zmc2V0WzFdO2hpZ2hwIGZsb2F0IGxpbmVfcHJvZ3Jlc3M9KHN0YXJ0Kyh2X3V2LngpKihlbmQtc3RhcnQpKTtpZiAodHJpbV9lbmQgPiB0cmltX3N0YXJ0KSB7aWYgKGxpbmVfcHJvZ3Jlc3MgPD10cmltX2VuZCAmJiBsaW5lX3Byb2dyZXNzID49dHJpbV9zdGFydCkge291dF9jb2xvcj12ZWM0KDAsMCwwLDApO3RyaW1tZWQ9MC4wO319XFxuI2VuZGlmXFxuI2lmZGVmIExJR0hUSU5HXzNEX01PREVcXG5vdXRfY29sb3I9YXBwbHlfbGlnaHRpbmcob3V0X2NvbG9yKTtcXG4jZW5kaWZcXG4jaWZkZWYgRk9HXFxub3V0X2NvbG9yPWZvZ19kaXRoZXIoZm9nX2FwcGx5X3ByZW11bHRpcGxpZWQob3V0X2NvbG9yLHZfZm9nX3BvcykpO1xcbiNlbmRpZlxcbiNpZmRlZiBSRU5ERVJfTElORV9BTFBIQV9ESVNDQVJEXFxuaWYgKGFscGhhIDwgdV9hbHBoYV9kaXNjYXJkX3RocmVzaG9sZCkge2Rpc2NhcmQ7fVxcbiNlbmRpZlxcbiNpZmRlZiBSRU5ERVJfTElORV9CT1JERVJcXG5mbG9hdCBlZGdlQmx1cj0odV9ib3JkZXJfd2lkdGgrMS4wL3VfZGV2aWNlX3BpeGVsX3JhdGlvKTtmbG9hdCBhbHBoYTI9Y2xhbXAobWluKGRpc3QtKHZfd2lkdGgyLnQtZWRnZUJsdXIpLHZfd2lkdGgyLnMtZGlzdCkvZWRnZUJsdXIsMC4wLDEuMCk7aWYgKGFscGhhMiA8IDEuKSB7ZmxvYXQgc21vb3RoQWxwaGE9c21vb3Roc3RlcCgwLjYsMS4wLGFscGhhMik7XFxuI2lmZGVmIFJFTkRFUl9MSU5FX0JPUkRFUl9BVVRPXFxuZmxvYXQgWT0ob3V0X2NvbG9yLmEgPiAwLjAxKSA/IGx1bWluYW5jZShvdXRfY29sb3IucmdiL291dF9jb2xvci5hKSA6IDEuO2Zsb2F0IGFkanVzdG1lbnQ9KFkgPiAwLikgPyAwLjUvWSA6IDAuNDU7aWYgKG91dF9jb2xvci5hID4gMC4yNSAmJiBZIDwgMC4yNSkge3ZlYzMgYm9yZGVyQ29sb3I9KFkgPiAwLikgPyBvdXRfY29sb3IucmdiIDogdmVjMygxLDEsMSkqb3V0X2NvbG9yLmE7b3V0X2NvbG9yLnJnYj1vdXRfY29sb3IucmdiK2JvcmRlckNvbG9yKihhZGp1c3RtZW50KigxLjAtc21vb3RoQWxwaGEpKTt9IGVsc2Uge291dF9jb2xvci5yZ2IqPSgwLjYgKzAuNCpzbW9vdGhBbHBoYSk7fVxcbiNlbHNlXFxub3V0X2NvbG9yLnJnYj1taXgodV9ib3JkZXJfY29sb3IucmdiKnVfYm9yZGVyX2NvbG9yLmEqdHJpbW1lZCxvdXRfY29sb3IucmdiLHNtb290aEFscGhhKTtcXG4jZW5kaWZcXG59XFxuI2VuZGlmXFxuZ2xfRnJhZ0NvbG9yPW91dF9jb2xvciooYWxwaGEqb3BhY2l0eSk7XFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVwiLFwiXFxuI2RlZmluZSBFWFRSVURFX1NDQUxFIDAuMDE1ODczMDE2XFxuYXR0cmlidXRlIHZlYzIgYV9wb3Nfbm9ybWFsO2F0dHJpYnV0ZSB2ZWM0IGFfZGF0YTtcXG4jaWYgZGVmaW5lZChSRU5ERVJfTElORV9HUkFESUVOVCkgfHwgZGVmaW5lZChSRU5ERVJfTElORV9UUklNX09GRlNFVClcXG5hdHRyaWJ1dGUgaGlnaHAgdmVjNCBhX3BhY2tlZDtcXG4jZW5kaWZcXG4jaWZkZWYgUkVOREVSX0xJTkVfREFTSFxcbmF0dHJpYnV0ZSBmbG9hdCBhX2xpbmVzb2ZhcjtcXG4jZW5kaWZcXG51bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSBtYXQyIHVfcGl4ZWxzX3RvX3RpbGVfdW5pdHM7dW5pZm9ybSB2ZWMyIHVfdW5pdHNfdG9fcGl4ZWxzO3VuaWZvcm0gbG93cCBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbzt2YXJ5aW5nIHZlYzIgdl9ub3JtYWw7dmFyeWluZyB2ZWMyIHZfd2lkdGgyO3ZhcnlpbmcgZmxvYXQgdl9nYW1tYV9zY2FsZTt2YXJ5aW5nIGhpZ2hwIHZlYzQgdl91djtcXG4jaWZkZWYgUkVOREVSX0xJTkVfREFTSFxcbnVuaWZvcm0gdmVjMiB1X3RleHNpemU7dW5pZm9ybSBmbG9hdCB1X3RpbGVfdW5pdHNfdG9fcGl4ZWxzO3ZhcnlpbmcgdmVjMiB2X3RleDtcXG4jZW5kaWZcXG4jaWZkZWYgUkVOREVSX0xJTkVfR1JBRElFTlRcXG51bmlmb3JtIGZsb2F0IHVfaW1hZ2VfaGVpZ2h0O1xcbiNlbmRpZlxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBmbG9vcndpZHRoXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgZGFzaFxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBibHVyXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb2Zmc2V0XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRpdW1wIGZsb2F0IHdpZHRoXFxudm9pZCBtYWluKCkge1xcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGZsb29yd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIHZlYzQgZGFzaFxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgYmx1clxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9mZnNldFxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgd2lkdGhcXG5mbG9hdCBBTlRJQUxJQVNJTkc9MS4wL3VfZGV2aWNlX3BpeGVsX3JhdGlvLzIuMDt2ZWMyIGFfZXh0cnVkZT1hX2RhdGEueHktMTI4LjA7ZmxvYXQgYV9kaXJlY3Rpb249bW9kKGFfZGF0YS56LDQuMCktMS4wO3ZlYzIgcG9zPWZsb29yKGFfcG9zX25vcm1hbCowLjUpO21lZGl1bXAgdmVjMiBub3JtYWw9YV9wb3Nfbm9ybWFsLTIuMCpwb3M7bm9ybWFsLnk9bm9ybWFsLnkqMi4wLTEuMDt2X25vcm1hbD1ub3JtYWw7Z2Fwd2lkdGg9Z2Fwd2lkdGgvMi4wO2Zsb2F0IGhhbGZ3aWR0aD13aWR0aC8yLjA7b2Zmc2V0PS0xLjAqb2Zmc2V0O2Zsb2F0IGluc2V0PWdhcHdpZHRoKyhnYXB3aWR0aCA+IDAuMCA/IEFOVElBTElBU0lORyA6IDAuMCk7ZmxvYXQgb3V0c2V0PWdhcHdpZHRoK2hhbGZ3aWR0aCooZ2Fwd2lkdGggPiAwLjAgPyAyLjAgOiAxLjApKyhoYWxmd2lkdGg9PTAuMCA/IDAuMCA6IEFOVElBTElBU0lORyk7bWVkaXVtcCB2ZWMyIGRpc3Q9b3V0c2V0KmFfZXh0cnVkZSpFWFRSVURFX1NDQUxFO21lZGl1bXAgZmxvYXQgdT0wLjUqYV9kaXJlY3Rpb247bWVkaXVtcCBmbG9hdCB0PTEuMC1hYnModSk7bWVkaXVtcCB2ZWMyIG9mZnNldDI9b2Zmc2V0KmFfZXh0cnVkZSpFWFRSVURFX1NDQUxFKm5vcm1hbC55Km1hdDIodCwtdSx1LHQpO3ZlYzQgcHJvamVjdGVkX2V4dHJ1ZGU9dV9tYXRyaXgqdmVjNChkaXN0KnVfcGl4ZWxzX3RvX3RpbGVfdW5pdHMsMC4wLDAuMCk7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChwb3Mrb2Zmc2V0Mip1X3BpeGVsc190b190aWxlX3VuaXRzLDAuMCwxLjApK3Byb2plY3RlZF9leHRydWRlO1xcbiNpZm5kZWYgUkVOREVSX1RPX1RFWFRVUkVcXG5mbG9hdCBleHRydWRlX2xlbmd0aF93aXRob3V0X3BlcnNwZWN0aXZlPWxlbmd0aChkaXN0KTtmbG9hdCBleHRydWRlX2xlbmd0aF93aXRoX3BlcnNwZWN0aXZlPWxlbmd0aChwcm9qZWN0ZWRfZXh0cnVkZS54eS9nbF9Qb3NpdGlvbi53KnVfdW5pdHNfdG9fcGl4ZWxzKTt2X2dhbW1hX3NjYWxlPWV4dHJ1ZGVfbGVuZ3RoX3dpdGhvdXRfcGVyc3BlY3RpdmUvZXh0cnVkZV9sZW5ndGhfd2l0aF9wZXJzcGVjdGl2ZTtcXG4jZWxzZVxcbnZfZ2FtbWFfc2NhbGU9MS4wO1xcbiNlbmRpZlxcbiNpZiBkZWZpbmVkKFJFTkRFUl9MSU5FX0dSQURJRU5UKSB8fCBkZWZpbmVkKFJFTkRFUl9MSU5FX1RSSU1fT0ZGU0VUKVxcbmZsb2F0IGFfdXZfeD1hX3BhY2tlZFswXTtmbG9hdCBhX3NwbGl0X2luZGV4PWFfcGFja2VkWzFdO2hpZ2hwIGZsb2F0IGFfY2xpcF9zdGFydD1hX3BhY2tlZFsyXTtoaWdocCBmbG9hdCBhX2NsaXBfZW5kPWFfcGFja2VkWzNdO1xcbiNpZmRlZiBSRU5ERVJfTElORV9HUkFESUVOVFxcbmhpZ2hwIGZsb2F0IHRleGVsX2hlaWdodD0xLjAvdV9pbWFnZV9oZWlnaHQ7aGlnaHAgZmxvYXQgaGFsZl90ZXhlbF9oZWlnaHQ9MC41KnRleGVsX2hlaWdodDt2X3V2PXZlYzQoYV91dl94LGFfc3BsaXRfaW5kZXgqdGV4ZWxfaGVpZ2h0LWhhbGZfdGV4ZWxfaGVpZ2h0LGFfY2xpcF9zdGFydCxhX2NsaXBfZW5kKTtcXG4jZWxzZVxcbnZfdXY9dmVjNChhX3V2X3gsMC4wLGFfY2xpcF9zdGFydCxhX2NsaXBfZW5kKTtcXG4jZW5kaWZcXG4jZW5kaWZcXG4jaWZkZWYgUkVOREVSX0xJTkVfREFTSFxcbmZsb2F0IHNjYWxlPWRhc2guej09MC4wID8gMC4wIDogdV90aWxlX3VuaXRzX3RvX3BpeGVscy9kYXNoLno7ZmxvYXQgaGVpZ2h0PWRhc2gueTt2X3RleD12ZWMyKGFfbGluZXNvZmFyKnNjYWxlL2Zsb29yd2lkdGgsKC1ub3JtYWwueSpoZWlnaHQrZGFzaC54KzAuNSkvdV90ZXhzaXplLnkpO1xcbiNlbmRpZlxcbnZfd2lkdGgyPXZlYzIob3V0c2V0LGluc2V0KTtcXG4jaWZkZWYgRk9HXFxudl9mb2dfcG9zPWZvZ19wb3NpdGlvbihwb3MpO1xcbiNlbmRpZlxcbn1cIiksbGluZVBhdHRlcm46dWkoXCJ1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTt1bmlmb3JtIGZsb2F0IHVfdGlsZV91bml0c190b19waXhlbHM7dW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTt2YXJ5aW5nIHZlYzIgdl9ub3JtYWw7dmFyeWluZyB2ZWMyIHZfd2lkdGgyO3ZhcnlpbmcgZmxvYXQgdl9saW5lc29mYXI7dmFyeWluZyBmbG9hdCB2X2dhbW1hX3NjYWxlO3ZhcnlpbmcgZmxvYXQgdl93aWR0aDtcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJuXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IHBpeGVsX3JhdGlvXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJsdXJcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcbnZvaWQgbWFpbigpIHtcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIHZlYzQgcGF0dGVyblxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9cXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGJsdXJcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG52ZWMyIHBhdHRlcm5fdGw9cGF0dGVybi54eTt2ZWMyIHBhdHRlcm5fYnI9cGF0dGVybi56dzt2ZWMyIGRpc3BsYXlfc2l6ZT0ocGF0dGVybl9ici1wYXR0ZXJuX3RsKS9waXhlbF9yYXRpbzt2ZWMyIHBhdHRlcm5fc2l6ZT12ZWMyKGRpc3BsYXlfc2l6ZS54L3VfdGlsZV91bml0c190b19waXhlbHMsZGlzcGxheV9zaXplLnkpO2Zsb2F0IGFzcGVjdD1kaXNwbGF5X3NpemUueS92X3dpZHRoO2Zsb2F0IGRpc3Q9bGVuZ3RoKHZfbm9ybWFsKSp2X3dpZHRoMi5zO2Zsb2F0IGJsdXIyPShibHVyKzEuMC91X2RldmljZV9waXhlbF9yYXRpbykqdl9nYW1tYV9zY2FsZTtmbG9hdCBhbHBoYT1jbGFtcChtaW4oZGlzdC0odl93aWR0aDIudC1ibHVyMiksdl93aWR0aDIucy1kaXN0KS9ibHVyMiwwLjAsMS4wKTtmbG9hdCB4PW1vZCh2X2xpbmVzb2Zhci9wYXR0ZXJuX3NpemUueCphc3BlY3QsMS4wKTtmbG9hdCB5PTAuNSp2X25vcm1hbC55KzAuNTt2ZWMyIHRleGVsX3NpemU9MS4wL3VfdGV4c2l6ZTt2ZWMyIHBvcz1taXgocGF0dGVybl90bCp0ZXhlbF9zaXplLXRleGVsX3NpemUscGF0dGVybl9icip0ZXhlbF9zaXplK3RleGVsX3NpemUsdmVjMih4LHkpKTt2ZWM0IGNvbG9yPXRleHR1cmUyRCh1X2ltYWdlLHBvcyk7XFxuI2lmZGVmIExJR0hUSU5HXzNEX01PREVcXG5jb2xvcj1hcHBseV9saWdodGluZyhjb2xvcik7XFxuI2VuZGlmXFxuI2lmZGVmIEZPR1xcbmNvbG9yPWZvZ19kaXRoZXIoZm9nX2FwcGx5X3ByZW11bHRpcGxpZWQoY29sb3Isdl9mb2dfcG9zKSk7XFxuI2VuZGlmXFxuZ2xfRnJhZ0NvbG9yPWNvbG9yKihhbHBoYSpvcGFjaXR5KTtcXG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXFxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcXG4jZW5kaWZcXG59XCIsXCJcXG4jZGVmaW5lIHNjYWxlIDAuMDE1ODczMDE2XFxuYXR0cmlidXRlIHZlYzIgYV9wb3Nfbm9ybWFsO2F0dHJpYnV0ZSB2ZWM0IGFfZGF0YTthdHRyaWJ1dGUgZmxvYXQgYV9saW5lc29mYXI7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gdmVjMiB1X3VuaXRzX3RvX3BpeGVsczt1bmlmb3JtIG1hdDIgdV9waXhlbHNfdG9fdGlsZV91bml0czt1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dmFyeWluZyB2ZWMyIHZfbm9ybWFsO3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2YXJ5aW5nIGZsb2F0IHZfbGluZXNvZmFyO3ZhcnlpbmcgZmxvYXQgdl9nYW1tYV9zY2FsZTt2YXJ5aW5nIGZsb2F0IHZfd2lkdGg7XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJsdXJcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvZmZzZXRcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgZmxvb3J3aWR0aFxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBhdHRlcm5cXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9cXG52b2lkIG1haW4oKSB7XFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvZmZzZXRcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IGdhcHdpZHRoXFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCBmbG9hdCB3aWR0aFxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgZmxvb3J3aWR0aFxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0ZXJuXFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBwaXhlbF9yYXRpb1xcbmZsb2F0IEFOVElBTElBU0lORz0xLjAvdV9kZXZpY2VfcGl4ZWxfcmF0aW8vMi4wO3ZlYzIgYV9leHRydWRlPWFfZGF0YS54eS0xMjguMDtmbG9hdCBhX2RpcmVjdGlvbj1tb2QoYV9kYXRhLnosNC4wKS0xLjA7dmVjMiBwb3M9Zmxvb3IoYV9wb3Nfbm9ybWFsKjAuNSk7bWVkaXVtcCB2ZWMyIG5vcm1hbD1hX3Bvc19ub3JtYWwtMi4wKnBvcztub3JtYWwueT1ub3JtYWwueSoyLjAtMS4wO3Zfbm9ybWFsPW5vcm1hbDtnYXB3aWR0aD1nYXB3aWR0aC8yLjA7ZmxvYXQgaGFsZndpZHRoPXdpZHRoLzIuMDtvZmZzZXQ9LTEuMCpvZmZzZXQ7ZmxvYXQgaW5zZXQ9Z2Fwd2lkdGgrKGdhcHdpZHRoID4gMC4wID8gQU5USUFMSUFTSU5HIDogMC4wKTtmbG9hdCBvdXRzZXQ9Z2Fwd2lkdGgraGFsZndpZHRoKihnYXB3aWR0aCA+IDAuMCA/IDIuMCA6IDEuMCkrKGhhbGZ3aWR0aD09MC4wID8gMC4wIDogQU5USUFMSUFTSU5HKTttZWRpdW1wIHZlYzIgZGlzdD1vdXRzZXQqYV9leHRydWRlKnNjYWxlO21lZGl1bXAgZmxvYXQgdT0wLjUqYV9kaXJlY3Rpb247bWVkaXVtcCBmbG9hdCB0PTEuMC1hYnModSk7bWVkaXVtcCB2ZWMyIG9mZnNldDI9b2Zmc2V0KmFfZXh0cnVkZSpzY2FsZSpub3JtYWwueSptYXQyKHQsLXUsdSx0KTt2ZWM0IHByb2plY3RlZF9leHRydWRlPXVfbWF0cml4KnZlYzQoZGlzdCp1X3BpeGVsc190b190aWxlX3VuaXRzLDAuMCwwLjApO2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQocG9zK29mZnNldDIqdV9waXhlbHNfdG9fdGlsZV91bml0cywwLjAsMS4wKStwcm9qZWN0ZWRfZXh0cnVkZTtcXG4jaWZuZGVmIFJFTkRFUl9UT19URVhUVVJFXFxuZmxvYXQgZXh0cnVkZV9sZW5ndGhfd2l0aG91dF9wZXJzcGVjdGl2ZT1sZW5ndGgoZGlzdCk7ZmxvYXQgZXh0cnVkZV9sZW5ndGhfd2l0aF9wZXJzcGVjdGl2ZT1sZW5ndGgocHJvamVjdGVkX2V4dHJ1ZGUueHkvZ2xfUG9zaXRpb24udyp1X3VuaXRzX3RvX3BpeGVscyk7dl9nYW1tYV9zY2FsZT1leHRydWRlX2xlbmd0aF93aXRob3V0X3BlcnNwZWN0aXZlL2V4dHJ1ZGVfbGVuZ3RoX3dpdGhfcGVyc3BlY3RpdmU7XFxuI2Vsc2VcXG52X2dhbW1hX3NjYWxlPTEuMDtcXG4jZW5kaWZcXG52X2xpbmVzb2Zhcj1hX2xpbmVzb2Zhcjt2X3dpZHRoMj12ZWMyKG91dHNldCxpbnNldCk7dl93aWR0aD1mbG9vcndpZHRoO1xcbiNpZmRlZiBGT0dcXG52X2ZvZ19wb3M9Zm9nX3Bvc2l0aW9uKHBvcyk7XFxuI2VuZGlmXFxufVwiKSxyYXN0ZXI6dWkoXCJ1bmlmb3JtIGZsb2F0IHVfZmFkZV90O3VuaWZvcm0gZmxvYXQgdV9vcGFjaXR5O3VuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2UwO3VuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2UxO3ZhcnlpbmcgdmVjMiB2X3BvczA7dmFyeWluZyB2ZWMyIHZfcG9zMTt1bmlmb3JtIGZsb2F0IHVfYnJpZ2h0bmVzc19sb3c7dW5pZm9ybSBmbG9hdCB1X2JyaWdodG5lc3NfaGlnaDt1bmlmb3JtIGZsb2F0IHVfc2F0dXJhdGlvbl9mYWN0b3I7dW5pZm9ybSBmbG9hdCB1X2NvbnRyYXN0X2ZhY3Rvcjt1bmlmb3JtIHZlYzMgdV9zcGluX3dlaWdodHM7dm9pZCBtYWluKCkge3ZlYzQgY29sb3IwPXRleHR1cmUyRCh1X2ltYWdlMCx2X3BvczApO3ZlYzQgY29sb3IxPXRleHR1cmUyRCh1X2ltYWdlMSx2X3BvczEpO2lmIChjb2xvcjAuYSA+IDAuMCkge2NvbG9yMC5yZ2I9Y29sb3IwLnJnYi9jb2xvcjAuYTt9aWYgKGNvbG9yMS5hID4gMC4wKSB7Y29sb3IxLnJnYj1jb2xvcjEucmdiL2NvbG9yMS5hO312ZWM0IGNvbG9yPW1peChjb2xvcjAsY29sb3IxLHVfZmFkZV90KTtjb2xvci5hKj11X29wYWNpdHk7dmVjMyByZ2I9Y29sb3IucmdiO3JnYj12ZWMzKFxcbmRvdChyZ2IsdV9zcGluX3dlaWdodHMueHl6KSxkb3QocmdiLHVfc3Bpbl93ZWlnaHRzLnp4eSksZG90KHJnYix1X3NwaW5fd2VpZ2h0cy55engpKTtmbG9hdCBhdmVyYWdlPShjb2xvci5yK2NvbG9yLmcrY29sb3IuYikvMy4wO3JnYis9KGF2ZXJhZ2UtcmdiKSp1X3NhdHVyYXRpb25fZmFjdG9yO3JnYj0ocmdiLTAuNSkqdV9jb250cmFzdF9mYWN0b3IrMC41O3ZlYzMgdV9oaWdoX3ZlYz12ZWMzKHVfYnJpZ2h0bmVzc19sb3csdV9icmlnaHRuZXNzX2xvdyx1X2JyaWdodG5lc3NfbG93KTt2ZWMzIHVfbG93X3ZlYz12ZWMzKHVfYnJpZ2h0bmVzc19oaWdoLHVfYnJpZ2h0bmVzc19oaWdoLHVfYnJpZ2h0bmVzc19oaWdoKTt2ZWMzIG91dF9jb2xvcj1taXgodV9oaWdoX3ZlYyx1X2xvd192ZWMscmdiKTtcXG4jaWZkZWYgTElHSFRJTkdfM0RfTU9ERVxcbm91dF9jb2xvcj1hcHBseV9saWdodGluZyhvdXRfY29sb3IpO1xcbiNlbmRpZlxcbiNpZmRlZiBGT0dcXG5vdXRfY29sb3I9Zm9nX2RpdGhlcihmb2dfYXBwbHkob3V0X2NvbG9yLHZfZm9nX3BvcykpO1xcbiNlbmRpZlxcbmdsX0ZyYWdDb2xvcj12ZWM0KG91dF9jb2xvcipjb2xvci5hLGNvbG9yLmEpO1xcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cIixcInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV90bF9wYXJlbnQ7dW5pZm9ybSBmbG9hdCB1X3NjYWxlX3BhcmVudDt1bmlmb3JtIHZlYzIgdV9wZXJzcGVjdGl2ZV90cmFuc2Zvcm07YXR0cmlidXRlIHZlYzIgYV9wb3M7YXR0cmlidXRlIHZlYzIgYV90ZXh0dXJlX3Bvczt2YXJ5aW5nIHZlYzIgdl9wb3MwO3ZhcnlpbmcgdmVjMiB2X3BvczE7dm9pZCBtYWluKCkge2Zsb2F0IHc9MS4wK2RvdChhX3RleHR1cmVfcG9zLHVfcGVyc3BlY3RpdmVfdHJhbnNmb3JtKTtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zKncsMCx3KTt2X3BvczA9YV90ZXh0dXJlX3Bvcy84MTkyLjA7dl9wb3MxPSh2X3BvczAqdV9zY2FsZV9wYXJlbnQpK3VfdGxfcGFyZW50O1xcbiNpZmRlZiBGT0dcXG52X2ZvZ19wb3M9Zm9nX3Bvc2l0aW9uKGFfcG9zKTtcXG4jZW5kaWZcXG59XCIpLHN5bWJvbEljb246dWkoXCJ1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmU7dmFyeWluZyB2ZWMyIHZfdGV4O3ZhcnlpbmcgZmxvYXQgdl9mYWRlX29wYWNpdHk7XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG52b2lkIG1haW4oKSB7XFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XFxubG93cCBmbG9hdCBhbHBoYT1vcGFjaXR5KnZfZmFkZV9vcGFjaXR5O2dsX0ZyYWdDb2xvcj10ZXh0dXJlMkQodV90ZXh0dXJlLHZfdGV4KSphbHBoYTtcXG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXFxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcXG4jZW5kaWZcXG59XCIsXCJhdHRyaWJ1dGUgdmVjNCBhX3Bvc19vZmZzZXQ7YXR0cmlidXRlIHZlYzQgYV90ZXhfc2l6ZTthdHRyaWJ1dGUgdmVjNCBhX3BpeGVsb2Zmc2V0O2F0dHJpYnV0ZSB2ZWM0IGFfcHJvamVjdGVkX3BvczthdHRyaWJ1dGUgZmxvYXQgYV9mYWRlX29wYWNpdHk7XFxuI2lmZGVmIFBST0pFQ1RJT05fR0xPQkVfVklFV1xcbmF0dHJpYnV0ZSB2ZWMzIGFfZ2xvYmVfYW5jaG9yO2F0dHJpYnV0ZSB2ZWMzIGFfZ2xvYmVfbm9ybWFsO1xcbiNlbmRpZlxcbnVuaWZvcm0gYm9vbCB1X2lzX3NpemVfem9vbV9jb25zdGFudDt1bmlmb3JtIGJvb2wgdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQ7dW5pZm9ybSBoaWdocCBmbG9hdCB1X3NpemVfdDt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfc2l6ZTt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTt1bmlmb3JtIGJvb2wgdV9yb3RhdGVfc3ltYm9sO3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9hc3BlY3RfcmF0aW87dW5pZm9ybSBmbG9hdCB1X2ZhZGVfY2hhbmdlO3VuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIG1hdDQgdV9sYWJlbF9wbGFuZV9tYXRyaXg7dW5pZm9ybSBtYXQ0IHVfY29vcmRfbWF0cml4O3VuaWZvcm0gYm9vbCB1X2lzX3RleHQ7dW5pZm9ybSBib29sIHVfcGl0Y2hfd2l0aF9tYXA7dW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTt1bmlmb3JtIHZlYzMgdV91cF92ZWN0b3I7XFxuI2lmZGVmIFBST0pFQ1RJT05fR0xPQkVfVklFV1xcbnVuaWZvcm0gdmVjMyB1X3RpbGVfaWQ7dW5pZm9ybSBtYXQ0IHVfaW52X3JvdF9tYXRyaXg7dW5pZm9ybSB2ZWMyIHVfbWVyY19jZW50ZXI7dW5pZm9ybSB2ZWMzIHVfY2FtZXJhX2ZvcndhcmQ7dW5pZm9ybSBmbG9hdCB1X3pvb21fdHJhbnNpdGlvbjt1bmlmb3JtIHZlYzMgdV9lY2VmX29yaWdpbjt1bmlmb3JtIG1hdDQgdV90aWxlX21hdHJpeDtcXG4jZW5kaWZcXG52YXJ5aW5nIHZlYzIgdl90ZXg7dmFyeWluZyBmbG9hdCB2X2ZhZGVfb3BhY2l0eTtcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcbnZvaWQgbWFpbigpIHtcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG52ZWMyIGFfcG9zPWFfcG9zX29mZnNldC54eTt2ZWMyIGFfb2Zmc2V0PWFfcG9zX29mZnNldC56dzt2ZWMyIGFfdGV4PWFfdGV4X3NpemUueHk7dmVjMiBhX3NpemU9YV90ZXhfc2l6ZS56dztmbG9hdCBhX3NpemVfbWluPWZsb29yKGFfc2l6ZVswXSowLjUpO3ZlYzIgYV9weG9mZnNldD1hX3BpeGVsb2Zmc2V0Lnh5O3ZlYzIgYV9taW5fZm9udF9zY2FsZT1hX3BpeGVsb2Zmc2V0Lnp3LzI1Ni4wO2hpZ2hwIGZsb2F0IHNlZ21lbnRfYW5nbGU9LWFfcHJvamVjdGVkX3Bvc1szXTtmbG9hdCBzaXplO2lmICghdV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYgIXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7c2l6ZT1taXgoYV9zaXplX21pbixhX3NpemVbMV0sdV9zaXplX3QpLzEyOC4wO30gZWxzZSBpZiAodV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYgIXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7c2l6ZT1hX3NpemVfbWluLzEyOC4wO30gZWxzZSB7c2l6ZT11X3NpemU7fXZlYzIgdGlsZV9hbmNob3I9YV9wb3M7dmVjMyBoPWVsZXZhdGlvblZlY3Rvcih0aWxlX2FuY2hvcikqZWxldmF0aW9uKHRpbGVfYW5jaG9yKTtmbG9hdCBnbG9iZV9vY2NsdXNpb25fZmFkZTt2ZWMzIHdvcmxkX3Bvczt2ZWMzIG1lcmNhdG9yX3BvcztcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxubWVyY2F0b3JfcG9zPW1lcmNhdG9yX3RpbGVfcG9zaXRpb24odV9pbnZfcm90X21hdHJpeCx0aWxlX2FuY2hvcix1X3RpbGVfaWQsdV9tZXJjX2NlbnRlcik7d29ybGRfcG9zPW1peF9nbG9iZV9tZXJjYXRvcihhX2dsb2JlX2FuY2hvcitoLG1lcmNhdG9yX3Bvcyx1X3pvb21fdHJhbnNpdGlvbik7dmVjNCBlY2VmX3BvaW50PXVfdGlsZV9tYXRyaXgqdmVjNCh3b3JsZF9wb3MsMS4wKTt2ZWMzIG9yaWdpbl90b19wb2ludD1lY2VmX3BvaW50Lnh5ei11X2VjZWZfb3JpZ2luO2dsb2JlX29jY2x1c2lvbl9mYWRlPWRvdChvcmlnaW5fdG9fcG9pbnQsdV9jYW1lcmFfZm9yd2FyZCkgPj0wLjAgPyAwLjAgOiAxLjA7XFxuI2Vsc2VcXG53b3JsZF9wb3M9dmVjMyh0aWxlX2FuY2hvciwwKStoO2dsb2JlX29jY2x1c2lvbl9mYWRlPTEuMDtcXG4jZW5kaWZcXG52ZWM0IHByb2plY3RlZF9wb2ludD11X21hdHJpeCp2ZWM0KHdvcmxkX3BvcywxKTtoaWdocCBmbG9hdCBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlPXByb2plY3RlZF9wb2ludC53O2hpZ2hwIGZsb2F0IGRpc3RhbmNlX3JhdGlvPXVfcGl0Y2hfd2l0aF9tYXAgP1xcbmNhbWVyYV90b19hbmNob3JfZGlzdGFuY2UvdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlIDpcXG51X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UvY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZTtoaWdocCBmbG9hdCBwZXJzcGVjdGl2ZV9yYXRpbz1jbGFtcChcXG4wLjUrMC41KmRpc3RhbmNlX3JhdGlvLDAuMCwxLjUpO3NpemUqPXBlcnNwZWN0aXZlX3JhdGlvO2Zsb2F0IGZvbnRfc2NhbGU9dV9pc190ZXh0ID8gc2l6ZS8yNC4wIDogc2l6ZTtoaWdocCBmbG9hdCBzeW1ib2xfcm90YXRpb249MC4wO2lmICh1X3JvdGF0ZV9zeW1ib2wpIHt2ZWM0IG9mZnNldFByb2plY3RlZF9wb2ludDtcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxudmVjMyBkaXNwbGFjZW1lbnQ9dmVjMyhhX2dsb2JlX25vcm1hbC56LDAsLWFfZ2xvYmVfbm9ybWFsLngpO29mZnNldFByb2plY3RlZF9wb2ludD11X21hdHJpeCp2ZWM0KGFfZ2xvYmVfYW5jaG9yK2Rpc3BsYWNlbWVudCwxKTtcXG4jZWxzZVxcbm9mZnNldFByb2plY3RlZF9wb2ludD11X21hdHJpeCp2ZWM0KHRpbGVfYW5jaG9yK3ZlYzIoMSwwKSwwLDEpO1xcbiNlbmRpZlxcbnZlYzIgYT1wcm9qZWN0ZWRfcG9pbnQueHkvcHJvamVjdGVkX3BvaW50Lnc7dmVjMiBiPW9mZnNldFByb2plY3RlZF9wb2ludC54eS9vZmZzZXRQcm9qZWN0ZWRfcG9pbnQudztzeW1ib2xfcm90YXRpb249YXRhbigoYi55LWEueSkvdV9hc3BlY3RfcmF0aW8sYi54LWEueCk7fXZlYzQgcHJvamVjdGVkX3BvcztcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxudmVjMyBwcm9qX3Bvcz1taXhfZ2xvYmVfbWVyY2F0b3IoYV9wcm9qZWN0ZWRfcG9zLnh5eitoLG1lcmNhdG9yX3Bvcyx1X3pvb21fdHJhbnNpdGlvbik7cHJvamVjdGVkX3Bvcz11X2xhYmVsX3BsYW5lX21hdHJpeCp2ZWM0KHByb2pfcG9zLDEuMCk7XFxuI2Vsc2VcXG5wcm9qZWN0ZWRfcG9zPXVfbGFiZWxfcGxhbmVfbWF0cml4KnZlYzQoYV9wcm9qZWN0ZWRfcG9zLnh5LGgueiwxLjApO1xcbiNlbmRpZlxcbmhpZ2hwIGZsb2F0IGFuZ2xlX3Npbj1zaW4oc2VnbWVudF9hbmdsZStzeW1ib2xfcm90YXRpb24pO2hpZ2hwIGZsb2F0IGFuZ2xlX2Nvcz1jb3Moc2VnbWVudF9hbmdsZStzeW1ib2xfcm90YXRpb24pO21hdDIgcm90YXRpb25fbWF0cml4PW1hdDIoYW5nbGVfY29zLC0xLjAqYW5nbGVfc2luLGFuZ2xlX3NpbixhbmdsZV9jb3MpO2Zsb2F0IHo9MC4wO3ZlYzIgb2Zmc2V0PXJvdGF0aW9uX21hdHJpeCooYV9vZmZzZXQvMzIuMCptYXgoYV9taW5fZm9udF9zY2FsZSxmb250X3NjYWxlKSthX3B4b2Zmc2V0LzE2LjApO1xcbiNpZmRlZiBURVJSQUlOXFxuI2lmZGVmIFBJVENIX1dJVEhfTUFQX1RFUlJBSU5cXG52ZWM0IHRpbGVfcG9zPXVfbGFiZWxfcGxhbmVfbWF0cml4X2ludip2ZWM0KGFfcHJvamVjdGVkX3Bvcy54eStvZmZzZXQsMC4wLDEuMCk7ej1lbGV2YXRpb24odGlsZV9wb3MueHkpO1xcbiNlbmRpZlxcbiNlbmRpZlxcbmZsb2F0IG9jY2x1c2lvbl9mYWRlPW9jY2x1c2lvbkZhZGUocHJvamVjdGVkX3BvaW50KSpnbG9iZV9vY2NsdXNpb25fZmFkZTtcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxudmVjMyB4QXhpcz11X3BpdGNoX3dpdGhfbWFwID8gbm9ybWFsaXplKGNyb3NzKGFfZ2xvYmVfbm9ybWFsLHVfdXBfdmVjdG9yKSkgOiB2ZWMzKDEsMCwwKTt2ZWMzIHlBeGlzPXVfcGl0Y2hfd2l0aF9tYXAgPyBub3JtYWxpemUoY3Jvc3MoYV9nbG9iZV9ub3JtYWwseEF4aXMpKSA6IHZlYzMoMCwxLDApO2dsX1Bvc2l0aW9uPW1peCh1X2Nvb3JkX21hdHJpeCp2ZWM0KHByb2plY3RlZF9wb3MueHl6L3Byb2plY3RlZF9wb3Mudyt4QXhpcypvZmZzZXQueCt5QXhpcypvZmZzZXQueSwxLjApLEFXQVksZmxvYXQocHJvamVjdGVkX3BvaW50LncgPD0wLjAgfHwgb2NjbHVzaW9uX2ZhZGU9PTAuMCkpO1xcbiNlbHNlXFxuZ2xfUG9zaXRpb249bWl4KHVfY29vcmRfbWF0cml4KnZlYzQocHJvamVjdGVkX3Bvcy54eS9wcm9qZWN0ZWRfcG9zLncrb2Zmc2V0LHosMS4wKSxBV0FZLGZsb2F0KHByb2plY3RlZF9wb2ludC53IDw9MC4wIHx8IG9jY2x1c2lvbl9mYWRlPT0wLjApKTtcXG4jZW5kaWZcXG5mbG9hdCBwcm9qZWN0aW9uX3RyYW5zaXRpb25fZmFkZT0xLjA7XFxuI2lmIGRlZmluZWQoUFJPSkVDVEVEX1BPU19PTl9WSUVXUE9SVCkgJiYgZGVmaW5lZChQUk9KRUNUSU9OX0dMT0JFX1ZJRVcpXFxucHJvamVjdGlvbl90cmFuc2l0aW9uX2ZhZGU9MS4wLXN0ZXAoRVBTSUxPTix1X3pvb21fdHJhbnNpdGlvbik7XFxuI2VuZGlmXFxudl90ZXg9YV90ZXgvdV90ZXhzaXplO3ZlYzIgZmFkZV9vcGFjaXR5PXVucGFja19vcGFjaXR5KGFfZmFkZV9vcGFjaXR5KTtmbG9hdCBmYWRlX2NoYW5nZT1mYWRlX29wYWNpdHlbMV0gPiAwLjUgPyB1X2ZhZGVfY2hhbmdlIDotdV9mYWRlX2NoYW5nZTt2X2ZhZGVfb3BhY2l0eT1tYXgoMC4wLG1pbihvY2NsdXNpb25fZmFkZSxmYWRlX29wYWNpdHlbMF0rZmFkZV9jaGFuZ2UpKSpwcm9qZWN0aW9uX3RyYW5zaXRpb25fZmFkZTt9XCIpLHN5bWJvbFNERjp1aShcIiNkZWZpbmUgU0RGX1BYIDguMFxcbnVuaWZvcm0gYm9vbCB1X2lzX2hhbG87dW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlO3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9nYW1tYV9zY2FsZTt1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dW5pZm9ybSBib29sIHVfaXNfdGV4dDt2YXJ5aW5nIHZlYzIgdl9kYXRhMDt2YXJ5aW5nIHZlYzMgdl9kYXRhMTtcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgZmlsbF9jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBoYWxvX2NvbG9yXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgaGFsb193aWR0aFxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBoYWxvX2JsdXJcXG52b2lkIG1haW4oKSB7XFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBmaWxsX2NvbG9yXFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBoYWxvX2NvbG9yXFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBoYWxvX3dpZHRoXFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBoYWxvX2JsdXJcXG5mbG9hdCBFREdFX0dBTU1BPTAuMTA1L3VfZGV2aWNlX3BpeGVsX3JhdGlvO3ZlYzIgdGV4PXZfZGF0YTAueHk7ZmxvYXQgZ2FtbWFfc2NhbGU9dl9kYXRhMS54O2Zsb2F0IHNpemU9dl9kYXRhMS55O2Zsb2F0IGZhZGVfb3BhY2l0eT12X2RhdGExWzJdO2Zsb2F0IGZvbnRTY2FsZT11X2lzX3RleHQgPyBzaXplLzI0LjAgOiBzaXplO2xvd3AgdmVjNCBjb2xvcj1maWxsX2NvbG9yO2hpZ2hwIGZsb2F0IGdhbW1hPUVER0VfR0FNTUEvKGZvbnRTY2FsZSp1X2dhbW1hX3NjYWxlKTtsb3dwIGZsb2F0IGJ1ZmY9KDI1Ni4wLTY0LjApLzI1Ni4wO2lmICh1X2lzX2hhbG8pIHtjb2xvcj1oYWxvX2NvbG9yO2dhbW1hPShoYWxvX2JsdXIqMS4xOS9TREZfUFgrRURHRV9HQU1NQSkvKGZvbnRTY2FsZSp1X2dhbW1hX3NjYWxlKTtidWZmPSg2LjAtaGFsb193aWR0aC9mb250U2NhbGUpL1NERl9QWDt9bG93cCBmbG9hdCBkaXN0PXRleHR1cmUyRCh1X3RleHR1cmUsdGV4KS5hO2hpZ2hwIGZsb2F0IGdhbW1hX3NjYWxlZD1nYW1tYSpnYW1tYV9zY2FsZTtoaWdocCBmbG9hdCBhbHBoYT1zbW9vdGhzdGVwKGJ1ZmYtZ2FtbWFfc2NhbGVkLGJ1ZmYrZ2FtbWFfc2NhbGVkLGRpc3QpO2dsX0ZyYWdDb2xvcj1jb2xvciooYWxwaGEqb3BhY2l0eSpmYWRlX29wYWNpdHkpO1xcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cIixcImF0dHJpYnV0ZSB2ZWM0IGFfcG9zX29mZnNldDthdHRyaWJ1dGUgdmVjNCBhX3RleF9zaXplO2F0dHJpYnV0ZSB2ZWM0IGFfcGl4ZWxvZmZzZXQ7YXR0cmlidXRlIHZlYzQgYV9wcm9qZWN0ZWRfcG9zO2F0dHJpYnV0ZSBmbG9hdCBhX2ZhZGVfb3BhY2l0eTtcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxuYXR0cmlidXRlIHZlYzMgYV9nbG9iZV9hbmNob3I7YXR0cmlidXRlIHZlYzMgYV9nbG9iZV9ub3JtYWw7XFxuI2VuZGlmXFxudW5pZm9ybSBib29sIHVfaXNfc2l6ZV96b29tX2NvbnN0YW50O3VuaWZvcm0gYm9vbCB1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudDt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfc2l6ZV90O3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9zaXplO3VuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIG1hdDQgdV9sYWJlbF9wbGFuZV9tYXRyaXg7dW5pZm9ybSBtYXQ0IHVfY29vcmRfbWF0cml4O3VuaWZvcm0gYm9vbCB1X2lzX3RleHQ7dW5pZm9ybSBib29sIHVfcGl0Y2hfd2l0aF9tYXA7dW5pZm9ybSBib29sIHVfcm90YXRlX3N5bWJvbDt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfYXNwZWN0X3JhdGlvO3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO3VuaWZvcm0gZmxvYXQgdV9mYWRlX2NoYW5nZTt1bmlmb3JtIHZlYzIgdV90ZXhzaXplO3VuaWZvcm0gdmVjMyB1X3VwX3ZlY3RvcjtcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxudW5pZm9ybSB2ZWMzIHVfdGlsZV9pZDt1bmlmb3JtIG1hdDQgdV9pbnZfcm90X21hdHJpeDt1bmlmb3JtIHZlYzIgdV9tZXJjX2NlbnRlcjt1bmlmb3JtIHZlYzMgdV9jYW1lcmFfZm9yd2FyZDt1bmlmb3JtIGZsb2F0IHVfem9vbV90cmFuc2l0aW9uO3VuaWZvcm0gdmVjMyB1X2VjZWZfb3JpZ2luO3VuaWZvcm0gbWF0NCB1X3RpbGVfbWF0cml4O1xcbiNlbmRpZlxcbnZhcnlpbmcgdmVjMiB2X2RhdGEwO3ZhcnlpbmcgdmVjMyB2X2RhdGExO1xcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBmaWxsX2NvbG9yXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGhhbG9fY29sb3JcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBoYWxvX3dpZHRoXFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGhhbG9fYmx1clxcbnZvaWQgbWFpbigpIHtcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGZpbGxfY29sb3JcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGhhbG9fY29sb3JcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGhhbG9fd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGhhbG9fYmx1clxcbnZlYzIgYV9wb3M9YV9wb3Nfb2Zmc2V0Lnh5O3ZlYzIgYV9vZmZzZXQ9YV9wb3Nfb2Zmc2V0Lnp3O3ZlYzIgYV90ZXg9YV90ZXhfc2l6ZS54eTt2ZWMyIGFfc2l6ZT1hX3RleF9zaXplLnp3O2Zsb2F0IGFfc2l6ZV9taW49Zmxvb3IoYV9zaXplWzBdKjAuNSk7dmVjMiBhX3B4b2Zmc2V0PWFfcGl4ZWxvZmZzZXQueHk7aGlnaHAgZmxvYXQgc2VnbWVudF9hbmdsZT0tYV9wcm9qZWN0ZWRfcG9zWzNdO2Zsb2F0IHNpemU7aWYgKCF1X2lzX3NpemVfem9vbV9jb25zdGFudCAmJiAhdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQpIHtzaXplPW1peChhX3NpemVfbWluLGFfc2l6ZVsxXSx1X3NpemVfdCkvMTI4LjA7fSBlbHNlIGlmICh1X2lzX3NpemVfem9vbV9jb25zdGFudCAmJiAhdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQpIHtzaXplPWFfc2l6ZV9taW4vMTI4LjA7fSBlbHNlIHtzaXplPXVfc2l6ZTt9dmVjMiB0aWxlX2FuY2hvcj1hX3Bvczt2ZWMzIGg9ZWxldmF0aW9uVmVjdG9yKHRpbGVfYW5jaG9yKSplbGV2YXRpb24odGlsZV9hbmNob3IpO2Zsb2F0IGdsb2JlX29jY2x1c2lvbl9mYWRlO3ZlYzMgd29ybGRfcG9zO3ZlYzMgbWVyY2F0b3JfcG9zO1xcbiNpZmRlZiBQUk9KRUNUSU9OX0dMT0JFX1ZJRVdcXG5tZXJjYXRvcl9wb3M9bWVyY2F0b3JfdGlsZV9wb3NpdGlvbih1X2ludl9yb3RfbWF0cml4LHRpbGVfYW5jaG9yLHVfdGlsZV9pZCx1X21lcmNfY2VudGVyKTt3b3JsZF9wb3M9bWl4X2dsb2JlX21lcmNhdG9yKGFfZ2xvYmVfYW5jaG9yK2gsbWVyY2F0b3JfcG9zLHVfem9vbV90cmFuc2l0aW9uKTt2ZWM0IGVjZWZfcG9pbnQ9dV90aWxlX21hdHJpeCp2ZWM0KHdvcmxkX3BvcywxLjApO3ZlYzMgb3JpZ2luX3RvX3BvaW50PWVjZWZfcG9pbnQueHl6LXVfZWNlZl9vcmlnaW47Z2xvYmVfb2NjbHVzaW9uX2ZhZGU9ZG90KG9yaWdpbl90b19wb2ludCx1X2NhbWVyYV9mb3J3YXJkKSA+PTAuMCA/IDAuMCA6IDEuMDtcXG4jZWxzZVxcbndvcmxkX3Bvcz12ZWMzKHRpbGVfYW5jaG9yLDApK2g7Z2xvYmVfb2NjbHVzaW9uX2ZhZGU9MS4wO1xcbiNlbmRpZlxcbnZlYzQgcHJvamVjdGVkX3BvaW50PXVfbWF0cml4KnZlYzQod29ybGRfcG9zLDEpO2hpZ2hwIGZsb2F0IGNhbWVyYV90b19hbmNob3JfZGlzdGFuY2U9cHJvamVjdGVkX3BvaW50Lnc7aGlnaHAgZmxvYXQgZGlzdGFuY2VfcmF0aW89dV9waXRjaF93aXRoX21hcCA/XFxuY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZS91X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UgOlxcbnVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZS9jYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlO2hpZ2hwIGZsb2F0IHBlcnNwZWN0aXZlX3JhdGlvPWNsYW1wKFxcbjAuNSswLjUqZGlzdGFuY2VfcmF0aW8sMC4wLDEuNSk7c2l6ZSo9cGVyc3BlY3RpdmVfcmF0aW87ZmxvYXQgZm9udFNjYWxlPXVfaXNfdGV4dCA/IHNpemUvMjQuMCA6IHNpemU7aGlnaHAgZmxvYXQgc3ltYm9sX3JvdGF0aW9uPTAuMDtpZiAodV9yb3RhdGVfc3ltYm9sKSB7dmVjNCBvZmZzZXRwcm9qZWN0ZWRfcG9pbnQ7XFxuI2lmZGVmIFBST0pFQ1RJT05fR0xPQkVfVklFV1xcbnZlYzMgZGlzcGxhY2VtZW50PXZlYzMoYV9nbG9iZV9ub3JtYWwueiwwLC1hX2dsb2JlX25vcm1hbC54KTtvZmZzZXRwcm9qZWN0ZWRfcG9pbnQ9dV9tYXRyaXgqdmVjNChhX2dsb2JlX2FuY2hvcitkaXNwbGFjZW1lbnQsMSk7XFxuI2Vsc2VcXG5vZmZzZXRwcm9qZWN0ZWRfcG9pbnQ9dV9tYXRyaXgqdmVjNCh0aWxlX2FuY2hvcit2ZWMyKDEsMCksMCwxKTtcXG4jZW5kaWZcXG52ZWMyIGE9cHJvamVjdGVkX3BvaW50Lnh5L3Byb2plY3RlZF9wb2ludC53O3ZlYzIgYj1vZmZzZXRwcm9qZWN0ZWRfcG9pbnQueHkvb2Zmc2V0cHJvamVjdGVkX3BvaW50Lnc7c3ltYm9sX3JvdGF0aW9uPWF0YW4oKGIueS1hLnkpL3VfYXNwZWN0X3JhdGlvLGIueC1hLngpO312ZWM0IHByb2plY3RlZF9wb3M7XFxuI2lmZGVmIFBST0pFQ1RJT05fR0xPQkVfVklFV1xcbnZlYzMgcHJval9wb3M9bWl4X2dsb2JlX21lcmNhdG9yKGFfcHJvamVjdGVkX3Bvcy54eXoraCxtZXJjYXRvcl9wb3MsdV96b29tX3RyYW5zaXRpb24pO3Byb2plY3RlZF9wb3M9dV9sYWJlbF9wbGFuZV9tYXRyaXgqdmVjNChwcm9qX3BvcywxLjApO1xcbiNlbHNlXFxucHJvamVjdGVkX3Bvcz11X2xhYmVsX3BsYW5lX21hdHJpeCp2ZWM0KGFfcHJvamVjdGVkX3Bvcy54eSxoLnosMS4wKTtcXG4jZW5kaWZcXG5oaWdocCBmbG9hdCBhbmdsZV9zaW49c2luKHNlZ21lbnRfYW5nbGUrc3ltYm9sX3JvdGF0aW9uKTtoaWdocCBmbG9hdCBhbmdsZV9jb3M9Y29zKHNlZ21lbnRfYW5nbGUrc3ltYm9sX3JvdGF0aW9uKTttYXQyIHJvdGF0aW9uX21hdHJpeD1tYXQyKGFuZ2xlX2NvcywtMS4wKmFuZ2xlX3NpbixhbmdsZV9zaW4sYW5nbGVfY29zKTtmbG9hdCB6PTAuMDt2ZWMyIG9mZnNldD1yb3RhdGlvbl9tYXRyaXgqKGFfb2Zmc2V0LzMyLjAqZm9udFNjYWxlK2FfcHhvZmZzZXQpO1xcbiNpZmRlZiBURVJSQUlOXFxuI2lmZGVmIFBJVENIX1dJVEhfTUFQX1RFUlJBSU5cXG52ZWM0IHRpbGVfcG9zPXVfbGFiZWxfcGxhbmVfbWF0cml4X2ludip2ZWM0KGFfcHJvamVjdGVkX3Bvcy54eStvZmZzZXQsMC4wLDEuMCk7ej1lbGV2YXRpb24odGlsZV9wb3MueHkpO1xcbiNlbmRpZlxcbiNlbmRpZlxcbmZsb2F0IG9jY2x1c2lvbl9mYWRlPW9jY2x1c2lvbkZhZGUocHJvamVjdGVkX3BvaW50KSpnbG9iZV9vY2NsdXNpb25fZmFkZTtcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxudmVjMyB4QXhpcz11X3BpdGNoX3dpdGhfbWFwID8gbm9ybWFsaXplKGNyb3NzKGFfZ2xvYmVfbm9ybWFsLHVfdXBfdmVjdG9yKSkgOiB2ZWMzKDEsMCwwKTt2ZWMzIHlBeGlzPXVfcGl0Y2hfd2l0aF9tYXAgPyBub3JtYWxpemUoY3Jvc3MoYV9nbG9iZV9ub3JtYWwseEF4aXMpKSA6IHZlYzMoMCwxLDApO2dsX1Bvc2l0aW9uPW1peCh1X2Nvb3JkX21hdHJpeCp2ZWM0KHByb2plY3RlZF9wb3MueHl6L3Byb2plY3RlZF9wb3Mudyt4QXhpcypvZmZzZXQueCt5QXhpcypvZmZzZXQueSwxLjApLEFXQVksZmxvYXQocHJvamVjdGVkX3BvaW50LncgPD0wLjAgfHwgb2NjbHVzaW9uX2ZhZGU9PTAuMCkpO1xcbiNlbHNlXFxuZ2xfUG9zaXRpb249bWl4KHVfY29vcmRfbWF0cml4KnZlYzQocHJvamVjdGVkX3Bvcy54eS9wcm9qZWN0ZWRfcG9zLncrb2Zmc2V0LHosMS4wKSxBV0FZLGZsb2F0KHByb2plY3RlZF9wb2ludC53IDw9MC4wIHx8IG9jY2x1c2lvbl9mYWRlPT0wLjApKTtcXG4jZW5kaWZcXG5mbG9hdCBnYW1tYV9zY2FsZT1nbF9Qb3NpdGlvbi53O2Zsb2F0IHByb2plY3Rpb25fdHJhbnNpdGlvbl9mYWRlPTEuMDtcXG4jaWYgZGVmaW5lZChQUk9KRUNURURfUE9TX09OX1ZJRVdQT1JUKSAmJiBkZWZpbmVkKFBST0pFQ1RJT05fR0xPQkVfVklFVylcXG5wcm9qZWN0aW9uX3RyYW5zaXRpb25fZmFkZT0xLjAtc3RlcChFUFNJTE9OLHVfem9vbV90cmFuc2l0aW9uKTtcXG4jZW5kaWZcXG52ZWMyIGZhZGVfb3BhY2l0eT11bnBhY2tfb3BhY2l0eShhX2ZhZGVfb3BhY2l0eSk7ZmxvYXQgZmFkZV9jaGFuZ2U9ZmFkZV9vcGFjaXR5WzFdID4gMC41ID8gdV9mYWRlX2NoYW5nZSA6LXVfZmFkZV9jaGFuZ2U7ZmxvYXQgaW50ZXJwb2xhdGVkX2ZhZGVfb3BhY2l0eT1tYXgoMC4wLG1pbihvY2NsdXNpb25fZmFkZSxmYWRlX29wYWNpdHlbMF0rZmFkZV9jaGFuZ2UpKTt2X2RhdGEwPWFfdGV4L3VfdGV4c2l6ZTt2X2RhdGExPXZlYzMoZ2FtbWFfc2NhbGUsc2l6ZSxpbnRlcnBvbGF0ZWRfZmFkZV9vcGFjaXR5KnByb2plY3Rpb25fdHJhbnNpdGlvbl9mYWRlKTt9XCIpLHN5bWJvbFRleHRBbmRJY29uOnVpKFwiI2RlZmluZSBTREZfUFggOC4wXFxuI2RlZmluZSBTREYgMS4wXFxuI2RlZmluZSBJQ09OIDAuMFxcbnVuaWZvcm0gYm9vbCB1X2lzX2hhbG87dW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlO3VuaWZvcm0gc2FtcGxlcjJEIHVfdGV4dHVyZV9pY29uO3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9nYW1tYV9zY2FsZTt1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dmFyeWluZyB2ZWM0IHZfZGF0YTA7dmFyeWluZyB2ZWM0IHZfZGF0YTE7XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGZpbGxfY29sb3JcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgaGFsb19jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGhhbG9fd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgaGFsb19ibHVyXFxudm9pZCBtYWluKCkge1xcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgZmlsbF9jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgaGFsb19jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgaGFsb193aWR0aFxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgaGFsb19ibHVyXFxuZmxvYXQgZmFkZV9vcGFjaXR5PXZfZGF0YTFbMl07aWYgKHZfZGF0YTEudz09SUNPTikge3ZlYzIgdGV4X2ljb249dl9kYXRhMC56dztsb3dwIGZsb2F0IGFscGhhPW9wYWNpdHkqZmFkZV9vcGFjaXR5O2dsX0ZyYWdDb2xvcj10ZXh0dXJlMkQodV90ZXh0dXJlX2ljb24sdGV4X2ljb24pKmFscGhhO1xcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xcbiNlbmRpZlxcbnJldHVybjt9dmVjMiB0ZXg9dl9kYXRhMC54eTtmbG9hdCBFREdFX0dBTU1BPTAuMTA1L3VfZGV2aWNlX3BpeGVsX3JhdGlvO2Zsb2F0IGdhbW1hX3NjYWxlPXZfZGF0YTEueDtmbG9hdCBzaXplPXZfZGF0YTEueTtmbG9hdCBmb250U2NhbGU9c2l6ZS8yNC4wO2xvd3AgdmVjNCBjb2xvcj1maWxsX2NvbG9yO2hpZ2hwIGZsb2F0IGdhbW1hPUVER0VfR0FNTUEvKGZvbnRTY2FsZSp1X2dhbW1hX3NjYWxlKTtsb3dwIGZsb2F0IGJ1ZmY9KDI1Ni4wLTY0LjApLzI1Ni4wO2lmICh1X2lzX2hhbG8pIHtjb2xvcj1oYWxvX2NvbG9yO2dhbW1hPShoYWxvX2JsdXIqMS4xOS9TREZfUFgrRURHRV9HQU1NQSkvKGZvbnRTY2FsZSp1X2dhbW1hX3NjYWxlKTtidWZmPSg2LjAtaGFsb193aWR0aC9mb250U2NhbGUpL1NERl9QWDt9bG93cCBmbG9hdCBkaXN0PXRleHR1cmUyRCh1X3RleHR1cmUsdGV4KS5hO2hpZ2hwIGZsb2F0IGdhbW1hX3NjYWxlZD1nYW1tYSpnYW1tYV9zY2FsZTtoaWdocCBmbG9hdCBhbHBoYT1zbW9vdGhzdGVwKGJ1ZmYtZ2FtbWFfc2NhbGVkLGJ1ZmYrZ2FtbWFfc2NhbGVkLGRpc3QpO2dsX0ZyYWdDb2xvcj1jb2xvciooYWxwaGEqb3BhY2l0eSpmYWRlX29wYWNpdHkpO1xcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cIixcImF0dHJpYnV0ZSB2ZWM0IGFfcG9zX29mZnNldDthdHRyaWJ1dGUgdmVjNCBhX3RleF9zaXplO2F0dHJpYnV0ZSB2ZWM0IGFfcHJvamVjdGVkX3BvczthdHRyaWJ1dGUgZmxvYXQgYV9mYWRlX29wYWNpdHk7XFxuI2lmZGVmIFBST0pFQ1RJT05fR0xPQkVfVklFV1xcbmF0dHJpYnV0ZSB2ZWMzIGFfZ2xvYmVfYW5jaG9yO2F0dHJpYnV0ZSB2ZWMzIGFfZ2xvYmVfbm9ybWFsO1xcbiNlbmRpZlxcbnVuaWZvcm0gYm9vbCB1X2lzX3NpemVfem9vbV9jb25zdGFudDt1bmlmb3JtIGJvb2wgdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQ7dW5pZm9ybSBoaWdocCBmbG9hdCB1X3NpemVfdDt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfc2l6ZTt1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSBtYXQ0IHVfbGFiZWxfcGxhbmVfbWF0cml4O3VuaWZvcm0gbWF0NCB1X2Nvb3JkX21hdHJpeDt1bmlmb3JtIGJvb2wgdV9pc190ZXh0O3VuaWZvcm0gYm9vbCB1X3BpdGNoX3dpdGhfbWFwO3VuaWZvcm0gYm9vbCB1X3JvdGF0ZV9zeW1ib2w7dW5pZm9ybSBoaWdocCBmbG9hdCB1X2FzcGVjdF9yYXRpbzt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTt1bmlmb3JtIGZsb2F0IHVfZmFkZV9jaGFuZ2U7dW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTt1bmlmb3JtIHZlYzMgdV91cF92ZWN0b3I7dW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZV9pY29uO1xcbiNpZmRlZiBQUk9KRUNUSU9OX0dMT0JFX1ZJRVdcXG51bmlmb3JtIHZlYzMgdV90aWxlX2lkO3VuaWZvcm0gbWF0NCB1X2ludl9yb3RfbWF0cml4O3VuaWZvcm0gdmVjMiB1X21lcmNfY2VudGVyO3VuaWZvcm0gdmVjMyB1X2NhbWVyYV9mb3J3YXJkO3VuaWZvcm0gZmxvYXQgdV96b29tX3RyYW5zaXRpb247dW5pZm9ybSB2ZWMzIHVfZWNlZl9vcmlnaW47dW5pZm9ybSBtYXQ0IHVfdGlsZV9tYXRyaXg7XFxuI2VuZGlmXFxudmFyeWluZyB2ZWM0IHZfZGF0YTA7dmFyeWluZyB2ZWM0IHZfZGF0YTE7XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGZpbGxfY29sb3JcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgaGFsb19jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGhhbG9fd2lkdGhcXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgaGFsb19ibHVyXFxudm9pZCBtYWluKCkge1xcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgZmlsbF9jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgaGFsb19jb2xvclxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgaGFsb193aWR0aFxcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgaGFsb19ibHVyXFxudmVjMiBhX3Bvcz1hX3Bvc19vZmZzZXQueHk7dmVjMiBhX29mZnNldD1hX3Bvc19vZmZzZXQuenc7dmVjMiBhX3RleD1hX3RleF9zaXplLnh5O3ZlYzIgYV9zaXplPWFfdGV4X3NpemUuenc7ZmxvYXQgYV9zaXplX21pbj1mbG9vcihhX3NpemVbMF0qMC41KTtmbG9hdCBpc19zZGY9YV9zaXplWzBdLTIuMCphX3NpemVfbWluO2hpZ2hwIGZsb2F0IHNlZ21lbnRfYW5nbGU9LWFfcHJvamVjdGVkX3Bvc1szXTtmbG9hdCBzaXplO2lmICghdV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYgIXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7c2l6ZT1taXgoYV9zaXplX21pbixhX3NpemVbMV0sdV9zaXplX3QpLzEyOC4wO30gZWxzZSBpZiAodV9pc19zaXplX3pvb21fY29uc3RhbnQgJiYgIXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7c2l6ZT1hX3NpemVfbWluLzEyOC4wO30gZWxzZSB7c2l6ZT11X3NpemU7fXZlYzIgdGlsZV9hbmNob3I9YV9wb3M7dmVjMyBoPWVsZXZhdGlvblZlY3Rvcih0aWxlX2FuY2hvcikqZWxldmF0aW9uKHRpbGVfYW5jaG9yKTtmbG9hdCBnbG9iZV9vY2NsdXNpb25fZmFkZTt2ZWMzIHdvcmxkX3Bvczt2ZWMzIG1lcmNhdG9yX3BvcztcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxubWVyY2F0b3JfcG9zPW1lcmNhdG9yX3RpbGVfcG9zaXRpb24odV9pbnZfcm90X21hdHJpeCx0aWxlX2FuY2hvcix1X3RpbGVfaWQsdV9tZXJjX2NlbnRlcik7d29ybGRfcG9zPW1peF9nbG9iZV9tZXJjYXRvcihhX2dsb2JlX2FuY2hvcitoLG1lcmNhdG9yX3Bvcyx1X3pvb21fdHJhbnNpdGlvbik7dmVjNCBlY2VmX3BvaW50PXVfdGlsZV9tYXRyaXgqdmVjNCh3b3JsZF9wb3MsMS4wKTt2ZWMzIG9yaWdpbl90b19wb2ludD1lY2VmX3BvaW50Lnh5ei11X2VjZWZfb3JpZ2luO2dsb2JlX29jY2x1c2lvbl9mYWRlPWRvdChvcmlnaW5fdG9fcG9pbnQsdV9jYW1lcmFfZm9yd2FyZCkgPj0wLjAgPyAwLjAgOiAxLjA7XFxuI2Vsc2VcXG53b3JsZF9wb3M9dmVjMyh0aWxlX2FuY2hvciwwKStoO2dsb2JlX29jY2x1c2lvbl9mYWRlPTEuMDtcXG4jZW5kaWZcXG52ZWM0IHByb2plY3RlZF9wb2ludD11X21hdHJpeCp2ZWM0KHdvcmxkX3BvcywxKTtoaWdocCBmbG9hdCBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlPXByb2plY3RlZF9wb2ludC53O2hpZ2hwIGZsb2F0IGRpc3RhbmNlX3JhdGlvPXVfcGl0Y2hfd2l0aF9tYXAgP1xcbmNhbWVyYV90b19hbmNob3JfZGlzdGFuY2UvdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlIDpcXG51X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UvY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZTtoaWdocCBmbG9hdCBwZXJzcGVjdGl2ZV9yYXRpbz1jbGFtcChcXG4wLjUrMC41KmRpc3RhbmNlX3JhdGlvLDAuMCwxLjUpO3NpemUqPXBlcnNwZWN0aXZlX3JhdGlvO2Zsb2F0IGZvbnRfc2NhbGU9c2l6ZS8yNC4wO2hpZ2hwIGZsb2F0IHN5bWJvbF9yb3RhdGlvbj0wLjA7aWYgKHVfcm90YXRlX3N5bWJvbCkge3ZlYzQgb2Zmc2V0X3Byb2plY3RlZF9wb2ludD11X21hdHJpeCp2ZWM0KGFfcG9zK3ZlYzIoMSwwKSwwLDEpO3ZlYzIgYT1wcm9qZWN0ZWRfcG9pbnQueHkvcHJvamVjdGVkX3BvaW50Lnc7dmVjMiBiPW9mZnNldF9wcm9qZWN0ZWRfcG9pbnQueHkvb2Zmc2V0X3Byb2plY3RlZF9wb2ludC53O3N5bWJvbF9yb3RhdGlvbj1hdGFuKChiLnktYS55KS91X2FzcGVjdF9yYXRpbyxiLngtYS54KTt9dmVjNCBwcm9qZWN0ZWRfcG9zO1xcbiNpZmRlZiBQUk9KRUNUSU9OX0dMT0JFX1ZJRVdcXG52ZWMzIHByb2pfcG9zPW1peF9nbG9iZV9tZXJjYXRvcihhX3Byb2plY3RlZF9wb3MueHl6K2gsbWVyY2F0b3JfcG9zLHVfem9vbV90cmFuc2l0aW9uKTtwcm9qZWN0ZWRfcG9zPXVfbGFiZWxfcGxhbmVfbWF0cml4KnZlYzQocHJval9wb3MsMS4wKTtcXG4jZWxzZVxcbnByb2plY3RlZF9wb3M9dV9sYWJlbF9wbGFuZV9tYXRyaXgqdmVjNChhX3Byb2plY3RlZF9wb3MueHksaC56LDEuMCk7XFxuI2VuZGlmXFxuaGlnaHAgZmxvYXQgYW5nbGVfc2luPXNpbihzZWdtZW50X2FuZ2xlK3N5bWJvbF9yb3RhdGlvbik7aGlnaHAgZmxvYXQgYW5nbGVfY29zPWNvcyhzZWdtZW50X2FuZ2xlK3N5bWJvbF9yb3RhdGlvbik7bWF0MiByb3RhdGlvbl9tYXRyaXg9bWF0MihhbmdsZV9jb3MsLTEuMCphbmdsZV9zaW4sYW5nbGVfc2luLGFuZ2xlX2Nvcyk7ZmxvYXQgej0wLjA7dmVjMiBvZmZzZXQ9cm90YXRpb25fbWF0cml4KihhX29mZnNldC8zMi4wKmZvbnRfc2NhbGUpO1xcbiNpZmRlZiBURVJSQUlOXFxuI2lmZGVmIFBJVENIX1dJVEhfTUFQX1RFUlJBSU5cXG52ZWM0IHRpbGVfcG9zPXVfbGFiZWxfcGxhbmVfbWF0cml4X2ludip2ZWM0KGFfcHJvamVjdGVkX3Bvcy54eStvZmZzZXQsMC4wLDEuMCk7ej1lbGV2YXRpb24odGlsZV9wb3MueHkpO1xcbiNlbmRpZlxcbiNlbmRpZlxcbmZsb2F0IG9jY2x1c2lvbl9mYWRlPW9jY2x1c2lvbkZhZGUocHJvamVjdGVkX3BvaW50KSpnbG9iZV9vY2NsdXNpb25fZmFkZTtcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxudmVjMyB4QXhpcz11X3BpdGNoX3dpdGhfbWFwID8gbm9ybWFsaXplKGNyb3NzKGFfZ2xvYmVfbm9ybWFsLHVfdXBfdmVjdG9yKSkgOiB2ZWMzKDEsMCwwKTt2ZWMzIHlBeGlzPXVfcGl0Y2hfd2l0aF9tYXAgPyBub3JtYWxpemUoY3Jvc3MoYV9nbG9iZV9ub3JtYWwseEF4aXMpKSA6IHZlYzMoMCwxLDApO2dsX1Bvc2l0aW9uPW1peCh1X2Nvb3JkX21hdHJpeCp2ZWM0KHByb2plY3RlZF9wb3MueHl6L3Byb2plY3RlZF9wb3Mudyt4QXhpcypvZmZzZXQueCt5QXhpcypvZmZzZXQueSwxLjApLEFXQVksZmxvYXQocHJvamVjdGVkX3BvaW50LncgPD0wLjAgfHwgb2NjbHVzaW9uX2ZhZGU9PTAuMCkpO1xcbiNlbHNlXFxuZ2xfUG9zaXRpb249bWl4KHVfY29vcmRfbWF0cml4KnZlYzQocHJvamVjdGVkX3Bvcy54eS9wcm9qZWN0ZWRfcG9zLncrb2Zmc2V0LHosMS4wKSxBV0FZLGZsb2F0KHByb2plY3RlZF9wb2ludC53IDw9MC4wIHx8IG9jY2x1c2lvbl9mYWRlPT0wLjApKTtcXG4jZW5kaWZcXG5mbG9hdCBnYW1tYV9zY2FsZT1nbF9Qb3NpdGlvbi53O3ZlYzIgZmFkZV9vcGFjaXR5PXVucGFja19vcGFjaXR5KGFfZmFkZV9vcGFjaXR5KTtmbG9hdCBmYWRlX2NoYW5nZT1mYWRlX29wYWNpdHlbMV0gPiAwLjUgPyB1X2ZhZGVfY2hhbmdlIDotdV9mYWRlX2NoYW5nZTtmbG9hdCBpbnRlcnBvbGF0ZWRfZmFkZV9vcGFjaXR5PW1heCgwLjAsbWluKG9jY2x1c2lvbl9mYWRlLGZhZGVfb3BhY2l0eVswXStmYWRlX2NoYW5nZSkpO2Zsb2F0IHByb2plY3Rpb25fdHJhbnNpdGlvbl9mYWRlPTEuMDtcXG4jaWYgZGVmaW5lZChQUk9KRUNURURfUE9TX09OX1ZJRVdQT1JUKSAmJiBkZWZpbmVkKFBST0pFQ1RJT05fR0xPQkVfVklFVylcXG5wcm9qZWN0aW9uX3RyYW5zaXRpb25fZmFkZT0xLjAtc3RlcChFUFNJTE9OLHVfem9vbV90cmFuc2l0aW9uKTtcXG4jZW5kaWZcXG52X2RhdGEwLnh5PWFfdGV4L3VfdGV4c2l6ZTt2X2RhdGEwLnp3PWFfdGV4L3VfdGV4c2l6ZV9pY29uO3ZfZGF0YTE9dmVjNChnYW1tYV9zY2FsZSxzaXplLGludGVycG9sYXRlZF9mYWRlX29wYWNpdHkqcHJvamVjdGlvbl90cmFuc2l0aW9uX2ZhZGUsaXNfc2RmKTt9XCIpLHRlcnJhaW5SYXN0ZXI6dWkoXCJ1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlMDt2YXJ5aW5nIHZlYzIgdl9wb3MwO1xcbiNpZmRlZiBGT0dcXG52YXJ5aW5nIGZsb2F0IHZfZm9nX29wYWNpdHk7XFxuI2VuZGlmXFxuI2lmZGVmIFJFTkRFUl9TSEFET1dTXFxudmFyeWluZyB2ZWM0IHZfcG9zX2xpZ2h0X3ZpZXdfMDt2YXJ5aW5nIHZlYzQgdl9wb3NfbGlnaHRfdmlld18xO3ZhcnlpbmcgZmxvYXQgdl9kZXB0aDtcXG4jZW5kaWZcXG52b2lkIG1haW4oKSB7dmVjNCBjb2xvcj10ZXh0dXJlMkQodV9pbWFnZTAsdl9wb3MwKTtcXG4jaWZkZWYgUkVOREVSX1NIQURPV1NcXG5jb2xvci54eXo9c2hhZG93ZWRfY29sb3IoY29sb3IueHl6LHZfcG9zX2xpZ2h0X3ZpZXdfMCx2X3Bvc19saWdodF92aWV3XzEsdl9kZXB0aCk7XFxuI2VuZGlmXFxuI2lmZGVmIEZPR1xcbiNpZmRlZiBaRVJPX0VYQUdHRVJBVElPTlxcbmNvbG9yPWZvZ19kaXRoZXIoZm9nX2FwcGx5X3ByZW11bHRpcGxpZWQoY29sb3Isdl9mb2dfcG9zKSk7XFxuI2Vsc2VcXG5jb2xvcj1mb2dfZGl0aGVyKGZvZ19hcHBseV9mcm9tX3ZlcnQoY29sb3Isdl9mb2dfb3BhY2l0eSkpO1xcbiNlbmRpZlxcbiNlbmRpZlxcbmdsX0ZyYWdDb2xvcj1jb2xvcjtcXG4jaWZkZWYgVEVSUkFJTl9XSVJFRlJBTUVcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjAsMC4wLDAuMCwwLjgpO1xcbiNlbmRpZlxcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cIixcInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIGZsb2F0IHVfc2tpcnRfaGVpZ2h0O2F0dHJpYnV0ZSB2ZWMyIGFfcG9zO3ZhcnlpbmcgdmVjMiB2X3BvczA7XFxuI2lmZGVmIEZPR1xcbnZhcnlpbmcgZmxvYXQgdl9mb2dfb3BhY2l0eTtcXG4jZW5kaWZcXG4jaWZkZWYgUkVOREVSX1NIQURPV1NcXG51bmlmb3JtIG1hdDQgdV9saWdodF9tYXRyaXhfMDt1bmlmb3JtIG1hdDQgdV9saWdodF9tYXRyaXhfMTt2YXJ5aW5nIHZlYzQgdl9wb3NfbGlnaHRfdmlld18wO3ZhcnlpbmcgdmVjNCB2X3Bvc19saWdodF92aWV3XzE7dmFyeWluZyBmbG9hdCB2X2RlcHRoO1xcbiNlbmRpZlxcbmNvbnN0IGZsb2F0IHdpcmVmcmFtZU9mZnNldD0wLjAwMDE1O3ZvaWQgbWFpbigpIHt2ZWMzIGRlY29tcG9zZWRQb3NBbmRTa2lydD1kZWNvbXBvc2VUb1Bvc0FuZFNraXJ0KGFfcG9zKTtmbG9hdCBza2lydD1kZWNvbXBvc2VkUG9zQW5kU2tpcnQuejt2ZWMyIGRlY29kZWRQb3M9ZGVjb21wb3NlZFBvc0FuZFNraXJ0Lnh5O2Zsb2F0IGVsZXZhdGlvbj1lbGV2YXRpb24oZGVjb2RlZFBvcyktc2tpcnQqdV9za2lydF9oZWlnaHQ7XFxuI2lmZGVmIFRFUlJBSU5fV0lSRUZSQU1FXFxuZWxldmF0aW9uKz13aXJlZnJhbWVPZmZzZXQ7XFxuI2VuZGlmXFxudl9wb3MwPWRlY29kZWRQb3MvODE5Mi4wO2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoZGVjb2RlZFBvcyxlbGV2YXRpb24sMS4wKTtcXG4jaWZkZWYgRk9HXFxuI2lmZGVmIFpFUk9fRVhBR0dFUkFUSU9OXFxudl9mb2dfcG9zPWZvZ19wb3NpdGlvbihkZWNvZGVkUG9zKTtcXG4jZWxzZVxcbnZfZm9nX29wYWNpdHk9Zm9nKGZvZ19wb3NpdGlvbih2ZWMzKGRlY29kZWRQb3MsZWxldmF0aW9uKSkpO1xcbiNlbmRpZlxcbiNlbmRpZlxcbiNpZmRlZiBSRU5ERVJfU0hBRE9XU1xcbnZlYzMgcG9zPXZlYzMoZGVjb2RlZFBvcyxlbGV2YXRpb24pO3ZfcG9zX2xpZ2h0X3ZpZXdfMD11X2xpZ2h0X21hdHJpeF8wKnZlYzQocG9zLDEuKTt2X3Bvc19saWdodF92aWV3XzE9dV9saWdodF9tYXRyaXhfMSp2ZWM0KHBvcywxLik7dl9kZXB0aD1nbF9Qb3NpdGlvbi53O1xcbiNlbmRpZlxcbn1cIiksdGVycmFpbkRlcHRoOnVpKFwiI2lmZGVmIEdMX0VTXFxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xcbiNlbmRpZlxcbnZhcnlpbmcgZmxvYXQgdl9kZXB0aDt2b2lkIG1haW4oKSB7Z2xfRnJhZ0NvbG9yPXBhY2tfZGVwdGgodl9kZXB0aCk7fVwiLFwidW5pZm9ybSBtYXQ0IHVfbWF0cml4O2F0dHJpYnV0ZSB2ZWMyIGFfcG9zO3ZhcnlpbmcgZmxvYXQgdl9kZXB0aDt2b2lkIG1haW4oKSB7ZmxvYXQgZWxldmF0aW9uPWVsZXZhdGlvbihhX3Bvcyk7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3BvcyxlbGV2YXRpb24sMS4wKTt2X2RlcHRoPWdsX1Bvc2l0aW9uLnovZ2xfUG9zaXRpb24udzt9XCIpLHNreWJveDp1aShcIlxcbnZhcnlpbmcgbG93cCB2ZWMzIHZfdXY7dW5pZm9ybSBsb3dwIHNhbXBsZXJDdWJlIHVfY3ViZW1hcDt1bmlmb3JtIGxvd3AgZmxvYXQgdV9vcGFjaXR5O3VuaWZvcm0gaGlnaHAgZmxvYXQgdV90ZW1wb3JhbF9vZmZzZXQ7dW5pZm9ybSBoaWdocCB2ZWMzIHVfc3VuX2RpcmVjdGlvbjtmbG9hdCBzdW5fZGlzayhoaWdocCB2ZWMzIHJheV9kaXJlY3Rpb24saGlnaHAgdmVjMyBzdW5fZGlyZWN0aW9uKSB7aGlnaHAgZmxvYXQgY29zX2FuZ2xlPWRvdChub3JtYWxpemUocmF5X2RpcmVjdGlvbiksc3VuX2RpcmVjdGlvbik7Y29uc3QgaGlnaHAgZmxvYXQgY29zX3N1bl9hbmd1bGFyX2RpYW1ldGVyPTAuOTk5OTYxOTIzMDY7Y29uc3QgaGlnaHAgZmxvYXQgc21vb3Roc3RlcF9kZWx0YT0xZS01O3JldHVybiBzbW9vdGhzdGVwKFxcbmNvc19zdW5fYW5ndWxhcl9kaWFtZXRlci1zbW9vdGhzdGVwX2RlbHRhLGNvc19zdW5fYW5ndWxhcl9kaWFtZXRlcitzbW9vdGhzdGVwX2RlbHRhLGNvc19hbmdsZSk7fWZsb2F0IG1hcChmbG9hdCB2YWx1ZSxmbG9hdCBzdGFydCxmbG9hdCBlbmQsZmxvYXQgbmV3X3N0YXJ0LGZsb2F0IG5ld19lbmQpIHtyZXR1cm4gKCh2YWx1ZS1zdGFydCkqKG5ld19lbmQtbmV3X3N0YXJ0KSkvKGVuZC1zdGFydCkrbmV3X3N0YXJ0O312b2lkIG1haW4oKSB7dmVjMyB1dj12X3V2O2NvbnN0IGZsb2F0IHlfYmlhcz0wLjAxNTt1di55Kz15X2JpYXM7dXYueT1wb3coYWJzKHV2LnkpLDEuMC81LjApO3V2Lnk9bWFwKHV2LnksMC4wLDEuMCwtMS4wLDEuMCk7dmVjMyBza3lfY29sb3I9dGV4dHVyZUN1YmUodV9jdWJlbWFwLHV2KS5yZ2I7XFxuI2lmZGVmIEZPR1xcbnNreV9jb2xvcj1mb2dfYXBwbHlfc2t5X2dyYWRpZW50KHZfdXYueHp5LHNreV9jb2xvcik7XFxuI2VuZGlmXFxuc2t5X2NvbG9yLnJnYj1kaXRoZXIoc2t5X2NvbG9yLnJnYixnbF9GcmFnQ29vcmQueHkrdV90ZW1wb3JhbF9vZmZzZXQpO3NreV9jb2xvcis9MC4xKnN1bl9kaXNrKHZfdXYsdV9zdW5fZGlyZWN0aW9uKTtnbF9GcmFnQ29sb3I9dmVjNChza3lfY29sb3IqdV9vcGFjaXR5LHVfb3BhY2l0eSk7XFxuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XFxuI2VuZGlmXFxufVwiLFF0KSxza3lib3hHcmFkaWVudDp1aShcInZhcnlpbmcgaGlnaHAgdmVjMyB2X3V2O3VuaWZvcm0gbG93cCBzYW1wbGVyMkQgdV9jb2xvcl9yYW1wO3VuaWZvcm0gaGlnaHAgdmVjMyB1X2NlbnRlcl9kaXJlY3Rpb247dW5pZm9ybSBsb3dwIGZsb2F0IHVfcmFkaXVzO3VuaWZvcm0gbG93cCBmbG9hdCB1X29wYWNpdHk7dW5pZm9ybSBoaWdocCBmbG9hdCB1X3RlbXBvcmFsX29mZnNldDt2b2lkIG1haW4oKSB7ZmxvYXQgcHJvZ3Jlc3M9YWNvcyhkb3Qobm9ybWFsaXplKHZfdXYpLHVfY2VudGVyX2RpcmVjdGlvbikpL3VfcmFkaXVzO3ZlYzQgY29sb3I9dGV4dHVyZTJEKHVfY29sb3JfcmFtcCx2ZWMyKHByb2dyZXNzLDAuNSkpO1xcbiNpZmRlZiBGT0dcXG5jb2xvci5yZ2I9Zm9nX2FwcGx5X3NreV9ncmFkaWVudCh2X3V2Lnh6eSxjb2xvci5yZ2IvY29sb3IuYSkqY29sb3IuYTtcXG4jZW5kaWZcXG5jb2xvcio9dV9vcGFjaXR5O2NvbG9yLnJnYj1kaXRoZXIoY29sb3IucmdiLGdsX0ZyYWdDb29yZC54eSt1X3RlbXBvcmFsX29mZnNldCk7Z2xfRnJhZ0NvbG9yPWNvbG9yO1xcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cIixRdCksc2t5Ym94Q2FwdHVyZTp1aShcIlxcbnZhcnlpbmcgaGlnaHAgdmVjMyB2X3Bvc2l0aW9uO3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9zdW5faW50ZW5zaXR5O3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9sdW1pbmFuY2U7dW5pZm9ybSBsb3dwIHZlYzMgdV9zdW5fZGlyZWN0aW9uO3VuaWZvcm0gaGlnaHAgdmVjNCB1X2NvbG9yX3RpbnRfcjt1bmlmb3JtIGhpZ2hwIHZlYzQgdV9jb2xvcl90aW50X207XFxuI2lmZGVmIEdMX0VTXFxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xcbiNlbmRpZlxcbiNkZWZpbmUgQkVUQV9SICAgICAgICAgICAgICAgICAgdmVjMyg1LjVlLTYsMTMuMGUtNiwyMi40ZS02KVxcbiNkZWZpbmUgQkVUQV9NICAgICAgICAgICAgICAgICAgdmVjMygyMWUtNiwyMWUtNiwyMWUtNilcXG4jZGVmaW5lIE1JRV9HICAgICAgICAgICAgICAgICAgIDAuNzZcXG4jZGVmaW5lIERFTlNJVFlfSEVJR0hUX1NDQUxFX1IgIDgwMDAuMFxcbiNkZWZpbmUgREVOU0lUWV9IRUlHSFRfU0NBTEVfTSAgMTIwMC4wXFxuI2RlZmluZSBQTEFORVRfUkFESVVTICAgICAgICAgICA2MzYwZTNcXG4jZGVmaW5lIEFUTU9TUEhFUkVfUkFESVVTICAgICAgIDY0MjBlM1xcbiNkZWZpbmUgU0FNUExFX1NURVBTICAgICAgICAgICAgMTBcXG4jZGVmaW5lIERFTlNJVFlfU1RFUFMgICAgICAgICAgIDRcXG5mbG9hdCByYXlfc3BoZXJlX2V4aXQodmVjMyBvcmlnLHZlYzMgZGlyLGZsb2F0IHJhZGl1cykge2Zsb2F0IGE9ZG90KGRpcixkaXIpO2Zsb2F0IGI9Mi4wKmRvdChkaXIsb3JpZyk7ZmxvYXQgYz1kb3Qob3JpZyxvcmlnKS1yYWRpdXMqcmFkaXVzO2Zsb2F0IGQ9c3FydChiKmItNC4wKmEqYyk7cmV0dXJuICgtYitkKS8oMi4wKmEpO312ZWMzIGV4dGluY3Rpb24odmVjMiBkZW5zaXR5KSB7cmV0dXJuIGV4cCgtdmVjMyhCRVRBX1IqdV9jb2xvcl90aW50X3IuYSpkZW5zaXR5LngrQkVUQV9NKnVfY29sb3JfdGludF9tLmEqZGVuc2l0eS55KSk7fXZlYzIgbG9jYWxfZGVuc2l0eSh2ZWMzIHBvaW50KSB7ZmxvYXQgaGVpZ2h0PW1heChsZW5ndGgocG9pbnQpLVBMQU5FVF9SQURJVVMsMC4wKTtmbG9hdCBleHBfcj1leHAoLWhlaWdodC9ERU5TSVRZX0hFSUdIVF9TQ0FMRV9SKTtmbG9hdCBleHBfbT1leHAoLWhlaWdodC9ERU5TSVRZX0hFSUdIVF9TQ0FMRV9NKTtyZXR1cm4gdmVjMihleHBfcixleHBfbSk7fWZsb2F0IHBoYXNlX3JheShmbG9hdCBjb3NfYW5nbGUpIHtyZXR1cm4gKDMuMC8oMTYuMCpQSSkpKigxLjArY29zX2FuZ2xlKmNvc19hbmdsZSk7fWZsb2F0IHBoYXNlX21pZShmbG9hdCBjb3NfYW5nbGUpIHtyZXR1cm4gKDMuMC8oOC4wKlBJKSkqKCgxLjAtTUlFX0cqTUlFX0cpKigxLjArY29zX2FuZ2xlKmNvc19hbmdsZSkpLygoMi4wK01JRV9HKk1JRV9HKSpwb3coMS4wK01JRV9HKk1JRV9HLTIuMCpNSUVfRypjb3NfYW5nbGUsMS41KSk7fXZlYzIgZGVuc2l0eV90b19hdG1vc3BoZXJlKHZlYzMgcG9pbnQsdmVjMyBsaWdodF9kaXIpIHtmbG9hdCByYXlfbGVuPXJheV9zcGhlcmVfZXhpdChwb2ludCxsaWdodF9kaXIsQVRNT1NQSEVSRV9SQURJVVMpO2Zsb2F0IHN0ZXBfbGVuPXJheV9sZW4vZmxvYXQoREVOU0lUWV9TVEVQUyk7dmVjMiBkZW5zaXR5X3BvaW50X3RvX2F0bW9zcGhlcmU9dmVjMigwLjApO2ZvciAoaW50IGk9MDsgaSA8IERFTlNJVFlfU1RFUFM7KytpKSB7dmVjMyBwb2ludF9vbl9yYXk9cG9pbnQrbGlnaHRfZGlyKigoZmxvYXQoaSkrMC41KSpzdGVwX2xlbik7ZGVuc2l0eV9wb2ludF90b19hdG1vc3BoZXJlKz1sb2NhbF9kZW5zaXR5KHBvaW50X29uX3JheSkqc3RlcF9sZW47O31yZXR1cm4gZGVuc2l0eV9wb2ludF90b19hdG1vc3BoZXJlO312ZWMzIGF0bW9zcGhlcmUodmVjMyByYXlfZGlyLHZlYzMgc3VuX2RpcmVjdGlvbixmbG9hdCBzdW5faW50ZW5zaXR5KSB7dmVjMiBkZW5zaXR5X29yaWdfdG9fcG9pbnQ9dmVjMigwLjApO3ZlYzMgc2NhdHRlcl9yPXZlYzMoMC4wKTt2ZWMzIHNjYXR0ZXJfbT12ZWMzKDAuMCk7dmVjMyBvcmlnaW49dmVjMygwLjAsUExBTkVUX1JBRElVUywwLjApO2Zsb2F0IHJheV9sZW49cmF5X3NwaGVyZV9leGl0KG9yaWdpbixyYXlfZGlyLEFUTU9TUEhFUkVfUkFESVVTKTtmbG9hdCBzdGVwX2xlbj1yYXlfbGVuL2Zsb2F0KFNBTVBMRV9TVEVQUyk7Zm9yIChpbnQgaT0wOyBpIDwgU0FNUExFX1NURVBTOysraSkge3ZlYzMgcG9pbnRfb25fcmF5PW9yaWdpbityYXlfZGlyKigoZmxvYXQoaSkrMC41KSpzdGVwX2xlbik7dmVjMiBkZW5zaXR5PWxvY2FsX2RlbnNpdHkocG9pbnRfb25fcmF5KSpzdGVwX2xlbjtkZW5zaXR5X29yaWdfdG9fcG9pbnQrPWRlbnNpdHk7dmVjMiBkZW5zaXR5X3BvaW50X3RvX2F0bW9zcGhlcmU9ZGVuc2l0eV90b19hdG1vc3BoZXJlKHBvaW50X29uX3JheSxzdW5fZGlyZWN0aW9uKTt2ZWMyIGRlbnNpdHlfb3JpZ190b19hdG1vc3BoZXJlPWRlbnNpdHlfb3JpZ190b19wb2ludCtkZW5zaXR5X3BvaW50X3RvX2F0bW9zcGhlcmU7dmVjMyBleHRpbmN0aW9uPWV4dGluY3Rpb24oZGVuc2l0eV9vcmlnX3RvX2F0bW9zcGhlcmUpO3NjYXR0ZXJfcis9ZGVuc2l0eS54KmV4dGluY3Rpb247c2NhdHRlcl9tKz1kZW5zaXR5LnkqZXh0aW5jdGlvbjt9ZmxvYXQgY29zX2FuZ2xlPWRvdChyYXlfZGlyLHN1bl9kaXJlY3Rpb24pO2Zsb2F0IHBoYXNlX3I9cGhhc2VfcmF5KGNvc19hbmdsZSk7ZmxvYXQgcGhhc2VfbT1waGFzZV9taWUoY29zX2FuZ2xlKTt2ZWMzIGJldGFfcj1CRVRBX1IqdV9jb2xvcl90aW50X3IucmdiKnVfY29sb3JfdGludF9yLmE7dmVjMyBiZXRhX209QkVUQV9NKnVfY29sb3JfdGludF9tLnJnYip1X2NvbG9yX3RpbnRfbS5hO3JldHVybiAoc2NhdHRlcl9yKnBoYXNlX3IqYmV0YV9yK3NjYXR0ZXJfbSpwaGFzZV9tKmJldGFfbSkqc3VuX2ludGVuc2l0eTt9Y29uc3QgZmxvYXQgQT0wLjE1O2NvbnN0IGZsb2F0IEI9MC41MDtjb25zdCBmbG9hdCBDPTAuMTA7Y29uc3QgZmxvYXQgRD0wLjIwO2NvbnN0IGZsb2F0IEU9MC4wMjtjb25zdCBmbG9hdCBGPTAuMzA7dmVjMyB1bmNoYXJ0ZWQyX3RvbmVtYXAodmVjMyB4KSB7cmV0dXJuICgoeCooQSp4K0MqQikrRCpFKS8oeCooQSp4K0IpK0QqRikpLUUvRjt9dm9pZCBtYWluKCkge3ZlYzMgcmF5X2RpcmVjdGlvbj12X3Bvc2l0aW9uO3JheV9kaXJlY3Rpb24ueT1wb3cocmF5X2RpcmVjdGlvbi55LDUuMCk7Y29uc3QgZmxvYXQgeV9iaWFzPTAuMDE1O3JheV9kaXJlY3Rpb24ueSs9eV9iaWFzO3ZlYzMgY29sb3I9YXRtb3NwaGVyZShub3JtYWxpemUocmF5X2RpcmVjdGlvbiksdV9zdW5fZGlyZWN0aW9uLHVfc3VuX2ludGVuc2l0eSk7ZmxvYXQgd2hpdGVfc2NhbGU9MS4wNzQ4NzI0Njc1NjMzODU0O2NvbG9yPXVuY2hhcnRlZDJfdG9uZW1hcCgobG9nMigyLjAvcG93KHVfbHVtaW5hbmNlLDQuMCkpKSpjb2xvcikqd2hpdGVfc2NhbGU7Z2xfRnJhZ0NvbG9yPXZlYzQoY29sb3IsMS4wKTt9XCIsXCJhdHRyaWJ1dGUgaGlnaHAgdmVjMyBhX3Bvc18zZjt1bmlmb3JtIG1hdDMgdV9tYXRyaXhfM2Y7dmFyeWluZyBoaWdocCB2ZWMzIHZfcG9zaXRpb247ZmxvYXQgbWFwKGZsb2F0IHZhbHVlLGZsb2F0IHN0YXJ0LGZsb2F0IGVuZCxmbG9hdCBuZXdfc3RhcnQsZmxvYXQgbmV3X2VuZCkge3JldHVybiAoKHZhbHVlLXN0YXJ0KSoobmV3X2VuZC1uZXdfc3RhcnQpKS8oZW5kLXN0YXJ0KStuZXdfc3RhcnQ7fXZvaWQgbWFpbigpIHt2ZWM0IHBvcz12ZWM0KHVfbWF0cml4XzNmKmFfcG9zXzNmLDEuMCk7dl9wb3NpdGlvbj1wb3MueHl6O3ZfcG9zaXRpb24ueSo9LTEuMDt2X3Bvc2l0aW9uLnk9bWFwKHZfcG9zaXRpb24ueSwtMS4wLDEuMCwwLjAsMS4wKTtnbF9Qb3NpdGlvbj12ZWM0KGFfcG9zXzNmLnh5LDAuMCwxLjApO31cIiksZ2xvYmVSYXN0ZXI6dWkoXCJ1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlMDt2YXJ5aW5nIHZlYzIgdl9wb3MwO1xcbiNpZm5kZWYgRk9HXFxudW5pZm9ybSBoaWdocCB2ZWMzIHVfZnJ1c3R1bV90bDt1bmlmb3JtIGhpZ2hwIHZlYzMgdV9mcnVzdHVtX3RyO3VuaWZvcm0gaGlnaHAgdmVjMyB1X2ZydXN0dW1fYnI7dW5pZm9ybSBoaWdocCB2ZWMzIHVfZnJ1c3R1bV9ibDt1bmlmb3JtIGhpZ2hwIHZlYzMgdV9nbG9iZV9wb3M7dW5pZm9ybSBoaWdocCBmbG9hdCB1X2dsb2JlX3JhZGl1czt1bmlmb3JtIHZlYzIgdV92aWV3cG9ydDtcXG4jZW5kaWZcXG52b2lkIG1haW4oKSB7dmVjNCBjb2xvcjtcXG4jaWZkZWYgQ1VTVE9NX0FOVElBTElBU0lOR1xcbnZlYzIgdXY9Z2xfRnJhZ0Nvb3JkLnh5L3Vfdmlld3BvcnQ7aGlnaHAgdmVjMyByYXlfZGlyPW1peChcXG5taXgodV9mcnVzdHVtX3RsLHVfZnJ1c3R1bV90cix1di54KSxtaXgodV9mcnVzdHVtX2JsLHVfZnJ1c3R1bV9icix1di54KSwxLjAtdXYueSk7dmVjMyBkaXI9bm9ybWFsaXplKHJheV9kaXIpO3ZlYzMgY2xvc2VzdF9wb2ludD1kb3QodV9nbG9iZV9wb3MsZGlyKSpkaXI7ZmxvYXQgbm9ybV9kaXN0X2Zyb21fY2VudGVyPTEuMC1sZW5ndGgoY2xvc2VzdF9wb2ludC11X2dsb2JlX3BvcykvdV9nbG9iZV9yYWRpdXM7Y29uc3QgZmxvYXQgYW50aWFsaWFzX3BpeGVsPTIuMDtmbG9hdCBhbnRpYWxpYXNfZmFjdG9yPWFudGlhbGlhc19waXhlbCpmd2lkdGgobm9ybV9kaXN0X2Zyb21fY2VudGVyKTtmbG9hdCBhbnRpYWxpYXM9c21vb3Roc3RlcCgwLjAsYW50aWFsaWFzX2ZhY3Rvcixub3JtX2Rpc3RfZnJvbV9jZW50ZXIpO3ZlYzQgcmFzdGVyPXRleHR1cmUyRCh1X2ltYWdlMCx2X3BvczApO2NvbG9yPXZlYzQocmFzdGVyLnJnYiphbnRpYWxpYXMscmFzdGVyLmEqYW50aWFsaWFzKTtcXG4jZWxzZVxcbmNvbG9yPXRleHR1cmUyRCh1X2ltYWdlMCx2X3BvczApO1xcbiNlbmRpZlxcbiNpZmRlZiBGT0dcXG5jb2xvcj1mb2dfZGl0aGVyKGZvZ19hcHBseV9wcmVtdWx0aXBsaWVkKGNvbG9yLHZfZm9nX3BvcykpO1xcbiNlbmRpZlxcbmdsX0ZyYWdDb2xvcj1jb2xvcjtcXG4jaWZkZWYgVEVSUkFJTl9XSVJFRlJBTUVcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjAsMC4wLDAuMCwwLjgpO1xcbiNlbmRpZlxcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xcbiNlbmRpZlxcbn1cIixcInVuaWZvcm0gbWF0NCB1X3Byb2pfbWF0cml4O3VuaWZvcm0gbWF0NCB1X25vcm1hbGl6ZV9tYXRyaXg7dW5pZm9ybSBtYXQ0IHVfZ2xvYmVfbWF0cml4O3VuaWZvcm0gbWF0NCB1X21lcmNfbWF0cml4O3VuaWZvcm0gZmxvYXQgdV96b29tX3RyYW5zaXRpb247dW5pZm9ybSB2ZWMyIHVfbWVyY19jZW50ZXI7dW5pZm9ybSBtYXQzIHVfZ3JpZF9tYXRyaXg7dW5pZm9ybSBmbG9hdCB1X3NraXJ0X2hlaWdodDtcXG4jaWZkZWYgR0xPQkVfUE9MRVNcXG5hdHRyaWJ1dGUgdmVjMyBhX2dsb2JlX3BvczthdHRyaWJ1dGUgdmVjMiBhX3V2O1xcbiNlbHNlXFxuYXR0cmlidXRlIHZlYzIgYV9wb3M7XFxuI2VuZGlmXFxudmFyeWluZyB2ZWMyIHZfcG9zMDtjb25zdCBmbG9hdCB3aXJlZnJhbWVPZmZzZXQ9MWUzO2Zsb2F0IG1lcmNhdG9yWGZyb21MbmcoZmxvYXQgbG5nKSB7cmV0dXJuICgxODAuMCtsbmcpLzM2MC4wO31mbG9hdCBtZXJjYXRvcllmcm9tTGF0KGZsb2F0IGxhdCkge3JldHVybiAoMTgwLjAtKFJBRF9UT19ERUcqbG9nKHRhbihRVUFSVEVSX1BJK2xhdC8yLjAqREVHX1RPX1JBRCkpKSkvMzYwLjA7fXZlYzMgbGF0TG5nVG9FQ0VGKHZlYzIgbGF0TG5nKSB7bGF0TG5nPURFR19UT19SQUQqbGF0TG5nO2Zsb2F0IGNvc0xhdD1jb3MobGF0TG5nWzBdKTtmbG9hdCBzaW5MYXQ9c2luKGxhdExuZ1swXSk7ZmxvYXQgY29zTG5nPWNvcyhsYXRMbmdbMV0pO2Zsb2F0IHNpbkxuZz1zaW4obGF0TG5nWzFdKTtmbG9hdCBzeD1jb3NMYXQqc2luTG5nKkdMT0JFX1JBRElVUztmbG9hdCBzeT0tc2luTGF0KkdMT0JFX1JBRElVUztmbG9hdCBzej1jb3NMYXQqY29zTG5nKkdMT0JFX1JBRElVUztyZXR1cm4gdmVjMyhzeCxzeSxzeik7fXZvaWQgbWFpbigpIHtcXG4jaWZkZWYgR0xPQkVfUE9MRVNcXG52ZWMzIGdsb2JlX3Bvcz1hX2dsb2JlX3Bvczt2ZWMyIHV2PWFfdXY7XFxuI2Vsc2VcXG5mbG9hdCB0aWxlcz11X2dyaWRfbWF0cml4WzBdWzJdO2Zsb2F0IGlkeD11X2dyaWRfbWF0cml4WzFdWzJdO2Zsb2F0IGlkeT11X2dyaWRfbWF0cml4WzJdWzJdO3ZlYzMgZGVjb21wb3NlZF9wb3NfYW5kX3NraXJ0PWRlY29tcG9zZVRvUG9zQW5kU2tpcnQoYV9wb3MpO3ZlYzMgbGF0TG5nPXVfZ3JpZF9tYXRyaXgqdmVjMyhkZWNvbXBvc2VkX3Bvc19hbmRfc2tpcnQueHksMS4wKTtmbG9hdCBtZXJjYXRvclk9bWVyY2F0b3JZZnJvbUxhdChsYXRMbmdbMF0pO2Zsb2F0IHV2WT1tZXJjYXRvclkqdGlsZXMtaWR5O2Zsb2F0IG1lcmNhdG9yWD1tZXJjYXRvclhmcm9tTG5nKGxhdExuZ1sxXSk7ZmxvYXQgdXZYPW1lcmNhdG9yWCp0aWxlcy1pZHg7dmVjMyBnbG9iZV9wb3M9bGF0TG5nVG9FQ0VGKGxhdExuZy54eSk7dmVjMiBtZXJjX3Bvcz12ZWMyKG1lcmNhdG9yWCxtZXJjYXRvclkpO3ZlYzIgdXY9dmVjMih1dlgsdXZZKTtcXG4jZW5kaWZcXG52X3BvczA9dXY7dmVjMiB0aWxlX3Bvcz11dipFWFRFTlQ7dmVjMyBnbG9iZV9kZXJpdmVkX3VwX3ZlY3Rvcj1ub3JtYWxpemUoZ2xvYmVfcG9zKSp1X3RpbGVfdXBfc2NhbGU7XFxuI2lmZGVmIEdMT0JFX1BPTEVTXFxudmVjMyB1cF92ZWN0b3I9Z2xvYmVfZGVyaXZlZF91cF92ZWN0b3I7XFxuI2Vsc2VcXG52ZWMzIHVwX3ZlY3Rvcj1lbGV2YXRpb25WZWN0b3IodGlsZV9wb3MpO1xcbiNlbmRpZlxcbmZsb2F0IGhlaWdodD1lbGV2YXRpb24odGlsZV9wb3MpO1xcbiNpZmRlZiBURVJSQUlOX1dJUkVGUkFNRVxcbmhlaWdodCs9d2lyZWZyYW1lT2Zmc2V0O1xcbiNlbmRpZlxcbmdsb2JlX3Bvcys9dXBfdmVjdG9yKmhlaWdodDtcXG4jaWZuZGVmIEdMT0JFX1BPTEVTXFxuZ2xvYmVfcG9zLT1nbG9iZV9kZXJpdmVkX3VwX3ZlY3Rvcip1X3NraXJ0X2hlaWdodCpkZWNvbXBvc2VkX3Bvc19hbmRfc2tpcnQuejtcXG4jZW5kaWZcXG4jaWZkZWYgR0xPQkVfUE9MRVNcXG52ZWM0IGludGVycG9sYXRlZF9wb3M9dV9nbG9iZV9tYXRyaXgqdmVjNChnbG9iZV9wb3MsMS4wKTtcXG4jZWxzZVxcbnZlYzQgZ2xvYmVfd29ybGRfcG9zPXVfZ2xvYmVfbWF0cml4KnZlYzQoZ2xvYmVfcG9zLDEuMCk7dmVjNCBtZXJjX3dvcmxkX3Bvcz12ZWM0KDAuMCk7aWYgKHVfem9vbV90cmFuc2l0aW9uID4gMC4wKSB7bWVyY193b3JsZF9wb3M9dmVjNChtZXJjX3BvcyxoZWlnaHQtdV9za2lydF9oZWlnaHQqZGVjb21wb3NlZF9wb3NfYW5kX3NraXJ0LnosMS4wKTttZXJjX3dvcmxkX3Bvcy54eS09dV9tZXJjX2NlbnRlcjttZXJjX3dvcmxkX3Bvcy54PXdyYXAobWVyY193b3JsZF9wb3MueCwtMC41LDAuNSk7bWVyY193b3JsZF9wb3M9dV9tZXJjX21hdHJpeCptZXJjX3dvcmxkX3Bvczt9dmVjNCBpbnRlcnBvbGF0ZWRfcG9zPXZlYzQobWl4KGdsb2JlX3dvcmxkX3Bvcy54eXosbWVyY193b3JsZF9wb3MueHl6LHVfem9vbV90cmFuc2l0aW9uKSwxLjApO1xcbiNlbmRpZlxcbmdsX1Bvc2l0aW9uPXVfcHJval9tYXRyaXgqaW50ZXJwb2xhdGVkX3BvcztcXG4jaWZkZWYgRk9HXFxudl9mb2dfcG9zPWZvZ19wb3NpdGlvbigodV9ub3JtYWxpemVfbWF0cml4KnZlYzQoZ2xvYmVfcG9zLDEuMCkpLnh5eik7XFxuI2VuZGlmXFxufVwiKSxnbG9iZUF0bW9zcGhlcmU6dWkoXCJ1bmlmb3JtIGZsb2F0IHVfdHJhbnNpdGlvbjt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfZmFkZW91dF9yYW5nZTt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfdGVtcG9yYWxfb2Zmc2V0O3VuaWZvcm0gdmVjMyB1X3N0YXJ0X2NvbG9yO3VuaWZvcm0gdmVjNCB1X2NvbG9yO3VuaWZvcm0gdmVjNCB1X3NwYWNlX2NvbG9yO3VuaWZvcm0gdmVjNCB1X2hpZ2hfY29sb3I7dW5pZm9ybSBmbG9hdCB1X3N0YXJfaW50ZW5zaXR5O3VuaWZvcm0gZmxvYXQgdV9zdGFyX3NpemU7dW5pZm9ybSBmbG9hdCB1X3N0YXJfZGVuc2l0eTt1bmlmb3JtIGZsb2F0IHVfaG9yaXpvbl9hbmdsZTt1bmlmb3JtIG1hdDQgdV9yb3RhdGlvbl9tYXRyaXg7dmFyeWluZyBoaWdocCB2ZWMzIHZfcmF5X2Rpcjt2YXJ5aW5nIGhpZ2hwIHZlYzMgdl9ob3Jpem9uX2RpcjtoaWdocCBmbG9hdCByYW5kb20oaGlnaHAgdmVjMyBwKSB7cD1mcmFjdChwKnZlYzMoMjMuMjM0Miw5Ny4xMjMxLDkxLjIzNDIpKTtwKz1kb3QocC56eHkscC55eHorMTIzLjEyMzQpO3JldHVybiBmcmFjdChwLngqcC55KTt9ZmxvYXQgc3RhcnModmVjMyBwLGZsb2F0IHNjYWxlLHZlYzIgb2Zmc2V0KSB7dmVjMiB1dl9zY2FsZT0odV92aWV3cG9ydC91X3N0YXJfc2l6ZSkqc2NhbGU7dmVjMyBwb3NpdGlvbj12ZWMzKHAueHkqdXZfc2NhbGUrb2Zmc2V0KnVfdmlld3BvcnQscC56KTt2ZWMzIHE9ZnJhY3QocG9zaXRpb24pLTAuNTt2ZWMzIGlkPWZsb29yKHBvc2l0aW9uKTtmbG9hdCByYW5kb21fdmlzaWJpbGl0eT1zdGVwKHJhbmRvbShpZCksdV9zdGFyX2RlbnNpdHkpO2Zsb2F0IGNpcmNsZT1zbW9vdGhzdGVwKDAuNSt1X3N0YXJfaW50ZW5zaXR5LDAuNSxsZW5ndGgocSkpO3JldHVybiBjaXJjbGUqcmFuZG9tX3Zpc2liaWxpdHk7fXZvaWQgbWFpbigpIHtoaWdocCB2ZWMzIGRpcj1ub3JtYWxpemUodl9yYXlfZGlyKTtmbG9hdCBnbG9iZV9wb3NfZG90X2RpcjtcXG4jaWZkZWYgUFJPSkVDVElPTl9HTE9CRV9WSUVXXFxuZ2xvYmVfcG9zX2RvdF9kaXI9ZG90KHVfZ2xvYmVfcG9zLGRpcik7aGlnaHAgdmVjMyBjbG9zZXN0X3BvaW50X2ZvcndhcmQ9YWJzKGdsb2JlX3Bvc19kb3RfZGlyKSpkaXI7ZmxvYXQgbm9ybV9kaXN0X2Zyb21fY2VudGVyPWxlbmd0aChjbG9zZXN0X3BvaW50X2ZvcndhcmQtdV9nbG9iZV9wb3MpL3VfZ2xvYmVfcmFkaXVzO2lmIChub3JtX2Rpc3RfZnJvbV9jZW50ZXIgPCAwLjk4KSB7ZGlzY2FyZDtyZXR1cm47fVxcbiNlbmRpZlxcbmhpZ2hwIHZlYzMgaG9yaXpvbl9kaXI9bm9ybWFsaXplKHZfaG9yaXpvbl9kaXIpO2Zsb2F0IGhvcml6b25fYW5nbGVfbWVyY2F0b3I9ZGlyLnkgPCBob3Jpem9uX2Rpci55ID9cXG4wLjAgOiBtYXgoYWNvcyhkb3QoZGlyLGhvcml6b25fZGlyKSksMC4wKTtmbG9hdCBob3Jpem9uX2FuZ2xlO1xcbiNpZmRlZiBQUk9KRUNUSU9OX0dMT0JFX1ZJRVdcXG5oaWdocCB2ZWMzIGNsb3Nlc3RfcG9pbnQ9Z2xvYmVfcG9zX2RvdF9kaXIqZGlyO2Zsb2F0IGNsb3Nlc3RfcG9pbnRfdG9fY2VudGVyPWxlbmd0aChjbG9zZXN0X3BvaW50LXVfZ2xvYmVfcG9zKTtmbG9hdCB0aGV0YT1hc2luKGNsYW1wKGNsb3Nlc3RfcG9pbnRfdG9fY2VudGVyL2xlbmd0aCh1X2dsb2JlX3BvcyksLTEuMCwxLjApKTtob3Jpem9uX2FuZ2xlPWdsb2JlX3Bvc19kb3RfZGlyIDwgMC4wID9cXG5QSS10aGV0YS11X2hvcml6b25fYW5nbGUgOiB0aGV0YS11X2hvcml6b25fYW5nbGU7ZmxvYXQgYW5nbGVfdD1wb3codV90cmFuc2l0aW9uLDEwLjApO2hvcml6b25fYW5nbGU9bWl4KGhvcml6b25fYW5nbGUsaG9yaXpvbl9hbmdsZV9tZXJjYXRvcixhbmdsZV90KTtcXG4jZWxzZVxcbmhvcml6b25fYW5nbGU9aG9yaXpvbl9hbmdsZV9tZXJjYXRvcjtcXG4jZW5kaWZcXG5ob3Jpem9uX2FuZ2xlLz1QSTtmbG9hdCB0PWV4cCgtaG9yaXpvbl9hbmdsZS91X2ZhZGVvdXRfcmFuZ2UpO2Zsb2F0IGFscGhhXzA9dV9jb2xvci5hO2Zsb2F0IGFscGhhXzE9dV9oaWdoX2NvbG9yLmE7ZmxvYXQgYWxwaGFfMj11X3NwYWNlX2NvbG9yLmE7dmVjMyBjb2xvcl9zdG9wXzA9dV9jb2xvci5yZ2I7dmVjMyBjb2xvcl9zdG9wXzE9dV9oaWdoX2NvbG9yLnJnYjt2ZWMzIGNvbG9yX3N0b3BfMj11X3NwYWNlX2NvbG9yLnJnYjt2ZWMzIGMwPW1peChjb2xvcl9zdG9wXzIsY29sb3Jfc3RvcF8xLGFscGhhXzEpO3ZlYzMgYzE9bWl4KGMwLGNvbG9yX3N0b3BfMCxhbHBoYV8wKTt2ZWMzIGMyPW1peChjMCxjMSx0KTt2ZWMzIGMgPW1peChjb2xvcl9zdG9wXzIsYzIsdCk7ZmxvYXQgYTA9bWl4KGFscGhhXzIsMS4wLGFscGhhXzEpO2Zsb2F0IGExPW1peChhMCwxLjAsYWxwaGFfMCk7ZmxvYXQgYTI9bWl4KGEwLGExLHQpO2Zsb2F0IGEgPW1peChhbHBoYV8yLGEyLHQpO3ZlYzIgdXY9Z2xfRnJhZ0Nvb3JkLnh5L3Vfdmlld3BvcnQtMC41O2Zsb2F0IGFzcGVjdF9yYXRpbz11X3ZpZXdwb3J0LngvdV92aWV3cG9ydC55O3ZlYzQgdXZfZGlyPXZlYzQobm9ybWFsaXplKHZlYzModXYueCphc3BlY3RfcmF0aW8sdXYueSwxLjApKSwxLjApO3V2X2Rpcj11X3JvdGF0aW9uX21hdHJpeCp1dl9kaXI7dmVjMyBuPWFicyh1dl9kaXIueHl6KTt2ZWMyIHV2X3JlbWFwPShuLnggPiBuLnkgJiYgbi54ID4gbi56KSA/IHV2X2Rpci55ei91dl9kaXIueDpcXG4obi55ID4gbi54ICYmIG4ueSA+IG4ueikgPyB1dl9kaXIuengvdXZfZGlyLnk6XFxudXZfZGlyLnh5L3V2X2Rpci56O3V2X3JlbWFwLngvPWFzcGVjdF9yYXRpbzt2ZWMzIEQ9dmVjMyh1dl9yZW1hcCwxLjApO2hpZ2hwIGZsb2F0IHN0YXJfZmllbGQ9MC4wO2lmICh1X3N0YXJfaW50ZW5zaXR5ID4gMC4wKSB7c3Rhcl9maWVsZCs9c3RhcnMoRCwxLjIsdmVjMigwLjAsMC4wKSk7c3Rhcl9maWVsZCs9c3RhcnMoRCwxLjAsdmVjMigxLjAsMC4wKSk7c3Rhcl9maWVsZCs9c3RhcnMoRCwwLjgsdmVjMigwLjAsMS4wKSk7c3Rhcl9maWVsZCs9c3RhcnMoRCwwLjYsdmVjMigxLjAsMS4wKSk7c3Rhcl9maWVsZCo9KDEuMC1wb3codCwwLjI1KygxLjAtdV9oaWdoX2NvbG9yLmEpKjAuNzUpKTtjKz1zdGFyX2ZpZWxkKmFscGhhXzI7fWM9ZGl0aGVyKGMsZ2xfRnJhZ0Nvb3JkLnh5K3VfdGVtcG9yYWxfb2Zmc2V0KTtnbF9GcmFnQ29sb3I9dmVjNChjLGEpO31cIixcImF0dHJpYnV0ZSB2ZWMzIGFfcG9zO2F0dHJpYnV0ZSB2ZWMyIGFfdXY7dW5pZm9ybSB2ZWMzIHVfZnJ1c3R1bV90bDt1bmlmb3JtIHZlYzMgdV9mcnVzdHVtX3RyO3VuaWZvcm0gdmVjMyB1X2ZydXN0dW1fYnI7dW5pZm9ybSB2ZWMzIHVfZnJ1c3R1bV9ibDt1bmlmb3JtIGZsb2F0IHVfaG9yaXpvbjt2YXJ5aW5nIGhpZ2hwIHZlYzMgdl9yYXlfZGlyO3ZhcnlpbmcgaGlnaHAgdmVjMyB2X2hvcml6b25fZGlyO3ZvaWQgbWFpbigpIHt2X3JheV9kaXI9bWl4KFxcbm1peCh1X2ZydXN0dW1fdGwsdV9mcnVzdHVtX3RyLGFfdXYueCksbWl4KHVfZnJ1c3R1bV9ibCx1X2ZydXN0dW1fYnIsYV91di54KSxhX3V2LnkpO3ZfaG9yaXpvbl9kaXI9bWl4KFxcbm1peCh1X2ZydXN0dW1fdGwsdV9mcnVzdHVtX2JsLHVfaG9yaXpvbiksbWl4KHVfZnJ1c3R1bV90cix1X2ZydXN0dW1fYnIsdV9ob3Jpem9uKSxhX3V2LngpO2dsX1Bvc2l0aW9uPXZlYzQoYV9wb3MsMS4wKTt9XCIpfTtmdW5jdGlvbiBoaShlLHQpe2NvbnN0IGk9ZS5yZXBsYWNlKC9cXHMqXFwvXFwvW15cXG5dKlxcbi9nLFwiXFxuXCIpLnNwbGl0KFwiXFxuXCIpO2ZvcihsZXQgZSBvZiBpKWlmKGU9ZS50cmltKCksXCIjXCI9PT1lWzBdJiZlLmluY2x1ZGVzKFwiaWZcIikmJiFlLmluY2x1ZGVzKFwiZW5kaWZcIikpe2U9ZS5yZXBsYWNlKFwiI1wiLFwiXCIpLnJlcGxhY2UoL2lmZGVmfGlmbmRlZnxlbGlmfGlmL2csXCJcIikucmVwbGFjZSgvIXxkZWZpbmVkfFxcKHxcXCl8XFx8XFx8fCYmL2csXCJcIikucmVwbGFjZSgvXFxzKy9nLFwiIFwiKS50cmltKCk7Y29uc3QgaT1lLnNwbGl0KFwiIFwiKTtmb3IoY29uc3QgZSBvZiBpKXQuaW5jbHVkZXMoZSl8fHQucHVzaChlKTt9fWZ1bmN0aW9uIHVpKGUsdCl7Y29uc3QgaT0vI3ByYWdtYSBtYXBib3g6IChbXFx3XSspIChbXFx3XSspIChbXFx3XSspIChbXFx3XSspL2csbz10Lm1hdGNoKC9hdHRyaWJ1dGUgKGhpZ2hwIHxtZWRpdW1wIHxsb3dwICk/KFtcXHddKykgKFtcXHddKykvZykscj17fSxuPVsuLi5uaV07cmV0dXJuIGhpKGUsbiksaGkodCxuKSx7ZnJhZ21lbnRTb3VyY2U6ZT1lLnJlcGxhY2UoaSwoKGUsdCxpLG8sbik9PihyW25dPSEwLFwiZGVmaW5lXCI9PT10P2BcXG4jaWZuZGVmIEhBU19VTklGT1JNX3VfJHtufVxcbnZhcnlpbmcgJHtpfSAke299ICR7bn07XFxuI2Vsc2VcXG51bmlmb3JtICR7aX0gJHtvfSB1XyR7bn07XFxuI2VuZGlmXFxuYDpgXFxuI2lmZGVmIEhBU19VTklGT1JNX3VfJHtufVxcbiAgICAke2l9ICR7b30gJHtufSA9IHVfJHtufTtcXG4jZW5kaWZcXG5gKSkpLHZlcnRleFNvdXJjZTp0PXQucmVwbGFjZShpLCgoZSx0LGksbyxuKT0+e2NvbnN0IHM9XCJmbG9hdFwiPT09bz9cInZlYzJcIjpcInZlYzRcIixhPW4ubWF0Y2goL2NvbG9yLyk/XCJjb2xvclwiOnM7cmV0dXJuIHJbbl0/XCJkZWZpbmVcIj09PXQ/YFxcbiNpZm5kZWYgSEFTX1VOSUZPUk1fdV8ke259XFxudW5pZm9ybSBsb3dwIGZsb2F0IHVfJHtufV90O1xcbmF0dHJpYnV0ZSAke2l9ICR7c30gYV8ke259O1xcbnZhcnlpbmcgJHtpfSAke299ICR7bn07XFxuI2Vsc2VcXG51bmlmb3JtICR7aX0gJHtvfSB1XyR7bn07XFxuI2VuZGlmXFxuYDpcInZlYzRcIj09PWE/YFxcbiNpZm5kZWYgSEFTX1VOSUZPUk1fdV8ke259XFxuICAgICR7bn0gPSBhXyR7bn07XFxuI2Vsc2VcXG4gICAgJHtpfSAke299ICR7bn0gPSB1XyR7bn07XFxuI2VuZGlmXFxuYDpgXFxuI2lmbmRlZiBIQVNfVU5JRk9STV91XyR7bn1cXG4gICAgJHtufSA9IHVucGFja19taXhfJHthfShhXyR7bn0sIHVfJHtufV90KTtcXG4jZWxzZVxcbiAgICAke2l9ICR7b30gJHtufSA9IHVfJHtufTtcXG4jZW5kaWZcXG5gOlwiZGVmaW5lXCI9PT10P2BcXG4jaWZuZGVmIEhBU19VTklGT1JNX3VfJHtufVxcbnVuaWZvcm0gbG93cCBmbG9hdCB1XyR7bn1fdDtcXG5hdHRyaWJ1dGUgJHtpfSAke3N9IGFfJHtufTtcXG4jZWxzZVxcbnVuaWZvcm0gJHtpfSAke299IHVfJHtufTtcXG4jZW5kaWZcXG5gOlwidmVjNFwiPT09YT9gXFxuI2lmbmRlZiBIQVNfVU5JRk9STV91XyR7bn1cXG4gICAgJHtpfSAke299ICR7bn0gPSBhXyR7bn07XFxuI2Vsc2VcXG4gICAgJHtpfSAke299ICR7bn0gPSB1XyR7bn07XFxuI2VuZGlmXFxuYDpgXFxuI2lmbmRlZiBIQVNfVU5JRk9STV91XyR7bn1cXG4gICAgJHtpfSAke299ICR7bn0gPSB1bnBhY2tfbWl4XyR7YX0oYV8ke259LCB1XyR7bn1fdCk7XFxuI2Vsc2VcXG4gICAgJHtpfSAke299ICR7bn0gPSB1XyR7bn07XFxuI2VuZGlmXFxuYH0pKSxzdGF0aWNBdHRyaWJ1dGVzOm8sdXNlZERlZmluZXM6bn19Y2xhc3MgX2l7Y29uc3RydWN0b3IoKXt0aGlzLmJvdW5kUHJvZ3JhbT1udWxsLHRoaXMuYm91bmRMYXlvdXRWZXJ0ZXhCdWZmZXI9bnVsbCx0aGlzLmJvdW5kUGFpbnRWZXJ0ZXhCdWZmZXJzPVtdLHRoaXMuYm91bmRJbmRleEJ1ZmZlcj1udWxsLHRoaXMuYm91bmRWZXJ0ZXhPZmZzZXQ9bnVsbCx0aGlzLmJvdW5kRHluYW1pY1ZlcnRleEJ1ZmZlcnM9W10sdGhpcy52YW89bnVsbDt9YmluZChlLHQsaSxvLHIsbixzKXt0aGlzLmNvbnRleHQ9ZTtsZXQgYT10aGlzLmJvdW5kUGFpbnRWZXJ0ZXhCdWZmZXJzLmxlbmd0aCE9PW8ubGVuZ3RoO2ZvcihsZXQgZT0wOyFhJiZlPG8ubGVuZ3RoO2UrKyl0aGlzLmJvdW5kUGFpbnRWZXJ0ZXhCdWZmZXJzW2VdIT09b1tlXSYmKGE9ITApO2xldCBsPXRoaXMuYm91bmREeW5hbWljVmVydGV4QnVmZmVycy5sZW5ndGghPT1zLmxlbmd0aDtmb3IobGV0IGU9MDshbCYmZTxzLmxlbmd0aDtlKyspdGhpcy5ib3VuZER5bmFtaWNWZXJ0ZXhCdWZmZXJzW2VdIT09c1tlXSYmKGw9ITApO2lmKCFlLmV4dFZlcnRleEFycmF5T2JqZWN0fHwhdGhpcy52YW98fHRoaXMuYm91bmRQcm9ncmFtIT09dHx8dGhpcy5ib3VuZExheW91dFZlcnRleEJ1ZmZlciE9PWl8fGF8fGx8fHRoaXMuYm91bmRJbmRleEJ1ZmZlciE9PXJ8fHRoaXMuYm91bmRWZXJ0ZXhPZmZzZXQhPT1uKXRoaXMuZnJlc2hCaW5kKHQsaSxvLHIsbixzKTtlbHNlIHtlLmJpbmRWZXJ0ZXhBcnJheU9FUy5zZXQodGhpcy52YW8pO2Zvcihjb25zdCBlIG9mIHMpZSYmZS5iaW5kKCk7ciYmci5keW5hbWljRHJhdyYmci5iaW5kKCk7fX1mcmVzaEJpbmQoZSx0LGksbyxyLG4pe2xldCBzO2NvbnN0IGE9ZS5udW1BdHRyaWJ1dGVzLGw9dGhpcy5jb250ZXh0LGM9bC5nbDtpZihsLmV4dFZlcnRleEFycmF5T2JqZWN0KXRoaXMudmFvJiZ0aGlzLmRlc3Ryb3koKSx0aGlzLnZhbz1sLmV4dFZlcnRleEFycmF5T2JqZWN0LmNyZWF0ZVZlcnRleEFycmF5T0VTKCksbC5iaW5kVmVydGV4QXJyYXlPRVMuc2V0KHRoaXMudmFvKSxzPTAsdGhpcy5ib3VuZFByb2dyYW09ZSx0aGlzLmJvdW5kTGF5b3V0VmVydGV4QnVmZmVyPXQsdGhpcy5ib3VuZFBhaW50VmVydGV4QnVmZmVycz1pLHRoaXMuYm91bmRJbmRleEJ1ZmZlcj1vLHRoaXMuYm91bmRWZXJ0ZXhPZmZzZXQ9cix0aGlzLmJvdW5kRHluYW1pY1ZlcnRleEJ1ZmZlcnM9bjtlbHNlIHtzPWwuY3VycmVudE51bUF0dHJpYnV0ZXN8fDA7Zm9yKGxldCBlPWE7ZTxzO2UrKyljLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShlKTt9dC5lbmFibGVBdHRyaWJ1dGVzKGMsZSksdC5iaW5kKCksdC5zZXRWZXJ0ZXhBdHRyaWJQb2ludGVycyhjLGUscik7Zm9yKGNvbnN0IHQgb2YgaSl0LmVuYWJsZUF0dHJpYnV0ZXMoYyxlKSx0LmJpbmQoKSx0LnNldFZlcnRleEF0dHJpYlBvaW50ZXJzKGMsZSxyKTtmb3IoY29uc3QgdCBvZiBuKXQmJih0LmVuYWJsZUF0dHJpYnV0ZXMoYyxlKSx0LmJpbmQoKSx0LnNldFZlcnRleEF0dHJpYlBvaW50ZXJzKGMsZSxyKSk7byYmby5iaW5kKCksbC5jdXJyZW50TnVtQXR0cmlidXRlcz1hO31kZXN0cm95KCl7dGhpcy52YW8mJih0aGlzLmNvbnRleHQuZXh0VmVydGV4QXJyYXlPYmplY3QuZGVsZXRlVmVydGV4QXJyYXlPRVModGhpcy52YW8pLHRoaXMudmFvPW51bGwpO319ZnVuY3Rpb24gZGkodCxpKXtjb25zdCBvPU1hdGgucG93KDIsaS5jYW5vbmljYWwueikscj1pLmNhbm9uaWNhbC55O3JldHVybiBbbmV3IGUuTWVyY2F0b3JDb29yZGluYXRlKDAsci9vKS50b0xuZ0xhdCgpLmxhdCxuZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUoMCwocisxKS9vKS50b0xuZ0xhdCgpLmxhdF19ZnVuY3Rpb24gcGkodCxpLG8scixuLHMsYSl7Y29uc3QgbD10LmNvbnRleHQsYz1sLmdsLGg9by5mYm87aWYoIWgpcmV0dXJuO3QucHJlcGFyZURyYXdUaWxlKCk7Y29uc3QgdT10LnVzZVByb2dyYW0oXCJoaWxsc2hhZGVcIik7bC5hY3RpdmVUZXh0dXJlLnNldChjLlRFWFRVUkUwKSxjLmJpbmRUZXh0dXJlKGMuVEVYVFVSRV8yRCxoLmNvbG9yQXR0YWNobWVudC5nZXQoKSk7Y29uc3QgXz0oKGUsdCxpLG8pPT57Y29uc3Qgcj1pLnBhaW50LmdldChcImhpbGxzaGFkZS1zaGFkb3ctY29sb3JcIiksbj1pLnBhaW50LmdldChcImhpbGxzaGFkZS1oaWdobGlnaHQtY29sb3JcIikscz1pLnBhaW50LmdldChcImhpbGxzaGFkZS1hY2NlbnQtY29sb3JcIik7bGV0IGE9aS5wYWludC5nZXQoXCJoaWxsc2hhZGUtaWxsdW1pbmF0aW9uLWRpcmVjdGlvblwiKSooTWF0aC5QSS8xODApO1widmlld3BvcnRcIj09PWkucGFpbnQuZ2V0KFwiaGlsbHNoYWRlLWlsbHVtaW5hdGlvbi1hbmNob3JcIikmJihhLT1lLnRyYW5zZm9ybS5hbmdsZSk7Y29uc3QgbD0hZS5vcHRpb25zLm1vdmluZztyZXR1cm4ge3VfbWF0cml4Om98fGUudHJhbnNmb3JtLmNhbGN1bGF0ZVByb2pNYXRyaXgodC50aWxlSUQudG9VbndyYXBwZWQoKSxsKSx1X2ltYWdlOjAsdV9sYXRyYW5nZTpkaSgwLHQudGlsZUlEKSx1X2xpZ2h0OltpLnBhaW50LmdldChcImhpbGxzaGFkZS1leGFnZ2VyYXRpb25cIiksYV0sdV9zaGFkb3c6cix1X2hpZ2hsaWdodDpuLHVfYWNjZW50OnN9fSkodCxvLHIsdC50ZXJyYWluP2kucHJvak1hdHJpeDpudWxsKTt0LnByZXBhcmVEcmF3UHJvZ3JhbShsLHUsaS50b1Vud3JhcHBlZCgpKTtjb25zdHt0aWxlQm91bmRzQnVmZmVyOmQsdGlsZUJvdW5kc0luZGV4QnVmZmVyOnAsdGlsZUJvdW5kc1NlZ21lbnRzOm19PXQuZ2V0VGlsZUJvdW5kc0J1ZmZlcnMobyk7dS5kcmF3KGwsYy5UUklBTkdMRVMsbixzLGEsZS5DdWxsRmFjZU1vZGUuZGlzYWJsZWQsXyxyLmlkLGQscCxtKTt9ZnVuY3Rpb24gbWkodCxpLG8pe2lmKCFpLm5lZWRzREVNVGV4dHVyZVVwbG9hZClyZXR1cm47Y29uc3Qgcj10LmNvbnRleHQsbj1yLmdsO3IucGl4ZWxTdG9yZVVucGFja1ByZW11bHRpcGx5QWxwaGEuc2V0KCExKSxpLmRlbVRleHR1cmU9aS5kZW1UZXh0dXJlfHx0LmdldFRpbGVUZXh0dXJlKG8uc3RyaWRlKTtjb25zdCBzPW8uZ2V0UGl4ZWxzKCk7aS5kZW1UZXh0dXJlP2kuZGVtVGV4dHVyZS51cGRhdGUocyx7cHJlbXVsdGlwbHk6ITF9KTppLmRlbVRleHR1cmU9bmV3IGUuVGV4dHVyZShyLHMsbi5SR0JBLHtwcmVtdWx0aXBseTohMX0pLGkubmVlZHNERU1UZXh0dXJlVXBsb2FkPSExO31mdW5jdGlvbiBmaSh0LGksbyxyLG4scyl7Y29uc3QgYT10LmNvbnRleHQsbD1hLmdsO2lmKCFpLmRlbSlyZXR1cm47Y29uc3QgYz1pLmRlbTtpZihhLmFjdGl2ZVRleHR1cmUuc2V0KGwuVEVYVFVSRTEpLG1pKHQsaSxjKSwhaS5kZW1UZXh0dXJlKXJldHVybjtpLmRlbVRleHR1cmUuYmluZChsLk5FQVJFU1QsbC5DTEFNUF9UT19FREdFKTtjb25zdCBoPWMuZGltO2EuYWN0aXZlVGV4dHVyZS5zZXQobC5URVhUVVJFMCk7bGV0IHU9aS5mYm87aWYoIXUpe2NvbnN0IHQ9bmV3IGUuVGV4dHVyZShhLHt3aWR0aDpoLGhlaWdodDpoLGRhdGE6bnVsbH0sbC5SR0JBKTt0LmJpbmQobC5MSU5FQVIsbC5DTEFNUF9UT19FREdFKSx1PWkuZmJvPWEuY3JlYXRlRnJhbWVidWZmZXIoaCxoLCEwKSx1LmNvbG9yQXR0YWNobWVudC5zZXQodC50ZXh0dXJlKTt9YS5iaW5kRnJhbWVidWZmZXIuc2V0KHUuZnJhbWVidWZmZXIpLGEudmlld3BvcnQuc2V0KFswLDAsaCxoXSk7Y29uc3R7dGlsZUJvdW5kc0J1ZmZlcjpfLHRpbGVCb3VuZHNJbmRleEJ1ZmZlcjpkLHRpbGVCb3VuZHNTZWdtZW50czpwfT10LmdldE1lcmNhdG9yVGlsZUJvdW5kc0J1ZmZlcnMoKTt0LnVzZVByb2dyYW0oXCJoaWxsc2hhZGVQcmVwYXJlXCIpLmRyYXcoYSxsLlRSSUFOR0xFUyxyLG4scyxlLkN1bGxGYWNlTW9kZS5kaXNhYmxlZCwoKHQsaSk9Pntjb25zdCBvPWkuc3RyaWRlLHI9ZS5jcmVhdGUoKTtyZXR1cm4gZS5vcnRobyhyLDAsZS5FWFRFTlQsLWUuRVhURU5ULDAsMCwxKSxlLnRyYW5zbGF0ZShyLHIsWzAsLWUuRVhURU5ULDBdKSx7dV9tYXRyaXg6cix1X2ltYWdlOjEsdV9kaW1lbnNpb246W28sb10sdV96b29tOnQub3ZlcnNjYWxlZFosdV91bnBhY2s6aS51bnBhY2tWZWN0b3J9fSkoaS50aWxlSUQsYyksby5pZCxfLGQscCksaS5uZWVkc0hpbGxzaGFkZVByZXBhcmU9ITE7fWNvbnN0IGdpPXQ9Pih7dV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfaW1hZ2UwOm5ldyBlLlVuaWZvcm0xaSh0KSx1X3NraXJ0X2hlaWdodDpuZXcgZS5Vbmlmb3JtMWYodCl9KSx2aT0oZSx0KT0+KHt1X21hdHJpeDplLHVfaW1hZ2UwOjAsdV9za2lydF9oZWlnaHQ6dH0pLHhpPShlLHQsaSxvLHIsbixzLGEsbCxjLGgsdSxfLGQscCk9Pih7dV9wcm9qX21hdHJpeDpGbG9hdDMyQXJyYXkuZnJvbShlKSx1X2dsb2JlX21hdHJpeDp0LHVfbm9ybWFsaXplX21hdHJpeDpGbG9hdDMyQXJyYXkuZnJvbShvKSx1X21lcmNfbWF0cml4OmksdV96b29tX3RyYW5zaXRpb246cix1X21lcmNfY2VudGVyOm4sdV9pbWFnZTA6MCx1X2ZydXN0dW1fdGw6cyx1X2ZydXN0dW1fdHI6YSx1X2ZydXN0dW1fYnI6bCx1X2ZydXN0dW1fYmw6Yyx1X2dsb2JlX3BvczpoLHVfZ2xvYmVfcmFkaXVzOnUsdV92aWV3cG9ydDpfLHVfZ3JpZF9tYXRyaXg6cD9GbG9hdDMyQXJyYXkuZnJvbShwKTpuZXcgRmxvYXQzMkFycmF5KDkpLHVfc2tpcnRfaGVpZ2h0OmR9KTtmdW5jdGlvbiB5aShlLHQpe3JldHVybiBudWxsIT1lJiZudWxsIT10JiYhKCFlLmhhc0RhdGEoKXx8IXQuaGFzRGF0YSgpKSYmbnVsbCE9ZS5kZW1UZXh0dXJlJiZudWxsIT10LmRlbVRleHR1cmUmJmUudGlsZUlELmtleSE9PXQudGlsZUlELmtleX1jb25zdCBiaT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm9wZXJhdGlvbnM9e307fW5ld01vcnBoaW5nKGUsdCxpLG8scil7aWYoZSBpbiB0aGlzLm9wZXJhdGlvbnMpe2NvbnN0IHQ9dGhpcy5vcGVyYXRpb25zW2VdO3QudG8udGlsZUlELmtleSE9PWkudGlsZUlELmtleSYmKHQucXVldWVkPWkpO31lbHNlIHRoaXMub3BlcmF0aW9uc1tlXT17c3RhcnRUaW1lOm8scGhhc2U6MCxkdXJhdGlvbjpyLGZyb206dCx0bzppLHF1ZXVlZDpudWxsfTt9Z2V0TW9ycGhWYWx1ZXNGb3JQcm94eShlKXtpZighKGUgaW4gdGhpcy5vcGVyYXRpb25zKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMub3BlcmF0aW9uc1tlXTtyZXR1cm4ge2Zyb206dC5mcm9tLHRvOnQudG8scGhhc2U6dC5waGFzZX19dXBkYXRlKGUpe2Zvcihjb25zdCB0IGluIHRoaXMub3BlcmF0aW9ucyl7Y29uc3QgaT10aGlzLm9wZXJhdGlvbnNbdF07Zm9yKGkucGhhc2U9KGUtaS5zdGFydFRpbWUpL2kuZHVyYXRpb247aS5waGFzZT49MXx8IXRoaXMuX3ZhbGlkT3AoaSk7KWlmKCF0aGlzLl9uZXh0T3AoaSxlKSl7ZGVsZXRlIHRoaXMub3BlcmF0aW9uc1t0XTticmVha319fV9uZXh0T3AoZSx0KXtyZXR1cm4gISFlLnF1ZXVlZCYmKGUuZnJvbT1lLnRvLGUudG89ZS5xdWV1ZWQsZS5xdWV1ZWQ9bnVsbCxlLnBoYXNlPTAsZS5zdGFydFRpbWU9dCwhMCl9X3ZhbGlkT3AoZSl7cmV0dXJuIGUuZnJvbS5oYXNEYXRhKCkmJmUudG8uaGFzRGF0YSgpfX0sd2k9ezA6bnVsbCwxOlwiVEVSUkFJTl9WRVJURVhfTU9SUEhJTkdcIiwyOlwiVEVSUkFJTl9XSVJFRlJBTUVcIn07ZnVuY3Rpb24gVGkoZSl7cmV0dXJuIDYqTWF0aC5wb3coMS41LDIyLWUpfWZ1bmN0aW9uIEVpKGUsdCl7Y29uc3QgaT0xPDxlLno7cmV0dXJuICF0JiYoMD09PWUueHx8ZS54PT09aS0xKXx8MD09PWUueXx8ZS55PT09aS0xfWNvbnN0IENpPWU9Pih7dV9tYXRyaXg6ZX0pO2Z1bmN0aW9uIE1pKHQsaSxvLHIsbil7aWYobj4wKXtjb25zdCBzPWUuZXhwb3J0ZWQubm93KCksYT0ocy10LnRpbWVBZGRlZCkvbixsPWk/KHMtaS50aW1lQWRkZWQpL246LTEsYz1vLmdldFNvdXJjZSgpLGg9ci5jb3ZlcmluZ1pvb21MZXZlbCh7dGlsZVNpemU6Yy50aWxlU2l6ZSxyb3VuZFpvb206Yy5yb3VuZFpvb219KSx1PSFpfHxNYXRoLmFicyhpLnRpbGVJRC5vdmVyc2NhbGVkWi1oKT5NYXRoLmFicyh0LnRpbGVJRC5vdmVyc2NhbGVkWi1oKSxfPXUmJnQucmVmcmVzaGVkVXBvbkV4cGlyYXRpb24/MTplLmNsYW1wKHU/YToxLWwsMCwxKTtyZXR1cm4gdC5yZWZyZXNoZWRVcG9uRXhwaXJhdGlvbiYmYT49MSYmKHQucmVmcmVzaGVkVXBvbkV4cGlyYXRpb249ITEpLGk/e29wYWNpdHk6MSxtaXg6MS1ffTp7b3BhY2l0eTpfLG1peDowfX1yZXR1cm4ge29wYWNpdHk6MSxtaXg6MH19Y2xhc3MgSWkgZXh0ZW5kcyBlLlNvdXJjZUNhY2hle2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9e3R5cGU6XCJyYXN0ZXItZGVtXCIsbWF4em9vbTplLnRyYW5zZm9ybS5tYXhab29tfSxpPW5ldyBTKFVlKCksbnVsbCksbz1EZShcIm1vY2stZGVtXCIsdCxpLGUuc3R5bGUpO3N1cGVyKFwibW9jay1kZW1cIixvLCExKSxvLnNldEV2ZW50ZWRQYXJlbnQodGhpcyksdGhpcy5fc291cmNlTG9hZGVkPSEwO31fbG9hZFRpbGUoZSx0KXtlLnN0YXRlPVwibG9hZGVkXCIsdChudWxsKTt9fWNsYXNzIFBpIGV4dGVuZHMgZS5Tb3VyY2VDYWNoZXtjb25zdHJ1Y3RvcihlKXtjb25zdCB0PURlKFwicHJveHlcIix7dHlwZTpcImdlb2pzb25cIixtYXh6b29tOmUudHJhbnNmb3JtLm1heFpvb219LG5ldyBTKFVlKCksbnVsbCksZS5zdHlsZSk7c3VwZXIoXCJwcm94eVwiLHQsITEpLHQuc2V0RXZlbnRlZFBhcmVudCh0aGlzKSx0aGlzLm1hcD10aGlzLmdldFNvdXJjZSgpLm1hcD1lLHRoaXMudXNlZD10aGlzLl9zb3VyY2VMb2FkZWQ9ITAsdGhpcy5yZW5kZXJDYWNoZT1bXSx0aGlzLnJlbmRlckNhY2hlUG9vbD1bXSx0aGlzLnByb3h5Q2FjaGVkRkJPPXt9O311cGRhdGUodCxpLG8pe2lmKHQuZnJlZXplVGlsZUNvdmVyYWdlKXJldHVybjt0aGlzLnRyYW5zZm9ybT10O2NvbnN0IHI9dC5jb3ZlcmluZ1RpbGVzKHt0aWxlU2l6ZTp0aGlzLl9zb3VyY2UudGlsZVNpemUsbWluem9vbTp0aGlzLl9zb3VyY2UubWluem9vbSxtYXh6b29tOnRoaXMuX3NvdXJjZS5tYXh6b29tLHJvdW5kWm9vbTp0aGlzLl9zb3VyY2Uucm91bmRab29tLHJlcGFyc2VPdmVyc2NhbGVkOnRoaXMuX3NvdXJjZS5yZXBhcnNlT3ZlcnNjYWxlZH0pLnJlZHVjZSgoKGksbyk9PntpZihpW28ua2V5XT1cIlwiLCF0aGlzLl90aWxlc1tvLmtleV0pe2NvbnN0IGk9bmV3IGUuVGlsZShvLHRoaXMuX3NvdXJjZS50aWxlU2l6ZSpvLm92ZXJzY2FsZUZhY3RvcigpLHQudGlsZVpvb20pO2kuc3RhdGU9XCJsb2FkZWRcIix0aGlzLl90aWxlc1tvLmtleV09aTt9cmV0dXJuIGl9KSx7fSk7Zm9yKGNvbnN0IGUgaW4gdGhpcy5fdGlsZXMpZSBpbiByfHwodGhpcy5mcmVlRkJPKGUpLHRoaXMuX3RpbGVzW2VdLnVubG9hZFZlY3RvckRhdGEoKSxkZWxldGUgdGhpcy5fdGlsZXNbZV0pO31mcmVlRkJPKGUpe2NvbnN0IHQ9dGhpcy5wcm94eUNhY2hlZEZCT1tlXTtpZih2b2lkIDAhPT10KXtjb25zdCBpPU9iamVjdC52YWx1ZXModCk7dGhpcy5yZW5kZXJDYWNoZVBvb2wucHVzaCguLi5pKSxkZWxldGUgdGhpcy5wcm94eUNhY2hlZEZCT1tlXTt9fWRlYWxsb2NSZW5kZXJDYWNoZSgpe3RoaXMucmVuZGVyQ2FjaGUuZm9yRWFjaCgoZT0+ZS5mYi5kZXN0cm95KCkpKSx0aGlzLnJlbmRlckNhY2hlPVtdLHRoaXMucmVuZGVyQ2FjaGVQb29sPVtdLHRoaXMucHJveHlDYWNoZWRGQk89e307fX1jbGFzcyBTaSBleHRlbmRzIGUuT3ZlcnNjYWxlZFRpbGVJRHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoZS5vdmVyc2NhbGVkWixlLndyYXAsZS5jYW5vbmljYWwueixlLmNhbm9uaWNhbC54LGUuY2Fub25pY2FsLnkpLHRoaXMucHJveHlUaWxlS2V5PXQsdGhpcy5wcm9qTWF0cml4PWk7fX1jbGFzcyBEaSBleHRlbmRzIGUuRWxldmF0aW9ue2NvbnN0cnVjdG9yKHQsaSl7c3VwZXIoKSx0aGlzLnBhaW50ZXI9dCx0aGlzLnRlcnJhaW5UaWxlRm9yVGlsZT17fSx0aGlzLnByZXZUZXJyYWluVGlsZUZvclRpbGU9e307Y29uc3RbbyxyLG5dPWZ1bmN0aW9uKHQpe2NvbnN0IGk9bmV3IGUuU3RydWN0QXJyYXlMYXlvdXQyaTQsbz1uZXcgZS5TdHJ1Y3RBcnJheUxheW91dDN1aTYscj0xMzE7aS5yZXNlcnZlKDE3MTYxKSxvLnJlc2VydmUoMzM4MDApO2NvbnN0IG49ZS5FWFRFTlQvMTI4LHM9ZS5FWFRFTlQrbi8yLGE9cytuO2ZvcihsZXQgdD0tbjt0PGE7dCs9bilmb3IobGV0IG89LW47bzxhO28rPW4pe2NvbnN0IHI9bzwwfHxvPnN8fHQ8MHx8dD5zPzI0NTc1OjAsbj1lLmNsYW1wKE1hdGgucm91bmQobyksMCxlLkVYVEVOVCksYT1lLmNsYW1wKE1hdGgucm91bmQodCksMCxlLkVYVEVOVCk7aS5lbXBsYWNlQmFjayhuK3IsYSk7fWNvbnN0IGw9KGUsdCk9Pntjb25zdCBpPXQqcitlO28uZW1wbGFjZUJhY2soaSsxLGksaStyKSxvLmVtcGxhY2VCYWNrKGkrcixpK3IrMSxpKzEpO307Zm9yKGxldCBlPTE7ZTwxMjk7ZSsrKWZvcihsZXQgdD0xO3Q8MTI5O3QrKylsKHQsZSk7cmV0dXJuIFswLDEyOV0uZm9yRWFjaCgoZT0+e2ZvcihsZXQgdD0wO3Q8MTMwO3QrKylsKHQsZSksbChlLHQpO30pKSxbaSxvLDMyNzY4XX0oKSxzPXQuY29udGV4dDt0aGlzLmdyaWRCdWZmZXI9cy5jcmVhdGVWZXJ0ZXhCdWZmZXIobyxlLnBvc0F0dHJpYnV0ZXMubWVtYmVycyksdGhpcy5ncmlkSW5kZXhCdWZmZXI9cy5jcmVhdGVJbmRleEJ1ZmZlcihyKSx0aGlzLmdyaWRTZWdtZW50cz1lLlNlZ21lbnRWZWN0b3Iuc2ltcGxlU2VnbWVudCgwLDAsby5sZW5ndGgsci5sZW5ndGgpLHRoaXMuZ3JpZE5vU2tpcnRTZWdtZW50cz1lLlNlZ21lbnRWZWN0b3Iuc2ltcGxlU2VnbWVudCgwLDAsby5sZW5ndGgsbiksdGhpcy5wcm94eUNvb3Jkcz1bXSx0aGlzLnByb3hpZWRDb29yZHM9e30sdGhpcy5fdmlzaWJsZURlbVRpbGVzPVtdLHRoaXMuX2RyYXBlZFJlbmRlckJhdGNoZXM9W10sdGhpcy5fc291cmNlVGlsZXNPdmVybGFwPXt9LHRoaXMucHJveHlTb3VyY2VDYWNoZT1uZXcgUGkoaS5tYXApLHRoaXMub3J0aG9NYXRyaXg9ZS5jcmVhdGUoKSxlLm9ydGhvKHRoaXMub3J0aG9NYXRyaXgsXCJnbG9iZVwiPT09dGhpcy5wYWludGVyLnRyYW5zZm9ybS5wcm9qZWN0aW9uLm5hbWU/LjAxNTowLGUuRVhURU5ULDAsZS5FWFRFTlQsMCwxKTtjb25zdCBhPXMuZ2w7dGhpcy5fb3ZlcmxhcFN0ZW5jaWxNb2RlPW5ldyBlLlN0ZW5jaWxNb2RlKHtmdW5jOmEuR0VRVUFMLG1hc2s6MjU1fSwwLDI1NSxhLktFRVAsYS5LRUVQLGEuUkVQTEFDRSksdGhpcy5fcHJldmlvdXNab29tPXQudHJhbnNmb3JtLnpvb20sdGhpcy5wb29sPVtdLHRoaXMuX2ZpbmRDb3ZlcmluZ1RpbGVDYWNoZT17fSx0aGlzLl90aWxlc0RpcnR5PXt9LHRoaXMuc3R5bGU9aSx0aGlzLl91c2VWZXJ0ZXhNb3JwaGluZz0hMCx0aGlzLl9leGFnZ2VyYXRpb249MSx0aGlzLl9tb2NrU291cmNlQ2FjaGU9bmV3IElpKGkubWFwKTt9c2V0IHN0eWxlKGUpe2Uub24oXCJkYXRhXCIsdGhpcy5fb25TdHlsZURhdGFFdmVudC5iaW5kKHRoaXMpKSxlLm9uKFwibmV3b3JkZXJcIix0aGlzLl9jaGVja1JlbmRlckNhY2hlRWZmaWNpZW5jeS5iaW5kKHRoaXMpKSx0aGlzLl9zdHlsZT1lLHRoaXMuX2NoZWNrUmVuZGVyQ2FjaGVFZmZpY2llbmN5KCksdGhpcy5fc3R5bGUubWFwLm9uKFwibW92ZWVuZFwiLCgoKT0+e3RoaXMuX2NsZWFyTGluZUxheWVyc0Zyb21SZW5kZXJDYWNoZSgpO30pKTt9dXBkYXRlKHQsaSxvKXtpZih0JiZ0LnRlcnJhaW4pe3RoaXMuX3N0eWxlIT09dCYmKHRoaXMuc3R5bGU9dCksdGhpcy5lbmFibGVkPSEwO2NvbnN0IHI9dC50ZXJyYWluLnByb3BlcnRpZXM7dGhpcy5zb3VyY2VDYWNoZT0wPT09dC50ZXJyYWluLmRyYXBlUmVuZGVyTW9kZT90aGlzLl9tb2NrU291cmNlQ2FjaGU6dC5fZ2V0U291cmNlQ2FjaGUoci5nZXQoXCJzb3VyY2VcIikpLHRoaXMuX2V4YWdnZXJhdGlvbj1yLmdldChcImV4YWdnZXJhdGlvblwiKTtjb25zdCBuPSgpPT57dGhpcy5zb3VyY2VDYWNoZS51c2VkJiZlLndhcm5PbmNlKGBSYXN0ZXIgREVNIHNvdXJjZSAnJHt0aGlzLnNvdXJjZUNhY2hlLmlkfScgaXMgdXNlZCBib3RoIGZvciB0ZXJyYWluIGFuZCBhcyBsYXllciBzb3VyY2UuXFxuVGhpcyBsZWFkcyB0byBsb3dlciByZXNvbHV0aW9uIG9mIGhpbGxzaGFkZS4gRm9yIGZ1bGwgaGlsbHNoYWRlIHJlc29sdXRpb24gYnV0IGhpZ2hlciBtZW1vcnkgY29uc3VtcHRpb24sIGRlZmluZSBhbm90aGVyIHJhc3RlciBERU0gc291cmNlLmApO2NvbnN0IHQ9dGhpcy5nZXRTY2FsZWREZW1UaWxlU2l6ZSgpO3RoaXMuc291cmNlQ2FjaGUudXBkYXRlKGksdCwhMCksdGhpcy5yZXNldFRpbGVMb29rdXBDYWNoZSh0aGlzLnNvdXJjZUNhY2hlLmlkKTt9O3RoaXMuc291cmNlQ2FjaGUudXNlZEZvclRlcnJhaW58fCh0aGlzLnJlc2V0VGlsZUxvb2t1cENhY2hlKHRoaXMuc291cmNlQ2FjaGUuaWQpLHRoaXMuc291cmNlQ2FjaGUudXNlZEZvclRlcnJhaW49ITAsbigpLHRoaXMuX2luaXRpYWxpemluZz0hMCksbigpLGkudXBkYXRlRWxldmF0aW9uKCEwLG8pLHRoaXMucmVzZXRUaWxlTG9va3VwQ2FjaGUodGhpcy5wcm94eVNvdXJjZUNhY2hlLmlkKSx0aGlzLnByb3h5U291cmNlQ2FjaGUudXBkYXRlKGkpLHRoaXMuX2VtcHR5REVNVGV4dHVyZURpcnR5PSEwO31lbHNlIHRoaXMuX2Rpc2FibGUoKTt9cmVzZXRUaWxlTG9va3VwQ2FjaGUoZSl7dGhpcy5fZmluZENvdmVyaW5nVGlsZUNhY2hlW2VdPXt9O31nZXRTY2FsZWREZW1UaWxlU2l6ZSgpe3JldHVybiB0aGlzLnNvdXJjZUNhY2hlLmdldFNvdXJjZSgpLnRpbGVTaXplLzEyOCp0aGlzLnByb3h5U291cmNlQ2FjaGUuZ2V0U291cmNlKCkudGlsZVNpemV9X2NoZWNrUmVuZGVyQ2FjaGVFZmZpY2llbmN5KCl7Y29uc3QgdD10aGlzLnJlbmRlckNhY2hlRWZmaWNpZW5jeSh0aGlzLl9zdHlsZSk7dGhpcy5fc3R5bGUubWFwLl9vcHRpbWl6ZUZvclRlcnJhaW58fDEwMCE9PXQuZWZmaWNpZW5jeSYmZS53YXJuT25jZShgVGVycmFpbiByZW5kZXIgY2FjaGUgZWZmaWNpZW5jeSBpcyBub3Qgb3B0aW1hbCAoJHt0LmVmZmljaWVuY3l9JSkgYW5kIHBlcmZvcm1hbmNlXFxuICAgICAgICAgICAgICAgIG1heSBiZSBhZmZlY3RlZCBuZWdhdGl2ZWx5LCBjb25zaWRlciBwbGFjaW5nIGFsbCBiYWNrZ3JvdW5kLCBmaWxsIGFuZCBsaW5lIGxheWVycyBiZWZvcmUgbGF5ZXJcXG4gICAgICAgICAgICAgICAgd2l0aCBpZCAnJHt0LmZpcnN0VW5kcmFwZWRMYXllcn0nIG9yIGNyZWF0ZSBhIG1hcCB1c2luZyBvcHRpbWl6ZUZvclRlcnJhaW46IHRydWUgb3B0aW9uLmApO31fb25TdHlsZURhdGFFdmVudChlKXtlLmNvb3JkJiZcInNvdXJjZVwiPT09ZS5kYXRhVHlwZT90aGlzLl9jbGVhclJlbmRlckNhY2hlRm9yVGlsZShlLnNvdXJjZUNhY2hlSWQsZS5jb29yZCk6XCJzdHlsZVwiPT09ZS5kYXRhVHlwZSYmKHRoaXMuX2ludmFsaWRhdGVSZW5kZXJDYWNoZT0hMCk7fV9kaXNhYmxlKCl7aWYodGhpcy5lbmFibGVkJiYodGhpcy5lbmFibGVkPSExLHRoaXMuX3NoYXJlZERlcHRoU3RlbmNpbD12b2lkIDAsdGhpcy5wcm94eVNvdXJjZUNhY2hlLmRlYWxsb2NSZW5kZXJDYWNoZSgpLHRoaXMuX3N0eWxlKSlmb3IoY29uc3QgZSBpbiB0aGlzLl9zdHlsZS5fc291cmNlQ2FjaGVzKXRoaXMuX3N0eWxlLl9zb3VyY2VDYWNoZXNbZV0udXNlZEZvclRlcnJhaW49ITE7fWRlc3Ryb3koKXt0aGlzLl9kaXNhYmxlKCksdGhpcy5fZW1wdHlERU1UZXh0dXJlJiZ0aGlzLl9lbXB0eURFTVRleHR1cmUuZGVzdHJveSgpLHRoaXMuX2VtcHR5RGVwdGhCdWZmZXJUZXh0dXJlJiZ0aGlzLl9lbXB0eURlcHRoQnVmZmVyVGV4dHVyZS5kZXN0cm95KCksdGhpcy5wb29sLmZvckVhY2goKGU9PmUuZmIuZGVzdHJveSgpKSksdGhpcy5wb29sPVtdLHRoaXMuX2RlcHRoRkJPJiYodGhpcy5fZGVwdGhGQk8uZGVzdHJveSgpLHRoaXMuX2RlcHRoRkJPPXZvaWQgMCx0aGlzLl9kZXB0aFRleHR1cmU9dm9pZCAwKTt9X3NvdXJjZSgpe3JldHVybiB0aGlzLmVuYWJsZWQ/dGhpcy5zb3VyY2VDYWNoZTpudWxsfWlzVXNpbmdNb2NrU291cmNlKCl7cmV0dXJuIHRoaXMuc291cmNlQ2FjaGU9PT10aGlzLl9tb2NrU291cmNlQ2FjaGV9ZXhhZ2dlcmF0aW9uKCl7cmV0dXJuIHRoaXMuX2V4YWdnZXJhdGlvbn1nZXQgdmlzaWJsZURlbVRpbGVzKCl7cmV0dXJuIHRoaXMuX3Zpc2libGVEZW1UaWxlc31nZXQgZHJhcGVCdWZmZXJTaXplKCl7Y29uc3QgZT0yKnRoaXMucHJveHlTb3VyY2VDYWNoZS5nZXRTb3VyY2UoKS50aWxlU2l6ZTtyZXR1cm4gW2UsZV19c2V0IHVzZVZlcnRleE1vcnBoaW5nKGUpe3RoaXMuX3VzZVZlcnRleE1vcnBoaW5nPWU7fXVwZGF0ZVRpbGVCaW5kaW5nKHQpe2lmKCF0aGlzLmVuYWJsZWQpcmV0dXJuO3RoaXMucHJldlRlcnJhaW5UaWxlRm9yVGlsZT10aGlzLnRlcnJhaW5UaWxlRm9yVGlsZTtjb25zdCBpPXRoaXMucHJveHlTb3VyY2VDYWNoZSxvPXRoaXMucGFpbnRlci50cmFuc2Zvcm07dGhpcy5faW5pdGlhbGl6aW5nJiYodGhpcy5faW5pdGlhbGl6aW5nPTA9PT1vLl9jZW50ZXJBbHRpdHVkZSYmLTE9PT10aGlzLmdldEF0UG9pbnRPclplcm8oZS5NZXJjYXRvckNvb3JkaW5hdGUuZnJvbUxuZ0xhdChvLmNlbnRlciksLTEpLHRoaXMuX2VtcHR5REVNVGV4dHVyZURpcnR5PSF0aGlzLl9pbml0aWFsaXppbmcpO2NvbnN0IHI9dGhpcy5wcm94eUNvb3Jkcz1pLmdldElkcygpLm1hcCgoZT0+e2NvbnN0IHQ9aS5nZXRUaWxlQnlJRChlKS50aWxlSUQ7cmV0dXJuIHQucHJvak1hdHJpeD1vLmNhbGN1bGF0ZVByb2pNYXRyaXgodC50b1Vud3JhcHBlZCgpKSx0fSkpOyFmdW5jdGlvbih0LGkpe2NvbnN0IG89aS50cmFuc2Zvcm0ucG9pbnRDb29yZGluYXRlKGkudHJhbnNmb3JtLmdldENhbWVyYVBvaW50KCkpLHI9bmV3IGUuUG9pbnQoby54LG8ueSk7dC5zb3J0KCgodCxpKT0+e2lmKGkub3ZlcnNjYWxlZFotdC5vdmVyc2NhbGVkWilyZXR1cm4gaS5vdmVyc2NhbGVkWi10Lm92ZXJzY2FsZWRaO2NvbnN0IG89bmV3IGUuUG9pbnQodC5jYW5vbmljYWwueCsoMTw8dC5jYW5vbmljYWwueikqdC53cmFwLHQuY2Fub25pY2FsLnkpLG49bmV3IGUuUG9pbnQoaS5jYW5vbmljYWwueCsoMTw8aS5jYW5vbmljYWwueikqaS53cmFwLGkuY2Fub25pY2FsLnkpLHM9ci5tdWx0KDE8PHQuY2Fub25pY2FsLnopO3JldHVybiBzLngtPS41LHMueS09LjUscy5kaXN0U3FyKG8pLXMuZGlzdFNxcihuKX0pKTt9KHIsdGhpcy5wYWludGVyKSx0aGlzLl9wcmV2aW91c1pvb209by56b29tO2NvbnN0IG49dGhpcy5wcm94eVRvU291cmNlfHx7fTt0aGlzLnByb3h5VG9Tb3VyY2U9e30sci5mb3JFYWNoKChlPT57dGhpcy5wcm94eVRvU291cmNlW2Uua2V5XT17fTt9KSksdGhpcy50ZXJyYWluVGlsZUZvclRpbGU9e307Y29uc3Qgcz10aGlzLl9zdHlsZS5fc291cmNlQ2FjaGVzO2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IGk9c1tlXTtpZighaS51c2VkKWNvbnRpbnVlO2lmKGkhPT10aGlzLnNvdXJjZUNhY2hlJiZ0aGlzLnJlc2V0VGlsZUxvb2t1cENhY2hlKGkuaWQpLHRoaXMuX3NldHVwUHJveGllZENvb3Jkc0Zvck9ydGhvKGksdFtlXSxuKSxpLnVzZWRGb3JUZXJyYWluKWNvbnRpbnVlO2NvbnN0IG89dFtlXTtpLmdldFNvdXJjZSgpLnJlcGFyc2VPdmVyc2NhbGVkJiZ0aGlzLl9hc3NpZ25UZXJyYWluVGlsZXMobyk7fXRoaXMucHJveGllZENvb3Jkc1tpLmlkXT1yLm1hcCgoZT0+bmV3IFNpKGUsZS5rZXksdGhpcy5vcnRob01hdHJpeCkpKSx0aGlzLl9hc3NpZ25UZXJyYWluVGlsZXMociksdGhpcy5fcHJlcGFyZURFTVRleHR1cmVzKCksdGhpcy5fc2V0dXBEcmFwZWRSZW5kZXJCYXRjaGVzKCksdGhpcy5faW5pdEZCT1Bvb2woKSx0aGlzLl9zZXR1cFJlbmRlckNhY2hlKG4pLHRoaXMucmVuZGVyaW5nVG9UZXh0dXJlPSExLHRoaXMuX3VwZGF0ZVRpbWVzdGFtcD1lLmV4cG9ydGVkLm5vdygpO2NvbnN0IGE9e307dGhpcy5fdmlzaWJsZURlbVRpbGVzPVtdO2Zvcihjb25zdCBlIG9mIHRoaXMucHJveHlDb29yZHMpe2NvbnN0IHQ9dGhpcy50ZXJyYWluVGlsZUZvclRpbGVbZS5rZXldO2lmKCF0KWNvbnRpbnVlO2NvbnN0IGk9dC50aWxlSUQua2V5O2kgaW4gYXx8KHRoaXMuX3Zpc2libGVEZW1UaWxlcy5wdXNoKHQpLGFbaV09aSk7fX1fYXNzaWduVGVycmFpblRpbGVzKGUpe3RoaXMuX2luaXRpYWxpemluZ3x8ZS5mb3JFYWNoKChlPT57aWYodGhpcy50ZXJyYWluVGlsZUZvclRpbGVbZS5rZXldKXJldHVybjtjb25zdCB0PXRoaXMuX2ZpbmRUaWxlQ292ZXJpbmdUaWxlSUQoZSx0aGlzLnNvdXJjZUNhY2hlKTt0JiYodGhpcy50ZXJyYWluVGlsZUZvclRpbGVbZS5rZXldPXQpO30pKTt9X3ByZXBhcmVERU1UZXh0dXJlcygpe2NvbnN0IGU9dGhpcy5wYWludGVyLmNvbnRleHQsdD1lLmdsO2Zvcihjb25zdCBpIGluIHRoaXMudGVycmFpblRpbGVGb3JUaWxlKXtjb25zdCBvPXRoaXMudGVycmFpblRpbGVGb3JUaWxlW2ldLHI9by5kZW07IXJ8fG8uZGVtVGV4dHVyZSYmIW8ubmVlZHNERU1UZXh0dXJlVXBsb2FkfHwoZS5hY3RpdmVUZXh0dXJlLnNldCh0LlRFWFRVUkUxKSxtaSh0aGlzLnBhaW50ZXIsbyxyKSk7fX1fcHJlcGFyZURlbVRpbGVVbmlmb3JtcyhlLHQsaSxvKXtpZighdHx8bnVsbD09dC5kZW1UZXh0dXJlKXJldHVybiAhMTtjb25zdCByPWUudGlsZUlELmNhbm9uaWNhbCxuPU1hdGgucG93KDIsdC50aWxlSUQuY2Fub25pY2FsLnotci56KSxzPW98fFwiXCI7cmV0dXJuIGlbYHVfZGVtX3RsJHtzfWBdPVtyLngqbiUxLHIueSpuJTFdLGlbYHVfZGVtX3NjYWxlJHtzfWBdPW4sITB9Z2V0IGVtcHR5REVNVGV4dHVyZSgpe3JldHVybiAhdGhpcy5fZW1wdHlERU1UZXh0dXJlRGlydHkmJnRoaXMuX2VtcHR5REVNVGV4dHVyZT90aGlzLl9lbXB0eURFTVRleHR1cmU6dGhpcy5fdXBkYXRlRW1wdHlERU1UZXh0dXJlKCl9Z2V0IGVtcHR5RGVwdGhCdWZmZXJUZXh0dXJlKCl7Y29uc3QgdD10aGlzLnBhaW50ZXIuY29udGV4dCxpPXQuZ2w7aWYoIXRoaXMuX2VtcHR5RGVwdGhCdWZmZXJUZXh0dXJlKXtjb25zdCBvPW5ldyBlLlJHQkFJbWFnZSh7d2lkdGg6MSxoZWlnaHQ6MX0sVWludDhBcnJheS5vZigyNTUsMjU1LDI1NSwyNTUpKTt0aGlzLl9lbXB0eURlcHRoQnVmZmVyVGV4dHVyZT1uZXcgZS5UZXh0dXJlKHQsbyxpLlJHQkEse3ByZW11bHRpcGx5OiExfSk7fXJldHVybiB0aGlzLl9lbXB0eURlcHRoQnVmZmVyVGV4dHVyZX1fZ2V0TG9hZGVkQXJlYU1pbmltdW0oKXtsZXQgZT0wO2NvbnN0IHQ9dGhpcy5fdmlzaWJsZURlbVRpbGVzLnJlZHVjZSgoKHQsaSk9PntpZighaS5kZW0pcmV0dXJuIHQ7Y29uc3Qgbz1pLmRlbS50cmVlLm1pbmltdW1zWzBdO3JldHVybiBvPjAmJmUrKyx0K299KSwwKTtyZXR1cm4gZT90L2U6MH1fdXBkYXRlRW1wdHlERU1UZXh0dXJlKCl7Y29uc3QgdD10aGlzLnBhaW50ZXIuY29udGV4dCxpPXQuZ2w7dC5hY3RpdmVUZXh0dXJlLnNldChpLlRFWFRVUkUyKTtjb25zdCBvPXRoaXMuX2dldExvYWRlZEFyZWFNaW5pbXVtKCkscj1uZXcgZS5SR0JBSW1hZ2Uoe3dpZHRoOjEsaGVpZ2h0OjF9LG5ldyBVaW50OEFycmF5KGUuREVNRGF0YS5wYWNrKG8sdGhpcy5zb3VyY2VDYWNoZS5nZXRTb3VyY2UoKS5lbmNvZGluZykpKTt0aGlzLl9lbXB0eURFTVRleHR1cmVEaXJ0eT0hMTtsZXQgbj10aGlzLl9lbXB0eURFTVRleHR1cmU7cmV0dXJuIG4/bi51cGRhdGUocix7cHJlbXVsdGlwbHk6ITF9KTpuPXRoaXMuX2VtcHR5REVNVGV4dHVyZT1uZXcgZS5UZXh0dXJlKHQscixpLlJHQkEse3ByZW11bHRpcGx5OiExfSksbn1zZXR1cEVsZXZhdGlvbkRyYXcodCxpLG8pe2NvbnN0IHI9dGhpcy5wYWludGVyLmNvbnRleHQsbj1yLmdsLHM9KGE9dGhpcy5zb3VyY2VDYWNoZS5nZXRTb3VyY2UoKS5lbmNvZGluZyx7dV9kZW06Mix1X2RlbV9wcmV2OjQsdV9kZW1fdW5wYWNrOmUuREVNRGF0YS5nZXRVbnBhY2tWZWN0b3IoYSksdV9kZW1fdGw6WzAsMF0sdV9kZW1fdGxfcHJldjpbMCwwXSx1X2RlbV9zY2FsZTowLHVfZGVtX3NjYWxlX3ByZXY6MCx1X2RlbV9zaXplOjAsdV9kZW1fbGVycDoxLHVfZGVwdGg6Myx1X2RlcHRoX3NpemVfaW52OlswLDBdLHVfZXhhZ2dlcmF0aW9uOjB9KTt2YXIgYTtzLnVfZGVtX3NpemU9dGhpcy5zb3VyY2VDYWNoZS5nZXRTb3VyY2UoKS50aWxlU2l6ZSxzLnVfZXhhZ2dlcmF0aW9uPXRoaXMuZXhhZ2dlcmF0aW9uKCk7bGV0IGw9bnVsbCxjPW51bGwsaD0xO2lmKG8mJm8ubW9ycGhpbmcmJnRoaXMuX3VzZVZlcnRleE1vcnBoaW5nKXtjb25zdCBlPW8ubW9ycGhpbmcuc3JjRGVtVGlsZSxpPW8ubW9ycGhpbmcuZHN0RGVtVGlsZTtoPW8ubW9ycGhpbmcucGhhc2UsZSYmaSYmKHRoaXMuX3ByZXBhcmVEZW1UaWxlVW5pZm9ybXModCxlLHMsXCJfcHJldlwiKSYmKGM9ZSksdGhpcy5fcHJlcGFyZURlbVRpbGVVbmlmb3Jtcyh0LGkscykmJihsPWkpKTt9aWYoYyYmbD8oci5hY3RpdmVUZXh0dXJlLnNldChuLlRFWFRVUkUyKSxsLmRlbVRleHR1cmUuYmluZChuLk5FQVJFU1Qsbi5DTEFNUF9UT19FREdFLG4uTkVBUkVTVCksci5hY3RpdmVUZXh0dXJlLnNldChuLlRFWFRVUkU0KSxjLmRlbVRleHR1cmUuYmluZChuLk5FQVJFU1Qsbi5DTEFNUF9UT19FREdFLG4uTkVBUkVTVCkscy51X2RlbV9sZXJwPWgpOihsPXRoaXMudGVycmFpblRpbGVGb3JUaWxlW3QudGlsZUlELmtleV0sci5hY3RpdmVUZXh0dXJlLnNldChuLlRFWFRVUkUyKSwodGhpcy5fcHJlcGFyZURlbVRpbGVVbmlmb3Jtcyh0LGwscyk/bC5kZW1UZXh0dXJlOnRoaXMuZW1wdHlERU1UZXh0dXJlKS5iaW5kKG4uTkVBUkVTVCxuLkNMQU1QX1RPX0VER0UpKSxyLmFjdGl2ZVRleHR1cmUuc2V0KG4uVEVYVFVSRTMpLG8mJm8udXNlRGVwdGhGb3JPY2NsdXNpb24/KHRoaXMuX2RlcHRoVGV4dHVyZSYmdGhpcy5fZGVwdGhUZXh0dXJlLmJpbmQobi5ORUFSRVNULG4uQ0xBTVBfVE9fRURHRSksdGhpcy5fZGVwdGhGQk8mJihzLnVfZGVwdGhfc2l6ZV9pbnY9WzEvdGhpcy5fZGVwdGhGQk8ud2lkdGgsMS90aGlzLl9kZXB0aEZCTy5oZWlnaHRdKSk6KHRoaXMuZW1wdHlEZXB0aEJ1ZmZlclRleHR1cmUuYmluZChuLk5FQVJFU1Qsbi5DTEFNUF9UT19FREdFKSxzLnVfZGVwdGhfc2l6ZV9pbnY9WzEsMV0pLG8mJm8udXNlTWV0ZXJUb0RlbSYmbCl7Y29uc3QgdD0oMTw8bC50aWxlSUQuY2Fub25pY2FsLnopKmUubWVyY2F0b3JaZnJvbUFsdGl0dWRlKDEsdGhpcy5wYWludGVyLnRyYW5zZm9ybS5jZW50ZXIubGF0KSp0aGlzLnNvdXJjZUNhY2hlLmdldFNvdXJjZSgpLnRpbGVTaXplO3MudV9tZXRlcl90b19kZW09dDt9aWYobyYmby5sYWJlbFBsYW5lTWF0cml4SW52JiYocy51X2xhYmVsX3BsYW5lX21hdHJpeF9pbnY9by5sYWJlbFBsYW5lTWF0cml4SW52KSxpLnNldFRlcnJhaW5Vbmlmb3JtVmFsdWVzKHIscyksXCJnbG9iZVwiPT09dGhpcy5wYWludGVyLnRyYW5zZm9ybS5wcm9qZWN0aW9uLm5hbWUpe2NvbnN0IGU9dGhpcy5nbG9iZVVuaWZvcm1WYWx1ZXModGhpcy5wYWludGVyLnRyYW5zZm9ybSx0LnRpbGVJRC5jYW5vbmljYWwsbyYmby51c2VEZW5vcm1hbGl6ZWRVcFZlY3RvclNjYWxlKTtpLnNldEdsb2JlVW5pZm9ybVZhbHVlcyhyLGUpO319Z2xvYmVVbmlmb3JtVmFsdWVzKHQsaSxvKXtjb25zdCByPXQucHJvamVjdGlvbjtyZXR1cm4ge3VfdGlsZV90bF91cDpyLnVwVmVjdG9yKGksMCwwKSx1X3RpbGVfdHJfdXA6ci51cFZlY3RvcihpLGUuRVhURU5ULDApLHVfdGlsZV9icl91cDpyLnVwVmVjdG9yKGksZS5FWFRFTlQsZS5FWFRFTlQpLHVfdGlsZV9ibF91cDpyLnVwVmVjdG9yKGksMCxlLkVYVEVOVCksdV90aWxlX3VwX3NjYWxlOm8/ZS5nbG9iZU1ldGVyc1RvRWNlZigxKTpyLnVwVmVjdG9yU2NhbGUoaSx0LmNlbnRlci5sYXQsdC53b3JsZFNpemUpLm1ldGVyc1RvVGlsZX19cmVuZGVyVG9CYWNrQnVmZmVyKHQpe2NvbnN0IGk9dGhpcy5wYWludGVyLG89dGhpcy5wYWludGVyLmNvbnRleHQ7MCE9PXQubGVuZ3RoJiYoby5iaW5kRnJhbWVidWZmZXIuc2V0KG51bGwpLG8udmlld3BvcnQuc2V0KFswLDAsaS53aWR0aCxpLmhlaWdodF0pLGkuZ3B1VGltaW5nRGVmZXJyZWRSZW5kZXJTdGFydCgpLHRoaXMucmVuZGVyaW5nVG9UZXh0dXJlPSExLGZ1bmN0aW9uKHQsaSxvLHIsbil7aWYoXCJnbG9iZVwiPT09dC50cmFuc2Zvcm0ucHJvamVjdGlvbi5uYW1lKSFmdW5jdGlvbih0LGksbyxyLG4pe2NvbnN0IHM9dC5jb250ZXh0LGE9cy5nbDtsZXQgbCxjO2NvbnN0IGg9dC5vcHRpb25zLnNob3dUZXJyYWluV2lyZWZyYW1lPzI6MCx1PXQudHJhbnNmb3JtLF89ZS5nbG9iZVVzZUN1c3RvbUFudGlBbGlhc2luZyh0LHMsdSksZD0oZSxpKT0+e2lmKGM9PT1lKXJldHVybjtjb25zdCBvPVt3aVtlXSxcIlBST0pFQ1RJT05fR0xPQkVfVklFV1wiXTtfJiZvLnB1c2goXCJDVVNUT01fQU5USUFMSUFTSU5HXCIpLGkmJm8ucHVzaCh3aVtoXSksbD10LnVzZVByb2dyYW0oXCJnbG9iZVJhc3RlclwiLG51bGwsbyksYz1lO30scD10LmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKSxtPW5ldyBlLkRlcHRoTW9kZShhLkxFUVVBTCxlLkRlcHRoTW9kZS5SZWFkV3JpdGUsdC5kZXB0aFJhbmdlRm9yM0QpO2JpLnVwZGF0ZShuKTtjb25zdCBmPWUuY2FsY3VsYXRlR2xvYmVNZXJjYXRvck1hdHJpeCh1KSxnPVtlLm1lcmNhdG9yWGZyb21MbmcodS5jZW50ZXIubG5nKSxlLm1lcmNhdG9yWWZyb21MYXQodS5jZW50ZXIubGF0KV0sdj1oP1shMSwhMF06WyExXSx4PXQuZ2xvYmVTaGFyZWRCdWZmZXJzLHk9W3Uud2lkdGgqZS5leHBvcnRlZC5kZXZpY2VQaXhlbFJhdGlvLHUuaGVpZ2h0KmUuZXhwb3J0ZWQuZGV2aWNlUGl4ZWxSYXRpb10sYj1GbG9hdDMyQXJyYXkuZnJvbSh1Lmdsb2JlTWF0cml4KSx3PXt1c2VEZW5vcm1hbGl6ZWRVcFZlY3RvclNjYWxlOiEwfTtpZih2LmZvckVhY2goKGg9Pntjb25zdCB1PXQudHJhbnNmb3JtLF89VGkodS56b29tKSppLmV4YWdnZXJhdGlvbigpO2M9LTE7Y29uc3Qgdj1oP2EuTElORVM6YS5UUklBTkdMRVM7Zm9yKGNvbnN0IGMgb2Ygcil7Y29uc3Qgcj1vLmdldFRpbGUoYyksVD1lLlN0ZW5jaWxNb2RlLmRpc2FibGVkLEU9aS5wcmV2VGVycmFpblRpbGVGb3JUaWxlW2Mua2V5XSxDPWkudGVycmFpblRpbGVGb3JUaWxlW2Mua2V5XTt5aShFLEMpJiZiaS5uZXdNb3JwaGluZyhjLmtleSxFLEMsbiwyNTApLHMuYWN0aXZlVGV4dHVyZS5zZXQoYS5URVhUVVJFMCksci50ZXh0dXJlLmJpbmQoYS5MSU5FQVIsYS5DTEFNUF9UT19FREdFKTtjb25zdCBNPWJpLmdldE1vcnBoVmFsdWVzRm9yUHJveHkoYy5rZXkpLEk9TT8xOjA7TSYmZS5leHRlbmQkMSh3LHttb3JwaGluZzp7c3JjRGVtVGlsZTpNLmZyb20sZHN0RGVtVGlsZTpNLnRvLHBoYXNlOmUuZWFzZUN1YmljSW5PdXQoTS5waGFzZSl9fSk7Y29uc3QgUD1lLnRpbGVDb3JuZXJzVG9Cb3VuZHMoYy5jYW5vbmljYWwpLFM9ZS5nZXRMYXRpdHVkaW5hbExvZChQLmdldENlbnRlcigpLmxhdCksRD1lLmdldEdyaWRNYXRyaXgoYy5jYW5vbmljYWwsUCxTLHUud29ybGRTaXplL3UuX3BpeGVsc1Blck1lcmNhdG9yUGl4ZWwpLEw9ZS5nbG9iZU5vcm1hbGl6ZUVDRUYoZS5nbG9iZVRpbGVCb3VuZHMoYy5jYW5vbmljYWwpKSxBPXhpKHUucHJvak1hdHJpeCxiLGYsTCxlLmdsb2JlVG9NZXJjYXRvclRyYW5zaXRpb24odS56b29tKSxnLHUuZnJ1c3R1bUNvcm5lcnMuVEwsdS5mcnVzdHVtQ29ybmVycy5UUix1LmZydXN0dW1Db3JuZXJzLkJSLHUuZnJ1c3R1bUNvcm5lcnMuQkwsdS5nbG9iZUNlbnRlckluVmlld1NwYWNlLHUuZ2xvYmVSYWRpdXMseSxfLEQpO2lmKGQoSSxoKSxpLnNldHVwRWxldmF0aW9uRHJhdyhyLGwsdyksdC5wcmVwYXJlRHJhd1Byb2dyYW0ocyxsLGMudG9VbndyYXBwZWQoKSkseCl7Y29uc3RbaSxvLHJdPWg/eC5nZXRXaXJlZmFtZUJ1ZmZlcnModC5jb250ZXh0LFMpOnguZ2V0R3JpZEJ1ZmZlcnMoUywwIT09Xyk7bC5kcmF3KHMsdixtLFQscCxlLkN1bGxGYWNlTW9kZS5iYWNrQ0NXLEEsXCJnbG9iZV9yYXN0ZXJcIixpLG8scik7fX19KSkseCl7Y29uc3Qgbj1bXCJHTE9CRV9QT0xFU1wiLFwiUFJPSkVDVElPTl9HTE9CRV9WSUVXXCJdO18mJm4ucHVzaChcIkNVU1RPTV9BTlRJQUxJQVNJTkdcIiksbD10LnVzZVByb2dyYW0oXCJnbG9iZVJhc3RlclwiLG51bGwsbik7Zm9yKGNvbnN0IG4gb2Ygcil7Y29uc3R7eDpyLHk6Yyx6Omh9PW4uY2Fub25pY2FsLF89MD09PWMsZD1jPT09KDE8PGgpLTEsW2YsdixiLFRdPXguZ2V0UG9sZUJ1ZmZlcnMoaCk7aWYoVCYmKF98fGQpKXtjb25zdCBjPW8uZ2V0VGlsZShuKTtzLmFjdGl2ZVRleHR1cmUuc2V0KGEuVEVYVFVSRTApLGMudGV4dHVyZS5iaW5kKGEuTElORUFSLGEuQ0xBTVBfVE9fRURHRSk7bGV0IHg9ZS5nbG9iZVBvbGVNYXRyaXhGb3JUaWxlKGgscix1KTtjb25zdCBFPWUuZ2xvYmVOb3JtYWxpemVFQ0VGKGUuZ2xvYmVUaWxlQm91bmRzKG4uY2Fub25pY2FsKSksQz0odCxpKT0+dC5kcmF3KHMsYS5UUklBTkdMRVMsbSxlLlN0ZW5jaWxNb2RlLmRpc2FibGVkLHAsZS5DdWxsRmFjZU1vZGUuZGlzYWJsZWQseGkodS5wcm9qTWF0cml4LHgseCxFLDAsZyx1LmZydXN0dW1Db3JuZXJzLlRMLHUuZnJ1c3R1bUNvcm5lcnMuVFIsdS5mcnVzdHVtQ29ybmVycy5CUix1LmZydXN0dW1Db3JuZXJzLkJMLHUuZ2xvYmVDZW50ZXJJblZpZXdTcGFjZSx1Lmdsb2JlUmFkaXVzLHksMCksXCJnbG9iZV9wb2xlX3Jhc3RlclwiLGksYixUKTtpLnNldHVwRWxldmF0aW9uRHJhdyhjLGwsdyksdC5wcmVwYXJlRHJhd1Byb2dyYW0ocyxsLG4udG9VbndyYXBwZWQoKSksXyYmQyhsLGYpLGQmJih4PWUuc2NhbGUoZS5jcmVhdGUoKSx4LFsxLC0xLDFdKSxDKGwsdikpO319fX0odCxpLG8scixuKTtlbHNlIHtjb25zdCBzPXQuY29udGV4dCxhPXMuZ2w7bGV0IGwsYztjb25zdCBoPXQub3B0aW9ucy5zaG93VGVycmFpbldpcmVmcmFtZT8yOjAsdT0oZSxpKT0+e2lmKGM9PT1lKXJldHVybjtjb25zdCBvPVt3aVtlXV07aSYmby5wdXNoKHdpW2hdKSxsPXQudXNlUHJvZ3JhbShcInRlcnJhaW5SYXN0ZXJcIixudWxsLG8pLGM9ZTt9LF89dC5jb2xvck1vZGVGb3JSZW5kZXJQYXNzKCksZD1uZXcgZS5EZXB0aE1vZGUoYS5MRVFVQUwsZS5EZXB0aE1vZGUuUmVhZFdyaXRlLHQuZGVwdGhSYW5nZUZvcjNEKTtiaS51cGRhdGUobik7Y29uc3QgcD10LnRyYW5zZm9ybSxtPVRpKHAuem9vbSkqaS5leGFnZ2VyYXRpb24oKTsoaD9bITEsITBdOlshMV0pLmZvckVhY2goKGg9PntjPS0xO2NvbnN0IGY9aD9hLkxJTkVTOmEuVFJJQU5HTEVTLFtnLHZdPWg/aS5nZXRXaXJlZmFtZUJ1ZmZlcigpOltpLmdyaWRJbmRleEJ1ZmZlcixpLmdyaWRTZWdtZW50c107Zm9yKGNvbnN0IGMgb2Ygcil7Y29uc3Qgcj1vLmdldFRpbGUoYykseD1lLlN0ZW5jaWxNb2RlLmRpc2FibGVkLHk9aS5wcmV2VGVycmFpblRpbGVGb3JUaWxlW2Mua2V5XSxiPWkudGVycmFpblRpbGVGb3JUaWxlW2Mua2V5XTt5aSh5LGIpJiZiaS5uZXdNb3JwaGluZyhjLmtleSx5LGIsbiwyNTApLHMuYWN0aXZlVGV4dHVyZS5zZXQoYS5URVhUVVJFMCksci50ZXh0dXJlLmJpbmQoYS5MSU5FQVIsYS5DTEFNUF9UT19FREdFLGEuTElORUFSX01JUE1BUF9ORUFSRVNUKTtjb25zdCB3PWJpLmdldE1vcnBoVmFsdWVzRm9yUHJveHkoYy5rZXkpLFQ9dz8xOjA7bGV0IEU7dyYmKEU9e21vcnBoaW5nOntzcmNEZW1UaWxlOncuZnJvbSxkc3REZW1UaWxlOncudG8scGhhc2U6ZS5lYXNlQ3ViaWNJbk91dCh3LnBoYXNlKX19KTtjb25zdCBDPXZpKGMucHJvak1hdHJpeCxFaShjLmNhbm9uaWNhbCxwLnJlbmRlcldvcmxkQ29waWVzKT9tLzEwOm0pO3UoVCxoKSxpLnNldHVwRWxldmF0aW9uRHJhdyhyLGwsRSksdC5wcmVwYXJlRHJhd1Byb2dyYW0ocyxsLGMudG9VbndyYXBwZWQoKSksbC5kcmF3KHMsZixkLHgsXyxlLkN1bGxGYWNlTW9kZS5iYWNrQ0NXLEMsXCJ0ZXJyYWluX3Jhc3RlclwiLGkuZ3JpZEJ1ZmZlcixnLHYpO319KSk7fX0oaSx0aGlzLHRoaXMucHJveHlTb3VyY2VDYWNoZSx0LHRoaXMuX3VwZGF0ZVRpbWVzdGFtcCksdGhpcy5yZW5kZXJpbmdUb1RleHR1cmU9ITAsaS5ncHVUaW1pbmdEZWZlcnJlZFJlbmRlckVuZCgpLHQuc3BsaWNlKDAsdC5sZW5ndGgpKTt9cmVuZGVyQmF0Y2godCl7aWYoMD09PXRoaXMuX2RyYXBlZFJlbmRlckJhdGNoZXMubGVuZ3RoKXJldHVybiB0KzE7dGhpcy5yZW5kZXJpbmdUb1RleHR1cmU9ITA7Y29uc3QgaT10aGlzLnBhaW50ZXIsbz10aGlzLnBhaW50ZXIuY29udGV4dCxyPXRoaXMucHJveHlTb3VyY2VDYWNoZSxuPXRoaXMucHJveGllZENvb3Jkc1tyLmlkXSxzPXRoaXMuX2RyYXBlZFJlbmRlckJhdGNoZXMuc2hpZnQoKSxhPVtdLGw9aS5zdHlsZS5vcmRlcjtsZXQgYz0wO2Zvcihjb25zdCBoIG9mIG4pe2NvbnN0IG49ci5nZXRUaWxlQnlJRChoLnByb3h5VGlsZUtleSksdT1yLnByb3h5Q2FjaGVkRkJPW2gua2V5XT9yLnByb3h5Q2FjaGVkRkJPW2gua2V5XVt0XTp2b2lkIDAsXz12b2lkIDAhPT11P3IucmVuZGVyQ2FjaGVbdV06dGhpcy5wb29sW2MrK10sZD12b2lkIDAhPT11O2lmKG4udGV4dHVyZT1fLnRleCxkJiYhXy5kaXJ0eSl7YS5wdXNoKG4udGlsZUlEKTtjb250aW51ZX1sZXQgcDtvLmJpbmRGcmFtZWJ1ZmZlci5zZXQoXy5mYi5mcmFtZWJ1ZmZlciksdGhpcy5yZW5kZXJlZFRvVGlsZT0hMSxfLmRpcnR5JiYoby5jbGVhcih7Y29sb3I6ZS5Db2xvci50cmFuc3BhcmVudCxzdGVuY2lsOjB9KSxfLmRpcnR5PSExKTtmb3IobGV0IGU9cy5zdGFydDtlPD1zLmVuZDsrK2Upe2NvbnN0IHQ9aS5zdHlsZS5fbGF5ZXJzW2xbZV1dO2lmKHQuaXNIaWRkZW4oaS50cmFuc2Zvcm0uem9vbSkpY29udGludWU7Y29uc3Qgcj1pLnN0eWxlLl9nZXRMYXllclNvdXJjZUNhY2hlKHQpLG49cj90aGlzLnByb3h5VG9Tb3VyY2VbaC5rZXldW3IuaWRdOltoXTtpZighbiljb250aW51ZTtjb25zdCBzPW47by52aWV3cG9ydC5zZXQoWzAsMCxfLmZiLndpZHRoLF8uZmIuaGVpZ2h0XSkscCE9PShyP3IuaWQ6bnVsbCkmJih0aGlzLl9zZXR1cFN0ZW5jaWwoXyxuLHQscikscD1yP3IuaWQ6bnVsbCksaS5yZW5kZXJMYXllcihpLHIsdCxzKTt9dGhpcy5yZW5kZXJlZFRvVGlsZT8oXy5kaXJ0eT0hMCxhLnB1c2gobi50aWxlSUQpKTpkfHwtLWMsNT09PWMmJihjPTAsdGhpcy5yZW5kZXJUb0JhY2tCdWZmZXIoYSkpO31yZXR1cm4gdGhpcy5yZW5kZXJUb0JhY2tCdWZmZXIoYSksdGhpcy5yZW5kZXJpbmdUb1RleHR1cmU9ITEsby5iaW5kRnJhbWVidWZmZXIuc2V0KG51bGwpLG8udmlld3BvcnQuc2V0KFswLDAsaS53aWR0aCxpLmhlaWdodF0pLHMuZW5kKzF9cG9zdFJlbmRlcigpe31yZW5kZXJDYWNoZUVmZmljaWVuY3koZSl7Y29uc3QgdD1lLm9yZGVyLmxlbmd0aDtpZigwPT09dClyZXR1cm4ge2VmZmljaWVuY3k6MTAwfTtsZXQgaSxvPTAscj0wLG49ITE7Zm9yKGxldCBzPTA7czx0Oysrcyl7Y29uc3QgdD1lLl9sYXllcnNbZS5vcmRlcltzXV07dGhpcy5fc3R5bGUuaXNMYXllckRyYXBlZCh0KT8obiYmKytvLCsrcik6bnx8KG49ITAsaT10LmlkKTt9cmV0dXJuIDA9PT1yP3tlZmZpY2llbmN5OjEwMH06e2VmZmljaWVuY3k6MTAwKigxLW8vciksZmlyc3RVbmRyYXBlZExheWVyOml9fWdldE1pbkVsZXZhdGlvbkJlbG93TVNMKCl7bGV0IGU9MDtyZXR1cm4gdGhpcy5fdmlzaWJsZURlbVRpbGVzLmZpbHRlcigoZT0+ZS5kZW0pKS5mb3JFYWNoKCh0PT57ZT1NYXRoLm1pbihlLHQuZGVtLnRyZWUubWluaW11bXNbMF0pO30pKSwwPT09ZT9lOihlLTMwKSp0aGlzLl9leGFnZ2VyYXRpb259cmF5Y2FzdChlLHQsaSl7aWYoIXRoaXMuX3Zpc2libGVEZW1UaWxlcylyZXR1cm4gbnVsbDtjb25zdCBvPXRoaXMuX3Zpc2libGVEZW1UaWxlcy5maWx0ZXIoKGU9PmUuZGVtKSkubWFwKChvPT57Y29uc3Qgcj1vLnRpbGVJRCxuPTE8PHIub3ZlcnNjYWxlZFose3g6cyx5OmF9PXIuY2Fub25pY2FsLGw9cy9uLGM9KHMrMSkvbixoPWEvbix1PShhKzEpL247cmV0dXJuIHttaW54OmwsbWlueTpoLG1heHg6YyxtYXh5OnUsdDpvLmRlbS50cmVlLnJheWNhc3RSb290KGwsaCxjLHUsZSx0LGkpLHRpbGU6b319KSk7by5zb3J0KCgoZSx0KT0+KG51bGwhPT1lLnQ/ZS50Ok51bWJlci5NQVhfVkFMVUUpLShudWxsIT09dC50P3QudDpOdW1iZXIuTUFYX1ZBTFVFKSkpO2Zvcihjb25zdCByIG9mIG8pe2lmKG51bGw9PXIudClyZXR1cm4gbnVsbDtjb25zdCBvPXIudGlsZS5kZW0udHJlZS5yYXljYXN0KHIubWlueCxyLm1pbnksci5tYXh4LHIubWF4eSxlLHQsaSk7aWYobnVsbCE9bylyZXR1cm4gb31yZXR1cm4gbnVsbH1fY3JlYXRlRkJPKCl7Y29uc3QgdD10aGlzLnBhaW50ZXIuY29udGV4dCxpPXQuZ2wsbz10aGlzLmRyYXBlQnVmZmVyU2l6ZTt0LmFjdGl2ZVRleHR1cmUuc2V0KGkuVEVYVFVSRTApO2NvbnN0IHI9bmV3IGUuVGV4dHVyZSh0LHt3aWR0aDpvWzBdLGhlaWdodDpvWzFdLGRhdGE6bnVsbH0saS5SR0JBKTtyLmJpbmQoaS5MSU5FQVIsaS5DTEFNUF9UT19FREdFKTtjb25zdCBuPXQuY3JlYXRlRnJhbWVidWZmZXIob1swXSxvWzFdLCExKTtyZXR1cm4gbi5jb2xvckF0dGFjaG1lbnQuc2V0KHIudGV4dHVyZSksbi5kZXB0aEF0dGFjaG1lbnQ9bmV3IHdlKHQsbi5mcmFtZWJ1ZmZlciksdm9pZCAwPT09dGhpcy5fc2hhcmVkRGVwdGhTdGVuY2lsPyh0aGlzLl9zaGFyZWREZXB0aFN0ZW5jaWw9dC5jcmVhdGVSZW5kZXJidWZmZXIodC5nbC5ERVBUSF9TVEVOQ0lMLG9bMF0sb1sxXSksdGhpcy5fc3RlbmNpbFJlZj0wLG4uZGVwdGhBdHRhY2htZW50LnNldCh0aGlzLl9zaGFyZWREZXB0aFN0ZW5jaWwpLHQuY2xlYXIoe3N0ZW5jaWw6MH0pKTpuLmRlcHRoQXR0YWNobWVudC5zZXQodGhpcy5fc2hhcmVkRGVwdGhTdGVuY2lsKSx0LmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyYmIXQuZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljRm9yY2VPZmYmJmkudGV4UGFyYW1ldGVyZihpLlRFWFRVUkVfMkQsdC5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsdC5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWNNYXgpLHtmYjpuLHRleDpyLGRpcnR5OiExfX1faW5pdEZCT1Bvb2woKXtmb3IoO3RoaXMucG9vbC5sZW5ndGg8TWF0aC5taW4oNSx0aGlzLnByb3h5Q29vcmRzLmxlbmd0aCk7KXRoaXMucG9vbC5wdXNoKHRoaXMuX2NyZWF0ZUZCTygpKTt9X3Nob3VsZERpc2FibGVSZW5kZXJDYWNoZSgpe2lmKHRoaXMuX3N0eWxlLmxpZ2h0JiZ0aGlzLl9zdHlsZS5saWdodC5oYXNUcmFuc2l0aW9uKCkpcmV0dXJuICEwO2Zvcihjb25zdCBlIGluIHRoaXMuX3N0eWxlLl9zb3VyY2VDYWNoZXMpaWYodGhpcy5fc3R5bGUuX3NvdXJjZUNhY2hlc1tlXS5oYXNUcmFuc2l0aW9uKCkpcmV0dXJuICEwO3JldHVybiB0aGlzLl9zdHlsZS5vcmRlci5zb21lKChlPT57Y29uc3QgdD10aGlzLl9zdHlsZS5fbGF5ZXJzW2VdLGk9dC5pc0hpZGRlbih0aGlzLnBhaW50ZXIudHJhbnNmb3JtLnpvb20pO3JldHVybiBcImN1c3RvbVwiPT09dC50eXBlPyFpJiZ0LnNob3VsZFJlZHJhcGUoKTohaSYmdC5oYXNUcmFuc2l0aW9uKCl9KSl9X2NsZWFyTGluZUxheWVyc0Zyb21SZW5kZXJDYWNoZSgpe2xldCB0PSExO2Zvcihjb25zdCBlIG9mIHRoaXMuX3N0eWxlLl9nZXRTb3VyY2VzKCkpaWYoZSBpbnN0YW5jZW9mIENlKXt0PSEwO2JyZWFrfWlmKCF0KXJldHVybjtjb25zdCBpPXt9O2ZvcihsZXQgdD0wO3Q8dGhpcy5fc3R5bGUub3JkZXIubGVuZ3RoOysrdCl7Y29uc3Qgbz10aGlzLl9zdHlsZS5fbGF5ZXJzW3RoaXMuX3N0eWxlLm9yZGVyW3RdXSxyPXRoaXMuX3N0eWxlLl9nZXRMYXllclNvdXJjZUNhY2hlKG8pO2lmKHImJiFpW3IuaWRdJiYhby5pc0hpZGRlbih0aGlzLnBhaW50ZXIudHJhbnNmb3JtLnpvb20pJiZcImxpbmVcIj09PW8udHlwZSYmby53aWR0aEV4cHJlc3Npb24oKWluc3RhbmNlb2YgZS5ab29tRGVwZW5kZW50RXhwcmVzc2lvbil7aVtyLmlkXT0hMDtmb3IoY29uc3QgZSBvZiB0aGlzLnByb3h5Q29vcmRzKXtjb25zdCB0PXRoaXMucHJveHlUb1NvdXJjZVtlLmtleV1bci5pZF07aWYodClmb3IoY29uc3QgZSBvZiB0KXRoaXMuX2NsZWFyUmVuZGVyQ2FjaGVGb3JUaWxlKHIuaWQsZSk7fX19fV9jbGVhclJhc3RlckxheWVyc0Zyb21SZW5kZXJDYWNoZSgpe2xldCBlPSExO2Zvcihjb25zdCB0IGluIHRoaXMuX3N0eWxlLl9zb3VyY2VDYWNoZXMpaWYodGhpcy5fc3R5bGUuX3NvdXJjZUNhY2hlc1t0XS5fc291cmNlIGluc3RhbmNlb2YgTWUpe2U9ITA7YnJlYWt9aWYoIWUpcmV0dXJuO2NvbnN0IHQ9e307Zm9yKGxldCBlPTA7ZTx0aGlzLl9zdHlsZS5vcmRlci5sZW5ndGg7KytlKXtjb25zdCBpPXRoaXMuX3N0eWxlLl9sYXllcnNbdGhpcy5fc3R5bGUub3JkZXJbZV1dLG89dGhpcy5fc3R5bGUuX2dldExheWVyU291cmNlQ2FjaGUoaSk7aWYoIW98fHRbby5pZF0pY29udGludWU7aWYoaS5pc0hpZGRlbih0aGlzLnBhaW50ZXIudHJhbnNmb3JtLnpvb20pfHxcInJhc3RlclwiIT09aS50eXBlKWNvbnRpbnVlO2NvbnN0IHI9aS5wYWludC5nZXQoXCJyYXN0ZXItZmFkZS1kdXJhdGlvblwiKTtmb3IoY29uc3QgZSBvZiB0aGlzLnByb3h5Q29vcmRzKXtjb25zdCB0PXRoaXMucHJveHlUb1NvdXJjZVtlLmtleV1bby5pZF07aWYodClmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PU1pKG8uZ2V0VGlsZShlKSxvLmZpbmRMb2FkZWRQYXJlbnQoZSwwKSxvLHRoaXMucGFpbnRlci50cmFuc2Zvcm0scik7KDEhPT10Lm9wYWNpdHl8fDAhPT10Lm1peCkmJnRoaXMuX2NsZWFyUmVuZGVyQ2FjaGVGb3JUaWxlKG8uaWQsZSk7fX19fV9zZXR1cERyYXBlZFJlbmRlckJhdGNoZXMoKXtjb25zdCBlPXRoaXMuX3N0eWxlLm9yZGVyLHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuO2NvbnN0IGk9W107bGV0IG8scj0wLG49dGhpcy5fc3R5bGUuX2xheWVyc1tlW3JdXTtmb3IoOyF0aGlzLl9zdHlsZS5pc0xheWVyRHJhcGVkKG4pJiZuLmlzSGlkZGVuKHRoaXMucGFpbnRlci50cmFuc2Zvcm0uem9vbSkmJisrcjx0OyluPXRoaXMuX3N0eWxlLl9sYXllcnNbZVtyXV07Zm9yKDtyPHQ7KytyKXtjb25zdCB0PXRoaXMuX3N0eWxlLl9sYXllcnNbZVtyXV07dC5pc0hpZGRlbih0aGlzLnBhaW50ZXIudHJhbnNmb3JtLnpvb20pfHwodGhpcy5fc3R5bGUuaXNMYXllckRyYXBlZCh0KT92b2lkIDA9PT1vJiYobz1yKTp2b2lkIDAhPT1vJiYoaS5wdXNoKHtzdGFydDpvLGVuZDpyLTF9KSxvPXZvaWQgMCkpO312b2lkIDAhPT1vJiZpLnB1c2goe3N0YXJ0Om8sZW5kOnItMX0pLHRoaXMuX2RyYXBlZFJlbmRlckJhdGNoZXM9aTt9X3NldHVwUmVuZGVyQ2FjaGUoZSl7Y29uc3QgdD10aGlzLnByb3h5U291cmNlQ2FjaGU7aWYodGhpcy5fc2hvdWxkRGlzYWJsZVJlbmRlckNhY2hlKCl8fHRoaXMuX2ludmFsaWRhdGVSZW5kZXJDYWNoZSl7aWYodGhpcy5faW52YWxpZGF0ZVJlbmRlckNhY2hlPSExLHQucmVuZGVyQ2FjaGUubGVuZ3RoPnQucmVuZGVyQ2FjaGVQb29sLmxlbmd0aCl7Y29uc3QgZT1PYmplY3QudmFsdWVzKHQucHJveHlDYWNoZWRGQk8pO3QucHJveHlDYWNoZWRGQk89e307Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDsrK2kpe2NvbnN0IG89T2JqZWN0LnZhbHVlcyhlW2ldKTt0LnJlbmRlckNhY2hlUG9vbC5wdXNoKC4uLm8pO319cmV0dXJufXRoaXMuX2NsZWFyUmFzdGVyTGF5ZXJzRnJvbVJlbmRlckNhY2hlKCk7Y29uc3QgaT10aGlzLnByb3h5Q29vcmRzLG89dGhpcy5fdGlsZXNEaXJ0eTtmb3IobGV0IHI9aS5sZW5ndGgtMTtyPj0wO3ItLSl7Y29uc3Qgbj1pW3JdO2lmKHQuZ2V0VGlsZUJ5SUQobi5rZXkpLHZvaWQgMCE9PXQucHJveHlDYWNoZWRGQk9bbi5rZXldKXtjb25zdCBpPWVbbi5rZXldLHI9dGhpcy5wcm94eVRvU291cmNlW24ua2V5XTtsZXQgcz0wO2Zvcihjb25zdCBlIGluIHIpe2NvbnN0IHQ9cltlXSxuPWlbZV07aWYoIW58fG4ubGVuZ3RoIT09dC5sZW5ndGh8fHQuc29tZSgoKHQsaSk9PnQhPT1uW2ldfHxvW2VdJiZvW2VdLmhhc093blByb3BlcnR5KHQua2V5KSkpKXtzPS0xO2JyZWFrfSsrczt9Zm9yKGNvbnN0IGUgaW4gdC5wcm94eUNhY2hlZEZCT1tuLmtleV0pdC5yZW5kZXJDYWNoZVt0LnByb3h5Q2FjaGVkRkJPW24ua2V5XVtlXV0uZGlydHk9czwwfHxzIT09T2JqZWN0LnZhbHVlcyhpKS5sZW5ndGg7fX1jb25zdCByPVsuLi50aGlzLl9kcmFwZWRSZW5kZXJCYXRjaGVzXTtyLnNvcnQoKChlLHQpPT50LmVuZC10LnN0YXJ0LShlLmVuZC1lLnN0YXJ0KSkpO2Zvcihjb25zdCBlIG9mIHIpZm9yKGNvbnN0IG8gb2YgaSl7aWYodC5wcm94eUNhY2hlZEZCT1tvLmtleV0pY29udGludWU7bGV0IGk9dC5yZW5kZXJDYWNoZVBvb2wucG9wKCk7dm9pZCAwPT09aSYmdC5yZW5kZXJDYWNoZS5sZW5ndGg8NTAmJihpPXQucmVuZGVyQ2FjaGUubGVuZ3RoLHQucmVuZGVyQ2FjaGUucHVzaCh0aGlzLl9jcmVhdGVGQk8oKSkpLHZvaWQgMCE9PWkmJih0LnByb3h5Q2FjaGVkRkJPW28ua2V5XT17fSx0LnByb3h5Q2FjaGVkRkJPW28ua2V5XVtlLnN0YXJ0XT1pLHQucmVuZGVyQ2FjaGVbaV0uZGlydHk9ITApO310aGlzLl90aWxlc0RpcnR5PXt9O31fc2V0dXBTdGVuY2lsKGUsdCxpLG8pe2lmKCFvfHwhdGhpcy5fc291cmNlVGlsZXNPdmVybGFwW28uaWRdKXJldHVybiB2b2lkKHRoaXMuX292ZXJsYXBTdGVuY2lsVHlwZSYmKHRoaXMuX292ZXJsYXBTdGVuY2lsVHlwZT0hMSkpO2NvbnN0IHI9dGhpcy5wYWludGVyLmNvbnRleHQsbj1yLmdsO2lmKHQubGVuZ3RoPD0xKXJldHVybiB2b2lkKHRoaXMuX292ZXJsYXBTdGVuY2lsVHlwZT0hMSk7bGV0IHM7aWYoaS5pc1RpbGVDbGlwcGVkKCkpcz10Lmxlbmd0aCx0aGlzLl9vdmVybGFwU3RlbmNpbE1vZGUudGVzdD17ZnVuYzpuLkVRVUFMLG1hc2s6MjU1fSx0aGlzLl9vdmVybGFwU3RlbmNpbFR5cGU9XCJDbGlwXCI7ZWxzZSB7aWYoISh0WzBdLm92ZXJzY2FsZWRaPnRbdC5sZW5ndGgtMV0ub3ZlcnNjYWxlZFopKXJldHVybiB2b2lkKHRoaXMuX292ZXJsYXBTdGVuY2lsVHlwZT0hMSk7cz0xLHRoaXMuX292ZXJsYXBTdGVuY2lsTW9kZS50ZXN0PXtmdW5jOm4uR1JFQVRFUixtYXNrOjI1NX0sdGhpcy5fb3ZlcmxhcFN0ZW5jaWxUeXBlPVwiTWFza1wiO310aGlzLl9zdGVuY2lsUmVmK3M+MjU1JiYoci5jbGVhcih7c3RlbmNpbDowfSksdGhpcy5fc3RlbmNpbFJlZj0wKSx0aGlzLl9zdGVuY2lsUmVmKz1zLHRoaXMuX292ZXJsYXBTdGVuY2lsTW9kZS5yZWY9dGhpcy5fc3RlbmNpbFJlZixpLmlzVGlsZUNsaXBwZWQoKSYmdGhpcy5fcmVuZGVyVGlsZUNsaXBwaW5nTWFza3ModCx0aGlzLl9vdmVybGFwU3RlbmNpbE1vZGUucmVmKTt9Y2xpcE9yTWFza092ZXJsYXBTdGVuY2lsVHlwZSgpe3JldHVybiBcIkNsaXBcIj09PXRoaXMuX292ZXJsYXBTdGVuY2lsVHlwZXx8XCJNYXNrXCI9PT10aGlzLl9vdmVybGFwU3RlbmNpbFR5cGV9c3RlbmNpbE1vZGVGb3JSVFRPdmVybGFwKHQpe3JldHVybiB0aGlzLnJlbmRlcmluZ1RvVGV4dHVyZSYmdGhpcy5fb3ZlcmxhcFN0ZW5jaWxUeXBlPyhcIkNsaXBcIj09PXRoaXMuX292ZXJsYXBTdGVuY2lsVHlwZSYmKHRoaXMuX292ZXJsYXBTdGVuY2lsTW9kZS5yZWY9dGhpcy5wYWludGVyLl90aWxlQ2xpcHBpbmdNYXNrSURzW3Qua2V5XSksdGhpcy5fb3ZlcmxhcFN0ZW5jaWxNb2RlKTplLlN0ZW5jaWxNb2RlLmRpc2FibGVkfV9yZW5kZXJUaWxlQ2xpcHBpbmdNYXNrcyh0LGkpe2NvbnN0IG89dGhpcy5wYWludGVyLHI9dGhpcy5wYWludGVyLmNvbnRleHQsbj1yLmdsO28uX3RpbGVDbGlwcGluZ01hc2tJRHM9e30sci5zZXRDb2xvck1vZGUoZS5Db2xvck1vZGUuZGlzYWJsZWQpLHIuc2V0RGVwdGhNb2RlKGUuRGVwdGhNb2RlLmRpc2FibGVkKTtjb25zdCBzPW8udXNlUHJvZ3JhbShcImNsaXBwaW5nTWFza1wiKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PW8uX3RpbGVDbGlwcGluZ01hc2tJRHNbYS5rZXldPS0taTtzLmRyYXcocixuLlRSSUFOR0xFUyxlLkRlcHRoTW9kZS5kaXNhYmxlZCxuZXcgZS5TdGVuY2lsTW9kZSh7ZnVuYzpuLkFMV0FZUyxtYXNrOjB9LHQsMjU1LG4uS0VFUCxuLktFRVAsbi5SRVBMQUNFKSxlLkNvbG9yTW9kZS5kaXNhYmxlZCxlLkN1bGxGYWNlTW9kZS5kaXNhYmxlZCxDaShhLnByb2pNYXRyaXgpLFwiJGNsaXBwaW5nXCIsby50aWxlRXh0ZW50QnVmZmVyLG8ucXVhZFRyaWFuZ2xlSW5kZXhCdWZmZXIsby50aWxlRXh0ZW50U2VnbWVudHMpO319cG9pbnRDb29yZGluYXRlKHQpe2NvbnN0IGk9dGhpcy5wYWludGVyLnRyYW5zZm9ybTtpZih0Lng8MHx8dC54Pmkud2lkdGh8fHQueTwwfHx0Lnk+aS5oZWlnaHQpcmV0dXJuIG51bGw7Y29uc3Qgbz1bdC54LHQueSwxLDFdO2UudHJhbnNmb3JtTWF0NCQxKG8sbyxpLnBpeGVsTWF0cml4SW52ZXJzZSksZS5zY2FsZSQxKG8sbywxL29bM10pLG9bMF0vPWkud29ybGRTaXplLG9bMV0vPWkud29ybGRTaXplO2NvbnN0IHI9aS5fY2FtZXJhLnBvc2l0aW9uLG49ZS5tZXJjYXRvclpmcm9tQWx0aXR1ZGUoMSxpLmNlbnRlci5sYXQpLHM9W3JbMF0sclsxXSxyWzJdL24sMF0sYT1lLnN1YnRyYWN0KFtdLG8uc2xpY2UoMCwzKSxzKTtlLm5vcm1hbGl6ZShhLGEpO2NvbnN0IGw9dGhpcy5yYXljYXN0KHMsYSx0aGlzLl9leGFnZ2VyYXRpb24pO3JldHVybiBudWxsIT09bCYmbD8oZS5zY2FsZUFuZEFkZChzLHMsYSxsKSxzWzNdPXNbMl0sc1syXSo9bixzKTpudWxsfWRyYXdEZXB0aCgpe2NvbnN0IHQ9dGhpcy5wYWludGVyLGk9dC5jb250ZXh0LG89dGhpcy5wcm94eVNvdXJjZUNhY2hlLHI9TWF0aC5jZWlsKHQud2lkdGgpLG49TWF0aC5jZWlsKHQuaGVpZ2h0KTtpZighdGhpcy5fZGVwdGhGQk98fHRoaXMuX2RlcHRoRkJPLndpZHRoPT09ciYmdGhpcy5fZGVwdGhGQk8uaGVpZ2h0PT09bnx8KHRoaXMuX2RlcHRoRkJPLmRlc3Ryb3koKSx0aGlzLl9kZXB0aEZCTz12b2lkIDAsdGhpcy5fZGVwdGhUZXh0dXJlPXZvaWQgMCksIXRoaXMuX2RlcHRoRkJPKXtjb25zdCB0PWkuZ2wsbz1pLmNyZWF0ZUZyYW1lYnVmZmVyKHIsbiwhMCk7aS5hY3RpdmVUZXh0dXJlLnNldCh0LlRFWFRVUkUwKTtjb25zdCBzPW5ldyBlLlRleHR1cmUoaSx7d2lkdGg6cixoZWlnaHQ6bixkYXRhOm51bGx9LHQuUkdCQSk7cy5iaW5kKHQuTkVBUkVTVCx0LkNMQU1QX1RPX0VER0UpLG8uY29sb3JBdHRhY2htZW50LnNldChzLnRleHR1cmUpO2NvbnN0IGE9aS5jcmVhdGVSZW5kZXJidWZmZXIoaS5nbC5ERVBUSF9DT01QT05FTlQxNixyLG4pO28uZGVwdGhBdHRhY2htZW50LnNldChhKSx0aGlzLl9kZXB0aEZCTz1vLHRoaXMuX2RlcHRoVGV4dHVyZT1zO31pLmJpbmRGcmFtZWJ1ZmZlci5zZXQodGhpcy5fZGVwdGhGQk8uZnJhbWVidWZmZXIpLGkudmlld3BvcnQuc2V0KFswLDAscixuXSksZnVuY3Rpb24odCxpLG8scil7aWYoXCJnbG9iZVwiPT09dC50cmFuc2Zvcm0ucHJvamVjdGlvbi5uYW1lKXJldHVybjtjb25zdCBuPXQuY29udGV4dCxzPW4uZ2w7bi5jbGVhcih7ZGVwdGg6MX0pO2NvbnN0IGE9dC51c2VQcm9ncmFtKFwidGVycmFpbkRlcHRoXCIpLGw9bmV3IGUuRGVwdGhNb2RlKHMuTEVTUyxlLkRlcHRoTW9kZS5SZWFkV3JpdGUsdC5kZXB0aFJhbmdlRm9yM0QpO2Zvcihjb25zdCB0IG9mIHIpe2NvbnN0IHI9by5nZXRUaWxlKHQpLGM9dmkodC5wcm9qTWF0cml4LDApO2kuc2V0dXBFbGV2YXRpb25EcmF3KHIsYSksYS5kcmF3KG4scy5UUklBTkdMRVMsbCxlLlN0ZW5jaWxNb2RlLmRpc2FibGVkLGUuQ29sb3JNb2RlLnVuYmxlbmRlZCxlLkN1bGxGYWNlTW9kZS5iYWNrQ0NXLGMsXCJ0ZXJyYWluX2RlcHRoXCIsaS5ncmlkQnVmZmVyLGkuZ3JpZEluZGV4QnVmZmVyLGkuZ3JpZE5vU2tpcnRTZWdtZW50cyk7fX0odCx0aGlzLG8sdGhpcy5wcm94eUNvb3Jkcyk7fV9zZXR1cFByb3hpZWRDb29yZHNGb3JPcnRobyhlLHQsaSl7aWYoZS5nZXRTb3VyY2UoKWluc3RhbmNlb2YgUGUpcmV0dXJuIHRoaXMuX3NldHVwUHJveGllZENvb3Jkc0ZvckltYWdlU291cmNlKGUsdCxpKTt0aGlzLl9maW5kQ292ZXJpbmdUaWxlQ2FjaGVbZS5pZF09dGhpcy5fZmluZENvdmVyaW5nVGlsZUNhY2hlW2UuaWRdfHx7fTtjb25zdCBvPXRoaXMucHJveGllZENvb3Jkc1tlLmlkXT1bXSxyPXRoaXMucHJveHlDb29yZHM7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kyspe2NvbnN0IG49clt0XSxzPXRoaXMuX2ZpbmRUaWxlQ292ZXJpbmdUaWxlSUQobixlKTtpZihzKXtjb25zdCB0PXRoaXMuX2NyZWF0ZVByb3hpZWRJZChuLHMsaVtuLmtleV0mJmlbbi5rZXldW2UuaWRdKTtvLnB1c2godCksdGhpcy5wcm94eVRvU291cmNlW24ua2V5XVtlLmlkXT1bdF07fX1sZXQgbj0hMTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl7Y29uc3Qgcz1lLmdldFRpbGUodFtyXSk7aWYoIXN8fCFzLmhhc0RhdGEoKSljb250aW51ZTtjb25zdCBhPXRoaXMuX2ZpbmRUaWxlQ292ZXJpbmdUaWxlSUQocy50aWxlSUQsdGhpcy5wcm94eVNvdXJjZUNhY2hlKTtpZihhJiZhLnRpbGVJRC5jYW5vbmljYWwueiE9PXMudGlsZUlELmNhbm9uaWNhbC56KXtjb25zdCB0PXRoaXMucHJveHlUb1NvdXJjZVthLnRpbGVJRC5rZXldW2UuaWRdLHI9dGhpcy5fY3JlYXRlUHJveGllZElkKGEudGlsZUlELHMsaVthLnRpbGVJRC5rZXldJiZpW2EudGlsZUlELmtleV1bZS5pZF0pO3Q/dC5zcGxpY2UodC5sZW5ndGgtMSwwLHIpOnRoaXMucHJveHlUb1NvdXJjZVthLnRpbGVJRC5rZXldW2UuaWRdPVtyXSxvLnB1c2gociksbj0hMDt9fXRoaXMuX3NvdXJjZVRpbGVzT3ZlcmxhcFtlLmlkXT1uO31fc2V0dXBQcm94aWVkQ29vcmRzRm9ySW1hZ2VTb3VyY2UodCxpLG8pe2lmKCF0LmdldFNvdXJjZSgpLmxvYWRlZCgpKXJldHVybjtjb25zdCByPXRoaXMucHJveGllZENvb3Jkc1t0LmlkXT1bXSxuPXRoaXMucHJveHlDb29yZHMscz10LmdldFNvdXJjZSgpLGE9bmV3IGUuUG9pbnQocy50aWxlSUQueCxzLnRpbGVJRC55KS5fZGl2KDE8PHMudGlsZUlELnopLGw9cy5jb29yZGluYXRlcy5tYXAoZS5NZXJjYXRvckNvb3JkaW5hdGUuZnJvbUxuZ0xhdCkucmVkdWNlKCgoZSx0KT0+KGUubWluLng9TWF0aC5taW4oZS5taW4ueCx0LngtYS54KSxlLm1pbi55PU1hdGgubWluKGUubWluLnksdC55LWEueSksZS5tYXgueD1NYXRoLm1heChlLm1heC54LHQueC1hLngpLGUubWF4Lnk9TWF0aC5tYXgoZS5tYXgueSx0LnktYS55KSxlKSkse21pbjpuZXcgZS5Qb2ludChOdW1iZXIuTUFYX1ZBTFVFLE51bWJlci5NQVhfVkFMVUUpLG1heDpuZXcgZS5Qb2ludCgtTnVtYmVyLk1BWF9WQUxVRSwtTnVtYmVyLk1BWF9WQUxVRSl9KSxjPSh0LGkpPT57Y29uc3Qgbz10LndyYXArdC5jYW5vbmljYWwueC8oMTw8dC5jYW5vbmljYWwueikscj10LmNhbm9uaWNhbC55LygxPDx0LmNhbm9uaWNhbC56KSxuPWUuRVhURU5ULygxPDx0LmNhbm9uaWNhbC56KSxzPWkud3JhcCtpLmNhbm9uaWNhbC54LygxPDxpLmNhbm9uaWNhbC56KSxhPWkuY2Fub25pY2FsLnkvKDE8PGkuY2Fub25pY2FsLnopO3JldHVybiBvK248cytsLm1pbi54fHxvPnMrbC5tYXgueHx8cituPGErbC5taW4ueXx8cj5hK2wubWF4Lnl9O2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKXtjb25zdCBzPW5bZV07Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspe2NvbnN0IG49dC5nZXRUaWxlKGlbZV0pO2lmKCFufHwhbi5oYXNEYXRhKCkpY29udGludWU7aWYoYyhzLG4udGlsZUlEKSljb250aW51ZTtjb25zdCBhPXRoaXMuX2NyZWF0ZVByb3hpZWRJZChzLG4sb1tzLmtleV0mJm9bcy5rZXldW3QuaWRdKSxsPXRoaXMucHJveHlUb1NvdXJjZVtzLmtleV1bdC5pZF07bD9sLnB1c2goYSk6dGhpcy5wcm94eVRvU291cmNlW3Mua2V5XVt0LmlkXT1bYV0sci5wdXNoKGEpO319fV9jcmVhdGVQcm94aWVkSWQodCxpLG8pe2xldCByPXRoaXMub3J0aG9NYXRyaXg7aWYobyl7Y29uc3QgZT1vLmZpbmQoKGU9PmUua2V5PT09aS50aWxlSUQua2V5KSk7aWYoZSlyZXR1cm4gZX1pZihpLnRpbGVJRC5rZXkhPT10LmtleSl7Y29uc3Qgbz10LmNhbm9uaWNhbC56LWkudGlsZUlELmNhbm9uaWNhbC56O2xldCBuLHMsYTtyPWUuY3JlYXRlKCk7Y29uc3QgbD1pLnRpbGVJRC53cmFwLXQud3JhcDw8dC5vdmVyc2NhbGVkWjtvPjA/KG49ZS5FWFRFTlQ+Pm8scz1uKigoaS50aWxlSUQuY2Fub25pY2FsLng8PG8pLXQuY2Fub25pY2FsLngrbCksYT1uKigoaS50aWxlSUQuY2Fub25pY2FsLnk8PG8pLXQuY2Fub25pY2FsLnkpKToobj1lLkVYVEVOVDw8LW8scz1lLkVYVEVOVCooaS50aWxlSUQuY2Fub25pY2FsLngtKHQuY2Fub25pY2FsLngrbDw8LW8pKSxhPWUuRVhURU5UKihpLnRpbGVJRC5jYW5vbmljYWwueS0odC5jYW5vbmljYWwueTw8LW8pKSksZS5vcnRobyhyLDAsbiwwLG4sMCwxKSxlLnRyYW5zbGF0ZShyLHIsW3MsYSwwXSk7fXJldHVybiBuZXcgU2koaS50aWxlSUQsdC5rZXkscil9X2ZpbmRUaWxlQ292ZXJpbmdUaWxlSUQodCxpKXtsZXQgbz1pLmdldFRpbGUodCk7aWYobyYmby5oYXNEYXRhKCkpcmV0dXJuIG87Y29uc3Qgcj10aGlzLl9maW5kQ292ZXJpbmdUaWxlQ2FjaGVbaS5pZF0sbj1yW3Qua2V5XTtpZihvPW4/aS5nZXRUaWxlQnlJRChuKTpudWxsLG8mJm8uaGFzRGF0YSgpfHxudWxsPT09bilyZXR1cm4gbztsZXQgcz1vP28udGlsZUlEOnQsYT1zLm92ZXJzY2FsZWRaO2NvbnN0IGw9aS5nZXRTb3VyY2UoKS5taW56b29tLGM9W107aWYoIW4pe2NvbnN0IHI9aS5nZXRTb3VyY2UoKS5tYXh6b29tO2lmKHQuY2Fub25pY2FsLno+PXIpe2NvbnN0IG89dC5jYW5vbmljYWwuei1yO2kuZ2V0U291cmNlKCkucmVwYXJzZU92ZXJzY2FsZWQ/KGE9TWF0aC5tYXgodC5jYW5vbmljYWwueisyLGkudHJhbnNmb3JtLnRpbGVab29tKSxzPW5ldyBlLk92ZXJzY2FsZWRUaWxlSUQoYSx0LndyYXAscix0LmNhbm9uaWNhbC54Pj5vLHQuY2Fub25pY2FsLnk+Pm8pKTowIT09byYmKGE9cixzPW5ldyBlLk92ZXJzY2FsZWRUaWxlSUQoYSx0LndyYXAscix0LmNhbm9uaWNhbC54Pj5vLHQuY2Fub25pY2FsLnk+Pm8pKTt9cy5rZXkhPT10LmtleSYmKGMucHVzaChzLmtleSksbz1pLmdldFRpbGUocykpO31jb25zdCBoPWU9PntjLmZvckVhY2goKHQ9PntyW3RdPWU7fSkpLGMubGVuZ3RoPTA7fTtmb3IoYS09MTthPj1sJiYoIW98fCFvLmhhc0RhdGEoKSk7YS0tKXtvJiZoKG8udGlsZUlELmtleSk7Y29uc3QgZT1zLmNhbGN1bGF0ZVNjYWxlZEtleShhKTtpZihvPWkuZ2V0VGlsZUJ5SUQoZSksbyYmby5oYXNEYXRhKCkpYnJlYWs7Y29uc3QgdD1yW2VdO2lmKG51bGw9PT10KWJyZWFrO3ZvaWQgMD09PXQ/Yy5wdXNoKGUpOm89aS5nZXRUaWxlQnlJRCh0KTt9cmV0dXJuIGgobz9vLnRpbGVJRC5rZXk6bnVsbCksbyYmby5oYXNEYXRhKCk/bzpudWxsfWZpbmRERU1UaWxlRm9yKGUpe3JldHVybiB0aGlzLmVuYWJsZWQ/dGhpcy5fZmluZFRpbGVDb3ZlcmluZ1RpbGVJRChlLHRoaXMuc291cmNlQ2FjaGUpOm51bGx9cHJlcGFyZURyYXdUaWxlKCl7dGhpcy5yZW5kZXJlZFRvVGlsZT0hMDt9X2NsZWFyUmVuZGVyQ2FjaGVGb3JUaWxlKGUsdCl7bGV0IGk9dGhpcy5fdGlsZXNEaXJ0eVtlXTtpfHwoaT10aGlzLl90aWxlc0RpcnR5W2VdPXt9KSxpW3Qua2V5XT0hMDt9Z2V0V2lyZWZhbWVCdWZmZXIoKXtpZighdGhpcy53aXJlZnJhbWVTZWdtZW50cyl7Y29uc3QgdD1mdW5jdGlvbih0KXtsZXQgaT0wO2NvbnN0IG89bmV3IGUuU3RydWN0QXJyYXlMYXlvdXQydWk0LHI9MTMxO2ZvcihsZXQgZT0xO2U8MTI5O2UrKyl7Zm9yKGxldCB0PTE7dDwxMjk7dCsrKWk9ZSpyK3Qsby5lbXBsYWNlQmFjayhpLGkrMSksby5lbXBsYWNlQmFjayhpLGkrciksby5lbXBsYWNlQmFjayhpKzEsaStyKSwxMjg9PT1lJiZvLmVtcGxhY2VCYWNrKGkrcixpK3IrMSk7by5lbXBsYWNlQmFjayhpKzEsaSsxK3IpO31yZXR1cm4gb30oKTt0aGlzLndpcmVmcmFtZUluZGV4QnVmZmVyPXRoaXMucGFpbnRlci5jb250ZXh0LmNyZWF0ZUluZGV4QnVmZmVyKHQpLHRoaXMud2lyZWZyYW1lU2VnbWVudHM9ZS5TZWdtZW50VmVjdG9yLnNpbXBsZVNlZ21lbnQoMCwwLHRoaXMuZ3JpZEJ1ZmZlci5sZW5ndGgsdC5sZW5ndGgpO31yZXR1cm4gW3RoaXMud2lyZWZyYW1lSW5kZXhCdWZmZXIsdGhpcy53aXJlZnJhbWVTZWdtZW50c119fWNsYXNzIExpe3N0YXRpYyBjYWNoZUtleShlLHQsaSxvKXtsZXQgcj1gJHt0fSR7bz9vLmNhY2hlS2V5OlwiXCJ9YDtmb3IoY29uc3QgdCBvZiBpKWUudXNlZERlZmluZXMuaW5jbHVkZXModCkmJihyKz1gLyR7dH1gKTtyZXR1cm4gcn1jb25zdHJ1Y3Rvcih0LGksbyxyLG4scyl7Y29uc3QgYT10LmdsO3RoaXMucHJvZ3JhbT1hLmNyZWF0ZVByb2dyYW0oKTtjb25zdCBsPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspe2lmKG51bGw9PT1lW2ldKWNvbnRpbnVlO2NvbnN0IG89ZVtpXS5zcGxpdChcIiBcIik7dC5wdXNoKG8ucG9wKCkpO31yZXR1cm4gdH0oby5zdGF0aWNBdHRyaWJ1dGVzKSxjPXI/ci5nZXRCaW5kZXJBdHRyaWJ1dGVzKCk6W10saD1sLmNvbmNhdChjKTtsZXQgdT1yP3IuZGVmaW5lcygpOltdO3U9dS5jb25jYXQocy5tYXAoKGU9PmAjZGVmaW5lICR7ZX1gKSkpO2NvbnN0IF89dC5pc1dlYkdMMj9cIiN2ZXJzaW9uIDMwMCBlc1xcblwiOlwiXCIsZD1fK3UuY29uY2F0KHQuZXh0U3RhbmRhcmREZXJpdmF0aXZlcyYmMD09PV8ubGVuZ3RoP1wiI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGVcXG5cIi5jb25jYXQobGkpOmxpLGxpLGFpLHNpLmZyYWdtZW50U291cmNlLHJpLmZyYWdtZW50U291cmNlLG8uZnJhZ21lbnRTb3VyY2UpLmpvaW4oXCJcXG5cIikscD1fK3UuY29uY2F0KFwiXFxuI2lmZGVmIEdMX0VTXFxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xcbiNlbHNlXFxuXFxuI2lmICFkZWZpbmVkKGxvd3ApXFxuI2RlZmluZSBsb3dwXFxuI2VuZGlmXFxuXFxuI2lmICFkZWZpbmVkKG1lZGl1bXApXFxuI2RlZmluZSBtZWRpdW1wXFxuI2VuZGlmXFxuXFxuI2lmICFkZWZpbmVkKGhpZ2hwKVxcbiNkZWZpbmUgaGlnaHBcXG4jZW5kaWZcXG5cXG4jZW5kaWZcIixhaSxzaS52ZXJ0ZXhTb3VyY2UscmkudmVydGV4U291cmNlLG9pLnZlcnRleFNvdXJjZSxvLnZlcnRleFNvdXJjZSkuam9pbihcIlxcblwiKSxtPWEuY3JlYXRlU2hhZGVyKGEuRlJBR01FTlRfU0hBREVSKTtpZihhLmlzQ29udGV4dExvc3QoKSlyZXR1cm4gdm9pZCh0aGlzLmZhaWxlZFRvQ3JlYXRlPSEwKTthLnNoYWRlclNvdXJjZShtLGQpLGEuY29tcGlsZVNoYWRlcihtKSxhLmF0dGFjaFNoYWRlcih0aGlzLnByb2dyYW0sbSk7Y29uc3QgZj1hLmNyZWF0ZVNoYWRlcihhLlZFUlRFWF9TSEFERVIpO2lmKGEuaXNDb250ZXh0TG9zdCgpKXRoaXMuZmFpbGVkVG9DcmVhdGU9ITA7ZWxzZSB7YS5zaGFkZXJTb3VyY2UoZixwKSxhLmNvbXBpbGVTaGFkZXIoZiksYS5hdHRhY2hTaGFkZXIodGhpcy5wcm9ncmFtLGYpLHRoaXMuYXR0cmlidXRlcz17fSx0aGlzLm51bUF0dHJpYnV0ZXM9aC5sZW5ndGg7Zm9yKGxldCBlPTA7ZTx0aGlzLm51bUF0dHJpYnV0ZXM7ZSsrKWhbZV0mJihhLmJpbmRBdHRyaWJMb2NhdGlvbih0aGlzLnByb2dyYW0sZSxoW2VdKSx0aGlzLmF0dHJpYnV0ZXNbaFtlXV09ZSk7YS5saW5rUHJvZ3JhbSh0aGlzLnByb2dyYW0pLGEuZGVsZXRlU2hhZGVyKGYpLGEuZGVsZXRlU2hhZGVyKG0pLHRoaXMuZml4ZWRVbmlmb3Jtcz1uKHQpLHRoaXMuYmluZGVyVW5pZm9ybXM9cj9yLmdldFVuaWZvcm1zKHQpOltdLHMuaW5jbHVkZXMoXCJURVJSQUlOXCIpJiYodGhpcy50ZXJyYWluVW5pZm9ybXM9KHQ9Pih7dV9kZW06bmV3IGUuVW5pZm9ybTFpKHQpLHVfZGVtX3ByZXY6bmV3IGUuVW5pZm9ybTFpKHQpLHVfZGVtX3VucGFjazpuZXcgZS5Vbmlmb3JtNGYodCksdV9kZW1fdGw6bmV3IGUuVW5pZm9ybTJmKHQpLHVfZGVtX3NjYWxlOm5ldyBlLlVuaWZvcm0xZih0KSx1X2RlbV90bF9wcmV2Om5ldyBlLlVuaWZvcm0yZih0KSx1X2RlbV9zY2FsZV9wcmV2Om5ldyBlLlVuaWZvcm0xZih0KSx1X2RlbV9zaXplOm5ldyBlLlVuaWZvcm0xZih0KSx1X2RlbV9sZXJwOm5ldyBlLlVuaWZvcm0xZih0KSx1X2V4YWdnZXJhdGlvbjpuZXcgZS5Vbmlmb3JtMWYodCksdV9kZXB0aDpuZXcgZS5Vbmlmb3JtMWkodCksdV9kZXB0aF9zaXplX2ludjpuZXcgZS5Vbmlmb3JtMmYodCksdV9tZXRlcl90b19kZW06bmV3IGUuVW5pZm9ybTFmKHQpLHVfbGFiZWxfcGxhbmVfbWF0cml4X2ludjpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCl9KSkodCkpLHMuaW5jbHVkZXMoXCJHTE9CRVwiKSYmKHRoaXMuZ2xvYmVVbmlmb3Jtcz0odD0+KHt1X3RpbGVfdGxfdXA6bmV3IGUuVW5pZm9ybTNmKHQpLHVfdGlsZV90cl91cDpuZXcgZS5Vbmlmb3JtM2YodCksdV90aWxlX2JyX3VwOm5ldyBlLlVuaWZvcm0zZih0KSx1X3RpbGVfYmxfdXA6bmV3IGUuVW5pZm9ybTNmKHQpLHVfdGlsZV91cF9zY2FsZTpuZXcgZS5Vbmlmb3JtMWYodCl9KSkodCkpLHMuaW5jbHVkZXMoXCJGT0dcIikmJih0aGlzLmZvZ1VuaWZvcm1zPSh0PT4oe3VfZm9nX21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV9mb2dfcmFuZ2U6bmV3IGUuVW5pZm9ybTJmKHQpLHVfZm9nX2NvbG9yOm5ldyBlLlVuaWZvcm00Zih0KSx1X2ZvZ19ob3Jpem9uX2JsZW5kOm5ldyBlLlVuaWZvcm0xZih0KSx1X2ZvZ190ZW1wb3JhbF9vZmZzZXQ6bmV3IGUuVW5pZm9ybTFmKHQpLHVfZnJ1c3R1bV90bDpuZXcgZS5Vbmlmb3JtM2YodCksdV9mcnVzdHVtX3RyOm5ldyBlLlVuaWZvcm0zZih0KSx1X2ZydXN0dW1fYnI6bmV3IGUuVW5pZm9ybTNmKHQpLHVfZnJ1c3R1bV9ibDpuZXcgZS5Vbmlmb3JtM2YodCksdV9nbG9iZV9wb3M6bmV3IGUuVW5pZm9ybTNmKHQpLHVfZ2xvYmVfcmFkaXVzOm5ldyBlLlVuaWZvcm0xZih0KSx1X2dsb2JlX3RyYW5zaXRpb246bmV3IGUuVW5pZm9ybTFmKHQpLHVfaXNfZ2xvYmU6bmV3IGUuVW5pZm9ybTFpKHQpLHVfdmlld3BvcnQ6bmV3IGUuVW5pZm9ybTJmKHQpfSkpKHQpKTt9fXNldFRlcnJhaW5Vbmlmb3JtVmFsdWVzKGUsdCl7aWYoIXRoaXMudGVycmFpblVuaWZvcm1zKXJldHVybjtjb25zdCBpPXRoaXMudGVycmFpblVuaWZvcm1zO2lmKCF0aGlzLmZhaWxlZFRvQ3JlYXRlKXtlLnByb2dyYW0uc2V0KHRoaXMucHJvZ3JhbSk7Zm9yKGNvbnN0IGUgaW4gdClpW2VdJiZpW2VdLnNldCh0aGlzLnByb2dyYW0sZSx0W2VdKTt9fXNldEdsb2JlVW5pZm9ybVZhbHVlcyhlLHQpe2lmKCF0aGlzLmdsb2JlVW5pZm9ybXMpcmV0dXJuO2NvbnN0IGk9dGhpcy5nbG9iZVVuaWZvcm1zO2lmKCF0aGlzLmZhaWxlZFRvQ3JlYXRlKXtlLnByb2dyYW0uc2V0KHRoaXMucHJvZ3JhbSk7Zm9yKGNvbnN0IGUgaW4gdClpW2VdJiZpW2VdLnNldCh0aGlzLnByb2dyYW0sZSx0W2VdKTt9fXNldEZvZ1VuaWZvcm1WYWx1ZXMoZSx0KXtpZighdGhpcy5mb2dVbmlmb3JtcylyZXR1cm47Y29uc3QgaT10aGlzLmZvZ1VuaWZvcm1zO2lmKCF0aGlzLmZhaWxlZFRvQ3JlYXRlKXtlLnByb2dyYW0uc2V0KHRoaXMucHJvZ3JhbSk7Zm9yKGNvbnN0IGUgaW4gdClpW2VdLnNldCh0aGlzLnByb2dyYW0sZSx0W2VdKTt9fWRyYXcoZSx0LGksbyxyLG4scyxhLGwsYyxoLHUsXyxkLHApe2NvbnN0IG09ZS5nbDtpZih0aGlzLmZhaWxlZFRvQ3JlYXRlKXJldHVybjtlLnByb2dyYW0uc2V0KHRoaXMucHJvZ3JhbSksZS5zZXREZXB0aE1vZGUoaSksZS5zZXRTdGVuY2lsTW9kZShvKSxlLnNldENvbG9yTW9kZShyKSxlLnNldEN1bGxGYWNlKG4pO2Zvcihjb25zdCBlIG9mIE9iamVjdC5rZXlzKHRoaXMuZml4ZWRVbmlmb3JtcykpdGhpcy5maXhlZFVuaWZvcm1zW2VdLnNldCh0aGlzLnByb2dyYW0sZSxzW2VdKTtkJiZkLnNldFVuaWZvcm1zKHRoaXMucHJvZ3JhbSxlLHRoaXMuYmluZGVyVW5pZm9ybXMsdSx7em9vbTpffSk7Y29uc3QgZj17W20uTElORVNdOjIsW20uVFJJQU5HTEVTXTozLFttLkxJTkVfU1RSSVBdOjF9W3RdO2Zvcihjb25zdCBpIG9mIGguZ2V0KCkpe2NvbnN0IG89aS52YW9zfHwoaS52YW9zPXt9KTsob1thXXx8KG9bYV09bmV3IF9pKSkuYmluZChlLHRoaXMsbCxkP2QuZ2V0UGFpbnRWZXJ0ZXhCdWZmZXJzKCk6W10sYyxpLnZlcnRleE9mZnNldCxwfHxbXSksbS5kcmF3RWxlbWVudHModCxpLnByaW1pdGl2ZUxlbmd0aCpmLG0uVU5TSUdORURfU0hPUlQsaS5wcmltaXRpdmVPZmZzZXQqZioyKTt9fX1mdW5jdGlvbiBBaShlLHQpe2NvbnN0IGk9TWF0aC5wb3coMix0LnRpbGVJRC5vdmVyc2NhbGVkWiksbz10LnRpbGVTaXplKk1hdGgucG93KDIsZS50cmFuc2Zvcm0udGlsZVpvb20pL2kscj1vKih0LnRpbGVJRC5jYW5vbmljYWwueCt0LnRpbGVJRC53cmFwKmkpLG49byp0LnRpbGVJRC5jYW5vbmljYWwueTtyZXR1cm4ge3VfaW1hZ2U6MCx1X3RleHNpemU6dC5pbWFnZUF0bGFzVGV4dHVyZS5zaXplLHVfdGlsZV91bml0c190b19waXhlbHM6MS9EKHQsMSxlLnRyYW5zZm9ybS50aWxlWm9vbSksdV9waXhlbF9jb29yZF91cHBlcjpbcj4+MTYsbj4+MTZdLHVfcGl4ZWxfY29vcmRfbG93ZXI6WzY1NTM1JnIsNjU1MzUmbl19fWNvbnN0IHppPWUuY3JlYXRlKCksUmk9KHQsaSxvLHIsbixzLGEsbCxjLGgsdSk9Pntjb25zdCBfPWkuc3R5bGUubGlnaHQsZD1fLnByb3BlcnRpZXMuZ2V0KFwicG9zaXRpb25cIikscD1bZC54LGQueSxkLnpdLG09ZS5jcmVhdGUkMSgpO1widmlld3BvcnRcIj09PV8ucHJvcGVydGllcy5nZXQoXCJhbmNob3JcIikmJihlLmZyb21Sb3RhdGlvbihtLC1pLnRyYW5zZm9ybS5hbmdsZSksZS50cmFuc2Zvcm1NYXQzKHAscCxtKSk7Y29uc3QgZj1fLnByb3BlcnRpZXMuZ2V0KFwiY29sb3JcIiksZz1pLnRyYW5zZm9ybSx2PXt1X21hdHJpeDp0LHVfbGlnaHRwb3M6cCx1X2xpZ2h0aW50ZW5zaXR5Ol8ucHJvcGVydGllcy5nZXQoXCJpbnRlbnNpdHlcIiksdV9saWdodGNvbG9yOltmLnIsZi5nLGYuYl0sdV92ZXJ0aWNhbF9ncmFkaWVudDorbyx1X29wYWNpdHk6cix1X3RpbGVfaWQ6WzAsMCwwXSx1X3pvb21fdHJhbnNpdGlvbjowLHVfaW52X3JvdF9tYXRyaXg6emksdV9tZXJjX2NlbnRlcjpbMCwwXSx1X3VwX2RpcjpbMCwwLDBdLHVfaGVpZ2h0X2xpZnQ6MCx1X2FvOm4sdV9lZGdlX3JhZGl1czpzfTtyZXR1cm4gXCJnbG9iZVwiPT09Zy5wcm9qZWN0aW9uLm5hbWUmJih2LnVfdGlsZV9pZD1bYS5jYW5vbmljYWwueCxhLmNhbm9uaWNhbC55LDE8PGEuY2Fub25pY2FsLnpdLHYudV96b29tX3RyYW5zaXRpb249Yyx2LnVfaW52X3JvdF9tYXRyaXg9dSx2LnVfbWVyY19jZW50ZXI9aCx2LnVfdXBfZGlyPWcucHJvamVjdGlvbi51cFZlY3RvcihuZXcgZS5DYW5vbmljYWxUaWxlSUQoMCwwLDApLGhbMF0qZS5FWFRFTlQsaFsxXSplLkVYVEVOVCksdi51X2hlaWdodF9saWZ0PWwpLHZ9LE9pPSh0LGksbyxyLG4scyxhLGwsYyxoLHUsXyk9Pntjb25zdCBkPVJpKHQsaSxvLHIsbixzLGEsYyxoLHUsXykscD17dV9oZWlnaHRfZmFjdG9yOi1NYXRoLnBvdygyLGEub3ZlcnNjYWxlZFopL2wudGlsZVNpemUvOH07cmV0dXJuIGUuZXh0ZW5kKGQsQWkoaSxsKSxwKX0sQmk9ZT0+KHt1X21hdHJpeDplfSksa2k9KHQsaSxvKT0+ZS5leHRlbmQoQmkodCksQWkoaSxvKSksRmk9KGUsdCk9Pih7dV9tYXRyaXg6ZSx1X3dvcmxkOnR9KSxVaT0odCxpLG8scik9PmUuZXh0ZW5kKGtpKHQsaSxvKSx7dV93b3JsZDpyfSksTmk9ZS5jcmVhdGUoKSxqaT0odCxpLG8scixuLHMpPT57Y29uc3QgYT10LnRyYW5zZm9ybSxsPVwiZ2xvYmVcIj09PWEucHJvamVjdGlvbi5uYW1lO2xldCBjO2lmKFwibWFwXCI9PT1zLnBhaW50LmdldChcImNpcmNsZS1waXRjaC1hbGlnbm1lbnRcIikpaWYobCl7Y29uc3QgdD1lLmdsb2JlUGl4ZWxzVG9UaWxlVW5pdHMoYS56b29tLGkuY2Fub25pY2FsKSphLl9waXhlbHNQZXJNZXJjYXRvclBpeGVsO2M9RmxvYXQzMkFycmF5LmZyb20oW3QsMCwwLHRdKTt9ZWxzZSBjPWEuY2FsY3VsYXRlUGl4ZWxzVG9UaWxlVW5pdHNNYXRyaXgobyk7ZWxzZSBjPW5ldyBGbG9hdDMyQXJyYXkoW2EucGl4ZWxzVG9HTFVuaXRzWzBdLDAsMCxhLnBpeGVsc1RvR0xVbml0c1sxXV0pO2NvbnN0IGg9e3VfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTphLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UsdV9tYXRyaXg6dC50cmFuc2xhdGVQb3NNYXRyaXgoaS5wcm9qTWF0cml4LG8scy5wYWludC5nZXQoXCJjaXJjbGUtdHJhbnNsYXRlXCIpLHMucGFpbnQuZ2V0KFwiY2lyY2xlLXRyYW5zbGF0ZS1hbmNob3JcIikpLHVfZGV2aWNlX3BpeGVsX3JhdGlvOmUuZXhwb3J0ZWQuZGV2aWNlUGl4ZWxSYXRpbyx1X2V4dHJ1ZGVfc2NhbGU6Yyx1X2ludl9yb3RfbWF0cml4Ok5pLHVfbWVyY19jZW50ZXI6WzAsMF0sdV90aWxlX2lkOlswLDAsMF0sdV96b29tX3RyYW5zaXRpb246MCx1X3VwX2RpcjpbMCwwLDBdfTtpZihsKXtoLnVfaW52X3JvdF9tYXRyaXg9cixoLnVfbWVyY19jZW50ZXI9bixoLnVfdGlsZV9pZD1baS5jYW5vbmljYWwueCxpLmNhbm9uaWNhbC55LDE8PGkuY2Fub25pY2FsLnpdLGgudV96b29tX3RyYW5zaXRpb249ZS5nbG9iZVRvTWVyY2F0b3JUcmFuc2l0aW9uKGEuem9vbSk7Y29uc3QgdD1uWzBdKmUuRVhURU5ULG89blsxXSplLkVYVEVOVDtoLnVfdXBfZGlyPWEucHJvamVjdGlvbi51cFZlY3RvcihuZXcgZS5DYW5vbmljYWxUaWxlSUQoMCwwLDApLHQsbyk7fXJldHVybiBofSxHaT1lPT57Y29uc3QgdD1bXTtyZXR1cm4gXCJtYXBcIj09PWUucGFpbnQuZ2V0KFwiY2lyY2xlLXBpdGNoLWFsaWdubWVudFwiKSYmdC5wdXNoKFwiUElUQ0hfV0lUSF9NQVBcIiksXCJtYXBcIj09PWUucGFpbnQuZ2V0KFwiY2lyY2xlLXBpdGNoLXNjYWxlXCIpJiZ0LnB1c2goXCJTQ0FMRV9XSVRIX01BUFwiKSx0fSxaaT0odCxpLG8scik9Pntjb25zdCBuPWUuRVhURU5UL28udGlsZVNpemU7cmV0dXJuIHt1X21hdHJpeDp0LHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTppLmdldENhbWVyYVRvQ2VudGVyRGlzdGFuY2UociksdV9leHRydWRlX3NjYWxlOltpLnBpeGVsc1RvR0xVbml0c1swXS9uLGkucGl4ZWxzVG9HTFVuaXRzWzFdL25dfX0sVmk9KGUsdCxpPTEpPT4oe3VfbWF0cml4OmUsdV9jb2xvcjp0LHVfb3ZlcmxheTowLHVfb3ZlcmxheV9zY2FsZTppfSksV2k9ZS5jcmVhdGUoKSxYaT0odCxpLG8scixuLHMsYSk9Pntjb25zdCBsPXQudHJhbnNmb3JtLGM9XCJnbG9iZVwiPT09bC5wcm9qZWN0aW9uLm5hbWUsaD1jP2UuZ2xvYmVQaXhlbHNUb1RpbGVVbml0cyhsLnpvb20saS5jYW5vbmljYWwpKmwuX3BpeGVsc1Blck1lcmNhdG9yUGl4ZWw6RChvLDEscyksdT17dV9tYXRyaXg6aS5wcm9qTWF0cml4LHVfZXh0cnVkZV9zY2FsZTpoLHVfaW50ZW5zaXR5OmEsdV9pbnZfcm90X21hdHJpeDpXaSx1X21lcmNfY2VudGVyOlswLDBdLHVfdGlsZV9pZDpbMCwwLDBdLHVfem9vbV90cmFuc2l0aW9uOjAsdV91cF9kaXI6WzAsMCwwXX07aWYoYyl7dS51X2ludl9yb3RfbWF0cml4PXIsdS51X21lcmNfY2VudGVyPW4sdS51X3RpbGVfaWQ9W2kuY2Fub25pY2FsLngsaS5jYW5vbmljYWwueSwxPDxpLmNhbm9uaWNhbC56XSx1LnVfem9vbV90cmFuc2l0aW9uPWUuZ2xvYmVUb01lcmNhdG9yVHJhbnNpdGlvbihsLnpvb20pO2NvbnN0IHQ9blswXSplLkVYVEVOVCxvPW5bMV0qZS5FWFRFTlQ7dS51X3VwX2Rpcj1sLnByb2plY3Rpb24udXBWZWN0b3IobmV3IGUuQ2Fub25pY2FsVGlsZUlEKDAsMCwwKSx0LG8pO31yZXR1cm4gdX0scWk9KGUsdCxpLG8scixuLHMpPT57Y29uc3QgYT1lLnRyYW5zZm9ybSxsPWEuY2FsY3VsYXRlUGl4ZWxzVG9UaWxlVW5pdHNNYXRyaXgodCk7cmV0dXJuIHt1X21hdHJpeDpZaShlLHQsaSxvKSx1X3BpeGVsc190b190aWxlX3VuaXRzOmwsdV9kZXZpY2VfcGl4ZWxfcmF0aW86bix1X3VuaXRzX3RvX3BpeGVsczpbMS9hLnBpeGVsc1RvR0xVbml0c1swXSwxL2EucGl4ZWxzVG9HTFVuaXRzWzFdXSx1X2Rhc2hfaW1hZ2U6MCx1X2dyYWRpZW50X2ltYWdlOjEsdV9pbWFnZV9oZWlnaHQ6cix1X3RleHNpemU6S2koaSk/dC5saW5lQXRsYXNUZXh0dXJlLnNpemU6WzAsMF0sdV90aWxlX3VuaXRzX3RvX3BpeGVsczpIaSh0LGUudHJhbnNmb3JtKSx1X2FscGhhX2Rpc2NhcmRfdGhyZXNob2xkOjAsdV90cmltX29mZnNldDpzfX0sJGk9KGUsdCxpLG8scik9Pntjb25zdCBuPWUudHJhbnNmb3JtO3JldHVybiB7dV9tYXRyaXg6WWkoZSx0LGksbyksdV90ZXhzaXplOnQuaW1hZ2VBdGxhc1RleHR1cmUuc2l6ZSx1X3BpeGVsc190b190aWxlX3VuaXRzOm4uY2FsY3VsYXRlUGl4ZWxzVG9UaWxlVW5pdHNNYXRyaXgodCksdV9kZXZpY2VfcGl4ZWxfcmF0aW86cix1X2ltYWdlOjAsdV90aWxlX3VuaXRzX3RvX3BpeGVsczpIaSh0LG4pLHVfdW5pdHNfdG9fcGl4ZWxzOlsxL24ucGl4ZWxzVG9HTFVuaXRzWzBdLDEvbi5waXhlbHNUb0dMVW5pdHNbMV1dLHVfYWxwaGFfZGlzY2FyZF90aHJlc2hvbGQ6MH19O2Z1bmN0aW9uIEhpKGUsdCl7cmV0dXJuIDEvRChlLDEsdC50aWxlWm9vbSl9ZnVuY3Rpb24gWWkoZSx0LGksbyl7cmV0dXJuIGUudHJhbnNsYXRlUG9zTWF0cml4KG98fHQudGlsZUlELnByb2pNYXRyaXgsdCxpLnBhaW50LmdldChcImxpbmUtdHJhbnNsYXRlXCIpLGkucGFpbnQuZ2V0KFwibGluZS10cmFuc2xhdGUtYW5jaG9yXCIpKX1mdW5jdGlvbiBLaShlKXtjb25zdCB0PWUucGFpbnQuZ2V0KFwibGluZS1kYXNoYXJyYXlcIikudmFsdWU7cmV0dXJuIHQudmFsdWV8fFwiY29uc3RhbnRcIiE9PXQua2luZH1jb25zdCBKaT0oZSx0LGksbyxyLG4pPT57cmV0dXJuIHt1X21hdHJpeDplLHVfdGxfcGFyZW50OnQsdV9zY2FsZV9wYXJlbnQ6aSx1X2ZhZGVfdDpvLm1peCx1X29wYWNpdHk6by5vcGFjaXR5KnIucGFpbnQuZ2V0KFwicmFzdGVyLW9wYWNpdHlcIiksdV9pbWFnZTA6MCx1X2ltYWdlMToxLHVfYnJpZ2h0bmVzc19sb3c6ci5wYWludC5nZXQoXCJyYXN0ZXItYnJpZ2h0bmVzcy1taW5cIiksdV9icmlnaHRuZXNzX2hpZ2g6ci5wYWludC5nZXQoXCJyYXN0ZXItYnJpZ2h0bmVzcy1tYXhcIiksdV9zYXR1cmF0aW9uX2ZhY3RvcjooYT1yLnBhaW50LmdldChcInJhc3Rlci1zYXR1cmF0aW9uXCIpLGE+MD8xLTEvKDEuMDAxLWEpOi1hKSx1X2NvbnRyYXN0X2ZhY3Rvcjoocz1yLnBhaW50LmdldChcInJhc3Rlci1jb250cmFzdFwiKSxzPjA/MS8oMS1zKToxK3MpLHVfc3Bpbl93ZWlnaHRzOlFpKHIucGFpbnQuZ2V0KFwicmFzdGVyLWh1ZS1yb3RhdGVcIikpLHVfcGVyc3BlY3RpdmVfdHJhbnNmb3JtOm59O3ZhciBzLGE7fTtmdW5jdGlvbiBRaShlKXtlKj1NYXRoLlBJLzE4MDtjb25zdCB0PU1hdGguc2luKGUpLGk9TWF0aC5jb3MoZSk7cmV0dXJuIFsoMippKzEpLzMsKC1NYXRoLnNxcnQoMykqdC1pKzEpLzMsKE1hdGguc3FydCgzKSp0LWkrMSkvM119Y29uc3QgZW89ZS5jcmVhdGUoKSx0bz0odCxpLG8scixuLHMsYSxsLGMsaCx1LF8sZCxwLG0sZik9Pntjb25zdCBnPW4udHJhbnNmb3JtLHY9e3VfaXNfc2l6ZV96b29tX2NvbnN0YW50OisoXCJjb25zdGFudFwiPT09dHx8XCJzb3VyY2VcIj09PXQpLHVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50OisoXCJjb25zdGFudFwiPT09dHx8XCJjYW1lcmFcIj09PXQpLHVfc2l6ZV90Omk/aS51U2l6ZVQ6MCx1X3NpemU6aT9pLnVTaXplOjAsdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlOmcuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSx1X3JvdGF0ZV9zeW1ib2w6K28sdV9hc3BlY3RfcmF0aW86Zy53aWR0aC9nLmhlaWdodCx1X2ZhZGVfY2hhbmdlOm4ub3B0aW9ucy5mYWRlRHVyYXRpb24/bi5zeW1ib2xGYWRlQ2hhbmdlOjEsdV9tYXRyaXg6cyx1X2xhYmVsX3BsYW5lX21hdHJpeDphLHVfY29vcmRfbWF0cml4OmwsdV9pc190ZXh0OitjLHVfcGl0Y2hfd2l0aF9tYXA6K3IsdV90ZXhzaXplOmgsdV90ZXh0dXJlOjAsdV90aWxlX2lkOlswLDAsMF0sdV96b29tX3RyYW5zaXRpb246MCx1X2ludl9yb3RfbWF0cml4OmVvLHVfbWVyY19jZW50ZXI6WzAsMF0sdV9jYW1lcmFfZm9yd2FyZDpbMCwwLDBdLHVfZWNlZl9vcmlnaW46WzAsMCwwXSx1X3RpbGVfbWF0cml4OmVvLHVfdXBfdmVjdG9yOlswLC0xLDBdfTtyZXR1cm4gXCJnbG9iZVwiPT09Zi5uYW1lJiYodi51X3RpbGVfaWQ9W3UuY2Fub25pY2FsLngsdS5jYW5vbmljYWwueSwxPDx1LmNhbm9uaWNhbC56XSx2LnVfem9vbV90cmFuc2l0aW9uPV8sdi51X2ludl9yb3RfbWF0cml4PXAsdi51X21lcmNfY2VudGVyPWQsdi51X2NhbWVyYV9mb3J3YXJkPWcuX2NhbWVyYS5mb3J3YXJkKCksdi51X2VjZWZfb3JpZ2luPWUuZ2xvYmVFQ0VGT3JpZ2luKGcuZ2xvYmVNYXRyaXgsdS50b1Vud3JhcHBlZCgpKSx2LnVfdGlsZV9tYXRyaXg9RmxvYXQzMkFycmF5LmZyb20oZy5nbG9iZU1hdHJpeCksdi51X3VwX3ZlY3Rvcj1tKSx2fSxpbz0odCxpLG8scixuLHMsYSxsLGMsaCx1LF8sZCxwLG0sZixnKT0+ZS5leHRlbmQodG8odCxpLG8scixuLHMsYSxsLGMsaCxfLGQscCxtLGYsZykse3VfZ2FtbWFfc2NhbGU6cj9uLnRyYW5zZm9ybS5jYW1lcmFUb0NlbnRlckRpc3RhbmNlKk1hdGguY29zKG4udGVycmFpbj8wOm4udHJhbnNmb3JtLl9waXRjaCk6MSx1X2RldmljZV9waXhlbF9yYXRpbzplLmV4cG9ydGVkLmRldmljZVBpeGVsUmF0aW8sdV9pc19oYWxvOit1fSksb289KHQsaSxvLHIsbixzLGEsbCxjLGgsdSxfLGQscCxtLGYpPT5lLmV4dGVuZChpbyh0LGksbyxyLG4scyxhLGwsITAsYywhMCx1LF8sZCxwLG0sZikse3VfdGV4c2l6ZV9pY29uOmgsdV90ZXh0dXJlX2ljb246MX0pLHJvPShlLHQsaSk9Pih7dV9tYXRyaXg6ZSx1X29wYWNpdHk6dCx1X2NvbG9yOml9KSxubz0odCxpLG8scixuKT0+ZS5leHRlbmQoZnVuY3Rpb24oZSx0LGkpe2NvbnN0IG89dC5pbWFnZU1hbmFnZXIuZ2V0UGF0dGVybihlLnRvU3RyaW5nKCkpLHt3aWR0aDpyLGhlaWdodDpufT10LmltYWdlTWFuYWdlci5nZXRQaXhlbFNpemUoKSxzPU1hdGgucG93KDIsaS50aWxlSUQub3ZlcnNjYWxlZFopLGE9aS50aWxlU2l6ZSpNYXRoLnBvdygyLHQudHJhbnNmb3JtLnRpbGVab29tKS9zLGw9YSooaS50aWxlSUQuY2Fub25pY2FsLngraS50aWxlSUQud3JhcCpzKSxjPWEqaS50aWxlSUQuY2Fub25pY2FsLnk7cmV0dXJuIHt1X2ltYWdlOjAsdV9wYXR0ZXJuX3RsOm8udGwsdV9wYXR0ZXJuX2JyOm8uYnIsdV90ZXhzaXplOltyLG5dLHVfcGF0dGVybl9zaXplOm8uZGlzcGxheVNpemUsdV90aWxlX3VuaXRzX3RvX3BpeGVsczoxL0QoaSwxLHQudHJhbnNmb3JtLnRpbGVab29tKSx1X3BpeGVsX2Nvb3JkX3VwcGVyOltsPj4xNixjPj4xNl0sdV9waXhlbF9jb29yZF9sb3dlcjpbNjU1MzUmbCw2NTUzNSZjXX19KHIsbyxuKSx7dV9tYXRyaXg6dCx1X29wYWNpdHk6aX0pLHNvPXtmaWxsRXh0cnVzaW9uOnQ9Pih7dV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfbGlnaHRwb3M6bmV3IGUuVW5pZm9ybTNmKHQpLHVfbGlnaHRpbnRlbnNpdHk6bmV3IGUuVW5pZm9ybTFmKHQpLHVfbGlnaHRjb2xvcjpuZXcgZS5Vbmlmb3JtM2YodCksdV92ZXJ0aWNhbF9ncmFkaWVudDpuZXcgZS5Vbmlmb3JtMWYodCksdV9vcGFjaXR5Om5ldyBlLlVuaWZvcm0xZih0KSx1X2VkZ2VfcmFkaXVzOm5ldyBlLlVuaWZvcm0xZih0KSx1X2FvOm5ldyBlLlVuaWZvcm0yZih0KSx1X3RpbGVfaWQ6bmV3IGUuVW5pZm9ybTNmKHQpLHVfem9vbV90cmFuc2l0aW9uOm5ldyBlLlVuaWZvcm0xZih0KSx1X2ludl9yb3RfbWF0cml4Om5ldyBlLlVuaWZvcm1NYXRyaXg0Zih0KSx1X21lcmNfY2VudGVyOm5ldyBlLlVuaWZvcm0yZih0KSx1X3VwX2RpcjpuZXcgZS5Vbmlmb3JtM2YodCksdV9oZWlnaHRfbGlmdDpuZXcgZS5Vbmlmb3JtMWYodCl9KSxmaWxsRXh0cnVzaW9uUGF0dGVybjp0PT4oe3VfbWF0cml4Om5ldyBlLlVuaWZvcm1NYXRyaXg0Zih0KSx1X2xpZ2h0cG9zOm5ldyBlLlVuaWZvcm0zZih0KSx1X2xpZ2h0aW50ZW5zaXR5Om5ldyBlLlVuaWZvcm0xZih0KSx1X2xpZ2h0Y29sb3I6bmV3IGUuVW5pZm9ybTNmKHQpLHVfdmVydGljYWxfZ3JhZGllbnQ6bmV3IGUuVW5pZm9ybTFmKHQpLHVfaGVpZ2h0X2ZhY3RvcjpuZXcgZS5Vbmlmb3JtMWYodCksdV9lZGdlX3JhZGl1czpuZXcgZS5Vbmlmb3JtMWYodCksdV9hbzpuZXcgZS5Vbmlmb3JtMmYodCksdV90aWxlX2lkOm5ldyBlLlVuaWZvcm0zZih0KSx1X3pvb21fdHJhbnNpdGlvbjpuZXcgZS5Vbmlmb3JtMWYodCksdV9pbnZfcm90X21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV9tZXJjX2NlbnRlcjpuZXcgZS5Vbmlmb3JtMmYodCksdV91cF9kaXI6bmV3IGUuVW5pZm9ybTNmKHQpLHVfaGVpZ2h0X2xpZnQ6bmV3IGUuVW5pZm9ybTFmKHQpLHVfaW1hZ2U6bmV3IGUuVW5pZm9ybTFpKHQpLHVfdGV4c2l6ZTpuZXcgZS5Vbmlmb3JtMmYodCksdV9waXhlbF9jb29yZF91cHBlcjpuZXcgZS5Vbmlmb3JtMmYodCksdV9waXhlbF9jb29yZF9sb3dlcjpuZXcgZS5Vbmlmb3JtMmYodCksdV90aWxlX3VuaXRzX3RvX3BpeGVsczpuZXcgZS5Vbmlmb3JtMWYodCksdV9vcGFjaXR5Om5ldyBlLlVuaWZvcm0xZih0KX0pLGZpbGw6dD0+KHt1X21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCl9KSxmaWxsUGF0dGVybjp0PT4oe3VfbWF0cml4Om5ldyBlLlVuaWZvcm1NYXRyaXg0Zih0KSx1X2ltYWdlOm5ldyBlLlVuaWZvcm0xaSh0KSx1X3RleHNpemU6bmV3IGUuVW5pZm9ybTJmKHQpLHVfcGl4ZWxfY29vcmRfdXBwZXI6bmV3IGUuVW5pZm9ybTJmKHQpLHVfcGl4ZWxfY29vcmRfbG93ZXI6bmV3IGUuVW5pZm9ybTJmKHQpLHVfdGlsZV91bml0c190b19waXhlbHM6bmV3IGUuVW5pZm9ybTFmKHQpfSksZmlsbE91dGxpbmU6dD0+KHt1X21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV93b3JsZDpuZXcgZS5Vbmlmb3JtMmYodCl9KSxmaWxsT3V0bGluZVBhdHRlcm46dD0+KHt1X21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV93b3JsZDpuZXcgZS5Vbmlmb3JtMmYodCksdV9pbWFnZTpuZXcgZS5Vbmlmb3JtMWkodCksdV90ZXhzaXplOm5ldyBlLlVuaWZvcm0yZih0KSx1X3BpeGVsX2Nvb3JkX3VwcGVyOm5ldyBlLlVuaWZvcm0yZih0KSx1X3BpeGVsX2Nvb3JkX2xvd2VyOm5ldyBlLlVuaWZvcm0yZih0KSx1X3RpbGVfdW5pdHNfdG9fcGl4ZWxzOm5ldyBlLlVuaWZvcm0xZih0KX0pLGNpcmNsZTp0PT4oe3VfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTpuZXcgZS5Vbmlmb3JtMWYodCksdV9leHRydWRlX3NjYWxlOm5ldyBlLlVuaWZvcm1NYXRyaXgyZih0KSx1X2RldmljZV9waXhlbF9yYXRpbzpuZXcgZS5Vbmlmb3JtMWYodCksdV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfaW52X3JvdF9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfbWVyY19jZW50ZXI6bmV3IGUuVW5pZm9ybTJmKHQpLHVfdGlsZV9pZDpuZXcgZS5Vbmlmb3JtM2YodCksdV96b29tX3RyYW5zaXRpb246bmV3IGUuVW5pZm9ybTFmKHQpLHVfdXBfZGlyOm5ldyBlLlVuaWZvcm0zZih0KX0pLGNvbGxpc2lvbkJveDp0PT4oe3VfbWF0cml4Om5ldyBlLlVuaWZvcm1NYXRyaXg0Zih0KSx1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U6bmV3IGUuVW5pZm9ybTFmKHQpLHVfZXh0cnVkZV9zY2FsZTpuZXcgZS5Vbmlmb3JtMmYodCl9KSxjb2xsaXNpb25DaXJjbGU6dD0+KHt1X21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV9pbnZfbWF0cml4Om5ldyBlLlVuaWZvcm1NYXRyaXg0Zih0KSx1X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2U6bmV3IGUuVW5pZm9ybTFmKHQpLHVfdmlld3BvcnRfc2l6ZTpuZXcgZS5Vbmlmb3JtMmYodCl9KSxkZWJ1Zzp0PT4oe3VfY29sb3I6bmV3IGUuVW5pZm9ybUNvbG9yKHQpLHVfbWF0cml4Om5ldyBlLlVuaWZvcm1NYXRyaXg0Zih0KSx1X292ZXJsYXk6bmV3IGUuVW5pZm9ybTFpKHQpLHVfb3ZlcmxheV9zY2FsZTpuZXcgZS5Vbmlmb3JtMWYodCl9KSxjbGlwcGluZ01hc2s6dD0+KHt1X21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCl9KSxoZWF0bWFwOnQ9Pih7dV9leHRydWRlX3NjYWxlOm5ldyBlLlVuaWZvcm0xZih0KSx1X2ludGVuc2l0eTpuZXcgZS5Vbmlmb3JtMWYodCksdV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfaW52X3JvdF9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfbWVyY19jZW50ZXI6bmV3IGUuVW5pZm9ybTJmKHQpLHVfdGlsZV9pZDpuZXcgZS5Vbmlmb3JtM2YodCksdV96b29tX3RyYW5zaXRpb246bmV3IGUuVW5pZm9ybTFmKHQpLHVfdXBfZGlyOm5ldyBlLlVuaWZvcm0zZih0KX0pLGhlYXRtYXBUZXh0dXJlOnQ9Pih7dV9pbWFnZTpuZXcgZS5Vbmlmb3JtMWkodCksdV9jb2xvcl9yYW1wOm5ldyBlLlVuaWZvcm0xaSh0KSx1X29wYWNpdHk6bmV3IGUuVW5pZm9ybTFmKHQpfSksaGlsbHNoYWRlOnQ9Pih7dV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfaW1hZ2U6bmV3IGUuVW5pZm9ybTFpKHQpLHVfbGF0cmFuZ2U6bmV3IGUuVW5pZm9ybTJmKHQpLHVfbGlnaHQ6bmV3IGUuVW5pZm9ybTJmKHQpLHVfc2hhZG93Om5ldyBlLlVuaWZvcm1Db2xvcih0KSx1X2hpZ2hsaWdodDpuZXcgZS5Vbmlmb3JtQ29sb3IodCksdV9hY2NlbnQ6bmV3IGUuVW5pZm9ybUNvbG9yKHQpfSksaGlsbHNoYWRlUHJlcGFyZTp0PT4oe3VfbWF0cml4Om5ldyBlLlVuaWZvcm1NYXRyaXg0Zih0KSx1X2ltYWdlOm5ldyBlLlVuaWZvcm0xaSh0KSx1X2RpbWVuc2lvbjpuZXcgZS5Vbmlmb3JtMmYodCksdV96b29tOm5ldyBlLlVuaWZvcm0xZih0KSx1X3VucGFjazpuZXcgZS5Vbmlmb3JtNGYodCl9KSxsaW5lOnQ9Pih7dV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfcGl4ZWxzX3RvX3RpbGVfdW5pdHM6bmV3IGUuVW5pZm9ybU1hdHJpeDJmKHQpLHVfZGV2aWNlX3BpeGVsX3JhdGlvOm5ldyBlLlVuaWZvcm0xZih0KSx1X3VuaXRzX3RvX3BpeGVsczpuZXcgZS5Vbmlmb3JtMmYodCksdV9kYXNoX2ltYWdlOm5ldyBlLlVuaWZvcm0xaSh0KSx1X2dyYWRpZW50X2ltYWdlOm5ldyBlLlVuaWZvcm0xaSh0KSx1X2ltYWdlX2hlaWdodDpuZXcgZS5Vbmlmb3JtMWYodCksdV90ZXhzaXplOm5ldyBlLlVuaWZvcm0yZih0KSx1X3RpbGVfdW5pdHNfdG9fcGl4ZWxzOm5ldyBlLlVuaWZvcm0xZih0KSx1X2FscGhhX2Rpc2NhcmRfdGhyZXNob2xkOm5ldyBlLlVuaWZvcm0xZih0KSx1X3RyaW1fb2Zmc2V0Om5ldyBlLlVuaWZvcm0yZih0KX0pLGxpbmVQYXR0ZXJuOnQ9Pih7dV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfdGV4c2l6ZTpuZXcgZS5Vbmlmb3JtMmYodCksdV9waXhlbHNfdG9fdGlsZV91bml0czpuZXcgZS5Vbmlmb3JtTWF0cml4MmYodCksdV9kZXZpY2VfcGl4ZWxfcmF0aW86bmV3IGUuVW5pZm9ybTFmKHQpLHVfaW1hZ2U6bmV3IGUuVW5pZm9ybTFpKHQpLHVfdW5pdHNfdG9fcGl4ZWxzOm5ldyBlLlVuaWZvcm0yZih0KSx1X3RpbGVfdW5pdHNfdG9fcGl4ZWxzOm5ldyBlLlVuaWZvcm0xZih0KSx1X2FscGhhX2Rpc2NhcmRfdGhyZXNob2xkOm5ldyBlLlVuaWZvcm0xZih0KX0pLHJhc3Rlcjp0PT4oe3VfbWF0cml4Om5ldyBlLlVuaWZvcm1NYXRyaXg0Zih0KSx1X3RsX3BhcmVudDpuZXcgZS5Vbmlmb3JtMmYodCksdV9zY2FsZV9wYXJlbnQ6bmV3IGUuVW5pZm9ybTFmKHQpLHVfZmFkZV90Om5ldyBlLlVuaWZvcm0xZih0KSx1X29wYWNpdHk6bmV3IGUuVW5pZm9ybTFmKHQpLHVfaW1hZ2UwOm5ldyBlLlVuaWZvcm0xaSh0KSx1X2ltYWdlMTpuZXcgZS5Vbmlmb3JtMWkodCksdV9icmlnaHRuZXNzX2xvdzpuZXcgZS5Vbmlmb3JtMWYodCksdV9icmlnaHRuZXNzX2hpZ2g6bmV3IGUuVW5pZm9ybTFmKHQpLHVfc2F0dXJhdGlvbl9mYWN0b3I6bmV3IGUuVW5pZm9ybTFmKHQpLHVfY29udHJhc3RfZmFjdG9yOm5ldyBlLlVuaWZvcm0xZih0KSx1X3NwaW5fd2VpZ2h0czpuZXcgZS5Vbmlmb3JtM2YodCksdV9wZXJzcGVjdGl2ZV90cmFuc2Zvcm06bmV3IGUuVW5pZm9ybTJmKHQpfSksc3ltYm9sSWNvbjp0PT4oe3VfaXNfc2l6ZV96b29tX2NvbnN0YW50Om5ldyBlLlVuaWZvcm0xaSh0KSx1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudDpuZXcgZS5Vbmlmb3JtMWkodCksdV9zaXplX3Q6bmV3IGUuVW5pZm9ybTFmKHQpLHVfc2l6ZTpuZXcgZS5Vbmlmb3JtMWYodCksdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlOm5ldyBlLlVuaWZvcm0xZih0KSx1X3JvdGF0ZV9zeW1ib2w6bmV3IGUuVW5pZm9ybTFpKHQpLHVfYXNwZWN0X3JhdGlvOm5ldyBlLlVuaWZvcm0xZih0KSx1X2ZhZGVfY2hhbmdlOm5ldyBlLlVuaWZvcm0xZih0KSx1X21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV9sYWJlbF9wbGFuZV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfY29vcmRfbWF0cml4Om5ldyBlLlVuaWZvcm1NYXRyaXg0Zih0KSx1X2lzX3RleHQ6bmV3IGUuVW5pZm9ybTFpKHQpLHVfcGl0Y2hfd2l0aF9tYXA6bmV3IGUuVW5pZm9ybTFpKHQpLHVfdGV4c2l6ZTpuZXcgZS5Vbmlmb3JtMmYodCksdV90aWxlX2lkOm5ldyBlLlVuaWZvcm0zZih0KSx1X3pvb21fdHJhbnNpdGlvbjpuZXcgZS5Vbmlmb3JtMWYodCksdV9pbnZfcm90X21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV9tZXJjX2NlbnRlcjpuZXcgZS5Vbmlmb3JtMmYodCksdV9jYW1lcmFfZm9yd2FyZDpuZXcgZS5Vbmlmb3JtM2YodCksdV90aWxlX21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV91cF92ZWN0b3I6bmV3IGUuVW5pZm9ybTNmKHQpLHVfZWNlZl9vcmlnaW46bmV3IGUuVW5pZm9ybTNmKHQpLHVfdGV4dHVyZTpuZXcgZS5Vbmlmb3JtMWkodCl9KSxzeW1ib2xTREY6dD0+KHt1X2lzX3NpemVfem9vbV9jb25zdGFudDpuZXcgZS5Vbmlmb3JtMWkodCksdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQ6bmV3IGUuVW5pZm9ybTFpKHQpLHVfc2l6ZV90Om5ldyBlLlVuaWZvcm0xZih0KSx1X3NpemU6bmV3IGUuVW5pZm9ybTFmKHQpLHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTpuZXcgZS5Vbmlmb3JtMWYodCksdV9yb3RhdGVfc3ltYm9sOm5ldyBlLlVuaWZvcm0xaSh0KSx1X2FzcGVjdF9yYXRpbzpuZXcgZS5Vbmlmb3JtMWYodCksdV9mYWRlX2NoYW5nZTpuZXcgZS5Vbmlmb3JtMWYodCksdV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfbGFiZWxfcGxhbmVfbWF0cml4Om5ldyBlLlVuaWZvcm1NYXRyaXg0Zih0KSx1X2Nvb3JkX21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV9pc190ZXh0Om5ldyBlLlVuaWZvcm0xaSh0KSx1X3BpdGNoX3dpdGhfbWFwOm5ldyBlLlVuaWZvcm0xaSh0KSx1X3RleHNpemU6bmV3IGUuVW5pZm9ybTJmKHQpLHVfdGV4dHVyZTpuZXcgZS5Vbmlmb3JtMWkodCksdV9nYW1tYV9zY2FsZTpuZXcgZS5Vbmlmb3JtMWYodCksdV9kZXZpY2VfcGl4ZWxfcmF0aW86bmV3IGUuVW5pZm9ybTFmKHQpLHVfdGlsZV9pZDpuZXcgZS5Vbmlmb3JtM2YodCksdV96b29tX3RyYW5zaXRpb246bmV3IGUuVW5pZm9ybTFmKHQpLHVfaW52X3JvdF9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfbWVyY19jZW50ZXI6bmV3IGUuVW5pZm9ybTJmKHQpLHVfY2FtZXJhX2ZvcndhcmQ6bmV3IGUuVW5pZm9ybTNmKHQpLHVfdGlsZV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfdXBfdmVjdG9yOm5ldyBlLlVuaWZvcm0zZih0KSx1X2VjZWZfb3JpZ2luOm5ldyBlLlVuaWZvcm0zZih0KSx1X2lzX2hhbG86bmV3IGUuVW5pZm9ybTFpKHQpfSksc3ltYm9sVGV4dEFuZEljb246dD0+KHt1X2lzX3NpemVfem9vbV9jb25zdGFudDpuZXcgZS5Vbmlmb3JtMWkodCksdV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQ6bmV3IGUuVW5pZm9ybTFpKHQpLHVfc2l6ZV90Om5ldyBlLlVuaWZvcm0xZih0KSx1X3NpemU6bmV3IGUuVW5pZm9ybTFmKHQpLHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTpuZXcgZS5Vbmlmb3JtMWYodCksdV9yb3RhdGVfc3ltYm9sOm5ldyBlLlVuaWZvcm0xaSh0KSx1X2FzcGVjdF9yYXRpbzpuZXcgZS5Vbmlmb3JtMWYodCksdV9mYWRlX2NoYW5nZTpuZXcgZS5Vbmlmb3JtMWYodCksdV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfbGFiZWxfcGxhbmVfbWF0cml4Om5ldyBlLlVuaWZvcm1NYXRyaXg0Zih0KSx1X2Nvb3JkX21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV9pc190ZXh0Om5ldyBlLlVuaWZvcm0xaSh0KSx1X3BpdGNoX3dpdGhfbWFwOm5ldyBlLlVuaWZvcm0xaSh0KSx1X3RleHNpemU6bmV3IGUuVW5pZm9ybTJmKHQpLHVfdGV4c2l6ZV9pY29uOm5ldyBlLlVuaWZvcm0yZih0KSx1X3RleHR1cmU6bmV3IGUuVW5pZm9ybTFpKHQpLHVfdGV4dHVyZV9pY29uOm5ldyBlLlVuaWZvcm0xaSh0KSx1X2dhbW1hX3NjYWxlOm5ldyBlLlVuaWZvcm0xZih0KSx1X2RldmljZV9waXhlbF9yYXRpbzpuZXcgZS5Vbmlmb3JtMWYodCksdV9pc19oYWxvOm5ldyBlLlVuaWZvcm0xaSh0KX0pLGJhY2tncm91bmQ6dD0+KHt1X21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV9vcGFjaXR5Om5ldyBlLlVuaWZvcm0xZih0KSx1X2NvbG9yOm5ldyBlLlVuaWZvcm1Db2xvcih0KX0pLGJhY2tncm91bmRQYXR0ZXJuOnQ9Pih7dV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfb3BhY2l0eTpuZXcgZS5Vbmlmb3JtMWYodCksdV9pbWFnZTpuZXcgZS5Vbmlmb3JtMWkodCksdV9wYXR0ZXJuX3RsOm5ldyBlLlVuaWZvcm0yZih0KSx1X3BhdHRlcm5fYnI6bmV3IGUuVW5pZm9ybTJmKHQpLHVfdGV4c2l6ZTpuZXcgZS5Vbmlmb3JtMmYodCksdV9wYXR0ZXJuX3NpemU6bmV3IGUuVW5pZm9ybTJmKHQpLHVfcGl4ZWxfY29vcmRfdXBwZXI6bmV3IGUuVW5pZm9ybTJmKHQpLHVfcGl4ZWxfY29vcmRfbG93ZXI6bmV3IGUuVW5pZm9ybTJmKHQpLHVfdGlsZV91bml0c190b19waXhlbHM6bmV3IGUuVW5pZm9ybTFmKHQpfSksdGVycmFpblJhc3RlcjpnaSx0ZXJyYWluRGVwdGg6Z2ksc2t5Ym94OnQ9Pih7dV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfc3VuX2RpcmVjdGlvbjpuZXcgZS5Vbmlmb3JtM2YodCksdV9jdWJlbWFwOm5ldyBlLlVuaWZvcm0xaSh0KSx1X29wYWNpdHk6bmV3IGUuVW5pZm9ybTFmKHQpLHVfdGVtcG9yYWxfb2Zmc2V0Om5ldyBlLlVuaWZvcm0xZih0KX0pLHNreWJveEdyYWRpZW50OnQ9Pih7dV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfY29sb3JfcmFtcDpuZXcgZS5Vbmlmb3JtMWkodCksdV9jZW50ZXJfZGlyZWN0aW9uOm5ldyBlLlVuaWZvcm0zZih0KSx1X3JhZGl1czpuZXcgZS5Vbmlmb3JtMWYodCksdV9vcGFjaXR5Om5ldyBlLlVuaWZvcm0xZih0KSx1X3RlbXBvcmFsX29mZnNldDpuZXcgZS5Vbmlmb3JtMWYodCl9KSxza3lib3hDYXB0dXJlOnQ9Pih7dV9tYXRyaXhfM2Y6bmV3IGUuVW5pZm9ybU1hdHJpeDNmKHQpLHVfc3VuX2RpcmVjdGlvbjpuZXcgZS5Vbmlmb3JtM2YodCksdV9zdW5faW50ZW5zaXR5Om5ldyBlLlVuaWZvcm0xZih0KSx1X2NvbG9yX3RpbnRfcjpuZXcgZS5Vbmlmb3JtNGYodCksdV9jb2xvcl90aW50X206bmV3IGUuVW5pZm9ybTRmKHQpLHVfbHVtaW5hbmNlOm5ldyBlLlVuaWZvcm0xZih0KX0pLGdsb2JlUmFzdGVyOnQ9Pih7dV9wcm9qX21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV9nbG9iZV9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpLHVfbm9ybWFsaXplX21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV9tZXJjX21hdHJpeDpuZXcgZS5Vbmlmb3JtTWF0cml4NGYodCksdV96b29tX3RyYW5zaXRpb246bmV3IGUuVW5pZm9ybTFmKHQpLHVfbWVyY19jZW50ZXI6bmV3IGUuVW5pZm9ybTJmKHQpLHVfaW1hZ2UwOm5ldyBlLlVuaWZvcm0xaSh0KSx1X2dyaWRfbWF0cml4Om5ldyBlLlVuaWZvcm1NYXRyaXgzZih0KSx1X3NraXJ0X2hlaWdodDpuZXcgZS5Vbmlmb3JtMWYodCksdV9mcnVzdHVtX3RsOm5ldyBlLlVuaWZvcm0zZih0KSx1X2ZydXN0dW1fdHI6bmV3IGUuVW5pZm9ybTNmKHQpLHVfZnJ1c3R1bV9icjpuZXcgZS5Vbmlmb3JtM2YodCksdV9mcnVzdHVtX2JsOm5ldyBlLlVuaWZvcm0zZih0KSx1X2dsb2JlX3BvczpuZXcgZS5Vbmlmb3JtM2YodCksdV9nbG9iZV9yYWRpdXM6bmV3IGUuVW5pZm9ybTFmKHQpLHVfdmlld3BvcnQ6bmV3IGUuVW5pZm9ybTJmKHQpfSksZ2xvYmVBdG1vc3BoZXJlOnQ9Pih7dV9mcnVzdHVtX3RsOm5ldyBlLlVuaWZvcm0zZih0KSx1X2ZydXN0dW1fdHI6bmV3IGUuVW5pZm9ybTNmKHQpLHVfZnJ1c3R1bV9icjpuZXcgZS5Vbmlmb3JtM2YodCksdV9mcnVzdHVtX2JsOm5ldyBlLlVuaWZvcm0zZih0KSx1X2hvcml6b246bmV3IGUuVW5pZm9ybTFmKHQpLHVfdHJhbnNpdGlvbjpuZXcgZS5Vbmlmb3JtMWYodCksdV9mYWRlb3V0X3JhbmdlOm5ldyBlLlVuaWZvcm0xZih0KSx1X2NvbG9yOm5ldyBlLlVuaWZvcm00Zih0KSx1X2hpZ2hfY29sb3I6bmV3IGUuVW5pZm9ybTRmKHQpLHVfc3BhY2VfY29sb3I6bmV3IGUuVW5pZm9ybTRmKHQpLHVfc3Rhcl9pbnRlbnNpdHk6bmV3IGUuVW5pZm9ybTFmKHQpLHVfc3Rhcl9kZW5zaXR5Om5ldyBlLlVuaWZvcm0xZih0KSx1X3N0YXJfc2l6ZTpuZXcgZS5Vbmlmb3JtMWYodCksdV90ZW1wb3JhbF9vZmZzZXQ6bmV3IGUuVW5pZm9ybTFmKHQpLHVfaG9yaXpvbl9hbmdsZTpuZXcgZS5Vbmlmb3JtMWYodCksdV9yb3RhdGlvbl9tYXRyaXg6bmV3IGUuVW5pZm9ybU1hdHJpeDRmKHQpfSl9O2xldCBhbztmdW5jdGlvbiBsbyh0LGksbyxyLG4scyxhKXtjb25zdCBsPXQuY29udGV4dCxjPWwuZ2wsaD10LnRyYW5zZm9ybSx1PXQudXNlUHJvZ3JhbShcImNvbGxpc2lvbkJveFwiKSxfPVtdO2xldCBkPTAscD0wO2ZvcihsZXQgbT0wO208ci5sZW5ndGg7bSsrKXtjb25zdCBmPXJbbV0sZz1pLmdldFRpbGUoZiksdj1nLmdldEJ1Y2tldChvKTtpZighdiljb250aW51ZTtjb25zdCB4PXZ0KGYsdixoKTtsZXQgeT14OzA9PT1uWzBdJiYwPT09blsxXXx8KHk9dC50cmFuc2xhdGVQb3NNYXRyaXgoeCxnLG4scykpO2NvbnN0IGI9YT92LnRleHRDb2xsaXNpb25Cb3g6di5pY29uQ29sbGlzaW9uQm94LHc9di5jb2xsaXNpb25DaXJjbGVBcnJheTtpZih3Lmxlbmd0aD4wKXtjb25zdCB0PWUuY3JlYXRlKCksaT15O2UubXVsKHQsdi5wbGFjZW1lbnRJbnZQcm9qTWF0cml4LGguZ2xDb29yZE1hdHJpeCksZS5tdWwodCx0LHYucGxhY2VtZW50Vmlld3BvcnRNYXRyaXgpLF8ucHVzaCh7Y2lyY2xlQXJyYXk6dyxjaXJjbGVPZmZzZXQ6cCx0cmFuc2Zvcm06aSxpbnZUcmFuc2Zvcm06dCxwcm9qZWN0aW9uOnYuZ2V0UHJvamVjdGlvbigpfSksZCs9dy5sZW5ndGgvNCxwPWQ7fWImJih0LnRlcnJhaW4mJnQudGVycmFpbi5zZXR1cEVsZXZhdGlvbkRyYXcoZyx1KSx1LmRyYXcobCxjLkxJTkVTLGUuRGVwdGhNb2RlLmRpc2FibGVkLGUuU3RlbmNpbE1vZGUuZGlzYWJsZWQsdC5jb2xvck1vZGVGb3JSZW5kZXJQYXNzKCksZS5DdWxsRmFjZU1vZGUuZGlzYWJsZWQsWmkoeSxoLGcsdi5nZXRQcm9qZWN0aW9uKCkpLG8uaWQsYi5sYXlvdXRWZXJ0ZXhCdWZmZXIsYi5pbmRleEJ1ZmZlcixiLnNlZ21lbnRzLG51bGwsaC56b29tLG51bGwsW2IuY29sbGlzaW9uVmVydGV4QnVmZmVyLGIuY29sbGlzaW9uVmVydGV4QnVmZmVyRXh0XSkpO31pZighYXx8IV8ubGVuZ3RoKXJldHVybjtjb25zdCBtPXQudXNlUHJvZ3JhbShcImNvbGxpc2lvbkNpcmNsZVwiKSxmPW5ldyBlLlN0cnVjdEFycmF5TGF5b3V0MmYxZjJpMTY7Zi5yZXNpemUoNCpkKSxmLl90cmltKCk7bGV0IGc9MDtmb3IoY29uc3QgZSBvZiBfKWZvcihsZXQgdD0wO3Q8ZS5jaXJjbGVBcnJheS5sZW5ndGgvNDt0Kyspe2NvbnN0IGk9NCp0LG89ZS5jaXJjbGVBcnJheVtpKzBdLHI9ZS5jaXJjbGVBcnJheVtpKzFdLG49ZS5jaXJjbGVBcnJheVtpKzJdLHM9ZS5jaXJjbGVBcnJheVtpKzNdO2YuZW1wbGFjZShnKyssbyxyLG4scywwKSxmLmVtcGxhY2UoZysrLG8scixuLHMsMSksZi5lbXBsYWNlKGcrKyxvLHIsbixzLDIpLGYuZW1wbGFjZShnKyssbyxyLG4scywzKTt9KCFhb3x8YW8ubGVuZ3RoPDIqZCkmJihhbz1mdW5jdGlvbih0KXtjb25zdCBpPTIqdCxvPW5ldyBlLlN0cnVjdEFycmF5TGF5b3V0M3VpNjtvLnJlc2l6ZShpKSxvLl90cmltKCk7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7Y29uc3QgdD02KmU7by51aW50MTZbdCswXT00KmUrMCxvLnVpbnQxNlt0KzFdPTQqZSsxLG8udWludDE2W3QrMl09NCplKzIsby51aW50MTZbdCszXT00KmUrMixvLnVpbnQxNlt0KzRdPTQqZSszLG8udWludDE2W3QrNV09NCplKzA7fXJldHVybiBvfShkKSk7Y29uc3Qgdj1sLmNyZWF0ZUluZGV4QnVmZmVyKGFvLCEwKSx4PWwuY3JlYXRlVmVydGV4QnVmZmVyKGYsZS5jb2xsaXNpb25DaXJjbGVMYXlvdXQubWVtYmVycywhMCk7Zm9yKGNvbnN0IGkgb2YgXyl7Y29uc3Qgcj17dV9tYXRyaXg6aS50cmFuc2Zvcm0sdV9pbnZfbWF0cml4OmkuaW52VHJhbnNmb3JtLHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTooeT1oKS5nZXRDYW1lcmFUb0NlbnRlckRpc3RhbmNlKGkucHJvamVjdGlvbiksdV92aWV3cG9ydF9zaXplOlt5LndpZHRoLHkuaGVpZ2h0XX07bS5kcmF3KGwsYy5UUklBTkdMRVMsZS5EZXB0aE1vZGUuZGlzYWJsZWQsZS5TdGVuY2lsTW9kZS5kaXNhYmxlZCx0LmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKSxlLkN1bGxGYWNlTW9kZS5kaXNhYmxlZCxyLG8uaWQseCx2LGUuU2VnbWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMippLmNpcmNsZU9mZnNldCxpLmNpcmNsZUFycmF5Lmxlbmd0aCxpLmNpcmNsZUFycmF5Lmxlbmd0aC8yKSxudWxsLGguem9vbSk7fXZhciB5O3guZGVzdHJveSgpLHYuZGVzdHJveSgpO31jb25zdCBjbz1lLmNyZWF0ZSgpO2Z1bmN0aW9uIGhvKHt3aWR0aDp0LGhlaWdodDppLGFuY2hvcjpvLHRleHRPZmZzZXQ6cix0ZXh0U2NhbGU6bn0scyl7Y29uc3R7aG9yaXpvbnRhbEFsaWduOmEsdmVydGljYWxBbGlnbjpsfT1lLmdldEFuY2hvckFsaWdubWVudChvKSxjPS0oYS0uNSkqdCxoPS0obC0uNSkqaSx1PWUuZXZhbHVhdGVWYXJpYWJsZU9mZnNldChvLHIpO3JldHVybiBuZXcgZS5Qb2ludCgoYy9uK3VbMF0pKnMsKGgvbit1WzFdKSpzKX1mdW5jdGlvbiB1byh0LGksbyxyLG4scyxhLGwsYyxoLHUpe2NvbnN0IF89dC50ZXh0LnBsYWNlZFN5bWJvbEFycmF5LGQ9dC50ZXh0LmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJheSxwPXQuaWNvbi5keW5hbWljTGF5b3V0VmVydGV4QXJyYXksbT17fSxmPXQuZ2V0UHJvamVjdGlvbigpLGc9eHQobCxmLHMpLHY9cy5lbGV2YXRpb24seD1mLnVwVmVjdG9yU2NhbGUobC5jYW5vbmljYWwscy5jZW50ZXIubGF0LHMud29ybGRTaXplKS5tZXRlcnNUb1RpbGU7ZC5jbGVhcigpO2ZvcihsZXQgcD0wO3A8Xy5sZW5ndGg7cCsrKXtjb25zdCB5PV8uZ2V0KHApLHt0aWxlQW5jaG9yWDpiLHRpbGVBbmNob3JZOncsbnVtR2x5cGhzOlR9PXksRT15LmhpZGRlbnx8IXkuY3Jvc3NUaWxlSUR8fHQuYWxsb3dWZXJ0aWNhbFBsYWNlbWVudCYmIXkucGxhY2VkT3JpZW50YXRpb24/bnVsbDpyW3kuY3Jvc3NUaWxlSURdO2lmKEUpe2xldCByPTAsXz0wLHA9MDtpZih2KXtjb25zdCBlPXY/di5nZXRBdFRpbGVPZmZzZXQobCxiLHcpOjAsW3QsaSxvXT1mLnVwVmVjdG9yKGwuY2Fub25pY2FsLGIsdyk7cj1lKnQqeCxfPWUqaSp4LHA9ZSpvKng7fWxldFtDLE0sSSxQXT1vdCh5LnByb2plY3RlZEFuY2hvclgrcix5LnByb2plY3RlZEFuY2hvclkrXyx5LnByb2plY3RlZEFuY2hvclorcCxvP2c6YSk7Y29uc3QgUz1ydChzLmdldENhbWVyYVRvQ2VudGVyRGlzdGFuY2UoZiksUCk7bGV0IEQ9bi5ldmFsdWF0ZVNpemVGb3JGZWF0dXJlKHQudGV4dFNpemVEYXRhLGgseSkqUy9lLk9ORV9FTTtvJiYoRCo9dC50aWxlUGl4ZWxSYXRpby9jKTtjb25zdCBMPWhvKEUsRCk7bz8oKHt4OkMseTpNLHo6SX09Zi5wcm9qZWN0VGlsZVBvaW50KGIrTC54LHcrTC55LGwuY2Fub25pY2FsKSksW0MsTSxJXT1vdChDK3IsTStfLEkrcCxhKSk6KGkmJkwuX3JvdGF0ZSgtcy5hbmdsZSksQys9TC54LE0rPUwueSxJPTApO2NvbnN0IEE9dC5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiZ5LnBsYWNlZE9yaWVudGF0aW9uPT09ZS5Xcml0aW5nTW9kZS52ZXJ0aWNhbD9NYXRoLlBJLzI6MDtmb3IobGV0IHQ9MDt0PFQ7dCsrKWUuYWRkRHluYW1pY0F0dHJpYnV0ZXMoZCxDLE0sSSxBKTt1JiZ5LmFzc29jaWF0ZWRJY29uSW5kZXg+PTAmJihtW3kuYXNzb2NpYXRlZEljb25JbmRleF09e3g6Qyx5Ok0sejpJLGFuZ2xlOkF9KTt9ZWxzZSBkdChULGQpO31pZih1KXtwLmNsZWFyKCk7Y29uc3QgaT10Lmljb24ucGxhY2VkU3ltYm9sQXJyYXk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0IG89aS5nZXQodCkse251bUdseXBoczpyfT1vLG49bVt0XTtpZihvLmhpZGRlbnx8IW4pZHQocixwKTtlbHNlIHtjb25zdHt4OnQseTppLHo6byxhbmdsZTpzfT1uO2ZvcihsZXQgbj0wO248cjtuKyspZS5hZGREeW5hbWljQXR0cmlidXRlcyhwLHQsaSxvLHMpO319dC5pY29uLmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YShwKTt9dC50ZXh0LmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YShkKTt9ZnVuY3Rpb24gX28oZSx0LGkpe3JldHVybiBpLmljb25zSW5UZXh0JiZ0P1wic3ltYm9sVGV4dEFuZEljb25cIjplP1wic3ltYm9sU0RGXCI6XCJzeW1ib2xJY29uXCJ9ZnVuY3Rpb24gcG8odCxpLG8scixuLHMsYSxsLGMsaCx1LF8pe2NvbnN0IGQ9dC5jb250ZXh0LHA9ZC5nbCxtPXQudHJhbnNmb3JtLGY9XCJtYXBcIj09PWwsZz1cIm1hcFwiPT09Yyx2PWYmJlwicG9pbnRcIiE9PW8ubGF5b3V0LmdldChcInN5bWJvbC1wbGFjZW1lbnRcIikseD1mJiYhZyYmIXYseT12b2lkIDAhPT1vLmxheW91dC5nZXQoXCJzeW1ib2wtc29ydC1rZXlcIikuY29uc3RhbnRPcigxKTtsZXQgYj0hMTtjb25zdCB3PXQuZGVwdGhNb2RlRm9yU3VibGF5ZXIoMCxlLkRlcHRoTW9kZS5SZWFkT25seSksVD1bZS5tZXJjYXRvclhmcm9tTG5nKG0uY2VudGVyLmxuZyksZS5tZXJjYXRvcllmcm9tTGF0KG0uY2VudGVyLmxhdCldLEU9by5sYXlvdXQuZ2V0KFwidGV4dC12YXJpYWJsZS1hbmNob3JcIiksQz1cImdsb2JlXCI9PT1tLnByb2plY3Rpb24ubmFtZSxNPVtdLEk9WzAsLTEsMF07bGV0IFA9STshQyYmIW0ubWVyY2F0b3JGcm9tVHJhbnNpdGlvbnx8Znx8KFA9ZnVuY3Rpb24odCl7Y29uc3QgaT10Ll9jYW1lcmEuZ2V0V29ybGRUb0NhbWVyYSh0LndvcmxkU2l6ZSwxKSxvPWUubXVsdGlwbHkoW10saSx0Lmdsb2JlTWF0cml4KTtlLmludmVydChvLG8pO2NvbnN0IHI9WzAsMCwwXSxuPVswLDEsMCwwXTtyZXR1cm4gZS50cmFuc2Zvcm1NYXQ0JDEobixuLG8pLHJbMF09blswXSxyWzFdPW5bMV0sclsyXT1uWzJdLGUubm9ybWFsaXplKHIscikscn0obSkpO2Zvcihjb25zdCBsIG9mIHIpe2NvbnN0IHI9aS5nZXRUaWxlKGwpLGM9ci5nZXRCdWNrZXQobyk7aWYoIWMpY29udGludWU7aWYoXCJtZXJjYXRvclwiPT09Yy5wcm9qZWN0aW9uLm5hbWUmJkMpY29udGludWU7Y29uc3QgdT1uP2MudGV4dDpjLmljb247aWYoIXV8fGMuZnVsbHlDbGlwcGVkfHwhdS5zZWdtZW50cy5nZXQoKS5sZW5ndGgpY29udGludWU7Y29uc3QgXz11LnByb2dyYW1Db25maWd1cmF0aW9ucy5nZXQoby5pZCksZD1ufHxjLnNkZkljb25zLHc9bj9jLnRleHRTaXplRGF0YTpjLmljb25TaXplRGF0YSxTPWd8fDAhPT1tLnBpdGNoLEQ9ZS5ldmFsdWF0ZVNpemVGb3Jab29tKHcsbS56b29tKTtsZXQgTCxBLHosUixPPVswLDBdLEI9bnVsbDtpZihuKUE9ci5nbHlwaEF0bGFzVGV4dHVyZSx6PXAuTElORUFSLEw9ci5nbHlwaEF0bGFzVGV4dHVyZS5zaXplLGMuaWNvbnNJblRleHQmJihPPXIuaW1hZ2VBdGxhc1RleHR1cmUuc2l6ZSxCPXIuaW1hZ2VBdGxhc1RleHR1cmUsUj1TfHx0Lm9wdGlvbnMucm90YXRpbmd8fHQub3B0aW9ucy56b29taW5nfHxcImNvbXBvc2l0ZVwiPT09dy5raW5kfHxcImNhbWVyYVwiPT09dy5raW5kP3AuTElORUFSOnAuTkVBUkVTVCk7ZWxzZSB7Y29uc3QgZT0xIT09by5sYXlvdXQuZ2V0KFwiaWNvbi1zaXplXCIpLmNvbnN0YW50T3IoMCl8fGMuaWNvbnNOZWVkTGluZWFyO0E9ci5pbWFnZUF0bGFzVGV4dHVyZSx6PWR8fHQub3B0aW9ucy5yb3RhdGluZ3x8dC5vcHRpb25zLnpvb21pbmd8fGV8fFM/cC5MSU5FQVI6cC5ORUFSRVNULEw9ci5pbWFnZUF0bGFzVGV4dHVyZS5zaXplO31jb25zdCBrPVwiZ2xvYmVcIj09PWMucHJvamVjdGlvbi5uYW1lLEY9az9QOkksVT1rP2UuZ2xvYmVUb01lcmNhdG9yVHJhbnNpdGlvbihtLnpvb20pOjAsTj14dChsLGMuZ2V0UHJvamVjdGlvbigpLG0pLGo9bS5jYWxjdWxhdGVQaXhlbHNUb1RpbGVVbml0c01hdHJpeChyKSxHPWV0KE4sci50aWxlSUQuY2Fub25pY2FsLGcsZixtLGMuZ2V0UHJvamVjdGlvbigpLGopLFo9dC50ZXJyYWluJiZnJiZ2P2UuaW52ZXJ0KGUuY3JlYXRlKCksRyk6Y28sVj1pdChOLHIudGlsZUlELmNhbm9uaWNhbCxnLGYsbSxjLmdldFByb2plY3Rpb24oKSxqKSxXPUUmJmMuaGFzVGV4dERhdGEoKSxYPVwibm9uZVwiIT09by5sYXlvdXQuZ2V0KFwiaWNvbi10ZXh0LWZpdFwiKSYmVyYmYy5oYXNJY29uRGF0YSgpO2lmKHYpe2NvbnN0IGU9bS5lbGV2YXRpb24saT1lP2UuZ2V0QXRUaWxlT2Zmc2V0RnVuYyhsLG0uY2VudGVyLmxhdCxtLndvcmxkU2l6ZSxjLmdldFByb2plY3Rpb24oKSk6bnVsbCxvPXR0KE4sci50aWxlSUQuY2Fub25pY2FsLGcsZixtLGMuZ2V0UHJvamVjdGlvbigpLGopO3N0KGMsTix0LG4sbyxWLGcsaCxpLGwpO31jb25zdCBxPXZ8fG4mJkV8fFgsJD10LnRyYW5zbGF0ZVBvc01hdHJpeChOLHIscyxhKSxIPXE/Y286RyxZPXQudHJhbnNsYXRlUG9zTWF0cml4KFYscixzLGEsITApLEs9Yy5nZXRQcm9qZWN0aW9uKCkuY3JlYXRlSW52ZXJzaW9uTWF0cml4KG0sbC5jYW5vbmljYWwpLEo9W107dC50ZXJyYWluUmVuZGVyTW9kZUVsZXZhdGVkKCkmJmcmJkoucHVzaChcIlBJVENIX1dJVEhfTUFQX1RFUlJBSU5cIiksayYmSi5wdXNoKFwiUFJPSkVDVElPTl9HTE9CRV9WSUVXXCIpLHEmJkoucHVzaChcIlBST0pFQ1RFRF9QT1NfT05fVklFV1BPUlRcIik7Y29uc3QgUT1kJiYwIT09by5wYWludC5nZXQobj9cInRleHQtaGFsby13aWR0aFwiOlwiaWNvbi1oYWxvLXdpZHRoXCIpLmNvbnN0YW50T3IoMSk7bGV0IGVlO2VlPWQ/Yy5pY29uc0luVGV4dD9vbyh3LmtpbmQsRCx4LGcsdCwkLEgsWSxMLE8sbCxVLFQsSyxGLGMuZ2V0UHJvamVjdGlvbigpKTppbyh3LmtpbmQsRCx4LGcsdCwkLEgsWSxuLEwsITAsbCxVLFQsSyxGLGMuZ2V0UHJvamVjdGlvbigpKTp0byh3LmtpbmQsRCx4LGcsdCwkLEgsWSxuLEwsbCxVLFQsSyxGLGMuZ2V0UHJvamVjdGlvbigpKTtjb25zdCB0ZT17cHJvZ3JhbTp0LnVzZVByb2dyYW0oX28oZCxuLGMpLF8sSiksYnVmZmVyczp1LHVuaWZvcm1WYWx1ZXM6ZWUsYXRsYXNUZXh0dXJlOkEsYXRsYXNUZXh0dXJlSWNvbjpCLGF0bGFzSW50ZXJwb2xhdGlvbjp6LGF0bGFzSW50ZXJwb2xhdGlvbkljb246Uixpc1NERjpkLGhhc0hhbG86USx0aWxlOnIsbGFiZWxQbGFuZU1hdHJpeEludjpafTtpZih5JiZjLmNhbk92ZXJsYXApe2I9ITA7Y29uc3QgdD11LnNlZ21lbnRzLmdldCgpO2Zvcihjb25zdCBpIG9mIHQpTS5wdXNoKHtzZWdtZW50czpuZXcgZS5TZWdtZW50VmVjdG9yKFtpXSksc29ydEtleTppLnNvcnRLZXksc3RhdGU6dGV9KTt9ZWxzZSBNLnB1c2goe3NlZ21lbnRzOnUuc2VnbWVudHMsc29ydEtleTowLHN0YXRlOnRlfSk7fWImJk0uc29ydCgoKGUsdCk9PmUuc29ydEtleS10LnNvcnRLZXkpKTtmb3IoY29uc3QgZSBvZiBNKXtjb25zdCBpPWUuc3RhdGU7aWYodC50ZXJyYWluJiZ0LnRlcnJhaW4uc2V0dXBFbGV2YXRpb25EcmF3KGkudGlsZSxpLnByb2dyYW0se3VzZURlcHRoRm9yT2NjbHVzaW9uOiFDLGxhYmVsUGxhbmVNYXRyaXhJbnY6aS5sYWJlbFBsYW5lTWF0cml4SW52fSksZC5hY3RpdmVUZXh0dXJlLnNldChwLlRFWFRVUkUwKSxpLmF0bGFzVGV4dHVyZS5iaW5kKGkuYXRsYXNJbnRlcnBvbGF0aW9uLHAuQ0xBTVBfVE9fRURHRSksaS5hdGxhc1RleHR1cmVJY29uJiYoZC5hY3RpdmVUZXh0dXJlLnNldChwLlRFWFRVUkUxKSxpLmF0bGFzVGV4dHVyZUljb24mJmkuYXRsYXNUZXh0dXJlSWNvbi5iaW5kKGkuYXRsYXNJbnRlcnBvbGF0aW9uSWNvbixwLkNMQU1QX1RPX0VER0UpKSxpLmlzU0RGKXtjb25zdCByPWkudW5pZm9ybVZhbHVlcztpLmhhc0hhbG8mJihyLnVfaXNfaGFsbz0xLG1vKGkuYnVmZmVycyxlLnNlZ21lbnRzLG8sdCxpLnByb2dyYW0sdyx1LF8scikpLHIudV9pc19oYWxvPTA7fW1vKGkuYnVmZmVycyxlLnNlZ21lbnRzLG8sdCxpLnByb2dyYW0sdyx1LF8saS51bmlmb3JtVmFsdWVzKTt9fWZ1bmN0aW9uIG1vKHQsaSxvLHIsbixzLGEsbCxjKXtjb25zdCBoPXIuY29udGV4dCx1PVt0LmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIsdC5vcGFjaXR5VmVydGV4QnVmZmVyLHQuZ2xvYmVFeHRWZXJ0ZXhCdWZmZXJdO24uZHJhdyhoLGguZ2wuVFJJQU5HTEVTLHMsYSxsLGUuQ3VsbEZhY2VNb2RlLmRpc2FibGVkLGMsby5pZCx0LmxheW91dFZlcnRleEJ1ZmZlcix0LmluZGV4QnVmZmVyLGksby5wYWludCxyLnRyYW5zZm9ybS56b29tLHQucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChvLmlkKSx1KTt9ZnVuY3Rpb24gZm8odCxpLG8scixuLHMsYSl7Y29uc3QgbD10LmNvbnRleHQuZ2wsYz1vLnBhaW50LmdldChcImZpbGwtcGF0dGVyblwiKSxoPWMmJmMuY29uc3RhbnRPcigxKTtsZXQgdSxfLGQscCxtO2E/KF89aCYmIW8uZ2V0UGFpbnRQcm9wZXJ0eShcImZpbGwtb3V0bGluZS1jb2xvclwiKT9cImZpbGxPdXRsaW5lUGF0dGVyblwiOlwiZmlsbE91dGxpbmVcIix1PWwuTElORVMpOihfPWg/XCJmaWxsUGF0dGVyblwiOlwiZmlsbFwiLHU9bC5UUklBTkdMRVMpO2Zvcihjb25zdCBmIG9mIHIpe2NvbnN0IHI9aS5nZXRUaWxlKGYpO2lmKGgmJiFyLnBhdHRlcm5zTG9hZGVkKCkpY29udGludWU7Y29uc3QgZz1yLmdldEJ1Y2tldChvKTtpZighZyljb250aW51ZTt0LnByZXBhcmVEcmF3VGlsZSgpO2NvbnN0IHY9Zy5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZ2V0KG8uaWQpLHg9dC51c2VQcm9ncmFtKF8sdik7aCYmKHQuY29udGV4dC5hY3RpdmVUZXh0dXJlLnNldChsLlRFWFRVUkUwKSxyLmltYWdlQXRsYXNUZXh0dXJlLmJpbmQobC5MSU5FQVIsbC5DTEFNUF9UT19FREdFKSx2LnVwZGF0ZVBhaW50QnVmZmVycygpKTtjb25zdCB5PWMuY29uc3RhbnRPcihudWxsKTtpZih5JiZyLmltYWdlQXRsYXMpe2NvbnN0IGU9ci5pbWFnZUF0bGFzLnBhdHRlcm5Qb3NpdGlvbnNbeS50b1N0cmluZygpXTtlJiZ2LnNldENvbnN0YW50UGF0dGVyblBvc2l0aW9ucyhlKTt9Y29uc3QgYj10LnRyYW5zbGF0ZVBvc01hdHJpeChmLnByb2pNYXRyaXgscixvLnBhaW50LmdldChcImZpbGwtdHJhbnNsYXRlXCIpLG8ucGFpbnQuZ2V0KFwiZmlsbC10cmFuc2xhdGUtYW5jaG9yXCIpKTtpZihhKXtwPWcuaW5kZXhCdWZmZXIyLG09Zy5zZWdtZW50czI7Y29uc3QgZT10LnRlcnJhaW4mJnQudGVycmFpbi5yZW5kZXJpbmdUb1RleHR1cmU/dC50ZXJyYWluLmRyYXBlQnVmZmVyU2l6ZTpbbC5kcmF3aW5nQnVmZmVyV2lkdGgsbC5kcmF3aW5nQnVmZmVySGVpZ2h0XTtkPVwiZmlsbE91dGxpbmVQYXR0ZXJuXCI9PT1fJiZoP1VpKGIsdCxyLGUpOkZpKGIsZSk7fWVsc2UgcD1nLmluZGV4QnVmZmVyLG09Zy5zZWdtZW50cyxkPWg/a2koYix0LHIpOkJpKGIpO3QucHJlcGFyZURyYXdQcm9ncmFtKHQuY29udGV4dCx4LGYudG9VbndyYXBwZWQoKSkseC5kcmF3KHQuY29udGV4dCx1LG4sdC5zdGVuY2lsTW9kZUZvckNsaXBwaW5nKGYpLHMsZS5DdWxsRmFjZU1vZGUuZGlzYWJsZWQsZCxvLmlkLGcubGF5b3V0VmVydGV4QnVmZmVyLHAsbSxvLnBhaW50LHQudHJhbnNmb3JtLnpvb20sdik7fX1mdW5jdGlvbiBnbyh0LGksbyxyLG4scyxhKXtjb25zdCBsPXQuY29udGV4dCxjPWwuZ2wsaD10LnRyYW5zZm9ybSx1PW8ucGFpbnQuZ2V0KFwiZmlsbC1leHRydXNpb24tcGF0dGVyblwiKSxfPXUuY29uc3RhbnRPcigxKSxkPW8ucGFpbnQuZ2V0KFwiZmlsbC1leHRydXNpb24tb3BhY2l0eVwiKSxwPVtvLnBhaW50LmdldChcImZpbGwtZXh0cnVzaW9uLWFtYmllbnQtb2NjbHVzaW9uLWludGVuc2l0eVwiKSxvLnBhaW50LmdldChcImZpbGwtZXh0cnVzaW9uLWFtYmllbnQtb2NjbHVzaW9uLXJhZGl1c1wiKV0sbT1vLmxheW91dC5nZXQoXCJmaWxsLWV4dHJ1c2lvbi1lZGdlLXJhZGl1c1wiKSxmPW0+MCYmIW8ucGFpbnQuZ2V0KFwiZmlsbC1leHRydXNpb24tcm91bmRlZC1yb29mXCIpLGc9Zj8wOm0sdj1cImdsb2JlXCI9PT1oLnByb2plY3Rpb24ubmFtZT9lLmZpbGxFeHRydXNpb25IZWlnaHRMaWZ0KCk6MCx4PVwiZ2xvYmVcIj09PWgucHJvamVjdGlvbi5uYW1lLHk9eD9lLmdsb2JlVG9NZXJjYXRvclRyYW5zaXRpb24oaC56b29tKTowLGI9W2UubWVyY2F0b3JYZnJvbUxuZyhoLmNlbnRlci5sbmcpLGUubWVyY2F0b3JZZnJvbUxhdChoLmNlbnRlci5sYXQpXSx3PVtdO3gmJncucHVzaChcIlBST0pFQ1RJT05fR0xPQkVfVklFV1wiKSxwWzBdPjAmJncucHVzaChcIkZBVVhfQU9cIiksZiYmdy5wdXNoKFwiWkVST19ST09GX1JBRElVU1wiKTtmb3IoY29uc3QgbSBvZiByKXtjb25zdCByPWkuZ2V0VGlsZShtKSxmPXIuZ2V0QnVja2V0KG8pO2lmKCFmfHxmLnByb2plY3Rpb24ubmFtZSE9PWgucHJvamVjdGlvbi5uYW1lKWNvbnRpbnVlO2NvbnN0IFQ9Zi5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZ2V0KG8uaWQpLEU9dC51c2VQcm9ncmFtKF8/XCJmaWxsRXh0cnVzaW9uUGF0dGVyblwiOlwiZmlsbEV4dHJ1c2lvblwiLFQsdyk7aWYodC50ZXJyYWluKXtjb25zdCBlPXQudGVycmFpbjtpZih0LnN0eWxlLnRlcnJhaW5TZXRGb3JEcmFwaW5nT25seSgpKWUuc2V0dXBFbGV2YXRpb25EcmF3KHIsRSx7dXNlTWV0ZXJUb0RlbTohMH0pO2Vsc2Uge2lmKCFmLmVuYWJsZVRlcnJhaW4pY29udGludWU7aWYoZS5zZXR1cEVsZXZhdGlvbkRyYXcocixFLHt1c2VNZXRlclRvRGVtOiEwfSksdm8obCxpLG0sZixvLGUpLCFmLmNlbnRyb2lkVmVydGV4QnVmZmVyKXtjb25zdCBlPUUuYXR0cmlidXRlcy5hX2NlbnRyb2lkX3Bvczt2b2lkIDAhPT1lJiZjLnZlcnRleEF0dHJpYjJmKGUsMCwwKTt9fX1fJiYodC5jb250ZXh0LmFjdGl2ZVRleHR1cmUuc2V0KGMuVEVYVFVSRTApLHIuaW1hZ2VBdGxhc1RleHR1cmUuYmluZChjLkxJTkVBUixjLkNMQU1QX1RPX0VER0UpLFQudXBkYXRlUGFpbnRCdWZmZXJzKCkpO2NvbnN0IEM9dS5jb25zdGFudE9yKG51bGwpO2lmKEMmJnIuaW1hZ2VBdGxhcyl7Y29uc3QgZT1yLmltYWdlQXRsYXMucGF0dGVyblBvc2l0aW9uc1tDLnRvU3RyaW5nKCldO2UmJlQuc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRpb25zKGUpO31jb25zdCBNPXQudHJhbnNsYXRlUG9zTWF0cml4KG0ucHJvak1hdHJpeCxyLG8ucGFpbnQuZ2V0KFwiZmlsbC1leHRydXNpb24tdHJhbnNsYXRlXCIpLG8ucGFpbnQuZ2V0KFwiZmlsbC1leHRydXNpb24tdHJhbnNsYXRlLWFuY2hvclwiKSksST1oLnByb2plY3Rpb24uY3JlYXRlSW52ZXJzaW9uTWF0cml4KGgsbS5jYW5vbmljYWwpLFA9by5wYWludC5nZXQoXCJmaWxsLWV4dHJ1c2lvbi12ZXJ0aWNhbC1ncmFkaWVudFwiKSxTPV8/T2koTSx0LFAsZCxwLGcsbSxyLHYseSxiLEkpOlJpKE0sdCxQLGQscCxnLG0sdix5LGIsSSk7dC5wcmVwYXJlRHJhd1Byb2dyYW0obCxFLG0udG9VbndyYXBwZWQoKSk7Y29uc3QgRD1bXTt0LnRlcnJhaW4mJkQucHVzaChmLmNlbnRyb2lkVmVydGV4QnVmZmVyKSx4JiZELnB1c2goZi5sYXlvdXRWZXJ0ZXhFeHRCdWZmZXIpLEUuZHJhdyhsLGwuZ2wuVFJJQU5HTEVTLG4scyxhLGUuQ3VsbEZhY2VNb2RlLmJhY2tDQ1csUyxvLmlkLGYubGF5b3V0VmVydGV4QnVmZmVyLGYuaW5kZXhCdWZmZXIsZi5zZWdtZW50cyxvLnBhaW50LHQudHJhbnNmb3JtLnpvb20sVCxEKTt9fWZ1bmN0aW9uIHZvKHQsaSxvLHIsbixzKXtjb25zdCBhPVt0PT57bGV0IGk9dC5jYW5vbmljYWwueC0xLG89dC53cmFwO3JldHVybiBpPDAmJihpPSgxPDx0LmNhbm9uaWNhbC56KS0xLG8tLSksbmV3IGUuT3ZlcnNjYWxlZFRpbGVJRCh0Lm92ZXJzY2FsZWRaLG8sdC5jYW5vbmljYWwueixpLHQuY2Fub25pY2FsLnkpfSx0PT57bGV0IGk9dC5jYW5vbmljYWwueCsxLG89dC53cmFwO3JldHVybiBpPT09MTw8dC5jYW5vbmljYWwueiYmKGk9MCxvKyspLG5ldyBlLk92ZXJzY2FsZWRUaWxlSUQodC5vdmVyc2NhbGVkWixvLHQuY2Fub25pY2FsLnosaSx0LmNhbm9uaWNhbC55KX0sdD0+bmV3IGUuT3ZlcnNjYWxlZFRpbGVJRCh0Lm92ZXJzY2FsZWRaLHQud3JhcCx0LmNhbm9uaWNhbC56LHQuY2Fub25pY2FsLngsKDA9PT10LmNhbm9uaWNhbC55PzE8PHQuY2Fub25pY2FsLno6dC5jYW5vbmljYWwueSktMSksdD0+bmV3IGUuT3ZlcnNjYWxlZFRpbGVJRCh0Lm92ZXJzY2FsZWRaLHQud3JhcCx0LmNhbm9uaWNhbC56LHQuY2Fub25pY2FsLngsdC5jYW5vbmljYWwueT09PSgxPDx0LmNhbm9uaWNhbC56KS0xPzA6dC5jYW5vbmljYWwueSsxKV0sbD1lPT57Y29uc3QgdD1pLmdldFNvdXJjZSgpLm1pbnpvb20sbz1lPT57Y29uc3QgdD1pLmdldFRpbGVCeUlEKGUpO2lmKHQmJnQuaGFzRGF0YSgpKXJldHVybiB0LmdldEJ1Y2tldChuKX0scj1bMCwtMSwxXTtmb3IoY29uc3QgaSBvZiByKXtpZihlLm92ZXJzY2FsZWRaK2k8dCljb250aW51ZTtjb25zdCByPW8oZS5jYWxjdWxhdGVTY2FsZWRLZXkoZS5vdmVyc2NhbGVkWitpKSk7aWYocilyZXR1cm4gcn19LGM9WzAsMCwwXSxoPSh0LGkpPT4oY1swXT1NYXRoLm1pbih0Lm1pbi55LGkubWluLnkpLGNbMV09TWF0aC5tYXgodC5tYXgueSxpLm1heC55KSxjWzJdPWUuRVhURU5ULWkubWluLng+dC5tYXgueD9pLm1pbi54LWUuRVhURU5UOnQubWF4LngsYyksdT0odCxpKT0+KGNbMF09TWF0aC5taW4odC5taW4ueCxpLm1pbi54KSxjWzFdPU1hdGgubWF4KHQubWF4LngsaS5tYXgueCksY1syXT1lLkVYVEVOVC1pLm1pbi55PnQubWF4Lnk/aS5taW4ueS1lLkVYVEVOVDp0Lm1heC55LGMpLF89WyhlLHQpPT5oKGUsdCksKGUsdCk9PmgodCxlKSwoZSx0KT0+dShlLHQpLChlLHQpPT51KHQsZSldLGQ9bmV3IGUuUG9pbnQoMCwwKTtsZXQgcCxtLGY7Y29uc3QgZz0odCxpLHIsbixhKT0+e2NvbnN0IGw9W1tuP3I6dCxuP3Q6ciwwXSxbbj9yOmksbj9pOnIsMF1dLGM9YTwwP2UuRVhURU5UK2E6YSxoPVtuP2M6KHQraSkvMixuPyh0K2kpLzI6YywwXTtyZXR1cm4gMD09PXImJmE8MHx8MCE9PXImJmE+MD9zLmdldEZvclRpbGVQb2ludHMoZixbaF0sITAsbSk6bC5wdXNoKGgpLHMuZ2V0Rm9yVGlsZVBvaW50cyhvLGwsITAscCksTWF0aC5tYXgobFswXVsyXSxsWzFdWzJdLGhbMl0pL3MuZXhhZ2dlcmF0aW9uKCl9O2ZvcihsZXQgdD0wO3Q8NDt0Kyspe2NvbnN0IGk9KHQ8Mj8xOjUpLXQsbj1yLmJvcmRlcnNbdF07aWYoMD09PW4ubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IGM9Zj1hW3RdKG8pLGg9bChjKTtpZighKGgmJmggaW5zdGFuY2VvZiBlLkZpbGxFeHRydXNpb25CdWNrZXQmJmguZW5hYmxlVGVycmFpbikpY29udGludWU7aWYoci5ib3JkZXJEb25lV2l0aE5laWdoYm9yWlt0XT09PWguY2Fub25pY2FsLnomJmguYm9yZGVyRG9uZVdpdGhOZWlnaGJvclpbaV09PT1yLmNhbm9uaWNhbC56KWNvbnRpbnVlO2lmKG09cy5maW5kREVNVGlsZUZvcihjKSwhbXx8IW0uZGVtKWNvbnRpbnVlO2lmKCFwKXtjb25zdCBlPXMuZmluZERFTVRpbGVGb3Iobyk7aWYoIWV8fCFlLmRlbSlyZXR1cm47cD1lO31jb25zdCB1PWguYm9yZGVyc1tpXTtsZXQgdj0wO2NvbnN0IHg9aC5ib3JkZXJEb25lV2l0aE5laWdoYm9yWltpXSE9PXIuY2Fub25pY2FsLno7aWYoci5jYW5vbmljYWwuej09PWguY2Fub25pY2FsLnope2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXtjb25zdCBzPXIuZmVhdHVyZXNPbkJvcmRlcltuW29dXSxhPXMuYm9yZGVyc1t0XTtsZXQgbDtmb3IoO3Y8dS5sZW5ndGgmJihsPWguZmVhdHVyZXNPbkJvcmRlclt1W3ZdXSwhKGwuYm9yZGVyc1tpXVsxXT5hWzBdKzMpKTspeCYmaC5lbmNvZGVDZW50cm9pZCh2b2lkIDAsbCwhMSksdisrO2lmKGwmJnY8dS5sZW5ndGgpe2NvbnN0IG89djtsZXQgbj0wO2Zvcig7IShsLmJvcmRlcnNbaV1bMF0+YVsxXS0zKSYmKG4rKywrK3YhPT11Lmxlbmd0aCk7KWw9aC5mZWF0dXJlc09uQm9yZGVyW3Vbdl1dO2lmKGw9aC5mZWF0dXJlc09uQm9yZGVyW3Vbb11dLHMuaW50ZXJzZWN0c0NvdW50KCk+MXx8bC5pbnRlcnNlY3RzQ291bnQoKT4xfHwxIT09bil7MSE9PW4mJih2PW8pLHIuZW5jb2RlQ2VudHJvaWQodm9pZCAwLHMsITEpLHgmJmguZW5jb2RlQ2VudHJvaWQodm9pZCAwLGwsITEpO2NvbnRpbnVlfWNvbnN0IGM9X1t0XShzLGwpLHA9dCUyP2UuRVhURU5ULTE6MDtkLng9ZyhjWzBdLE1hdGgubWluKGUuRVhURU5ULTEsY1sxXSkscCx0PDIsY1syXSksZC55PTAsci5lbmNvZGVDZW50cm9pZChkLHMsITEpLHgmJmguZW5jb2RlQ2VudHJvaWQoZCxsLCExKTt9ZWxzZSByLmVuY29kZUNlbnRyb2lkKHZvaWQgMCxzLCExKTt9ci5ib3JkZXJEb25lV2l0aE5laWdoYm9yWlt0XT1oLmNhbm9uaWNhbC56LHIubmVlZHNDZW50cm9pZFVwZGF0ZT0hMCx4JiYoaC5ib3JkZXJEb25lV2l0aE5laWdoYm9yWltpXT1yLmNhbm9uaWNhbC56LGgubmVlZHNDZW50cm9pZFVwZGF0ZT0hMCk7fWVsc2Uge2Zvcihjb25zdCBlIG9mIG4pci5lbmNvZGVDZW50cm9pZCh2b2lkIDAsci5mZWF0dXJlc09uQm9yZGVyW2VdLCExKTtpZih4KXtmb3IoY29uc3QgZSBvZiB1KWguZW5jb2RlQ2VudHJvaWQodm9pZCAwLGguZmVhdHVyZXNPbkJvcmRlcltlXSwhMSk7aC5ib3JkZXJEb25lV2l0aE5laWdoYm9yWltpXT1yLmNhbm9uaWNhbC56LGgubmVlZHNDZW50cm9pZFVwZGF0ZT0hMDt9ci5ib3JkZXJEb25lV2l0aE5laWdoYm9yWlt0XT1oLmNhbm9uaWNhbC56LHIubmVlZHNDZW50cm9pZFVwZGF0ZT0hMDt9fShyLm5lZWRzQ2VudHJvaWRVcGRhdGV8fCFyLmNlbnRyb2lkVmVydGV4QnVmZmVyJiYwIT09ci5jZW50cm9pZFZlcnRleEFycmF5Lmxlbmd0aCkmJnIudXBsb2FkQ2VudHJvaWQodCk7fWNvbnN0IHhvPW5ldyBlLkNvbG9yKDEsMCwwLDEpLHlvPW5ldyBlLkNvbG9yKDAsMSwwLDEpLGJvPW5ldyBlLkNvbG9yKDAsMCwxLDEpLHdvPW5ldyBlLkNvbG9yKDEsMCwxLDEpLFRvPW5ldyBlLkNvbG9yKDAsMSwxLDEpO2Z1bmN0aW9uIEVvKHQsaSxvKXtjb25zdCByPXQuY29udGV4dCxuPXQudHJhbnNmb3JtLHM9ci5nbCxhPVwiZ2xvYmVcIj09PW4ucHJvamVjdGlvbi5uYW1lLGw9YT9bXCJQUk9KRUNUSU9OX0dMT0JFX1ZJRVdcIl06bnVsbDtsZXQgYz1vLnByb2pNYXRyaXg7aWYoYSYmZS5nbG9iZVRvTWVyY2F0b3JUcmFuc2l0aW9uKG4uem9vbSk+MCl7Y29uc3QgdD1lLnRyYW5zaXRpb25UaWxlQUFCQmluRUNFRihvLmNhbm9uaWNhbCxuKSxpPWUuZ2xvYmVEZW5vcm1hbGl6ZUVDRUYodCk7Yz1lLm11bHRpcGx5KG5ldyBGbG9hdDMyQXJyYXkoMTYpLG4uZ2xvYmVNYXRyaXgsaSksZS5tdWx0aXBseShjLG4ucHJvak1hdHJpeCxjKTt9Y29uc3QgaD10LnVzZVByb2dyYW0oXCJkZWJ1Z1wiLG51bGwsbCksdT1pLmdldFRpbGVCeUlEKG8ua2V5KTt0LnRlcnJhaW4mJnQudGVycmFpbi5zZXR1cEVsZXZhdGlvbkRyYXcodSxoKTtjb25zdCBfPWUuRGVwdGhNb2RlLmRpc2FibGVkLGQ9ZS5TdGVuY2lsTW9kZS5kaXNhYmxlZCxwPXQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpLG09XCIkZGVidWdcIjtyLmFjdGl2ZVRleHR1cmUuc2V0KHMuVEVYVFVSRTApLHQuZW1wdHlUZXh0dXJlLmJpbmQocy5MSU5FQVIscy5DTEFNUF9UT19FREdFKSxhP3UuX21ha2VHbG9iZVRpbGVEZWJ1Z0J1ZmZlcnModC5jb250ZXh0LG4pOnUuX21ha2VEZWJ1Z1RpbGVCb3VuZHNCdWZmZXJzKHQuY29udGV4dCxuLnByb2plY3Rpb24pO2NvbnN0IGY9dS5fdGlsZURlYnVnQnVmZmVyfHx0LmRlYnVnQnVmZmVyLGc9dS5fdGlsZURlYnVnSW5kZXhCdWZmZXJ8fHQuZGVidWdJbmRleEJ1ZmZlcix2PXUuX3RpbGVEZWJ1Z1NlZ21lbnRzfHx0LmRlYnVnU2VnbWVudHM7aC5kcmF3KHIscy5MSU5FX1NUUklQLF8sZCxwLGUuQ3VsbEZhY2VNb2RlLmRpc2FibGVkLFZpKGMsZS5Db2xvci5yZWQpLG0sZixnLHYsbnVsbCxudWxsLG51bGwsW3UuX2dsb2JlVGlsZURlYnVnQm9yZGVyQnVmZmVyXSk7Y29uc3QgeD11LmxhdGVzdFJhd1RpbGVEYXRhLHk9TWF0aC5mbG9vcigoeCYmeC5ieXRlTGVuZ3RofHwwKS8xMDI0KSxiPWkuZ2V0VGlsZShvKS50aWxlU2l6ZSx3PTUxMi9NYXRoLm1pbihiLDUxMikqKG8ub3ZlcnNjYWxlZFovbi56b29tKSouNTtsZXQgVD1vLmNhbm9uaWNhbC50b1N0cmluZygpO28ub3ZlcnNjYWxlZFohPT1vLmNhbm9uaWNhbC56JiYoVCs9YCA9PiAke28ub3ZlcnNjYWxlZFp9YCksVCs9YCAke3l9a2JgLGZ1bmN0aW9uKGUsdCl7ZS5pbml0RGVidWdPdmVybGF5Q2FudmFzKCk7Y29uc3QgaT1lLmRlYnVnT3ZlcmxheUNhbnZhcyxvPWUuY29udGV4dC5nbCxyPWUuZGVidWdPdmVybGF5Q2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtyLmNsZWFyUmVjdCgwLDAsaS53aWR0aCxpLmhlaWdodCksci5zaGFkb3dDb2xvcj1cIndoaXRlXCIsci5zaGFkb3dCbHVyPTIsci5saW5lV2lkdGg9MS41LHIuc3Ryb2tlU3R5bGU9XCJ3aGl0ZVwiLHIudGV4dEJhc2VsaW5lPVwidG9wXCIsci5mb250PVwiYm9sZCAzNnB4IE9wZW4gU2Fucywgc2Fucy1zZXJpZlwiLHIuZmlsbFRleHQodCw1LDUpLHIuc3Ryb2tlVGV4dCh0LDUsNSksZS5kZWJ1Z092ZXJsYXlUZXh0dXJlLnVwZGF0ZShpKSxlLmRlYnVnT3ZlcmxheVRleHR1cmUuYmluZChvLkxJTkVBUixvLkNMQU1QX1RPX0VER0UpO30odCxUKTtjb25zdCBFPXUuX3RpbGVEZWJ1Z1RleHRCdWZmZXJ8fHQuZGVidWdCdWZmZXIsQz11Ll90aWxlRGVidWdUZXh0SW5kZXhCdWZmZXJ8fHQucXVhZFRyaWFuZ2xlSW5kZXhCdWZmZXIsTT11Ll90aWxlRGVidWdUZXh0U2VnbWVudHN8fHQuZGVidWdTZWdtZW50cztoLmRyYXcocixzLlRSSUFOR0xFUyxfLGQsZS5Db2xvck1vZGUuYWxwaGFCbGVuZGVkLGUuQ3VsbEZhY2VNb2RlLmRpc2FibGVkLFZpKGMsZS5Db2xvci50cmFuc3BhcmVudCx3KSxtLEUsQyxNLG51bGwsbnVsbCxudWxsLFt1Ll9nbG9iZVRpbGVEZWJ1Z1RleHRCdWZmZXJdKTt9ZnVuY3Rpb24gQ28oZSx0LGksbyl7SW8oZSwwLHQraS8yLGUudHJhbnNmb3JtLndpZHRoLGksbyk7fWZ1bmN0aW9uIE1vKGUsdCxpLG8pe0lvKGUsdC1pLzIsMCxpLGUudHJhbnNmb3JtLmhlaWdodCxvKTt9ZnVuY3Rpb24gSW8odCxpLG8scixuLHMpe2NvbnN0IGE9dC5jb250ZXh0LGw9YS5nbDtsLmVuYWJsZShsLlNDSVNTT1JfVEVTVCksbC5zY2lzc29yKGkqZS5leHBvcnRlZC5kZXZpY2VQaXhlbFJhdGlvLG8qZS5leHBvcnRlZC5kZXZpY2VQaXhlbFJhdGlvLHIqZS5leHBvcnRlZC5kZXZpY2VQaXhlbFJhdGlvLG4qZS5leHBvcnRlZC5kZXZpY2VQaXhlbFJhdGlvKSxhLmNsZWFyKHtjb2xvcjpzfSksbC5kaXNhYmxlKGwuU0NJU1NPUl9URVNUKTt9Y29uc3QgUG89ZS5jcmVhdGVMYXlvdXQoW3tuYW1lOlwiYV9wb3NfM2ZcIixjb21wb25lbnRzOjMsdHlwZTpcIkZsb2F0MzJcIn1dKSx7bWVtYmVyczpTb309UG87ZnVuY3Rpb24gRG8oZSx0LGksbyl7ZS5lbXBsYWNlQmFjayh0LGksbyk7fWNsYXNzIExve2NvbnN0cnVjdG9yKHQpe3RoaXMudmVydGV4QXJyYXk9bmV3IGUuU3RydWN0QXJyYXlMYXlvdXQzZjEyLHRoaXMuaW5kaWNlcz1uZXcgZS5TdHJ1Y3RBcnJheUxheW91dDN1aTYsRG8odGhpcy52ZXJ0ZXhBcnJheSwtMSwtMSwxKSxEbyh0aGlzLnZlcnRleEFycmF5LDEsLTEsMSksRG8odGhpcy52ZXJ0ZXhBcnJheSwtMSwxLDEpLERvKHRoaXMudmVydGV4QXJyYXksMSwxLDEpLERvKHRoaXMudmVydGV4QXJyYXksLTEsLTEsLTEpLERvKHRoaXMudmVydGV4QXJyYXksMSwtMSwtMSksRG8odGhpcy52ZXJ0ZXhBcnJheSwtMSwxLC0xKSxEbyh0aGlzLnZlcnRleEFycmF5LDEsMSwtMSksdGhpcy5pbmRpY2VzLmVtcGxhY2VCYWNrKDUsMSwzKSx0aGlzLmluZGljZXMuZW1wbGFjZUJhY2soMyw3LDUpLHRoaXMuaW5kaWNlcy5lbXBsYWNlQmFjayg2LDIsMCksdGhpcy5pbmRpY2VzLmVtcGxhY2VCYWNrKDAsNCw2KSx0aGlzLmluZGljZXMuZW1wbGFjZUJhY2soMiw2LDcpLHRoaXMuaW5kaWNlcy5lbXBsYWNlQmFjayg3LDMsMiksdGhpcy5pbmRpY2VzLmVtcGxhY2VCYWNrKDUsNCwwKSx0aGlzLmluZGljZXMuZW1wbGFjZUJhY2soMCwxLDUpLHRoaXMuaW5kaWNlcy5lbXBsYWNlQmFjaygwLDIsMyksdGhpcy5pbmRpY2VzLmVtcGxhY2VCYWNrKDMsMSwwKSx0aGlzLmluZGljZXMuZW1wbGFjZUJhY2soNyw2LDQpLHRoaXMuaW5kaWNlcy5lbXBsYWNlQmFjayg0LDUsNyksdGhpcy52ZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy52ZXJ0ZXhBcnJheSxTbyksdGhpcy5pbmRleEJ1ZmZlcj10LmNyZWF0ZUluZGV4QnVmZmVyKHRoaXMuaW5kaWNlcyksdGhpcy5zZWdtZW50PWUuU2VnbWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCwzNiwxMik7fX1mdW5jdGlvbiBBbyh0LGksbyxyLG4scyl7Y29uc3QgYT10LmdsLGw9aS5wYWludC5nZXQoXCJza3ktYXRtb3NwaGVyZS1jb2xvclwiKSxjPWkucGFpbnQuZ2V0KFwic2t5LWF0bW9zcGhlcmUtaGFsby1jb2xvclwiKSxoPWkucGFpbnQuZ2V0KFwic2t5LWF0bW9zcGhlcmUtc3VuLWludGVuc2l0eVwiKSx1PSgoZSx0LGksbyxyKT0+KHt1X21hdHJpeF8zZjplLHVfc3VuX2RpcmVjdGlvbjp0LHVfc3VuX2ludGVuc2l0eTppLHVfY29sb3JfdGludF9yOltvLnIsby5nLG8uYixvLmFdLHVfY29sb3JfdGludF9tOltyLnIsci5nLHIuYixyLmFdLHVfbHVtaW5hbmNlOjVlLTV9KSkoZS5mcm9tTWF0NChlLmNyZWF0ZSQxKCksciksbixoLGwsYyk7YS5mcmFtZWJ1ZmZlclRleHR1cmUyRChhLkZSQU1FQlVGRkVSLGEuQ09MT1JfQVRUQUNITUVOVDAsYS5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1grcyxpLnNreWJveFRleHR1cmUsMCksby5kcmF3KHQsYS5UUklBTkdMRVMsZS5EZXB0aE1vZGUuZGlzYWJsZWQsZS5TdGVuY2lsTW9kZS5kaXNhYmxlZCxlLkNvbG9yTW9kZS51bmJsZW5kZWQsZS5DdWxsRmFjZU1vZGUuZnJvbnRDVyx1LFwic2t5Ym94Q2FwdHVyZVwiLGkuc2t5Ym94R2VvbWV0cnkudmVydGV4QnVmZmVyLGkuc2t5Ym94R2VvbWV0cnkuaW5kZXhCdWZmZXIsaS5za3lib3hHZW9tZXRyeS5zZWdtZW50KTt9Y29uc3Qgem89ZS5jcmVhdGVMYXlvdXQoW3t0eXBlOlwiRmxvYXQzMlwiLG5hbWU6XCJhX3Bvc1wiLGNvbXBvbmVudHM6M30se3R5cGU6XCJGbG9hdDMyXCIsbmFtZTpcImFfdXZcIixjb21wb25lbnRzOjJ9XSk7Y2xhc3MgUm97Y29uc3RydWN0b3IodCl7Y29uc3QgaT1uZXcgZS5TdHJ1Y3RBcnJheUxheW91dDVmMjA7aS5lbXBsYWNlQmFjaygtMSwxLDEsMCwwKSxpLmVtcGxhY2VCYWNrKDEsMSwxLDEsMCksaS5lbXBsYWNlQmFjaygxLC0xLDEsMSwxKSxpLmVtcGxhY2VCYWNrKC0xLC0xLDEsMCwxKTtjb25zdCBvPW5ldyBlLlN0cnVjdEFycmF5TGF5b3V0M3VpNjtvLmVtcGxhY2VCYWNrKDAsMSwyKSxvLmVtcGxhY2VCYWNrKDIsMywwKSx0aGlzLnZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcihpLHpvLm1lbWJlcnMpLHRoaXMuaW5kZXhCdWZmZXI9dC5jcmVhdGVJbmRleEJ1ZmZlcihvKSx0aGlzLnNlZ21lbnRzPWUuU2VnbWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCw0LDIpO31kZXN0cm95KCl7dGhpcy52ZXJ0ZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuaW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuc2VnbWVudHMuZGVzdHJveSgpO319Y29uc3QgT289e3N5bWJvbDpmdW5jdGlvbih0LGksbyxyLG4pe2lmKFwidHJhbnNsdWNlbnRcIiE9PXQucmVuZGVyUGFzcylyZXR1cm47Y29uc3Qgcz1lLlN0ZW5jaWxNb2RlLmRpc2FibGVkLGE9dC5jb2xvck1vZGVGb3JSZW5kZXJQYXNzKCk7by5sYXlvdXQuZ2V0KFwidGV4dC12YXJpYWJsZS1hbmNob3JcIikmJmZ1bmN0aW9uKHQsaSxvLHIsbixzLGEpe2NvbnN0IGw9aS50cmFuc2Zvcm0sYz1cIm1hcFwiPT09bixoPVwibWFwXCI9PT1zO2Zvcihjb25zdCBpIG9mIHQpe2NvbnN0IHQ9ci5nZXRUaWxlKGkpLG49dC5nZXRCdWNrZXQobyk7aWYoIW58fCFuLnRleHR8fCFuLnRleHQuc2VnbWVudHMuZ2V0KCkubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IHM9ZS5ldmFsdWF0ZVNpemVGb3Jab29tKG4udGV4dFNpemVEYXRhLGwuem9vbSksdT14dChpLG4uZ2V0UHJvamVjdGlvbigpLGwpLF89bC5jYWxjdWxhdGVQaXhlbHNUb1RpbGVVbml0c01hdHJpeCh0KSxkPWV0KHUsdC50aWxlSUQuY2Fub25pY2FsLGgsYyxsLG4uZ2V0UHJvamVjdGlvbigpLF8pLHA9XCJub25lXCIhPT1vLmxheW91dC5nZXQoXCJpY29uLXRleHQtZml0XCIpJiZuLmhhc0ljb25EYXRhKCk7aWYocyl7Y29uc3Qgbz1NYXRoLnBvdygyLGwuem9vbS10LnRpbGVJRC5vdmVyc2NhbGVkWik7dW8obixjLGgsYSxlLnN5bWJvbFNpemUsbCxkLGksbyxzLHApO319fShyLHQsbyxpLG8ubGF5b3V0LmdldChcInRleHQtcm90YXRpb24tYWxpZ25tZW50XCIpLG8ubGF5b3V0LmdldChcInRleHQtcGl0Y2gtYWxpZ25tZW50XCIpLG4pLDAhPT1vLnBhaW50LmdldChcImljb24tb3BhY2l0eVwiKS5jb25zdGFudE9yKDEpJiZwbyh0LGksbyxyLCExLG8ucGFpbnQuZ2V0KFwiaWNvbi10cmFuc2xhdGVcIiksby5wYWludC5nZXQoXCJpY29uLXRyYW5zbGF0ZS1hbmNob3JcIiksby5sYXlvdXQuZ2V0KFwiaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnRcIiksby5sYXlvdXQuZ2V0KFwiaWNvbi1waXRjaC1hbGlnbm1lbnRcIiksby5sYXlvdXQuZ2V0KFwiaWNvbi1rZWVwLXVwcmlnaHRcIikscyxhKSwwIT09by5wYWludC5nZXQoXCJ0ZXh0LW9wYWNpdHlcIikuY29uc3RhbnRPcigxKSYmcG8odCxpLG8sciwhMCxvLnBhaW50LmdldChcInRleHQtdHJhbnNsYXRlXCIpLG8ucGFpbnQuZ2V0KFwidGV4dC10cmFuc2xhdGUtYW5jaG9yXCIpLG8ubGF5b3V0LmdldChcInRleHQtcm90YXRpb24tYWxpZ25tZW50XCIpLG8ubGF5b3V0LmdldChcInRleHQtcGl0Y2gtYWxpZ25tZW50XCIpLG8ubGF5b3V0LmdldChcInRleHQta2VlcC11cHJpZ2h0XCIpLHMsYSksaS5tYXAuc2hvd0NvbGxpc2lvbkJveGVzJiYobG8odCxpLG8scixvLnBhaW50LmdldChcInRleHQtdHJhbnNsYXRlXCIpLG8ucGFpbnQuZ2V0KFwidGV4dC10cmFuc2xhdGUtYW5jaG9yXCIpLCEwKSxsbyh0LGksbyxyLG8ucGFpbnQuZ2V0KFwiaWNvbi10cmFuc2xhdGVcIiksby5wYWludC5nZXQoXCJpY29uLXRyYW5zbGF0ZS1hbmNob3JcIiksITEpKTt9LGNpcmNsZTpmdW5jdGlvbih0LGksbyxyKXtpZihcInRyYW5zbHVjZW50XCIhPT10LnJlbmRlclBhc3MpcmV0dXJuO2NvbnN0IG49by5wYWludC5nZXQoXCJjaXJjbGUtb3BhY2l0eVwiKSxzPW8ucGFpbnQuZ2V0KFwiY2lyY2xlLXN0cm9rZS13aWR0aFwiKSxhPW8ucGFpbnQuZ2V0KFwiY2lyY2xlLXN0cm9rZS1vcGFjaXR5XCIpLGw9dm9pZCAwIT09by5sYXlvdXQuZ2V0KFwiY2lyY2xlLXNvcnQta2V5XCIpLmNvbnN0YW50T3IoMSk7aWYoMD09PW4uY29uc3RhbnRPcigxKSYmKDA9PT1zLmNvbnN0YW50T3IoMSl8fDA9PT1hLmNvbnN0YW50T3IoMSkpKXJldHVybjtjb25zdCBjPXQuY29udGV4dCxoPWMuZ2wsdT10LnRyYW5zZm9ybSxfPXQuZGVwdGhNb2RlRm9yU3VibGF5ZXIoMCxlLkRlcHRoTW9kZS5SZWFkT25seSksZD1lLlN0ZW5jaWxNb2RlLmRpc2FibGVkLHA9dC5jb2xvck1vZGVGb3JSZW5kZXJQYXNzKCksbT1cImdsb2JlXCI9PT11LnByb2plY3Rpb24ubmFtZSxmPVtlLm1lcmNhdG9yWGZyb21MbmcodS5jZW50ZXIubG5nKSxlLm1lcmNhdG9yWWZyb21MYXQodS5jZW50ZXIubGF0KV0sZz1bXTtmb3IobGV0IG49MDtuPHIubGVuZ3RoO24rKyl7Y29uc3Qgcz1yW25dLGE9aS5nZXRUaWxlKHMpLGM9YS5nZXRCdWNrZXQobyk7aWYoIWN8fGMucHJvamVjdGlvbi5uYW1lIT09dS5wcm9qZWN0aW9uLm5hbWUpY29udGludWU7Y29uc3QgaD1jLnByb2dyYW1Db25maWd1cmF0aW9ucy5nZXQoby5pZCksXz1HaShvKTttJiZfLnB1c2goXCJQUk9KRUNUSU9OX0dMT0JFX1ZJRVdcIik7Y29uc3QgZD10LnVzZVByb2dyYW0oXCJjaXJjbGVcIixoLF8pLHA9Yy5sYXlvdXRWZXJ0ZXhCdWZmZXIsdj1jLmdsb2JlRXh0VmVydGV4QnVmZmVyLHg9Yy5pbmRleEJ1ZmZlcix5PXUucHJvamVjdGlvbi5jcmVhdGVJbnZlcnNpb25NYXRyaXgodSxzLmNhbm9uaWNhbCksYj17cHJvZ3JhbUNvbmZpZ3VyYXRpb246aCxwcm9ncmFtOmQsbGF5b3V0VmVydGV4QnVmZmVyOnAsZ2xvYmVFeHRWZXJ0ZXhCdWZmZXI6dixpbmRleEJ1ZmZlcjp4LHVuaWZvcm1WYWx1ZXM6amkodCxzLGEseSxmLG8pLHRpbGU6YX07aWYobCl7Y29uc3QgdD1jLnNlZ21lbnRzLmdldCgpO2Zvcihjb25zdCBpIG9mIHQpZy5wdXNoKHtzZWdtZW50czpuZXcgZS5TZWdtZW50VmVjdG9yKFtpXSksc29ydEtleTppLnNvcnRLZXksc3RhdGU6Yn0pO31lbHNlIGcucHVzaCh7c2VnbWVudHM6Yy5zZWdtZW50cyxzb3J0S2V5OjAsc3RhdGU6Yn0pO31sJiZnLnNvcnQoKChlLHQpPT5lLnNvcnRLZXktdC5zb3J0S2V5KSk7Y29uc3Qgdj17dXNlRGVwdGhGb3JPY2NsdXNpb246IW19O2Zvcihjb25zdCBpIG9mIGcpe2NvbnN0e3Byb2dyYW1Db25maWd1cmF0aW9uOnIscHJvZ3JhbTpuLGxheW91dFZlcnRleEJ1ZmZlcjpzLGdsb2JlRXh0VmVydGV4QnVmZmVyOmEsaW5kZXhCdWZmZXI6bCx1bmlmb3JtVmFsdWVzOm0sdGlsZTpmfT1pLnN0YXRlLGc9aS5zZWdtZW50czt0LnRlcnJhaW4mJnQudGVycmFpbi5zZXR1cEVsZXZhdGlvbkRyYXcoZixuLHYpLHQucHJlcGFyZURyYXdQcm9ncmFtKGMsbixmLnRpbGVJRC50b1Vud3JhcHBlZCgpKSxuLmRyYXcoYyxoLlRSSUFOR0xFUyxfLGQscCxlLkN1bGxGYWNlTW9kZS5kaXNhYmxlZCxtLG8uaWQscyxsLGcsby5wYWludCx1Lnpvb20scixbYV0pO319LGhlYXRtYXA6ZnVuY3Rpb24odCxpLG8scil7aWYoMCE9PW8ucGFpbnQuZ2V0KFwiaGVhdG1hcC1vcGFjaXR5XCIpKWlmKFwib2Zmc2NyZWVuXCI9PT10LnJlbmRlclBhc3Mpe2NvbnN0IG49dC5jb250ZXh0LHM9bi5nbCxhPWUuU3RlbmNpbE1vZGUuZGlzYWJsZWQsbD1uZXcgZS5Db2xvck1vZGUoW3MuT05FLHMuT05FXSxlLkNvbG9yLnRyYW5zcGFyZW50LFshMCwhMCwhMCwhMF0pOyFmdW5jdGlvbihlLHQsaSxvKXtjb25zdCByPWUuZ2wsbj10LndpZHRoKm8scz10LmhlaWdodCpvO2UuYWN0aXZlVGV4dHVyZS5zZXQoci5URVhUVVJFMSksZS52aWV3cG9ydC5zZXQoWzAsMCxuLHNdKTtsZXQgYT1pLmhlYXRtYXBGYm87aWYoIWF8fGEmJihhLndpZHRoIT09bnx8YS5oZWlnaHQhPT1zKSl7YSYmYS5kZXN0cm95KCk7Y29uc3QgdD1yLmNyZWF0ZVRleHR1cmUoKTtyLmJpbmRUZXh0dXJlKHIuVEVYVFVSRV8yRCx0KSxyLnRleFBhcmFtZXRlcmkoci5URVhUVVJFXzJELHIuVEVYVFVSRV9XUkFQX1Msci5DTEFNUF9UT19FREdFKSxyLnRleFBhcmFtZXRlcmkoci5URVhUVVJFXzJELHIuVEVYVFVSRV9XUkFQX1Qsci5DTEFNUF9UT19FREdFKSxyLnRleFBhcmFtZXRlcmkoci5URVhUVVJFXzJELHIuVEVYVFVSRV9NSU5fRklMVEVSLHIuTElORUFSKSxyLnRleFBhcmFtZXRlcmkoci5URVhUVVJFXzJELHIuVEVYVFVSRV9NQUdfRklMVEVSLHIuTElORUFSKSxhPWkuaGVhdG1hcEZibz1lLmNyZWF0ZUZyYW1lYnVmZmVyKG4scywhMSksZnVuY3Rpb24oZSx0LGksbyxyLG4pe2NvbnN0IHM9ZS5nbDtzLnRleEltYWdlMkQocy5URVhUVVJFXzJELDAsZS5pc1dlYkdMMiYmZS5leHRSZW5kZXJUb1RleHR1cmVIYWxmRmxvYXQ/cy5SR0JBMTZGOnMuUkdCQSxyLG4sMCxzLlJHQkEsZS5leHRSZW5kZXJUb1RleHR1cmVIYWxmRmxvYXQ/ZS5pc1dlYkdMMj9zLkhBTEZfRkxPQVQ6ZS5leHRUZXh0dXJlSGFsZkZsb2F0LkhBTEZfRkxPQVRfT0VTOnMuVU5TSUdORURfQllURSxudWxsKSxvLmNvbG9yQXR0YWNobWVudC5zZXQoaSk7fShlLDAsdCxhLG4scyk7fWVsc2Ugci5iaW5kVGV4dHVyZShyLlRFWFRVUkVfMkQsYS5jb2xvckF0dGFjaG1lbnQuZ2V0KCkpLGUuYmluZEZyYW1lYnVmZmVyLnNldChhLmZyYW1lYnVmZmVyKTt9KG4sdCxvLFwiZ2xvYmVcIj09PXQudHJhbnNmb3JtLnByb2plY3Rpb24ubmFtZT8uNTouMjUpLG4uY2xlYXIoe2NvbG9yOmUuQ29sb3IudHJhbnNwYXJlbnR9KTtjb25zdCBjPXQudHJhbnNmb3JtLGg9XCJnbG9iZVwiPT09Yy5wcm9qZWN0aW9uLm5hbWUsdT1oP1tcIlBST0pFQ1RJT05fR0xPQkVfVklFV1wiXTpudWxsLF89aD9lLkN1bGxGYWNlTW9kZS5mcm9udENDVzplLkN1bGxGYWNlTW9kZS5kaXNhYmxlZCxkPVtlLm1lcmNhdG9yWGZyb21MbmcoYy5jZW50ZXIubG5nKSxlLm1lcmNhdG9yWWZyb21MYXQoYy5jZW50ZXIubGF0KV07Zm9yKGxldCBwPTA7cDxyLmxlbmd0aDtwKyspe2NvbnN0IG09cltwXTtpZihpLmhhc1JlbmRlcmFibGVQYXJlbnQobSkpY29udGludWU7Y29uc3QgZj1pLmdldFRpbGUobSksZz1mLmdldEJ1Y2tldChvKTtpZighZ3x8Zy5wcm9qZWN0aW9uLm5hbWUhPT1jLnByb2plY3Rpb24ubmFtZSljb250aW51ZTtjb25zdCB2PWcucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChvLmlkKSx4PXQudXNlUHJvZ3JhbShcImhlYXRtYXBcIix2LHUpLHt6b29tOnl9PXQudHJhbnNmb3JtO3QudGVycmFpbiYmdC50ZXJyYWluLnNldHVwRWxldmF0aW9uRHJhdyhmLHgpLHQucHJlcGFyZURyYXdQcm9ncmFtKG4seCxtLnRvVW53cmFwcGVkKCkpO2NvbnN0IGI9Yy5wcm9qZWN0aW9uLmNyZWF0ZUludmVyc2lvbk1hdHJpeChjLG0uY2Fub25pY2FsKTt4LmRyYXcobixzLlRSSUFOR0xFUyxlLkRlcHRoTW9kZS5kaXNhYmxlZCxhLGwsXyxYaSh0LG0sZixiLGQseSxvLnBhaW50LmdldChcImhlYXRtYXAtaW50ZW5zaXR5XCIpKSxvLmlkLGcubGF5b3V0VmVydGV4QnVmZmVyLGcuaW5kZXhCdWZmZXIsZy5zZWdtZW50cyxvLnBhaW50LHQudHJhbnNmb3JtLnpvb20sdixoP1tnLmdsb2JlRXh0VmVydGV4QnVmZmVyXTpudWxsKTt9bi52aWV3cG9ydC5zZXQoWzAsMCx0LndpZHRoLHQuaGVpZ2h0XSk7fWVsc2UgXCJ0cmFuc2x1Y2VudFwiPT09dC5yZW5kZXJQYXNzJiYodC5jb250ZXh0LnNldENvbG9yTW9kZSh0LmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKSksZnVuY3Rpb24odCxpKXtjb25zdCBvPXQuY29udGV4dCxyPW8uZ2wsbj1pLmhlYXRtYXBGYm87aWYoIW4pcmV0dXJuO28uYWN0aXZlVGV4dHVyZS5zZXQoci5URVhUVVJFMCksci5iaW5kVGV4dHVyZShyLlRFWFRVUkVfMkQsbi5jb2xvckF0dGFjaG1lbnQuZ2V0KCkpLG8uYWN0aXZlVGV4dHVyZS5zZXQoci5URVhUVVJFMSk7bGV0IHM9aS5jb2xvclJhbXBUZXh0dXJlO3N8fChzPWkuY29sb3JSYW1wVGV4dHVyZT1uZXcgZS5UZXh0dXJlKG8saS5jb2xvclJhbXAsci5SR0JBKSkscy5iaW5kKHIuTElORUFSLHIuQ0xBTVBfVE9fRURHRSksdC51c2VQcm9ncmFtKFwiaGVhdG1hcFRleHR1cmVcIikuZHJhdyhvLHIuVFJJQU5HTEVTLGUuRGVwdGhNb2RlLmRpc2FibGVkLGUuU3RlbmNpbE1vZGUuZGlzYWJsZWQsdC5jb2xvck1vZGVGb3JSZW5kZXJQYXNzKCksZS5DdWxsRmFjZU1vZGUuZGlzYWJsZWQsKChlLHQsaSxvKT0+KHt1X2ltYWdlOjAsdV9jb2xvcl9yYW1wOjEsdV9vcGFjaXR5OnQucGFpbnQuZ2V0KFwiaGVhdG1hcC1vcGFjaXR5XCIpfSkpKDAsaSksaS5pZCx0LnZpZXdwb3J0QnVmZmVyLHQucXVhZFRyaWFuZ2xlSW5kZXhCdWZmZXIsdC52aWV3cG9ydFNlZ21lbnRzLGkucGFpbnQsdC50cmFuc2Zvcm0uem9vbSk7fSh0LG8pKTt9LGxpbmU6ZnVuY3Rpb24odCxpLG8scil7aWYoXCJ0cmFuc2x1Y2VudFwiIT09dC5yZW5kZXJQYXNzKXJldHVybjtjb25zdCBuPW8ucGFpbnQuZ2V0KFwibGluZS1vcGFjaXR5XCIpLHM9by5wYWludC5nZXQoXCJsaW5lLXdpZHRoXCIpO2lmKDA9PT1uLmNvbnN0YW50T3IoMSl8fDA9PT1zLmNvbnN0YW50T3IoMSkpcmV0dXJuO2NvbnN0IGE9dC5kZXB0aE1vZGVGb3JTdWJsYXllcigwLGUuRGVwdGhNb2RlLlJlYWRPbmx5KSxsPXQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpLGM9dC50ZXJyYWluJiZ0LnRlcnJhaW4ucmVuZGVyaW5nVG9UZXh0dXJlPzE6ZS5leHBvcnRlZC5kZXZpY2VQaXhlbFJhdGlvLGg9by5wYWludC5nZXQoXCJsaW5lLWRhc2hhcnJheVwiKSx1PWguY29uc3RhbnRPcigxKSxfPW8ubGF5b3V0LmdldChcImxpbmUtY2FwXCIpLGQ9by5wYWludC5nZXQoXCJsaW5lLXBhdHRlcm5cIikscD1kLmNvbnN0YW50T3IoMSksbT1vLnBhaW50LmdldChcImxpbmUtZ3JhZGllbnRcIiksZj1wP1wibGluZVBhdHRlcm5cIjpcImxpbmVcIixnPXQuY29udGV4dCx2PWcuZ2wseD0oZT0+e2NvbnN0IHQ9W107S2koZSkmJnQucHVzaChcIlJFTkRFUl9MSU5FX0RBU0hcIiksZS5wYWludC5nZXQoXCJsaW5lLWdyYWRpZW50XCIpJiZ0LnB1c2goXCJSRU5ERVJfTElORV9HUkFESUVOVFwiKTtjb25zdCBpPWUucGFpbnQuZ2V0KFwibGluZS10cmltLW9mZnNldFwiKTswPT09aVswXSYmMD09PWlbMV18fHQucHVzaChcIlJFTkRFUl9MSU5FX1RSSU1fT0ZGU0VUXCIpO2NvbnN0IG89ZS5wYWludC5nZXQoXCJsaW5lLXBhdHRlcm5cIikuY29uc3RhbnRPcigxKSxyPTEhPT1lLnBhaW50LmdldChcImxpbmUtb3BhY2l0eVwiKS5jb25zdGFudE9yKDEpO3JldHVybiAhbyYmciYmdC5wdXNoKFwiUkVOREVSX0xJTkVfQUxQSEFfRElTQ0FSRFwiKSx0fSkobyk7bGV0IHk9eC5pbmNsdWRlcyhcIlJFTkRFUl9MSU5FX0FMUEhBX0RJU0NBUkRcIik7dC50ZXJyYWluJiZ0LnRlcnJhaW4uY2xpcE9yTWFza092ZXJsYXBTdGVuY2lsVHlwZSgpJiYoeT0hMSk7Zm9yKGNvbnN0IG4gb2Ygcil7Y29uc3Qgcj1pLmdldFRpbGUobik7aWYocCYmIXIucGF0dGVybnNMb2FkZWQoKSljb250aW51ZTtjb25zdCBzPXIuZ2V0QnVja2V0KG8pO2lmKCFzKWNvbnRpbnVlO3QucHJlcGFyZURyYXdUaWxlKCk7Y29uc3QgYj1zLnByb2dyYW1Db25maWd1cmF0aW9ucy5nZXQoby5pZCksdz10LnVzZVByb2dyYW0oZixiLHgpLFQ9ZC5jb25zdGFudE9yKG51bGwpO2lmKFQmJnIuaW1hZ2VBdGxhcyl7Y29uc3QgZT1yLmltYWdlQXRsYXMucGF0dGVyblBvc2l0aW9uc1tULnRvU3RyaW5nKCldO2UmJmIuc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRpb25zKGUpO31jb25zdCBFPWguY29uc3RhbnRPcihudWxsKSxDPV8uY29uc3RhbnRPcihudWxsKTtpZighcCYmRSYmQyYmci5saW5lQXRsYXMpe2NvbnN0IGU9ci5saW5lQXRsYXMuZ2V0RGFzaChFLEMpO2UmJmIuc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRpb25zKGUpO31sZXRbTSxJXT1vLnBhaW50LmdldChcImxpbmUtdHJpbS1vZmZzZXRcIik7aWYoXCJyb3VuZFwiPT09Q3x8XCJzcXVhcmVcIj09PUMpe2NvbnN0IGU9MTtNIT09SSYmKDA9PT1NJiYoTS09ZSksMT09PUkmJihJKz1lKSk7fWNvbnN0IFA9dC50ZXJyYWluP24ucHJvak1hdHJpeDpudWxsLFM9cD8kaSh0LHIsbyxQLGMpOnFpKHQscixvLFAscy5saW5lQ2xpcHNBcnJheS5sZW5ndGgsYyxbTSxJXSk7aWYobSl7Y29uc3Qgcj1zLmdyYWRpZW50c1tvLmlkXTtsZXQgYT1yLnRleHR1cmU7aWYoby5ncmFkaWVudFZlcnNpb24hPT1yLnZlcnNpb24pe2xldCBsPTI1NjtpZihvLnN0ZXBJbnRlcnBvbGFudCl7Y29uc3Qgbz1pLmdldFNvdXJjZSgpLm1heHpvb20scj1uLmNhbm9uaWNhbC56PT09bz9NYXRoLmNlaWwoMTw8dC50cmFuc2Zvcm0ubWF4Wm9vbS1uLmNhbm9uaWNhbC56KToxO2w9ZS5jbGFtcChlLm5leHRQb3dlck9mVHdvKHMubWF4TGluZUxlbmd0aC9lLkVYVEVOVCoxMDI0KnIpLDI1NixnLm1heFRleHR1cmVTaXplKTt9ci5ncmFkaWVudD1lLnJlbmRlckNvbG9yUmFtcCh7ZXhwcmVzc2lvbjpvLmdyYWRpZW50RXhwcmVzc2lvbigpLGV2YWx1YXRpb25LZXk6XCJsaW5lUHJvZ3Jlc3NcIixyZXNvbHV0aW9uOmwsaW1hZ2U6ci5ncmFkaWVudHx8dm9pZCAwLGNsaXBzOnMubGluZUNsaXBzQXJyYXl9KSxyLnRleHR1cmU/ci50ZXh0dXJlLnVwZGF0ZShyLmdyYWRpZW50KTpyLnRleHR1cmU9bmV3IGUuVGV4dHVyZShnLHIuZ3JhZGllbnQsdi5SR0JBKSxyLnZlcnNpb249by5ncmFkaWVudFZlcnNpb24sYT1yLnRleHR1cmU7fWcuYWN0aXZlVGV4dHVyZS5zZXQodi5URVhUVVJFMSksYS5iaW5kKG8uc3RlcEludGVycG9sYW50P3YuTkVBUkVTVDp2LkxJTkVBUix2LkNMQU1QX1RPX0VER0UpO311JiYoZy5hY3RpdmVUZXh0dXJlLnNldCh2LlRFWFRVUkUwKSxyLmxpbmVBdGxhc1RleHR1cmUuYmluZCh2LkxJTkVBUix2LlJFUEVBVCksYi51cGRhdGVQYWludEJ1ZmZlcnMoKSkscCYmKGcuYWN0aXZlVGV4dHVyZS5zZXQodi5URVhUVVJFMCksci5pbWFnZUF0bGFzVGV4dHVyZS5iaW5kKHYuTElORUFSLHYuQ0xBTVBfVE9fRURHRSksYi51cGRhdGVQYWludEJ1ZmZlcnMoKSksdC5wcmVwYXJlRHJhd1Byb2dyYW0oZyx3LG4udG9VbndyYXBwZWQoKSk7Y29uc3QgRD1pPT57dy5kcmF3KGcsdi5UUklBTkdMRVMsYSxpLGwsZS5DdWxsRmFjZU1vZGUuZGlzYWJsZWQsUyxvLmlkLHMubGF5b3V0VmVydGV4QnVmZmVyLHMuaW5kZXhCdWZmZXIscy5zZWdtZW50cyxvLnBhaW50LHQudHJhbnNmb3JtLnpvb20sYixbcy5sYXlvdXRWZXJ0ZXhCdWZmZXIyXSk7fTtpZih5KXtjb25zdCBpPXQuc3RlbmNpbE1vZGVGb3JDbGlwcGluZyhuKS5yZWY7MD09PWkmJnQudGVycmFpbiYmZy5jbGVhcih7c3RlbmNpbDowfSk7Y29uc3Qgbz17ZnVuYzp2LkVRVUFMLG1hc2s6MjU1fTtTLnVfYWxwaGFfZGlzY2FyZF90aHJlc2hvbGQ9LjgsRChuZXcgZS5TdGVuY2lsTW9kZShvLGksMjU1LHYuS0VFUCx2LktFRVAsdi5JTlZFUlQpKSxTLnVfYWxwaGFfZGlzY2FyZF90aHJlc2hvbGQ9MCxEKG5ldyBlLlN0ZW5jaWxNb2RlKG8saSwyNTUsdi5LRUVQLHYuS0VFUCx2LktFRVApKTt9ZWxzZSBEKHQuc3RlbmNpbE1vZGVGb3JDbGlwcGluZyhuKSk7fXkmJih0LnJlc2V0U3RlbmNpbENsaXBwaW5nTWFza3MoKSx0LnRlcnJhaW4mJmcuY2xlYXIoe3N0ZW5jaWw6MH0pKTt9LGZpbGw6ZnVuY3Rpb24odCxpLG8scil7Y29uc3Qgbj1vLnBhaW50LmdldChcImZpbGwtY29sb3JcIikscz1vLnBhaW50LmdldChcImZpbGwtb3BhY2l0eVwiKTtpZigwPT09cy5jb25zdGFudE9yKDEpKXJldHVybjtjb25zdCBhPXQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpLGw9by5wYWludC5nZXQoXCJmaWxsLXBhdHRlcm5cIiksYz10Lm9wYXF1ZVBhc3NFbmFibGVkRm9yTGF5ZXIoKSYmIWwuY29uc3RhbnRPcigxKSYmMT09PW4uY29uc3RhbnRPcihlLkNvbG9yLnRyYW5zcGFyZW50KS5hJiYxPT09cy5jb25zdGFudE9yKDApP1wib3BhcXVlXCI6XCJ0cmFuc2x1Y2VudFwiO2lmKHQucmVuZGVyUGFzcz09PWMpe2NvbnN0IG49dC5kZXB0aE1vZGVGb3JTdWJsYXllcigxLFwib3BhcXVlXCI9PT10LnJlbmRlclBhc3M/ZS5EZXB0aE1vZGUuUmVhZFdyaXRlOmUuRGVwdGhNb2RlLlJlYWRPbmx5KTtmbyh0LGksbyxyLG4sYSwhMSk7fWlmKFwidHJhbnNsdWNlbnRcIj09PXQucmVuZGVyUGFzcyYmby5wYWludC5nZXQoXCJmaWxsLWFudGlhbGlhc1wiKSl7Y29uc3Qgbj10LmRlcHRoTW9kZUZvclN1YmxheWVyKG8uZ2V0UGFpbnRQcm9wZXJ0eShcImZpbGwtb3V0bGluZS1jb2xvclwiKT8yOjAsZS5EZXB0aE1vZGUuUmVhZE9ubHkpO2ZvKHQsaSxvLHIsbixhLCEwKTt9fSxcImZpbGwtZXh0cnVzaW9uXCI6ZnVuY3Rpb24odCxpLG8scil7Y29uc3Qgbj1vLnBhaW50LmdldChcImZpbGwtZXh0cnVzaW9uLW9wYWNpdHlcIik7aWYoMCE9PW4mJlwidHJhbnNsdWNlbnRcIj09PXQucmVuZGVyUGFzcyl7Y29uc3Qgcz1uZXcgZS5EZXB0aE1vZGUodC5jb250ZXh0LmdsLkxFUVVBTCxlLkRlcHRoTW9kZS5SZWFkV3JpdGUsdC5kZXB0aFJhbmdlRm9yM0QpO2lmKDEhPT1ufHxvLnBhaW50LmdldChcImZpbGwtZXh0cnVzaW9uLXBhdHRlcm5cIikuY29uc3RhbnRPcigxKSlnbyh0LGksbyxyLHMsZS5TdGVuY2lsTW9kZS5kaXNhYmxlZCxlLkNvbG9yTW9kZS5kaXNhYmxlZCksZ28odCxpLG8scixzLHQuc3RlbmNpbE1vZGVGb3IzRCgpLHQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpKSx0LnJlc2V0U3RlbmNpbENsaXBwaW5nTWFza3MoKTtlbHNlIHtjb25zdCBuPXQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpO2dvKHQsaSxvLHIscyxlLlN0ZW5jaWxNb2RlLmRpc2FibGVkLG4pO319fSxoaWxsc2hhZGU6ZnVuY3Rpb24odCxpLG8scil7aWYoXCJvZmZzY3JlZW5cIiE9PXQucmVuZGVyUGFzcyYmXCJ0cmFuc2x1Y2VudFwiIT09dC5yZW5kZXJQYXNzKXJldHVybjtjb25zdCBuPXQuY29udGV4dCxzPXQuZGVwdGhNb2RlRm9yU3VibGF5ZXIoMCxlLkRlcHRoTW9kZS5SZWFkT25seSksYT10LmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKSxsPXQudGVycmFpbiYmdC50ZXJyYWluLnJlbmRlcmluZ1RvVGV4dHVyZSxbYyxoXT1cInRyYW5zbHVjZW50XCIhPT10LnJlbmRlclBhc3N8fGw/W3t9LHJdOnQuc3RlbmNpbENvbmZpZ0Zvck92ZXJsYXAocik7Zm9yKGNvbnN0IHIgb2YgaCl7Y29uc3Qgbj1pLmdldFRpbGUocik7aWYobi5uZWVkc0hpbGxzaGFkZVByZXBhcmUmJlwib2Zmc2NyZWVuXCI9PT10LnJlbmRlclBhc3MpZmkodCxuLG8scyxlLlN0ZW5jaWxNb2RlLmRpc2FibGVkLGEpO2Vsc2UgaWYoXCJ0cmFuc2x1Y2VudFwiPT09dC5yZW5kZXJQYXNzKXtjb25zdCBlPWwmJnQudGVycmFpbj90LnRlcnJhaW4uc3RlbmNpbE1vZGVGb3JSVFRPdmVybGFwKHIpOmNbci5vdmVyc2NhbGVkWl07cGkodCxyLG4sbyxzLGUsYSk7fX1uLnZpZXdwb3J0LnNldChbMCwwLHQud2lkdGgsdC5oZWlnaHRdKSx0LnJlc2V0U3RlbmNpbENsaXBwaW5nTWFza3MoKTt9LHJhc3RlcjpmdW5jdGlvbih0LGksbyxyLG4scyl7aWYoXCJ0cmFuc2x1Y2VudFwiIT09dC5yZW5kZXJQYXNzKXJldHVybjtpZigwPT09by5wYWludC5nZXQoXCJyYXN0ZXItb3BhY2l0eVwiKSlyZXR1cm47aWYoIXIubGVuZ3RoKXJldHVybjtjb25zdCBhPXQuY29udGV4dCxsPWEuZ2wsYz1pLmdldFNvdXJjZSgpLGg9dC51c2VQcm9ncmFtKFwicmFzdGVyXCIpLHU9dC5jb2xvck1vZGVGb3JSZW5kZXJQYXNzKCksXz10LnRlcnJhaW4mJnQudGVycmFpbi5yZW5kZXJpbmdUb1RleHR1cmUsW2QscF09YyBpbnN0YW5jZW9mIFBlfHxfP1t7fSxyXTp0LnN0ZW5jaWxDb25maWdGb3JPdmVybGFwKHIpLG09cFtwLmxlbmd0aC0xXS5vdmVyc2NhbGVkWixmPSF0Lm9wdGlvbnMubW92aW5nO2Zvcihjb25zdCByIG9mIHApe2NvbnN0IG49Xz9lLkRlcHRoTW9kZS5kaXNhYmxlZDp0LmRlcHRoTW9kZUZvclN1YmxheWVyKHIub3ZlcnNjYWxlZFotbSwxPT09by5wYWludC5nZXQoXCJyYXN0ZXItb3BhY2l0eVwiKT9lLkRlcHRoTW9kZS5SZWFkV3JpdGU6ZS5EZXB0aE1vZGUuUmVhZE9ubHksbC5MRVNTKSxwPXIudG9VbndyYXBwZWQoKSxnPWkuZ2V0VGlsZShyKTtpZihfJiYoIWd8fCFnLmhhc0RhdGEoKSkpY29udGludWU7Y29uc3Qgdj1fP3IucHJvak1hdHJpeDp0LnRyYW5zZm9ybS5jYWxjdWxhdGVQcm9qTWF0cml4KHAsZikseD10LnRlcnJhaW4mJl8/dC50ZXJyYWluLnN0ZW5jaWxNb2RlRm9yUlRUT3ZlcmxhcChyKTpkW3Iub3ZlcnNjYWxlZFpdLHk9cz8wOm8ucGFpbnQuZ2V0KFwicmFzdGVyLWZhZGUtZHVyYXRpb25cIik7Zy5yZWdpc3RlckZhZGVEdXJhdGlvbih5KTtjb25zdCBiPWkuZmluZExvYWRlZFBhcmVudChyLDApLHc9TWkoZyxiLGksdC50cmFuc2Zvcm0seSk7bGV0IFQsRTt0LnRlcnJhaW4mJnQudGVycmFpbi5wcmVwYXJlRHJhd1RpbGUoKTtjb25zdCBDPVwibmVhcmVzdFwiPT09by5wYWludC5nZXQoXCJyYXN0ZXItcmVzYW1wbGluZ1wiKT9sLk5FQVJFU1Q6bC5MSU5FQVI7YS5hY3RpdmVUZXh0dXJlLnNldChsLlRFWFRVUkUwKSxnLnRleHR1cmUuYmluZChDLGwuQ0xBTVBfVE9fRURHRSksYS5hY3RpdmVUZXh0dXJlLnNldChsLlRFWFRVUkUxKSxiPyhiLnRleHR1cmUuYmluZChDLGwuQ0xBTVBfVE9fRURHRSksVD1NYXRoLnBvdygyLGIudGlsZUlELm92ZXJzY2FsZWRaLWcudGlsZUlELm92ZXJzY2FsZWRaKSxFPVtnLnRpbGVJRC5jYW5vbmljYWwueCpUJTEsZy50aWxlSUQuY2Fub25pY2FsLnkqVCUxXSk6Zy50ZXh0dXJlLmJpbmQoQyxsLkNMQU1QX1RPX0VER0UpLGcudGV4dHVyZS51c2VNaXBtYXAmJmEuZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljJiZ0LnRyYW5zZm9ybS5waXRjaD4yMCYmbC50ZXhQYXJhbWV0ZXJmKGwuVEVYVFVSRV8yRCxhLmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxhLmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpY01heCk7Y29uc3QgTT1KaSh2LEV8fFswLDBdLFR8fDEsdyxvLGMgaW5zdGFuY2VvZiBQZT9jLnBlcnNwZWN0aXZlVHJhbnNmb3JtOlswLDBdKTtpZih0LnByZXBhcmVEcmF3UHJvZ3JhbShhLGgscCksYyBpbnN0YW5jZW9mIFBlKWMuYm91bmRzQnVmZmVyJiZjLmJvdW5kc1NlZ21lbnRzJiZoLmRyYXcoYSxsLlRSSUFOR0xFUyxuLGUuU3RlbmNpbE1vZGUuZGlzYWJsZWQsdSxlLkN1bGxGYWNlTW9kZS5kaXNhYmxlZCxNLG8uaWQsYy5ib3VuZHNCdWZmZXIsdC5xdWFkVHJpYW5nbGVJbmRleEJ1ZmZlcixjLmJvdW5kc1NlZ21lbnRzKTtlbHNlIHtjb25zdHt0aWxlQm91bmRzQnVmZmVyOmksdGlsZUJvdW5kc0luZGV4QnVmZmVyOnIsdGlsZUJvdW5kc1NlZ21lbnRzOnN9PXQuZ2V0VGlsZUJvdW5kc0J1ZmZlcnMoZyk7aC5kcmF3KGEsbC5UUklBTkdMRVMsbix4LHUsZS5DdWxsRmFjZU1vZGUuZGlzYWJsZWQsTSxvLmlkLGkscixzKTt9fXQucmVzZXRTdGVuY2lsQ2xpcHBpbmdNYXNrcygpO30sYmFja2dyb3VuZDpmdW5jdGlvbih0LGksbyxyKXtjb25zdCBuPW8ucGFpbnQuZ2V0KFwiYmFja2dyb3VuZC1jb2xvclwiKSxzPW8ucGFpbnQuZ2V0KFwiYmFja2dyb3VuZC1vcGFjaXR5XCIpO2lmKDA9PT1zKXJldHVybjtjb25zdCBhPXQuY29udGV4dCxsPWEuZ2wsYz10LnRyYW5zZm9ybSxoPWMudGlsZVNpemUsdT1vLnBhaW50LmdldChcImJhY2tncm91bmQtcGF0dGVyblwiKTtpZih0LmlzUGF0dGVybk1pc3NpbmcodSkpcmV0dXJuO2NvbnN0IF89IXUmJjE9PT1uLmEmJjE9PT1zJiZ0Lm9wYXF1ZVBhc3NFbmFibGVkRm9yTGF5ZXIoKT9cIm9wYXF1ZVwiOlwidHJhbnNsdWNlbnRcIjtpZih0LnJlbmRlclBhc3MhPT1fKXJldHVybjtjb25zdCBkPWUuU3RlbmNpbE1vZGUuZGlzYWJsZWQscD10LmRlcHRoTW9kZUZvclN1YmxheWVyKDAsXCJvcGFxdWVcIj09PV8/ZS5EZXB0aE1vZGUuUmVhZFdyaXRlOmUuRGVwdGhNb2RlLlJlYWRPbmx5KSxtPXQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpLGY9dC51c2VQcm9ncmFtKHU/XCJiYWNrZ3JvdW5kUGF0dGVyblwiOlwiYmFja2dyb3VuZFwiKTtsZXQgZyx2PXI7dnx8KGc9dC5nZXRCYWNrZ3JvdW5kVGlsZXMoKSx2PU9iamVjdC52YWx1ZXMoZykubWFwKChlPT5lLnRpbGVJRCkpKSx1JiYoYS5hY3RpdmVUZXh0dXJlLnNldChsLlRFWFRVUkUwKSx0LmltYWdlTWFuYWdlci5iaW5kKHQuY29udGV4dCkpO2Zvcihjb25zdCBfIG9mIHYpe2NvbnN0IHY9Xy50b1Vud3JhcHBlZCgpLHg9cj9fLnByb2pNYXRyaXg6dC50cmFuc2Zvcm0uY2FsY3VsYXRlUHJvak1hdHJpeCh2KTt0LnByZXBhcmVEcmF3VGlsZSgpO2NvbnN0IHk9aT9pLmdldFRpbGUoXyk6Zz9nW18ua2V5XTpuZXcgZS5UaWxlKF8saCxjLnpvb20sdCksYj11P25vKHgscyx0LHUse3RpbGVJRDpfLHRpbGVTaXplOmh9KTpybyh4LHMsbik7dC5wcmVwYXJlRHJhd1Byb2dyYW0oYSxmLHYpO2NvbnN0e3RpbGVCb3VuZHNCdWZmZXI6dyx0aWxlQm91bmRzSW5kZXhCdWZmZXI6VCx0aWxlQm91bmRzU2VnbWVudHM6RX09dC5nZXRUaWxlQm91bmRzQnVmZmVycyh5KTtmLmRyYXcoYSxsLlRSSUFOR0xFUyxwLGQsbSxlLkN1bGxGYWNlTW9kZS5kaXNhYmxlZCxiLG8uaWQsdyxULEUpO319LHNreTpmdW5jdGlvbih0LGksbyl7Y29uc3Qgcj10LnRyYW5zZm9ybSxuPVwibWVyY2F0b3JcIj09PXIucHJvamVjdGlvbi5uYW1lfHxcImdsb2JlXCI9PT1yLnByb2plY3Rpb24ubmFtZT8xOmUuc21vb3Roc3RlcCg3LDgsci56b29tKSxzPW8ucGFpbnQuZ2V0KFwic2t5LW9wYWNpdHlcIikqbjtpZigwPT09cylyZXR1cm47Y29uc3QgYT10LmNvbnRleHQsbD1vLnBhaW50LmdldChcInNreS10eXBlXCIpLGM9bmV3IGUuRGVwdGhNb2RlKGEuZ2wuTEVRVUFMLGUuRGVwdGhNb2RlLlJlYWRPbmx5LFswLDFdKSxoPXQuZnJhbWVDb3VudGVyLzFlMyUxO1wiYXRtb3NwaGVyZVwiPT09bD9cIm9mZnNjcmVlblwiPT09dC5yZW5kZXJQYXNzP28ubmVlZHNTa3lib3hDYXB0dXJlKHQpJiYoZnVuY3Rpb24odCxpLG8scil7Y29uc3Qgbj10LmNvbnRleHQscz1uLmdsO2xldCBhPWkuc2t5Ym94RmJvO2lmKCFhKXthPWkuc2t5Ym94RmJvPW4uY3JlYXRlRnJhbWVidWZmZXIoMzIsMzIsITEpLGkuc2t5Ym94R2VvbWV0cnk9bmV3IExvKG4pLGkuc2t5Ym94VGV4dHVyZT1uLmdsLmNyZWF0ZVRleHR1cmUoKSxzLmJpbmRUZXh0dXJlKHMuVEVYVFVSRV9DVUJFX01BUCxpLnNreWJveFRleHR1cmUpLHMudGV4UGFyYW1ldGVyaShzLlRFWFRVUkVfQ1VCRV9NQVAscy5URVhUVVJFX1dSQVBfUyxzLkNMQU1QX1RPX0VER0UpLHMudGV4UGFyYW1ldGVyaShzLlRFWFRVUkVfQ1VCRV9NQVAscy5URVhUVVJFX1dSQVBfVCxzLkNMQU1QX1RPX0VER0UpLHMudGV4UGFyYW1ldGVyaShzLlRFWFRVUkVfQ1VCRV9NQVAscy5URVhUVVJFX01JTl9GSUxURVIscy5MSU5FQVIpLHMudGV4UGFyYW1ldGVyaShzLlRFWFRVUkVfQ1VCRV9NQVAscy5URVhUVVJFX01BR19GSUxURVIscy5MSU5FQVIpO2ZvcihsZXQgZT0wO2U8NjsrK2Upcy50ZXhJbWFnZTJEKHMuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YK2UsMCxzLlJHQkEsMzIsMzIsMCxzLlJHQkEscy5VTlNJR05FRF9CWVRFLG51bGwpO31uLmJpbmRGcmFtZWJ1ZmZlci5zZXQoYS5mcmFtZWJ1ZmZlciksbi52aWV3cG9ydC5zZXQoWzAsMCwzMiwzMl0pO2NvbnN0IGw9aS5nZXRDZW50ZXIodCwhMCksYz10LnVzZVByb2dyYW0oXCJza3lib3hDYXB0dXJlXCIpLGg9bmV3IEZsb2F0NjRBcnJheSgxNik7ZS5pZGVudGl0eShoKSxlLnJvdGF0ZVkoaCxoLC41Ki1NYXRoLlBJKSxBbyhuLGksYyxoLGwsMCksZS5pZGVudGl0eShoKSxlLnJvdGF0ZVkoaCxoLC41Kk1hdGguUEkpLEFvKG4saSxjLGgsbCwxKSxlLmlkZW50aXR5KGgpLGUucm90YXRlWChoLGgsLjUqLU1hdGguUEkpLEFvKG4saSxjLGgsbCwyKSxlLmlkZW50aXR5KGgpLGUucm90YXRlWChoLGgsLjUqTWF0aC5QSSksQW8obixpLGMsaCxsLDMpLGUuaWRlbnRpdHkoaCksQW8obixpLGMsaCxsLDQpLGUuaWRlbnRpdHkoaCksZS5yb3RhdGVZKGgsaCxNYXRoLlBJKSxBbyhuLGksYyxoLGwsNSksbi52aWV3cG9ydC5zZXQoWzAsMCx0LndpZHRoLHQuaGVpZ2h0XSk7fSh0LG8pLG8ubWFya1NreWJveFZhbGlkKHQpKTpcInNreVwiPT09dC5yZW5kZXJQYXNzJiZmdW5jdGlvbih0LGksbyxyLG4pe2NvbnN0IHM9dC5jb250ZXh0LGE9cy5nbCxsPXQudHJhbnNmb3JtLGM9dC51c2VQcm9ncmFtKFwic2t5Ym94XCIpO3MuYWN0aXZlVGV4dHVyZS5zZXQoYS5URVhUVVJFMCksYS5iaW5kVGV4dHVyZShhLlRFWFRVUkVfQ1VCRV9NQVAsaS5za3lib3hUZXh0dXJlKTtjb25zdCBoPSgoZSx0LGksbyxyKT0+KHt1X21hdHJpeDplLHVfc3VuX2RpcmVjdGlvbjp0LHVfY3ViZW1hcDowLHVfb3BhY2l0eTpvLHVfdGVtcG9yYWxfb2Zmc2V0OnJ9KSkobC5za3lib3hNYXRyaXgsaS5nZXRDZW50ZXIodCwhMSksMCxyLG4pO3QucHJlcGFyZURyYXdQcm9ncmFtKHMsYyksYy5kcmF3KHMsYS5UUklBTkdMRVMsbyxlLlN0ZW5jaWxNb2RlLmRpc2FibGVkLHQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpLGUuQ3VsbEZhY2VNb2RlLmJhY2tDVyxoLFwic2t5Ym94XCIsaS5za3lib3hHZW9tZXRyeS52ZXJ0ZXhCdWZmZXIsaS5za3lib3hHZW9tZXRyeS5pbmRleEJ1ZmZlcixpLnNreWJveEdlb21ldHJ5LnNlZ21lbnQpO30odCxvLGMscyxoKTpcImdyYWRpZW50XCI9PT1sJiZcInNreVwiPT09dC5yZW5kZXJQYXNzJiZmdW5jdGlvbih0LGksbyxyLG4pe2NvbnN0IHM9dC5jb250ZXh0LGE9cy5nbCxsPXQudHJhbnNmb3JtLGM9dC51c2VQcm9ncmFtKFwic2t5Ym94R3JhZGllbnRcIik7aS5za3lib3hHZW9tZXRyeXx8KGkuc2t5Ym94R2VvbWV0cnk9bmV3IExvKHMpKSxzLmFjdGl2ZVRleHR1cmUuc2V0KGEuVEVYVFVSRTApO2xldCBoPWkuY29sb3JSYW1wVGV4dHVyZTtofHwoaD1pLmNvbG9yUmFtcFRleHR1cmU9bmV3IGUuVGV4dHVyZShzLGkuY29sb3JSYW1wLGEuUkdCQSkpLGguYmluZChhLkxJTkVBUixhLkNMQU1QX1RPX0VER0UpO2NvbnN0IHU9KCh0LGksbyxyLG4pPT4oe3VfbWF0cml4OnQsdV9jb2xvcl9yYW1wOjAsdV9jZW50ZXJfZGlyZWN0aW9uOmksdV9yYWRpdXM6ZS5kZWdUb1JhZChvKSx1X29wYWNpdHk6cix1X3RlbXBvcmFsX29mZnNldDpufSkpKGwuc2t5Ym94TWF0cml4LGkuZ2V0Q2VudGVyKHQsITEpLGkucGFpbnQuZ2V0KFwic2t5LWdyYWRpZW50LXJhZGl1c1wiKSxyLG4pO3QucHJlcGFyZURyYXdQcm9ncmFtKHMsYyksYy5kcmF3KHMsYS5UUklBTkdMRVMsbyxlLlN0ZW5jaWxNb2RlLmRpc2FibGVkLHQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpLGUuQ3VsbEZhY2VNb2RlLmJhY2tDVyx1LFwic2t5Ym94R3JhZGllbnRcIixpLnNreWJveEdlb21ldHJ5LnZlcnRleEJ1ZmZlcixpLnNreWJveEdlb21ldHJ5LmluZGV4QnVmZmVyLGkuc2t5Ym94R2VvbWV0cnkuc2VnbWVudCk7fSh0LG8sYyxzLGgpO30sZGVidWc6ZnVuY3Rpb24oZSx0LGkpe2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bysrKUVvKGUsdCxpW29dKTt9LGN1c3RvbTpmdW5jdGlvbih0LGksbyxyKXtjb25zdCBuPXQuY29udGV4dCxzPW8uaW1wbGVtZW50YXRpb247aWYoIXQudHJhbnNmb3JtLnByb2plY3Rpb24udW5zdXBwb3J0ZWRMYXllcnN8fCF0LnRyYW5zZm9ybS5wcm9qZWN0aW9uLnVuc3VwcG9ydGVkTGF5ZXJzLmluY2x1ZGVzKFwiY3VzdG9tXCIpfHx0LnRlcnJhaW4mJih0LnRlcnJhaW4ucmVuZGVyaW5nVG9UZXh0dXJlfHxcIm9mZnNjcmVlblwiPT09dC5yZW5kZXJQYXNzKSYmby5pc0xheWVyRHJhcGVkKCkpe2lmKFwib2Zmc2NyZWVuXCI9PT10LnJlbmRlclBhc3Mpe2NvbnN0IGk9cy5wcmVyZW5kZXI7aWYoaSl7aWYodC5zZXRDdXN0b21MYXllckRlZmF1bHRzKCksbi5zZXRDb2xvck1vZGUodC5jb2xvck1vZGVGb3JSZW5kZXJQYXNzKCkpLFwiZ2xvYmVcIj09PXQudHJhbnNmb3JtLnByb2plY3Rpb24ubmFtZSl7Y29uc3Qgbz10LnRyYW5zZm9ybS5wb2ludE1lcmM7aS5jYWxsKHMsbi5nbCx0LnRyYW5zZm9ybS5jdXN0b21MYXllck1hdHJpeCgpLHQudHJhbnNmb3JtLmdldFByb2plY3Rpb24oKSx0LnRyYW5zZm9ybS5nbG9iZVRvTWVyY2F0b3JNYXRyaXgoKSxlLmdsb2JlVG9NZXJjYXRvclRyYW5zaXRpb24odC50cmFuc2Zvcm0uem9vbSksW28ueCxvLnldLHQudHJhbnNmb3JtLnBpeGVsc1Blck1ldGVyUmF0aW8pO31lbHNlIGkuY2FsbChzLG4uZ2wsdC50cmFuc2Zvcm0uY3VzdG9tTGF5ZXJNYXRyaXgoKSk7bi5zZXREaXJ0eSgpLHQuc2V0QmFzZVN0YXRlKCk7fX1lbHNlIGlmKFwidHJhbnNsdWNlbnRcIj09PXQucmVuZGVyUGFzcyl7aWYodC50ZXJyYWluJiZ0LnRlcnJhaW4ucmVuZGVyaW5nVG9UZXh0dXJlKXtjb25zdCBpPXMucmVuZGVyVG9UaWxlO2lmKGkpe2NvbnN0IG89clswXS5jYW5vbmljYWwsYT1uZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUoby54K3JbMF0ud3JhcCooMTw8by56KSxvLnksby56KTtuLnNldERlcHRoTW9kZShlLkRlcHRoTW9kZS5kaXNhYmxlZCksbi5zZXRTdGVuY2lsTW9kZShlLlN0ZW5jaWxNb2RlLmRpc2FibGVkKSxuLnNldENvbG9yTW9kZSh0LmNvbG9yTW9kZUZvclJlbmRlclBhc3MoKSksdC5zZXRDdXN0b21MYXllckRlZmF1bHRzKCksaS5jYWxsKHMsbi5nbCxhKSxuLnNldERpcnR5KCksdC5zZXRCYXNlU3RhdGUoKTt9cmV0dXJufXQuc2V0Q3VzdG9tTGF5ZXJEZWZhdWx0cygpLG4uc2V0Q29sb3JNb2RlKHQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpKSxuLnNldFN0ZW5jaWxNb2RlKGUuU3RlbmNpbE1vZGUuZGlzYWJsZWQpO2NvbnN0IGk9XCIzZFwiPT09cy5yZW5kZXJpbmdNb2RlP25ldyBlLkRlcHRoTW9kZSh0LmNvbnRleHQuZ2wuTEVRVUFMLGUuRGVwdGhNb2RlLlJlYWRXcml0ZSx0LmRlcHRoUmFuZ2VGb3IzRCk6dC5kZXB0aE1vZGVGb3JTdWJsYXllcigwLGUuRGVwdGhNb2RlLlJlYWRPbmx5KTtpZihuLnNldERlcHRoTW9kZShpKSxcImdsb2JlXCI9PT10LnRyYW5zZm9ybS5wcm9qZWN0aW9uLm5hbWUpe2NvbnN0IGk9dC50cmFuc2Zvcm0ucG9pbnRNZXJjO3MucmVuZGVyKG4uZ2wsdC50cmFuc2Zvcm0uY3VzdG9tTGF5ZXJNYXRyaXgoKSx0LnRyYW5zZm9ybS5nZXRQcm9qZWN0aW9uKCksdC50cmFuc2Zvcm0uZ2xvYmVUb01lcmNhdG9yTWF0cml4KCksZS5nbG9iZVRvTWVyY2F0b3JUcmFuc2l0aW9uKHQudHJhbnNmb3JtLnpvb20pLFtpLngsaS55XSx0LnRyYW5zZm9ybS5waXhlbHNQZXJNZXRlclJhdGlvKTt9ZWxzZSBzLnJlbmRlcihuLmdsLHQudHJhbnNmb3JtLmN1c3RvbUxheWVyTWF0cml4KCkpO24uc2V0RGlydHkoKSx0LnNldEJhc2VTdGF0ZSgpLG4uYmluZEZyYW1lYnVmZmVyLnNldChudWxsKTt9fWVsc2UgZS53YXJuT25jZShcIkN1c3RvbSBsYXllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIHdpdGggdGhpcyBwcm9qZWN0aW9uLiBVc2UgbWVyY2F0b3Igb3IgZ2xvYmUgdG8gZW5hYmxlIHVzYWdlIG9mIGN1c3RvbSBsYXllcnMuXCIpO319O2NsYXNzIEJve2NvbnN0cnVjdG9yKHQsaSxvPSExKXt0aGlzLmNvbnRleHQ9bmV3IEVlKHQsbyksdGhpcy50cmFuc2Zvcm09aSx0aGlzLl90aWxlVGV4dHVyZXM9e30sdGhpcy5mcmFtZUNvcGllcz1bXSx0aGlzLmxvYWRUaW1lU3RhbXBzPVtdLHRoaXMuc2V0dXAoKSx0aGlzLm51bVN1YmxheWVycz1lLlNvdXJjZUNhY2hlLm1heFVuZGVyem9vbWluZytlLlNvdXJjZUNhY2hlLm1heE92ZXJ6b29taW5nKzEsdGhpcy5kZXB0aEVwc2lsb249MS9NYXRoLnBvdygyLDE2KSx0aGlzLmRlZmVycmVkUmVuZGVyR3B1VGltZVF1ZXJpZXM9W10sdGhpcy5ncHVUaW1lcnM9e30sdGhpcy5mcmFtZUNvdW50ZXI9MCx0aGlzLl9iYWNrZ3JvdW5kVGlsZXM9e307fXVwZGF0ZVRlcnJhaW4oZSx0KXtjb25zdCBpPSEhZSYmISFlLnRlcnJhaW4mJnRoaXMudHJhbnNmb3JtLnByb2plY3Rpb24uc3VwcG9ydHNUZXJyYWluO2lmKCEoaXx8dGhpcy5fdGVycmFpbiYmdGhpcy5fdGVycmFpbi5lbmFibGVkKSlyZXR1cm47dGhpcy5fdGVycmFpbnx8KHRoaXMuX3RlcnJhaW49bmV3IERpKHRoaXMsZSkpO2NvbnN0IG89dGhpcy5fdGVycmFpbjt0aGlzLnRyYW5zZm9ybS5lbGV2YXRpb249aT9vOm51bGwsby51cGRhdGUoZSx0aGlzLnRyYW5zZm9ybSx0KTt9X3VwZGF0ZUZvZyhlKXtjb25zdCB0PWUuZm9nO2lmKCF0fHxcImdsb2JlXCI9PT10aGlzLnRyYW5zZm9ybS5wcm9qZWN0aW9uLm5hbWV8fHQuZ2V0T3BhY2l0eSh0aGlzLnRyYW5zZm9ybS5waXRjaCk8MXx8dC5wcm9wZXJ0aWVzLmdldChcImhvcml6b24tYmxlbmRcIik8LjAzKXJldHVybiB2b2lkKHRoaXMudHJhbnNmb3JtLmZvZ0N1bGxEaXN0U3E9bnVsbCk7Y29uc3RbaSxvXT10LmdldEZvdkFkanVzdGVkUmFuZ2UodGhpcy50cmFuc2Zvcm0uX2Zvdik7aWYoaT5vKXJldHVybiB2b2lkKHRoaXMudHJhbnNmb3JtLmZvZ0N1bGxEaXN0U3E9bnVsbCk7Y29uc3Qgcj1pKy43OCooby1pKTt0aGlzLnRyYW5zZm9ybS5mb2dDdWxsRGlzdFNxPXIqcjt9Z2V0IHRlcnJhaW4oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0uX3RlcnJhaW5FbmFibGVkKCkmJnRoaXMuX3RlcnJhaW4mJnRoaXMuX3RlcnJhaW4uZW5hYmxlZD90aGlzLl90ZXJyYWluOm51bGx9cmVzaXplKHQsaSl7aWYodGhpcy53aWR0aD10KmUuZXhwb3J0ZWQuZGV2aWNlUGl4ZWxSYXRpbyx0aGlzLmhlaWdodD1pKmUuZXhwb3J0ZWQuZGV2aWNlUGl4ZWxSYXRpbyx0aGlzLmNvbnRleHQudmlld3BvcnQuc2V0KFswLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodF0pLHRoaXMuc3R5bGUpZm9yKGNvbnN0IGUgb2YgdGhpcy5zdHlsZS5vcmRlcil0aGlzLnN0eWxlLl9sYXllcnNbZV0ucmVzaXplKCk7fXNldHVwKCl7Y29uc3QgdD10aGlzLmNvbnRleHQsaT1uZXcgZS5TdHJ1Y3RBcnJheUxheW91dDJpNDtpLmVtcGxhY2VCYWNrKDAsMCksaS5lbXBsYWNlQmFjayhlLkVYVEVOVCwwKSxpLmVtcGxhY2VCYWNrKDAsZS5FWFRFTlQpLGkuZW1wbGFjZUJhY2soZS5FWFRFTlQsZS5FWFRFTlQpLHRoaXMudGlsZUV4dGVudEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcihpLGUucG9zQXR0cmlidXRlcy5tZW1iZXJzKSx0aGlzLnRpbGVFeHRlbnRTZWdtZW50cz1lLlNlZ21lbnRWZWN0b3Iuc2ltcGxlU2VnbWVudCgwLDAsNCwyKTtjb25zdCBvPW5ldyBlLlN0cnVjdEFycmF5TGF5b3V0Mmk0O28uZW1wbGFjZUJhY2soMCwwKSxvLmVtcGxhY2VCYWNrKGUuRVhURU5ULDApLG8uZW1wbGFjZUJhY2soMCxlLkVYVEVOVCksby5lbXBsYWNlQmFjayhlLkVYVEVOVCxlLkVYVEVOVCksdGhpcy5kZWJ1Z0J1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcihvLGUucG9zQXR0cmlidXRlcy5tZW1iZXJzKSx0aGlzLmRlYnVnU2VnbWVudHM9ZS5TZWdtZW50VmVjdG9yLnNpbXBsZVNlZ21lbnQoMCwwLDQsNSk7Y29uc3Qgcj1uZXcgZS5TdHJ1Y3RBcnJheUxheW91dDJpNDtyLmVtcGxhY2VCYWNrKC0xLC0xKSxyLmVtcGxhY2VCYWNrKDEsLTEpLHIuZW1wbGFjZUJhY2soLTEsMSksci5lbXBsYWNlQmFjaygxLDEpLHRoaXMudmlld3BvcnRCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIocixlLnBvc0F0dHJpYnV0ZXMubWVtYmVycyksdGhpcy52aWV3cG9ydFNlZ21lbnRzPWUuU2VnbWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCw0LDIpO2NvbnN0IG49bmV3IGUuU3RydWN0QXJyYXlMYXlvdXQ0aTg7bi5lbXBsYWNlQmFjaygwLDAsMCwwKSxuLmVtcGxhY2VCYWNrKGUuRVhURU5ULDAsZS5FWFRFTlQsMCksbi5lbXBsYWNlQmFjaygwLGUuRVhURU5ULDAsZS5FWFRFTlQpLG4uZW1wbGFjZUJhY2soZS5FWFRFTlQsZS5FWFRFTlQsZS5FWFRFTlQsZS5FWFRFTlQpLHRoaXMubWVyY2F0b3JCb3VuZHNCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIobixlLmJvdW5kc0F0dHJpYnV0ZXMubWVtYmVycyksdGhpcy5tZXJjYXRvckJvdW5kc1NlZ21lbnRzPWUuU2VnbWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCw0LDIpO2NvbnN0IHM9bmV3IGUuU3RydWN0QXJyYXlMYXlvdXQzdWk2O3MuZW1wbGFjZUJhY2soMCwxLDIpLHMuZW1wbGFjZUJhY2soMiwxLDMpLHRoaXMucXVhZFRyaWFuZ2xlSW5kZXhCdWZmZXI9dC5jcmVhdGVJbmRleEJ1ZmZlcihzKTtjb25zdCBhPW5ldyBlLlN0cnVjdEFycmF5TGF5b3V0MXVpMjtmb3IoY29uc3QgZSBvZiBbMCwxLDMsMiwwXSlhLmVtcGxhY2VCYWNrKGUpO3RoaXMuZGVidWdJbmRleEJ1ZmZlcj10LmNyZWF0ZUluZGV4QnVmZmVyKGEpLHRoaXMuZW1wdHlUZXh0dXJlPW5ldyBlLlRleHR1cmUodCxuZXcgZS5SR0JBSW1hZ2Uoe3dpZHRoOjEsaGVpZ2h0OjF9LFVpbnQ4QXJyYXkub2YoMCwwLDAsMCkpLHQuZ2wuUkdCQSksdGhpcy5pZGVudGl0eU1hdD1lLmNyZWF0ZSgpO2NvbnN0IGw9dGhpcy5jb250ZXh0LmdsO3RoaXMuc3RlbmNpbENsZWFyTW9kZT1uZXcgZS5TdGVuY2lsTW9kZSh7ZnVuYzpsLkFMV0FZUyxtYXNrOjB9LDAsMjU1LGwuWkVSTyxsLlpFUk8sbC5aRVJPKSx0aGlzLmxvYWRUaW1lU3RhbXBzLnB1c2goZS53aW5kb3cucGVyZm9ybWFuY2Uubm93KCkpLHRoaXMuYXRtb3NwaGVyZUJ1ZmZlcj1uZXcgUm8odGhpcy5jb250ZXh0KTt9Z2V0TWVyY2F0b3JUaWxlQm91bmRzQnVmZmVycygpe3JldHVybiB7dGlsZUJvdW5kc0J1ZmZlcjp0aGlzLm1lcmNhdG9yQm91bmRzQnVmZmVyLHRpbGVCb3VuZHNJbmRleEJ1ZmZlcjp0aGlzLnF1YWRUcmlhbmdsZUluZGV4QnVmZmVyLHRpbGVCb3VuZHNTZWdtZW50czp0aGlzLm1lcmNhdG9yQm91bmRzU2VnbWVudHN9fWdldFRpbGVCb3VuZHNCdWZmZXJzKGUpe3JldHVybiBlLl9tYWtlVGlsZUJvdW5kc0J1ZmZlcnModGhpcy5jb250ZXh0LHRoaXMudHJhbnNmb3JtLnByb2plY3Rpb24pLGUuX3RpbGVCb3VuZHNCdWZmZXI/e3RpbGVCb3VuZHNCdWZmZXI6ZS5fdGlsZUJvdW5kc0J1ZmZlcix0aWxlQm91bmRzSW5kZXhCdWZmZXI6ZS5fdGlsZUJvdW5kc0luZGV4QnVmZmVyLHRpbGVCb3VuZHNTZWdtZW50czplLl90aWxlQm91bmRzU2VnbWVudHN9OnRoaXMuZ2V0TWVyY2F0b3JUaWxlQm91bmRzQnVmZmVycygpfWNsZWFyU3RlbmNpbCgpe2NvbnN0IHQ9dGhpcy5jb250ZXh0LGk9dC5nbDt0aGlzLm5leHRTdGVuY2lsSUQ9MSx0aGlzLmN1cnJlbnRTdGVuY2lsU291cmNlPXZvaWQgMCx0aGlzLl90aWxlQ2xpcHBpbmdNYXNrSURzPXt9LHRoaXMudXNlUHJvZ3JhbShcImNsaXBwaW5nTWFza1wiKS5kcmF3KHQsaS5UUklBTkdMRVMsZS5EZXB0aE1vZGUuZGlzYWJsZWQsdGhpcy5zdGVuY2lsQ2xlYXJNb2RlLGUuQ29sb3JNb2RlLmRpc2FibGVkLGUuQ3VsbEZhY2VNb2RlLmRpc2FibGVkLENpKHRoaXMuaWRlbnRpdHlNYXQpLFwiJGNsaXBwaW5nXCIsdGhpcy52aWV3cG9ydEJ1ZmZlcix0aGlzLnF1YWRUcmlhbmdsZUluZGV4QnVmZmVyLHRoaXMudmlld3BvcnRTZWdtZW50cyk7fXJlc2V0U3RlbmNpbENsaXBwaW5nTWFza3MoKXt0aGlzLnRlcnJhaW58fCh0aGlzLmN1cnJlbnRTdGVuY2lsU291cmNlPXZvaWQgMCx0aGlzLl90aWxlQ2xpcHBpbmdNYXNrSURzPXt9KTt9X3JlbmRlclRpbGVDbGlwcGluZ01hc2tzKHQsaSxvKXtpZighaXx8dGhpcy5jdXJyZW50U3RlbmNpbFNvdXJjZT09PWkuaWR8fCF0LmlzVGlsZUNsaXBwZWQoKXx8IW98fDA9PT1vLmxlbmd0aClyZXR1cm47aWYodGhpcy5fdGlsZUNsaXBwaW5nTWFza0lEcyYmIXRoaXMudGVycmFpbil7bGV0IGU9ITE7Zm9yKGNvbnN0IHQgb2YgbylpZih2b2lkIDA9PT10aGlzLl90aWxlQ2xpcHBpbmdNYXNrSURzW3Qua2V5XSl7ZT0hMDticmVha31pZighZSlyZXR1cm59dGhpcy5jdXJyZW50U3RlbmNpbFNvdXJjZT1pLmlkO2NvbnN0IHI9dGhpcy5jb250ZXh0LG49ci5nbDt0aGlzLm5leHRTdGVuY2lsSUQrby5sZW5ndGg+MjU2JiZ0aGlzLmNsZWFyU3RlbmNpbCgpLHIuc2V0Q29sb3JNb2RlKGUuQ29sb3JNb2RlLmRpc2FibGVkKSxyLnNldERlcHRoTW9kZShlLkRlcHRoTW9kZS5kaXNhYmxlZCk7Y29uc3Qgcz10aGlzLnVzZVByb2dyYW0oXCJjbGlwcGluZ01hc2tcIik7dGhpcy5fdGlsZUNsaXBwaW5nTWFza0lEcz17fTtmb3IoY29uc3QgdCBvZiBvKXtjb25zdCBvPWkuZ2V0VGlsZSh0KSxhPXRoaXMuX3RpbGVDbGlwcGluZ01hc2tJRHNbdC5rZXldPXRoaXMubmV4dFN0ZW5jaWxJRCsrLHt0aWxlQm91bmRzQnVmZmVyOmwsdGlsZUJvdW5kc0luZGV4QnVmZmVyOmMsdGlsZUJvdW5kc1NlZ21lbnRzOmh9PXRoaXMuZ2V0VGlsZUJvdW5kc0J1ZmZlcnMobyk7cy5kcmF3KHIsbi5UUklBTkdMRVMsZS5EZXB0aE1vZGUuZGlzYWJsZWQsbmV3IGUuU3RlbmNpbE1vZGUoe2Z1bmM6bi5BTFdBWVMsbWFzazowfSxhLDI1NSxuLktFRVAsbi5LRUVQLG4uUkVQTEFDRSksZS5Db2xvck1vZGUuZGlzYWJsZWQsZS5DdWxsRmFjZU1vZGUuZGlzYWJsZWQsQ2kodC5wcm9qTWF0cml4KSxcIiRjbGlwcGluZ1wiLGwsYyxoKTt9fXN0ZW5jaWxNb2RlRm9yM0QoKXt0aGlzLmN1cnJlbnRTdGVuY2lsU291cmNlPXZvaWQgMCx0aGlzLm5leHRTdGVuY2lsSUQrMT4yNTYmJnRoaXMuY2xlYXJTdGVuY2lsKCk7Y29uc3QgdD10aGlzLm5leHRTdGVuY2lsSUQrKyxpPXRoaXMuY29udGV4dC5nbDtyZXR1cm4gbmV3IGUuU3RlbmNpbE1vZGUoe2Z1bmM6aS5OT1RFUVVBTCxtYXNrOjI1NX0sdCwyNTUsaS5LRUVQLGkuS0VFUCxpLlJFUExBQ0UpfXN0ZW5jaWxNb2RlRm9yQ2xpcHBpbmcodCl7aWYodGhpcy50ZXJyYWluKXJldHVybiB0aGlzLnRlcnJhaW4uc3RlbmNpbE1vZGVGb3JSVFRPdmVybGFwKHQpO2NvbnN0IGk9dGhpcy5jb250ZXh0LmdsO3JldHVybiBuZXcgZS5TdGVuY2lsTW9kZSh7ZnVuYzppLkVRVUFMLG1hc2s6MjU1fSx0aGlzLl90aWxlQ2xpcHBpbmdNYXNrSURzW3Qua2V5XSwwLGkuS0VFUCxpLktFRVAsaS5SRVBMQUNFKX1zdGVuY2lsQ29uZmlnRm9yT3ZlcmxhcCh0KXtjb25zdCBpPXRoaXMuY29udGV4dC5nbCxvPXQuc29ydCgoKGUsdCk9PnQub3ZlcnNjYWxlZFotZS5vdmVyc2NhbGVkWikpLHI9b1tvLmxlbmd0aC0xXS5vdmVyc2NhbGVkWixuPW9bMF0ub3ZlcnNjYWxlZFotcisxO2lmKG4+MSl7dGhpcy5jdXJyZW50U3RlbmNpbFNvdXJjZT12b2lkIDAsdGhpcy5uZXh0U3RlbmNpbElEK24+MjU2JiZ0aGlzLmNsZWFyU3RlbmNpbCgpO2NvbnN0IHQ9e307Zm9yKGxldCBvPTA7bzxuO28rKyl0W28rcl09bmV3IGUuU3RlbmNpbE1vZGUoe2Z1bmM6aS5HRVFVQUwsbWFzazoyNTV9LG8rdGhpcy5uZXh0U3RlbmNpbElELDI1NSxpLktFRVAsaS5LRUVQLGkuUkVQTEFDRSk7cmV0dXJuIHRoaXMubmV4dFN0ZW5jaWxJRCs9bixbdCxvXX1yZXR1cm4gW3tbcl06ZS5TdGVuY2lsTW9kZS5kaXNhYmxlZH0sb119Y29sb3JNb2RlRm9yUmVuZGVyUGFzcygpe2NvbnN0IHQ9dGhpcy5jb250ZXh0LmdsO2lmKHRoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3Rvcil7Y29uc3QgaT0xLzg7cmV0dXJuIG5ldyBlLkNvbG9yTW9kZShbdC5DT05TVEFOVF9DT0xPUix0Lk9ORV0sbmV3IGUuQ29sb3IoaSxpLGksMCksWyEwLCEwLCEwLCEwXSl9cmV0dXJuIFwib3BhcXVlXCI9PT10aGlzLnJlbmRlclBhc3M/ZS5Db2xvck1vZGUudW5ibGVuZGVkOmUuQ29sb3JNb2RlLmFscGhhQmxlbmRlZH1kZXB0aE1vZGVGb3JTdWJsYXllcih0LGksbyl7aWYoIXRoaXMub3BhcXVlUGFzc0VuYWJsZWRGb3JMYXllcigpKXJldHVybiBlLkRlcHRoTW9kZS5kaXNhYmxlZDtjb25zdCByPTEtKCgxK3RoaXMuY3VycmVudExheWVyKSp0aGlzLm51bVN1YmxheWVycyt0KSp0aGlzLmRlcHRoRXBzaWxvbjtyZXR1cm4gbmV3IGUuRGVwdGhNb2RlKG98fHRoaXMuY29udGV4dC5nbC5MRVFVQUwsaSxbcixyXSl9b3BhcXVlUGFzc0VuYWJsZWRGb3JMYXllcigpe3JldHVybiB0aGlzLmN1cnJlbnRMYXllcjx0aGlzLm9wYXF1ZVBhc3NDdXRvZmZ9cmVuZGVyKHQsaSl7dGhpcy5zdHlsZT10LHRoaXMub3B0aW9ucz1pLHRoaXMuaW1hZ2VNYW5hZ2VyPXQuaW1hZ2VNYW5hZ2VyLHRoaXMuZ2x5cGhNYW5hZ2VyPXQuZ2x5cGhNYW5hZ2VyLHRoaXMuc3ltYm9sRmFkZUNoYW5nZT10LnBsYWNlbWVudC5zeW1ib2xGYWRlQ2hhbmdlKGUuZXhwb3J0ZWQubm93KCkpLHRoaXMuaW1hZ2VNYW5hZ2VyLmJlZ2luRnJhbWUoKTtjb25zdCBvPXRoaXMuc3R5bGUub3JkZXIscj10aGlzLnN0eWxlLl9zb3VyY2VDYWNoZXM7Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdO3QudXNlZCYmdC5wcmVwYXJlKHRoaXMuY29udGV4dCk7fWNvbnN0IG49e30scz17fSxhPXt9O2Zvcihjb25zdCBlIGluIHIpe2NvbnN0IHQ9cltlXTtuW2VdPXQuZ2V0VmlzaWJsZUNvb3JkaW5hdGVzKCksc1tlXT1uW2VdLnNsaWNlKCkucmV2ZXJzZSgpLGFbZV09dC5nZXRWaXNpYmxlQ29vcmRpbmF0ZXMoITApLnJldmVyc2UoKTt9dGhpcy5vcGFxdWVQYXNzQ3V0b2ZmPTEvMDtmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKylpZih0aGlzLnN0eWxlLl9sYXllcnNbb1tlXV0uaXMzRCgpKXt0aGlzLm9wYXF1ZVBhc3NDdXRvZmY9ZTticmVha31pZih0aGlzLnRlcnJhaW4mJih0aGlzLnRlcnJhaW4udXBkYXRlVGlsZUJpbmRpbmcoYSksdGhpcy5vcGFxdWVQYXNzQ3V0b2ZmPTApLFwiZ2xvYmVcIiE9PXRoaXMudHJhbnNmb3JtLnByb2plY3Rpb24ubmFtZXx8dGhpcy5nbG9iZVNoYXJlZEJ1ZmZlcnN8fCh0aGlzLmdsb2JlU2hhcmVkQnVmZmVycz1uZXcgZS5HbG9iZVNoYXJlZEJ1ZmZlcnModGhpcy5jb250ZXh0KSksIWUuaXNNYXBBdXRoZW50aWNhdGVkKHRoaXMuY29udGV4dC5nbCkpcmV0dXJuO3RoaXMucmVuZGVyUGFzcz1cIm9mZnNjcmVlblwiO2Zvcihjb25zdCBlIG9mIG8pe2NvbnN0IGk9dGhpcy5zdHlsZS5fbGF5ZXJzW2VdLG89dC5fZ2V0TGF5ZXJTb3VyY2VDYWNoZShpKTtpZighaS5oYXNPZmZzY3JlZW5QYXNzKCl8fGkuaXNIaWRkZW4odGhpcy50cmFuc2Zvcm0uem9vbSkpY29udGludWU7Y29uc3Qgcj1vP3Nbby5pZF06dm9pZCAwOyhcImN1c3RvbVwiPT09aS50eXBlfHxpLmlzU2t5KCl8fHImJnIubGVuZ3RoKSYmdGhpcy5yZW5kZXJMYXllcih0aGlzLG8saSxyKTt9dGhpcy5kZXB0aFJhbmdlRm9yM0Q9WzAsMS0odC5vcmRlci5sZW5ndGgrMikqdGhpcy5udW1TdWJsYXllcnMqdGhpcy5kZXB0aEVwc2lsb25dO2NvbnN0IGw9dGhpcy50ZXJyYWluO2lmKGwmJih0aGlzLnN0eWxlLmhhc1N5bWJvbExheWVycygpfHx0aGlzLnN0eWxlLmhhc0NpcmNsZUxheWVycygpKSYmbC5kcmF3RGVwdGgoKSx0aGlzLmNvbnRleHQuYmluZEZyYW1lYnVmZmVyLnNldChudWxsKSx0aGlzLmNvbnRleHQudmlld3BvcnQuc2V0KFswLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodF0pLHRoaXMuY29udGV4dC5jbGVhcih7Y29sb3I6aS5zaG93T3ZlcmRyYXdJbnNwZWN0b3I/ZS5Db2xvci5ibGFjazplLkNvbG9yLnRyYW5zcGFyZW50LGRlcHRoOjF9KSx0aGlzLmNsZWFyU3RlbmNpbCgpLHRoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3Rvcj1pLnNob3dPdmVyZHJhd0luc3BlY3Rvcix0aGlzLnJlbmRlclBhc3M9XCJvcGFxdWVcIiwhdGhpcy50ZXJyYWluKWZvcih0aGlzLmN1cnJlbnRMYXllcj1vLmxlbmd0aC0xO3RoaXMuY3VycmVudExheWVyPj0wO3RoaXMuY3VycmVudExheWVyLS0pe2NvbnN0IGU9dGhpcy5zdHlsZS5fbGF5ZXJzW29bdGhpcy5jdXJyZW50TGF5ZXJdXSxpPXQuX2dldExheWVyU291cmNlQ2FjaGUoZSk7aWYoZS5pc1NreSgpKWNvbnRpbnVlO2NvbnN0IHI9aT9zW2kuaWRdOnZvaWQgMDt0aGlzLl9yZW5kZXJUaWxlQ2xpcHBpbmdNYXNrcyhlLGksciksdGhpcy5yZW5kZXJMYXllcih0aGlzLGksZSxyKTt9aWYodGhpcy5zdHlsZS5mb2cmJnRoaXMudHJhbnNmb3JtLnByb2plY3Rpb24uc3VwcG9ydHNGb2cmJmZ1bmN0aW9uKHQsaSl7Y29uc3Qgbz10LmNvbnRleHQscj1vLmdsLG49dC50cmFuc2Zvcm0scz1uZXcgZS5EZXB0aE1vZGUoci5MRVFVQUwsZS5EZXB0aE1vZGUuUmVhZE9ubHksWzAsMV0pLGE9dC51c2VQcm9ncmFtKFwiZ2xvYmVBdG1vc3BoZXJlXCIsbnVsbCxcImdsb2JlXCI9PT1uLnByb2plY3Rpb24ubmFtZT9bXCJQUk9KRUNUSU9OX0dMT0JFX1ZJRVdcIixcIkZPR1wiXTpbXCJGT0dcIl0pLGw9ZS5nbG9iZVRvTWVyY2F0b3JUcmFuc2l0aW9uKG4uem9vbSksYz1pLnByb3BlcnRpZXMuZ2V0KFwiY29sb3JcIikudG9BcnJheTAxKCksaD1pLnByb3BlcnRpZXMuZ2V0KFwiaGlnaC1jb2xvclwiKS50b0FycmF5MDEoKSx1PWkucHJvcGVydGllcy5nZXQoXCJzcGFjZS1jb2xvclwiKS50b0FycmF5MDFQcmVtdWx0aXBsaWVkQWxwaGEoKSxfPWUuaWRlbnRpdHkkMShbXSk7ZS5yb3RhdGVZJDEoXyxfLC1lLmRlZ1RvUmFkKG4uX2NlbnRlci5sbmcpKSxlLnJvdGF0ZVgkMShfLF8sZS5kZWdUb1JhZChuLl9jZW50ZXIubGF0KSksZS5yb3RhdGVaJDEoXyxfLG4uYW5nbGUpLGUucm90YXRlWCQxKF8sXywtbi5fcGl0Y2gpO2NvbnN0IGQ9ZS5mcm9tUXVhdChuZXcgRmxvYXQzMkFycmF5KDE2KSxfKSxwPWUubWFwVmFsdWUoaS5wcm9wZXJ0aWVzLmdldChcInN0YXItaW50ZW5zaXR5XCIpLDAsMSwwLC4yNSksbT01ZS00LGY9ZS5tYXBWYWx1ZShpLnByb3BlcnRpZXMuZ2V0KFwiaG9yaXpvbi1ibGVuZFwiKSwwLDEsbSwuMjUpLGc9ZS5nbG9iZVVzZUN1c3RvbUFudGlBbGlhc2luZyh0LG8sbikmJmY9PT1tP24ud29ybGRTaXplLygyKk1hdGguUEkqMS4wMjUpLTE6bi5nbG9iZVJhZGl1cyx2PXQuZnJhbWVDb3VudGVyLzFlMyUxLHg9ZS5sZW5ndGgobi5nbG9iZUNlbnRlckluVmlld1NwYWNlKSx5PU1hdGguc3FydChNYXRoLnBvdyh4LDIpLU1hdGgucG93KGcsMikpLGI9TWF0aC5hY29zKHkveCksdz0oKHQsaSxvLHIsbixzLGEsbCxjLGgsdSxfLGQscCk9Pih7dV9mcnVzdHVtX3RsOnQsdV9mcnVzdHVtX3RyOmksdV9mcnVzdHVtX2JyOm8sdV9mcnVzdHVtX2JsOnIsdV9ob3Jpem9uOm4sdV90cmFuc2l0aW9uOnMsdV9mYWRlb3V0X3JhbmdlOmEsdV9jb2xvcjpsLHVfaGlnaF9jb2xvcjpjLHVfc3BhY2VfY29sb3I6aCx1X3N0YXJfaW50ZW5zaXR5OnUsdV9zdGFyX3NpemU6NSplLmV4cG9ydGVkLmRldmljZVBpeGVsUmF0aW8sdV9zdGFyX2RlbnNpdHk6MCx1X3RlbXBvcmFsX29mZnNldDpfLHVfaG9yaXpvbl9hbmdsZTpkLHVfcm90YXRpb25fbWF0cml4OnB9KSkobi5mcnVzdHVtQ29ybmVycy5UTCxuLmZydXN0dW1Db3JuZXJzLlRSLG4uZnJ1c3R1bUNvcm5lcnMuQlIsbi5mcnVzdHVtQ29ybmVycy5CTCxuLmZydXN0dW1Db3JuZXJzLmhvcml6b24sbCxmLGMsaCx1LHAsdixiLGQpO3QucHJlcGFyZURyYXdQcm9ncmFtKG8sYSk7Y29uc3QgVD10LmF0bW9zcGhlcmVCdWZmZXI7VCYmYS5kcmF3KG8sci5UUklBTkdMRVMscyxlLlN0ZW5jaWxNb2RlLmRpc2FibGVkLGUuQ29sb3JNb2RlLmFscGhhQmxlbmRlZCxlLkN1bGxGYWNlTW9kZS5iYWNrQ1csdyxcInNreWJveFwiLFQudmVydGV4QnVmZmVyLFQuaW5kZXhCdWZmZXIsVC5zZWdtZW50cyk7fSh0aGlzLHRoaXMuc3R5bGUuZm9nKSx0aGlzLnJlbmRlclBhc3M9XCJza3lcIiwoZS5nbG9iZVRvTWVyY2F0b3JUcmFuc2l0aW9uKHRoaXMudHJhbnNmb3JtLnpvb20pPjB8fFwiZ2xvYmVcIiE9PXRoaXMudHJhbnNmb3JtLnByb2plY3Rpb24ubmFtZSkmJnRoaXMudHJhbnNmb3JtLmlzSG9yaXpvblZpc2libGUoKSlmb3IodGhpcy5jdXJyZW50TGF5ZXI9MDt0aGlzLmN1cnJlbnRMYXllcjxvLmxlbmd0aDt0aGlzLmN1cnJlbnRMYXllcisrKXtjb25zdCBlPXRoaXMuc3R5bGUuX2xheWVyc1tvW3RoaXMuY3VycmVudExheWVyXV0saT10Ll9nZXRMYXllclNvdXJjZUNhY2hlKGUpO2UuaXNTa3koKSYmdGhpcy5yZW5kZXJMYXllcih0aGlzLGksZSxpP3NbaS5pZF06dm9pZCAwKTt9Zm9yKHRoaXMucmVuZGVyUGFzcz1cInRyYW5zbHVjZW50XCIsdGhpcy5jdXJyZW50TGF5ZXI9MDt0aGlzLmN1cnJlbnRMYXllcjxvLmxlbmd0aDspe2NvbnN0IGU9dGhpcy5zdHlsZS5fbGF5ZXJzW29bdGhpcy5jdXJyZW50TGF5ZXJdXSxpPXQuX2dldExheWVyU291cmNlQ2FjaGUoZSk7aWYoZS5pc1NreSgpKXsrK3RoaXMuY3VycmVudExheWVyO2NvbnRpbnVlfWlmKHRoaXMudGVycmFpbiYmdGhpcy5zdHlsZS5pc0xheWVyRHJhcGVkKGUpKXtpZihlLmlzSGlkZGVuKHRoaXMudHJhbnNmb3JtLnpvb20pKXsrK3RoaXMuY3VycmVudExheWVyO2NvbnRpbnVlfXRoaXMuY3VycmVudExheWVyPXRoaXMudGVycmFpbi5yZW5kZXJCYXRjaCh0aGlzLmN1cnJlbnRMYXllcik7Y29udGludWV9Y29uc3Qgcj1pPyhcInN5bWJvbFwiPT09ZS50eXBlP2E6cylbaS5pZF06dm9pZCAwO3RoaXMuX3JlbmRlclRpbGVDbGlwcGluZ01hc2tzKGUsaSxpP25baS5pZF06dm9pZCAwKSx0aGlzLnJlbmRlckxheWVyKHRoaXMsaSxlLHIpLCsrdGhpcy5jdXJyZW50TGF5ZXI7fWlmKHRoaXMudGVycmFpbiYmdGhpcy50ZXJyYWluLnBvc3RSZW5kZXIoKSx0aGlzLm9wdGlvbnMuc2hvd1RpbGVCb3VuZGFyaWVzfHx0aGlzLm9wdGlvbnMuc2hvd1F1ZXJ5R2VvbWV0cnl8fHRoaXMub3B0aW9ucy5zaG93VGlsZUFBQkJzKXtsZXQgaT1udWxsO2UudmFsdWVzKHRoaXMuc3R5bGUuX2xheWVycykuZm9yRWFjaCgoZT0+e2NvbnN0IG89dC5fZ2V0TGF5ZXJTb3VyY2VDYWNoZShlKTtvJiYhZS5pc0hpZGRlbih0aGlzLnRyYW5zZm9ybS56b29tKSYmKCFpfHxpLmdldFNvdXJjZSgpLm1heHpvb208by5nZXRTb3VyY2UoKS5tYXh6b29tKSYmKGk9byk7fSkpLGkmJnRoaXMub3B0aW9ucy5zaG93VGlsZUJvdW5kYXJpZXMmJk9vLmRlYnVnKHRoaXMsaSxpLmdldFZpc2libGVDb29yZGluYXRlcygpKTt9dGhpcy5vcHRpb25zLnNob3dQYWRkaW5nJiZmdW5jdGlvbihlKXtjb25zdCB0PWUudHJhbnNmb3JtLnBhZGRpbmc7Q28oZSxlLnRyYW5zZm9ybS5oZWlnaHQtKHQudG9wfHwwKSwzLHhvKSxDbyhlLHQuYm90dG9tfHwwLDMseW8pLE1vKGUsdC5sZWZ0fHwwLDMsYm8pLE1vKGUsZS50cmFuc2Zvcm0ud2lkdGgtKHQucmlnaHR8fDApLDMsd28pO2NvbnN0IGk9ZS50cmFuc2Zvcm0uY2VudGVyUG9pbnQ7IWZ1bmN0aW9uKGUsdCxpLG8pe0lvKGUsdC0xLGktMTAsMiwyMCxvKSxJbyhlLHQtMTAsaS0xLDIwLDIsbyk7fShlLGkueCxlLnRyYW5zZm9ybS5oZWlnaHQtaS55LFRvKTt9KHRoaXMpLHRoaXMuY29udGV4dC5zZXREZWZhdWx0KCksdGhpcy5mcmFtZUNvdW50ZXI9KHRoaXMuZnJhbWVDb3VudGVyKzEpJU51bWJlci5NQVhfU0FGRV9JTlRFR0VSLHRoaXMudGlsZUxvYWRlZCYmdGhpcy5vcHRpb25zLnNwZWVkSW5kZXhUaW1pbmcmJih0aGlzLmxvYWRUaW1lU3RhbXBzLnB1c2goZS53aW5kb3cucGVyZm9ybWFuY2Uubm93KCkpLHRoaXMuc2F2ZUNhbnZhc0NvcHkoKSk7fXJlbmRlckxheWVyKGUsdCxpLG8pe2kuaXNIaWRkZW4odGhpcy50cmFuc2Zvcm0uem9vbSl8fChcImJhY2tncm91bmRcIj09PWkudHlwZXx8XCJza3lcIj09PWkudHlwZXx8XCJjdXN0b21cIj09PWkudHlwZXx8byYmby5sZW5ndGgpJiYodGhpcy5pZD1pLmlkLHRoaXMuZ3B1VGltaW5nU3RhcnQoaSksKCFlLnRyYW5zZm9ybS5wcm9qZWN0aW9uLnVuc3VwcG9ydGVkTGF5ZXJzfHwhZS50cmFuc2Zvcm0ucHJvamVjdGlvbi51bnN1cHBvcnRlZExheWVycy5pbmNsdWRlcyhpLnR5cGUpfHxlLnRlcnJhaW4mJlwiY3VzdG9tXCI9PT1pLnR5cGUpJiZPb1tpLnR5cGVdKGUsdCxpLG8sdGhpcy5zdHlsZS5wbGFjZW1lbnQudmFyaWFibGVPZmZzZXRzLHRoaXMub3B0aW9ucy5pc0luaXRpYWxMb2FkKSx0aGlzLmdwdVRpbWluZ0VuZCgpKTt9Z3B1VGltaW5nU3RhcnQoZSl7aWYoIXRoaXMub3B0aW9ucy5ncHVUaW1pbmcpcmV0dXJuO2NvbnN0IHQ9dGhpcy5jb250ZXh0LmV4dFRpbWVyUXVlcnk7bGV0IGk9dGhpcy5ncHVUaW1lcnNbZS5pZF07aXx8KGk9dGhpcy5ncHVUaW1lcnNbZS5pZF09e2NhbGxzOjAsY3B1VGltZTowLHF1ZXJ5OnQuY3JlYXRlUXVlcnlFWFQoKX0pLGkuY2FsbHMrKyx0LmJlZ2luUXVlcnlFWFQodC5USU1FX0VMQVBTRURfRVhULGkucXVlcnkpO31ncHVUaW1pbmdEZWZlcnJlZFJlbmRlclN0YXJ0KCl7aWYodGhpcy5vcHRpb25zLmdwdVRpbWluZ0RlZmVycmVkUmVuZGVyKXtjb25zdCBlPXRoaXMuY29udGV4dC5leHRUaW1lclF1ZXJ5LHQ9ZS5jcmVhdGVRdWVyeUVYVCgpO3RoaXMuZGVmZXJyZWRSZW5kZXJHcHVUaW1lUXVlcmllcy5wdXNoKHQpLGUuYmVnaW5RdWVyeUVYVChlLlRJTUVfRUxBUFNFRF9FWFQsdCk7fX1ncHVUaW1pbmdEZWZlcnJlZFJlbmRlckVuZCgpe2lmKCF0aGlzLm9wdGlvbnMuZ3B1VGltaW5nRGVmZXJyZWRSZW5kZXIpcmV0dXJuO2NvbnN0IGU9dGhpcy5jb250ZXh0LmV4dFRpbWVyUXVlcnk7ZS5lbmRRdWVyeUVYVChlLlRJTUVfRUxBUFNFRF9FWFQpO31ncHVUaW1pbmdFbmQoKXtpZighdGhpcy5vcHRpb25zLmdwdVRpbWluZylyZXR1cm47Y29uc3QgZT10aGlzLmNvbnRleHQuZXh0VGltZXJRdWVyeTtlLmVuZFF1ZXJ5RVhUKGUuVElNRV9FTEFQU0VEX0VYVCk7fWNvbGxlY3RHcHVUaW1lcnMoKXtjb25zdCBlPXRoaXMuZ3B1VGltZXJzO3JldHVybiB0aGlzLmdwdVRpbWVycz17fSxlfWNvbGxlY3REZWZlcnJlZFJlbmRlckdwdVF1ZXJpZXMoKXtjb25zdCBlPXRoaXMuZGVmZXJyZWRSZW5kZXJHcHVUaW1lUXVlcmllcztyZXR1cm4gdGhpcy5kZWZlcnJlZFJlbmRlckdwdVRpbWVRdWVyaWVzPVtdLGV9cXVlcnlHcHVUaW1lcnMoZSl7Y29uc3QgdD17fTtmb3IoY29uc3QgaSBpbiBlKXtjb25zdCBvPWVbaV0scj10aGlzLmNvbnRleHQuZXh0VGltZXJRdWVyeSxuPXIuZ2V0UXVlcnlPYmplY3RFWFQoby5xdWVyeSxyLlFVRVJZX1JFU1VMVF9FWFQpLzFlNjtyLmRlbGV0ZVF1ZXJ5RVhUKG8ucXVlcnkpLHRbaV09bjt9cmV0dXJuIHR9cXVlcnlHcHVUaW1lRGVmZXJyZWRSZW5kZXIoZSl7aWYoIXRoaXMub3B0aW9ucy5ncHVUaW1pbmdEZWZlcnJlZFJlbmRlcilyZXR1cm4gMDtjb25zdCB0PXRoaXMuY29udGV4dC5leHRUaW1lclF1ZXJ5O2xldCBpPTA7Zm9yKGNvbnN0IG8gb2YgZSlpKz10LmdldFF1ZXJ5T2JqZWN0RVhUKG8sdC5RVUVSWV9SRVNVTFRfRVhUKS8xZTYsdC5kZWxldGVRdWVyeUVYVChvKTtyZXR1cm4gaX10cmFuc2xhdGVQb3NNYXRyaXgodCxpLG8scixuKXtpZighb1swXSYmIW9bMV0pcmV0dXJuIHQ7Y29uc3Qgcz1uP1wibWFwXCI9PT1yP3RoaXMudHJhbnNmb3JtLmFuZ2xlOjA6XCJ2aWV3cG9ydFwiPT09cj8tdGhpcy50cmFuc2Zvcm0uYW5nbGU6MDtpZihzKXtjb25zdCBlPU1hdGguc2luKHMpLHQ9TWF0aC5jb3Mocyk7bz1bb1swXSp0LW9bMV0qZSxvWzBdKmUrb1sxXSp0XTt9Y29uc3QgYT1bbj9vWzBdOkQoaSxvWzBdLHRoaXMudHJhbnNmb3JtLnpvb20pLG4/b1sxXTpEKGksb1sxXSx0aGlzLnRyYW5zZm9ybS56b29tKSwwXSxsPW5ldyBGbG9hdDMyQXJyYXkoMTYpO3JldHVybiBlLnRyYW5zbGF0ZShsLHQsYSksbH1zYXZlVGlsZVRleHR1cmUoZSl7Y29uc3QgdD10aGlzLl90aWxlVGV4dHVyZXNbZS5zaXplWzBdXTt0P3QucHVzaChlKTp0aGlzLl90aWxlVGV4dHVyZXNbZS5zaXplWzBdXT1bZV07fWdldFRpbGVUZXh0dXJlKGUpe2NvbnN0IHQ9dGhpcy5fdGlsZVRleHR1cmVzW2VdO3JldHVybiB0JiZ0Lmxlbmd0aD4wP3QucG9wKCk6bnVsbH1pc1BhdHRlcm5NaXNzaW5nKGUpe3JldHVybiBudWxsPT09ZXx8dm9pZCAwIT09ZSYmIXRoaXMuaW1hZ2VNYW5hZ2VyLmdldFBhdHRlcm4oZS50b1N0cmluZygpKX10ZXJyYWluUmVuZGVyTW9kZUVsZXZhdGVkKCl7cmV0dXJuIHRoaXMuc3R5bGUmJiEhdGhpcy5zdHlsZS5nZXRUZXJyYWluKCkmJiEhdGhpcy50ZXJyYWluJiYhdGhpcy50ZXJyYWluLnJlbmRlcmluZ1RvVGV4dHVyZX1jdXJyZW50R2xvYmFsRGVmaW5lcygpe2NvbnN0IGU9dGhpcy50ZXJyYWluJiZ0aGlzLnRlcnJhaW4ucmVuZGVyaW5nVG9UZXh0dXJlLHQ9dGhpcy50ZXJyYWluJiYwPT09dGhpcy50ZXJyYWluLmV4YWdnZXJhdGlvbigpLGk9dGhpcy5zdHlsZSYmdGhpcy5zdHlsZS5mb2csbz1bXTtyZXR1cm4gdGhpcy50ZXJyYWluUmVuZGVyTW9kZUVsZXZhdGVkKCkmJm8ucHVzaChcIlRFUlJBSU5cIiksXCJnbG9iZVwiPT09dGhpcy50cmFuc2Zvcm0ucHJvamVjdGlvbi5uYW1lJiZvLnB1c2goXCJHTE9CRVwiKSx0JiZvLnB1c2goXCJaRVJPX0VYQUdHRVJBVElPTlwiKSxpJiYhZSYmMCE9PWkuZ2V0T3BhY2l0eSh0aGlzLnRyYW5zZm9ybS5waXRjaCkmJm8ucHVzaChcIkZPR1wiKSxlJiZvLnB1c2goXCJSRU5ERVJfVE9fVEVYVFVSRVwiKSx0aGlzLl9zaG93T3ZlcmRyYXdJbnNwZWN0b3ImJm8ucHVzaChcIk9WRVJEUkFXX0lOU1BFQ1RPUlwiKSxvfXVzZVByb2dyYW0oZSx0LGkpe3RoaXMuY2FjaGU9dGhpcy5jYWNoZXx8e307Y29uc3Qgbz1pfHxbXSxyPXRoaXMuY3VycmVudEdsb2JhbERlZmluZXMoKS5jb25jYXQobyksbj1MaS5jYWNoZUtleShjaVtlXSxlLHIsdCk7cmV0dXJuIHRoaXMuY2FjaGVbbl18fCh0aGlzLmNhY2hlW25dPW5ldyBMaSh0aGlzLmNvbnRleHQsZSxjaVtlXSx0LHNvW2VdLHIpKSx0aGlzLmNhY2hlW25dfXNldEN1c3RvbUxheWVyRGVmYXVsdHMoKXt0aGlzLmNvbnRleHQudW5iaW5kVkFPKCksdGhpcy5jb250ZXh0LmN1bGxGYWNlLnNldERlZmF1bHQoKSx0aGlzLmNvbnRleHQuZnJvbnRGYWNlLnNldERlZmF1bHQoKSx0aGlzLmNvbnRleHQuY3VsbEZhY2VTaWRlLnNldERlZmF1bHQoKSx0aGlzLmNvbnRleHQuYWN0aXZlVGV4dHVyZS5zZXREZWZhdWx0KCksdGhpcy5jb250ZXh0LnBpeGVsU3RvcmVVbnBhY2suc2V0RGVmYXVsdCgpLHRoaXMuY29udGV4dC5waXhlbFN0b3JlVW5wYWNrUHJlbXVsdGlwbHlBbHBoYS5zZXREZWZhdWx0KCksdGhpcy5jb250ZXh0LnBpeGVsU3RvcmVVbnBhY2tGbGlwWS5zZXREZWZhdWx0KCk7fXNldEJhc2VTdGF0ZSgpe2NvbnN0IGU9dGhpcy5jb250ZXh0LmdsO3RoaXMuY29udGV4dC5jdWxsRmFjZS5zZXQoITEpLHRoaXMuY29udGV4dC52aWV3cG9ydC5zZXQoWzAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0XSksdGhpcy5jb250ZXh0LmJsZW5kRXF1YXRpb24uc2V0KGUuRlVOQ19BREQpO31pbml0RGVidWdPdmVybGF5Q2FudmFzKCl7bnVsbD09dGhpcy5kZWJ1Z092ZXJsYXlDYW52YXMmJih0aGlzLmRlYnVnT3ZlcmxheUNhbnZhcz1lLndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpLHRoaXMuZGVidWdPdmVybGF5Q2FudmFzLndpZHRoPTUxMix0aGlzLmRlYnVnT3ZlcmxheUNhbnZhcy5oZWlnaHQ9NTEyLHRoaXMuZGVidWdPdmVybGF5VGV4dHVyZT1uZXcgZS5UZXh0dXJlKHRoaXMuY29udGV4dCx0aGlzLmRlYnVnT3ZlcmxheUNhbnZhcyx0aGlzLmNvbnRleHQuZ2wuUkdCQSkpO31kZXN0cm95KCl7dGhpcy5fdGVycmFpbiYmdGhpcy5fdGVycmFpbi5kZXN0cm95KCksdGhpcy5nbG9iZVNoYXJlZEJ1ZmZlcnMmJnRoaXMuZ2xvYmVTaGFyZWRCdWZmZXJzLmRlc3Ryb3koKSx0aGlzLmVtcHR5VGV4dHVyZS5kZXN0cm95KCksdGhpcy5kZWJ1Z092ZXJsYXlUZXh0dXJlJiZ0aGlzLmRlYnVnT3ZlcmxheVRleHR1cmUuZGVzdHJveSgpLHRoaXMuYXRtb3NwaGVyZUJ1ZmZlciYmdGhpcy5hdG1vc3BoZXJlQnVmZmVyLmRlc3Ryb3koKTt9cHJlcGFyZURyYXdUaWxlKCl7dGhpcy50ZXJyYWluJiZ0aGlzLnRlcnJhaW4ucHJlcGFyZURyYXdUaWxlKCk7fXByZXBhcmVEcmF3UHJvZ3JhbSh0LGksbyl7aWYodGhpcy50ZXJyYWluJiZ0aGlzLnRlcnJhaW4ucmVuZGVyaW5nVG9UZXh0dXJlKXJldHVybjtjb25zdCByPXRoaXMuc3R5bGUuZm9nO2lmKHIpe2NvbnN0IG49ci5nZXRPcGFjaXR5KHRoaXMudHJhbnNmb3JtLnBpdGNoKSxzPSgodCxpLG8scixuLHMsYSxsLGMsaCx1KT0+e2NvbnN0IF89dC50cmFuc2Zvcm0sZD1pLnByb3BlcnRpZXMuZ2V0KFwiY29sb3JcIikudG9BcnJheTAxKCk7ZFszXT1yO2NvbnN0IHA9dC5mcmFtZUNvdW50ZXIvMWUzJTE7cmV0dXJuIHt1X2ZvZ19tYXRyaXg6bz9fLmNhbGN1bGF0ZUZvZ1RpbGVNYXRyaXgobyk6dC5pZGVudGl0eU1hdCx1X2ZvZ19yYW5nZTppLmdldEZvdkFkanVzdGVkUmFuZ2UoXy5fZm92KSx1X2ZvZ19jb2xvcjpkLHVfZm9nX2hvcml6b25fYmxlbmQ6aS5wcm9wZXJ0aWVzLmdldChcImhvcml6b24tYmxlbmRcIiksdV9mb2dfdGVtcG9yYWxfb2Zmc2V0OnAsdV9mcnVzdHVtX3RsOm4sdV9mcnVzdHVtX3RyOnMsdV9mcnVzdHVtX2JyOmEsdV9mcnVzdHVtX2JsOmwsdV9nbG9iZV9wb3M6Yyx1X2dsb2JlX3JhZGl1czpoLHVfdmlld3BvcnQ6dSx1X2dsb2JlX3RyYW5zaXRpb246ZS5nbG9iZVRvTWVyY2F0b3JUcmFuc2l0aW9uKF8uem9vbSksdV9pc19nbG9iZTorKFwiZ2xvYmVcIj09PV8ucHJvamVjdGlvbi5uYW1lKX19KSh0aGlzLHIsbyxuLHRoaXMudHJhbnNmb3JtLmZydXN0dW1Db3JuZXJzLlRMLHRoaXMudHJhbnNmb3JtLmZydXN0dW1Db3JuZXJzLlRSLHRoaXMudHJhbnNmb3JtLmZydXN0dW1Db3JuZXJzLkJSLHRoaXMudHJhbnNmb3JtLmZydXN0dW1Db3JuZXJzLkJMLHRoaXMudHJhbnNmb3JtLmdsb2JlQ2VudGVySW5WaWV3U3BhY2UsdGhpcy50cmFuc2Zvcm0uZ2xvYmVSYWRpdXMsW3RoaXMudHJhbnNmb3JtLndpZHRoKmUuZXhwb3J0ZWQuZGV2aWNlUGl4ZWxSYXRpbyx0aGlzLnRyYW5zZm9ybS5oZWlnaHQqZS5leHBvcnRlZC5kZXZpY2VQaXhlbFJhdGlvXSk7aS5zZXRGb2dVbmlmb3JtVmFsdWVzKHQscyk7fX1zZXRUaWxlTG9hZGVkRmxhZyhlKXt0aGlzLnRpbGVMb2FkZWQ9ZTt9c2F2ZUNhbnZhc0NvcHkoKXtjb25zdCBlPXRoaXMuY2FudmFzQ29weSgpO2UmJih0aGlzLmZyYW1lQ29waWVzLnB1c2goZSksdGhpcy50aWxlTG9hZGVkPSExKTt9Y2FudmFzQ29weSgpe2NvbnN0IGU9dGhpcy5jb250ZXh0LmdsLHQ9ZS5jcmVhdGVUZXh0dXJlKCk7cmV0dXJuIGUuYmluZFRleHR1cmUoZS5URVhUVVJFXzJELHQpLGUuY29weVRleEltYWdlMkQoZS5URVhUVVJFXzJELDAsZS5SR0JBLDAsMCxlLmRyYXdpbmdCdWZmZXJXaWR0aCxlLmRyYXdpbmdCdWZmZXJIZWlnaHQsMCksdH1nZXRDYW52YXNDb3BpZXNBbmRUaW1lc3RhbXBzKCl7cmV0dXJuIHtjYW52YXNDb3BpZXM6dGhpcy5mcmFtZUNvcGllcyx0aW1lU3RhbXBzOnRoaXMubG9hZFRpbWVTdGFtcHN9fWF2ZXJhZ2VFbGV2YXRpb25OZWVkc0Vhc2luZygpe2lmKCF0aGlzLnRyYW5zZm9ybS5fZWxldmF0aW9uKXJldHVybiAhMTtjb25zdCBlPXRoaXMuc3R5bGUmJnRoaXMuc3R5bGUuZm9nO3JldHVybiAhIWUmJjAhPT1lLmdldE9wYWNpdHkodGhpcy50cmFuc2Zvcm0ucGl0Y2gpfWdldEJhY2tncm91bmRUaWxlcygpe2NvbnN0IHQ9dGhpcy5fYmFja2dyb3VuZFRpbGVzLGk9dGhpcy5fYmFja2dyb3VuZFRpbGVzPXt9LG89dGhpcy50cmFuc2Zvcm0uY292ZXJpbmdUaWxlcyh7dGlsZVNpemU6NTEyfSk7Zm9yKGNvbnN0IHIgb2YgbylpW3Iua2V5XT10W3Iua2V5XXx8bmV3IGUuVGlsZShyLDUxMix0aGlzLnRyYW5zZm9ybS50aWxlWm9vbSx0aGlzKTtyZXR1cm4gaX1jbGVhckJhY2tncm91bmRUaWxlcygpe3RoaXMuX2JhY2tncm91bmRUaWxlcz17fTt9fWNsYXNzIGtve2NvbnN0cnVjdG9yKGU9MCx0PTAsaT0wLG89MCl7aWYoaXNOYU4oZSl8fGU8MHx8aXNOYU4odCl8fHQ8MHx8aXNOYU4oaSl8fGk8MHx8aXNOYU4obyl8fG88MCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHZhbHVlIGZvciBlZGdlLWluc2V0cywgdG9wLCBib3R0b20sIGxlZnQgYW5kIHJpZ2h0IG11c3QgYWxsIGJlIG51bWJlcnNcIik7dGhpcy50b3A9ZSx0aGlzLmJvdHRvbT10LHRoaXMubGVmdD1pLHRoaXMucmlnaHQ9bzt9aW50ZXJwb2xhdGUodCxpLG8pe3JldHVybiBudWxsIT1pLnRvcCYmbnVsbCE9dC50b3AmJih0aGlzLnRvcD1lLm51bWJlcih0LnRvcCxpLnRvcCxvKSksbnVsbCE9aS5ib3R0b20mJm51bGwhPXQuYm90dG9tJiYodGhpcy5ib3R0b209ZS5udW1iZXIodC5ib3R0b20saS5ib3R0b20sbykpLG51bGwhPWkubGVmdCYmbnVsbCE9dC5sZWZ0JiYodGhpcy5sZWZ0PWUubnVtYmVyKHQubGVmdCxpLmxlZnQsbykpLG51bGwhPWkucmlnaHQmJm51bGwhPXQucmlnaHQmJih0aGlzLnJpZ2h0PWUubnVtYmVyKHQucmlnaHQsaS5yaWdodCxvKSksdGhpc31nZXRDZW50ZXIodCxpKXtjb25zdCBvPWUuY2xhbXAoKHRoaXMubGVmdCt0LXRoaXMucmlnaHQpLzIsMCx0KSxyPWUuY2xhbXAoKHRoaXMudG9wK2ktdGhpcy5ib3R0b20pLzIsMCxpKTtyZXR1cm4gbmV3IGUuUG9pbnQobyxyKX1lcXVhbHMoZSl7cmV0dXJuIHRoaXMudG9wPT09ZS50b3AmJnRoaXMuYm90dG9tPT09ZS5ib3R0b20mJnRoaXMubGVmdD09PWUubGVmdCYmdGhpcy5yaWdodD09PWUucmlnaHR9Y2xvbmUoKXtyZXR1cm4gbmV3IGtvKHRoaXMudG9wLHRoaXMuYm90dG9tLHRoaXMubGVmdCx0aGlzLnJpZ2h0KX10b0pTT04oKXtyZXR1cm4ge3RvcDp0aGlzLnRvcCxib3R0b206dGhpcy5ib3R0b20sbGVmdDp0aGlzLmxlZnQscmlnaHQ6dGhpcy5yaWdodH19fWZ1bmN0aW9uIEZvKHQsaSl7Y29uc3Qgbz1lLmdldENvbHVtbih0LDMpO2UuZnJvbVF1YXQodCxpKSxlLnNldENvbHVtbih0LDMsbyk7fWZ1bmN0aW9uIFVvKHQsaSl7Y29uc3Qgbz1lLmlkZW50aXR5JDEoW10pO3JldHVybiBlLnJvdGF0ZVokMShvLG8sLWkpLGUucm90YXRlWCQxKG8sbywtdCksb31mdW5jdGlvbiBObyh0LGkpe2NvbnN0IG89W3RbMF0sdFsxXSwwXSxyPVtpWzBdLGlbMV0sMF07aWYoZS5sZW5ndGgobyk+PTFlLTE1KXtjb25zdCB0PWUubm9ybWFsaXplKFtdLG8pO2Uuc2NhbGUkMihyLHQsZS5kb3Qocix0KSksaVswXT1yWzBdLGlbMV09clsxXTt9Y29uc3Qgbj1lLmNyb3NzKFtdLGksdCk7aWYoZS5sZW4obik8MWUtMTUpcmV0dXJuIG51bGw7Y29uc3Qgcz1NYXRoLmF0YW4yKC1uWzFdLG5bMF0pO3JldHVybiBVbyhNYXRoLmF0YW4yKE1hdGguc3FydCh0WzBdKnRbMF0rdFsxXSp0WzFdKSwtdFsyXSkscyl9Y2xhc3Mgam97Y29uc3RydWN0b3IoZSx0KXt0aGlzLnBvc2l0aW9uPWUsdGhpcy5vcmllbnRhdGlvbj10O31nZXQgcG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRpb259c2V0IHBvc2l0aW9uKHQpe2lmKHQpe2NvbnN0IGk9dCBpbnN0YW5jZW9mIGUuTWVyY2F0b3JDb29yZGluYXRlP3Q6bmV3IGUuTWVyY2F0b3JDb29yZGluYXRlKHRbMF0sdFsxXSx0WzJdKTt0aGlzLl9yZW5kZXJXb3JsZENvcGllcyYmKGkueD1lLndyYXAoaS54LDAsMSkpLHRoaXMuX3Bvc2l0aW9uPWk7fWVsc2UgdGhpcy5fcG9zaXRpb249bnVsbDt9bG9va0F0UG9pbnQodCxpKXtpZih0aGlzLm9yaWVudGF0aW9uPW51bGwsIXRoaXMucG9zaXRpb24pcmV0dXJuO2NvbnN0IG89dGhpcy5wb3NpdGlvbixyPXRoaXMuX2VsZXZhdGlvbj90aGlzLl9lbGV2YXRpb24uZ2V0QXRQb2ludE9yWmVybyhlLk1lcmNhdG9yQ29vcmRpbmF0ZS5mcm9tTG5nTGF0KHQpKTowLG49ZS5NZXJjYXRvckNvb3JkaW5hdGUuZnJvbUxuZ0xhdCh0LHIpLHM9W24ueC1vLngsbi55LW8ueSxuLnotby56XTtpfHwoaT1bMCwwLDFdKSxpWzJdPU1hdGguYWJzKGlbMl0pLHRoaXMub3JpZW50YXRpb249Tm8ocyxpKTt9c2V0UGl0Y2hCZWFyaW5nKHQsaSl7dGhpcy5vcmllbnRhdGlvbj1VbyhlLmRlZ1RvUmFkKHQpLGUuZGVnVG9SYWQoLWkpKTt9fWNsYXNzIEdve2NvbnN0cnVjdG9yKHQsaSl7dGhpcy5fdHJhbnNmb3JtPWUuaWRlbnRpdHkoW10pLHRoaXMub3JpZW50YXRpb249aSx0aGlzLnBvc2l0aW9uPXQ7fWdldCBtZXJjYXRvclBvc2l0aW9uKCl7Y29uc3QgdD10aGlzLnBvc2l0aW9uO3JldHVybiBuZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUodFswXSx0WzFdLHRbMl0pfWdldCBwb3NpdGlvbigpe2NvbnN0IHQ9ZS5nZXRDb2x1bW4odGhpcy5fdHJhbnNmb3JtLDMpO3JldHVybiBbdFswXSx0WzFdLHRbMl1dfXNldCBwb3NpdGlvbih0KXt2YXIgaTt0JiZlLnNldENvbHVtbih0aGlzLl90cmFuc2Zvcm0sMyxbKGk9dClbMF0saVsxXSxpWzJdLDFdKTt9Z2V0IG9yaWVudGF0aW9uKCl7cmV0dXJuIHRoaXMuX29yaWVudGF0aW9ufXNldCBvcmllbnRhdGlvbih0KXt0aGlzLl9vcmllbnRhdGlvbj10fHxlLmlkZW50aXR5JDEoW10pLHQmJkZvKHRoaXMuX3RyYW5zZm9ybSx0aGlzLl9vcmllbnRhdGlvbik7fWdldFBpdGNoQmVhcmluZygpe2NvbnN0IGU9dGhpcy5mb3J3YXJkKCksdD10aGlzLnJpZ2h0KCk7cmV0dXJuIHtiZWFyaW5nOk1hdGguYXRhbjIoLXRbMV0sdFswXSkscGl0Y2g6TWF0aC5hdGFuMihNYXRoLnNxcnQoZVswXSplWzBdK2VbMV0qZVsxXSksLWVbMl0pfX1zZXRQaXRjaEJlYXJpbmcoZSx0KXt0aGlzLl9vcmllbnRhdGlvbj1VbyhlLHQpLEZvKHRoaXMuX3RyYW5zZm9ybSx0aGlzLl9vcmllbnRhdGlvbik7fWZvcndhcmQoKXtjb25zdCB0PWUuZ2V0Q29sdW1uKHRoaXMuX3RyYW5zZm9ybSwyKTtyZXR1cm4gWy10WzBdLC10WzFdLC10WzJdXX11cCgpe2NvbnN0IHQ9ZS5nZXRDb2x1bW4odGhpcy5fdHJhbnNmb3JtLDEpO3JldHVybiBbLXRbMF0sLXRbMV0sLXRbMl1dfXJpZ2h0KCl7Y29uc3QgdD1lLmdldENvbHVtbih0aGlzLl90cmFuc2Zvcm0sMCk7cmV0dXJuIFt0WzBdLHRbMV0sdFsyXV19Z2V0Q2FtZXJhVG9Xb3JsZCh0LGkpe2NvbnN0IG89bmV3IEZsb2F0NjRBcnJheSgxNik7cmV0dXJuIGUuaW52ZXJ0KG8sdGhpcy5nZXRXb3JsZFRvQ2FtZXJhKHQsaSkpLG99Z2V0V29ybGRUb0NhbWVyYVBvc2l0aW9uKHQsaSxvKXtjb25zdCByPXRoaXMucG9zaXRpb247ZS5zY2FsZSQyKHIsciwtdCk7Y29uc3Qgbj1uZXcgRmxvYXQ2NEFycmF5KDE2KTtyZXR1cm4gZS5mcm9tU2NhbGluZyhuLFtvLG8sb10pLGUudHJhbnNsYXRlKG4sbixyKSxuWzEwXSo9aSxufWdldFdvcmxkVG9DYW1lcmEodCxpKXtjb25zdCBvPW5ldyBGbG9hdDY0QXJyYXkoMTYpLHI9bmV3IEZsb2F0NjRBcnJheSg0KSxuPXRoaXMucG9zaXRpb247cmV0dXJuIGUuY29uanVnYXRlKHIsdGhpcy5fb3JpZW50YXRpb24pLGUuc2NhbGUkMihuLG4sLXQpLGUuZnJvbVF1YXQobyxyKSxlLnRyYW5zbGF0ZShvLG8sbiksb1sxXSo9LTEsb1s1XSo9LTEsb1s5XSo9LTEsb1sxM10qPS0xLG9bOF0qPWksb1s5XSo9aSxvWzEwXSo9aSxvWzExXSo9aSxvfWdldENhbWVyYVRvQ2xpcFBlcnNwZWN0aXZlKHQsaSxvLHIpe2NvbnN0IG49bmV3IEZsb2F0NjRBcnJheSgxNik7cmV0dXJuIGUucGVyc3BlY3RpdmUobix0LGksbyxyKSxufWdldERpc3RhbmNlVG9FbGV2YXRpb24odCxpPSExKXtjb25zdCBvPTA9PT10PzA6ZS5tZXJjYXRvclpmcm9tQWx0aXR1ZGUodCxpP2UubGF0RnJvbU1lcmNhdG9yWSh0aGlzLnBvc2l0aW9uWzFdKTp0aGlzLnBvc2l0aW9uWzFdKSxyPXRoaXMuZm9yd2FyZCgpO3JldHVybiAoby10aGlzLnBvc2l0aW9uWzJdKS9yWzJdfWNsb25lKCl7cmV0dXJuIG5ldyBHbyhbLi4udGhpcy5wb3NpdGlvbl0sWy4uLnRoaXMub3JpZW50YXRpb25dKX19ZnVuY3Rpb24gWm8odCxpKXtjb25zdCBvPVdvKHQucHJvamVjdGlvbix0Lnpvb20sdC53aWR0aCx0LmhlaWdodCkscj1mdW5jdGlvbih0LGksbyxyLG4pe2NvbnN0IHM9bmV3IGUuTG5nTGF0KG8ubG5nLTE4MCpYbyxvLmxhdCksYT1uZXcgZS5MbmdMYXQoby5sbmcrMTgwKlhvLG8ubGF0KSxsPXQucHJvamVjdChzLmxuZyxzLmxhdCksYz10LnByb2plY3QoYS5sbmcsYS5sYXQpLGg9LU1hdGguYXRhbjIoYy55LWwueSxjLngtbC54KSx1PWUuTWVyY2F0b3JDb29yZGluYXRlLmZyb21MbmdMYXQobyk7dS55PWUuY2xhbXAodS55LC0xK1hvLDEtWG8pO2NvbnN0IF89dS50b0xuZ0xhdCgpLGQ9dC5wcm9qZWN0KF8ubG5nLF8ubGF0KSxwPWUuTWVyY2F0b3JDb29yZGluYXRlLmZyb21MbmdMYXQoXyk7cC54Kz1Ybztjb25zdCBtPXAudG9MbmdMYXQoKSxmPXQucHJvamVjdChtLmxuZyxtLmxhdCksZz0kbyhmLngtZC54LGYueS1kLnksaCksdj1lLk1lcmNhdG9yQ29vcmRpbmF0ZS5mcm9tTG5nTGF0KF8pO3YueSs9WG87Y29uc3QgeD12LnRvTG5nTGF0KCkseT10LnByb2plY3QoeC5sbmcseC5sYXQpLGI9JG8oeS54LWQueCx5LnktZC55LGgpLHc9TWF0aC5hYnMoZy54KS9NYXRoLmFicyhiLnkpLFQ9ZS5pZGVudGl0eShbXSk7ZS5yb3RhdGVaKFQsVCwtaCooMS0obj8wOnIpKSk7Y29uc3QgRT1lLmlkZW50aXR5KFtdKTtyZXR1cm4gZS5zY2FsZShFLEUsWzEsMS0oMS13KSpyLDFdKSxFWzRdPS1iLngvYi55KnIsZS5yb3RhdGVaKEUsRSxoKSxlLm11bHRpcGx5KEUsVCxFKSxFfSh0LnByb2plY3Rpb24sMCx0LmNlbnRlcixvLGkpLG49Vm8odCk7cmV0dXJuIGUuc2NhbGUocixyLFtuLG4sMV0pLHJ9ZnVuY3Rpb24gVm8odCl7Y29uc3QgaT10LnByb2plY3Rpb24sbz1Xbyh0LnByb2plY3Rpb24sdC56b29tLHQud2lkdGgsdC5oZWlnaHQpLHI9cW8oaSx0LmNlbnRlciksbj1xbyhpLGUuTG5nTGF0LmNvbnZlcnQoaS5jZW50ZXIpKTtyZXR1cm4gTWF0aC5wb3coMixyKm8rKDEtbykqbil9ZnVuY3Rpb24gV28odCxpLG8scixuPTEvMCl7Y29uc3Qgcz10LnJhbmdlO2lmKCFzKXJldHVybiAwO2NvbnN0IGE9TWF0aC5taW4obixNYXRoLm1heChvLHIpKSxsPU1hdGgubG9nKGEvMTAyNCkvTWF0aC5MTjI7cmV0dXJuIGUuc21vb3Roc3RlcChzWzBdK2wsc1sxXStsLGkpfWNvbnN0IFhvPTEvNGU0O2Z1bmN0aW9uIHFvKHQsaSl7Y29uc3Qgbz1lLmNsYW1wKGkubGF0LC1lLk1BWF9NRVJDQVRPUl9MQVRJVFVERSxlLk1BWF9NRVJDQVRPUl9MQVRJVFVERSkscj1uZXcgZS5MbmdMYXQoaS5sbmctMTgwKlhvLG8pLG49bmV3IGUuTG5nTGF0KGkubG5nKzE4MCpYbyxvKSxzPXQucHJvamVjdChyLmxuZyxvKSxhPXQucHJvamVjdChuLmxuZyxvKSxsPWUuTWVyY2F0b3JDb29yZGluYXRlLmZyb21MbmdMYXQociksYz1lLk1lcmNhdG9yQ29vcmRpbmF0ZS5mcm9tTG5nTGF0KG4pLGg9YS54LXMueCx1PWEueS1zLnksXz1jLngtbC54LGQ9Yy55LWwueSxwPU1hdGguc3FydCgoXypfK2QqZCkvKGgqaCt1KnUpKTtyZXR1cm4gTWF0aC5sb2cocCkvTWF0aC5MTjJ9ZnVuY3Rpb24gJG8oZSx0LGkpe2NvbnN0IG89TWF0aC5jb3MoaSkscj1NYXRoLnNpbihpKTtyZXR1cm4ge3g6ZSpvLXQqcix5OmUqcit0Km99fWNsYXNzIEhve2NvbnN0cnVjdG9yKHQsaSxvLHIsbixzLGEpe3RoaXMudGlsZVNpemU9NTEyLHRoaXMuX3JlbmRlcldvcmxkQ29waWVzPXZvaWQgMD09PW58fG4sdGhpcy5fbWluWm9vbT10fHwwLHRoaXMuX21heFpvb209aXx8MjIsdGhpcy5fbWluUGl0Y2g9bnVsbD09bz8wOm8sdGhpcy5fbWF4UGl0Y2g9bnVsbD09cj82MDpyLHRoaXMuc2V0UHJvamVjdGlvbihzKSx0aGlzLnNldE1heEJvdW5kcyhhKSx0aGlzLndpZHRoPTAsdGhpcy5oZWlnaHQ9MCx0aGlzLl9jZW50ZXI9bmV3IGUuTG5nTGF0KDAsMCksdGhpcy56b29tPTAsdGhpcy5hbmdsZT0wLHRoaXMuX2Zvdj0uNjQzNTAxMTA4NzkzMjg0NCx0aGlzLl9waXRjaD0wLHRoaXMuX25lYXJaPTAsdGhpcy5fZmFyWj0wLHRoaXMuX3VubW9kaWZpZWQ9ITAsdGhpcy5fZWRnZUluc2V0cz1uZXcga28sdGhpcy5fcHJvak1hdHJpeENhY2hlPXt9LHRoaXMuX2FsaWduZWRQcm9qTWF0cml4Q2FjaGU9e30sdGhpcy5fZm9nVGlsZU1hdHJpeENhY2hlPXt9LHRoaXMuX2Rpc3RhbmNlVGlsZURhdGFDYWNoZT17fSx0aGlzLl9jYW1lcmE9bmV3IEdvLHRoaXMuX2NlbnRlckFsdGl0dWRlPTAsdGhpcy5fYXZlcmFnZUVsZXZhdGlvbj0wLHRoaXMuY2FtZXJhRWxldmF0aW9uUmVmZXJlbmNlPVwiZ3JvdW5kXCIsdGhpcy5fcGl4ZWxzUGVyTWVyY2F0b3JQaXhlbD0xLHRoaXMuZ2xvYmVSYWRpdXM9MCx0aGlzLmdsb2JlQ2VudGVySW5WaWV3U3BhY2U9WzAsMCwwXSx0aGlzLl9ob3Jpem9uU2hpZnQ9LjE7fWNsb25lKCl7Y29uc3QgZT1uZXcgSG8odGhpcy5fbWluWm9vbSx0aGlzLl9tYXhab29tLHRoaXMuX21pblBpdGNoLHRoaXMubWF4UGl0Y2gsdGhpcy5fcmVuZGVyV29ybGRDb3BpZXMsdGhpcy5nZXRQcm9qZWN0aW9uKCkpO3JldHVybiBlLl9lbGV2YXRpb249dGhpcy5fZWxldmF0aW9uLGUuX2NlbnRlckFsdGl0dWRlPXRoaXMuX2NlbnRlckFsdGl0dWRlLGUuX2NlbnRlckFsdGl0dWRlVmFsaWRGb3JFeGFnZ2VyYXRpb249dGhpcy5fY2VudGVyQWx0aXR1ZGVWYWxpZEZvckV4YWdnZXJhdGlvbixlLnRpbGVTaXplPXRoaXMudGlsZVNpemUsZS5tZXJjYXRvckZyb21UcmFuc2l0aW9uPXRoaXMubWVyY2F0b3JGcm9tVHJhbnNpdGlvbixlLndpZHRoPXRoaXMud2lkdGgsZS5oZWlnaHQ9dGhpcy5oZWlnaHQsZS5jYW1lcmFFbGV2YXRpb25SZWZlcmVuY2U9dGhpcy5jYW1lcmFFbGV2YXRpb25SZWZlcmVuY2UsZS5fY2VudGVyPXRoaXMuX2NlbnRlcixlLl9zZXRab29tKHRoaXMuem9vbSksZS5fc2VhTGV2ZWxab29tPXRoaXMuX3NlYUxldmVsWm9vbSxlLmFuZ2xlPXRoaXMuYW5nbGUsZS5fZm92PXRoaXMuX2ZvdixlLl9waXRjaD10aGlzLl9waXRjaCxlLl9uZWFyWj10aGlzLl9uZWFyWixlLl9mYXJaPXRoaXMuX2ZhclosZS5fYXZlcmFnZUVsZXZhdGlvbj10aGlzLl9hdmVyYWdlRWxldmF0aW9uLGUuX3VubW9kaWZpZWQ9dGhpcy5fdW5tb2RpZmllZCxlLl9lZGdlSW5zZXRzPXRoaXMuX2VkZ2VJbnNldHMuY2xvbmUoKSxlLl9jYW1lcmE9dGhpcy5fY2FtZXJhLmNsb25lKCksZS5fY2FsY01hdHJpY2VzKCksZS5mcmVlemVUaWxlQ292ZXJhZ2U9dGhpcy5mcmVlemVUaWxlQ292ZXJhZ2UsZS5mcnVzdHVtQ29ybmVycz10aGlzLmZydXN0dW1Db3JuZXJzLGV9Z2V0IGVsZXZhdGlvbigpe3JldHVybiB0aGlzLl9lbGV2YXRpb259c2V0IGVsZXZhdGlvbihlKXt0aGlzLl9lbGV2YXRpb24hPT1lJiYodGhpcy5fZWxldmF0aW9uPWUsdGhpcy5fdXBkYXRlQ2FtZXJhT25UZXJyYWluKCksdGhpcy5fY2FsY01hdHJpY2VzKCkpO311cGRhdGVFbGV2YXRpb24oZSx0PSExKXtjb25zdCBpPXRoaXMuX2VsZXZhdGlvbiYmdGhpcy5fZWxldmF0aW9uLmV4YWdnZXJhdGlvbigpIT09dGhpcy5fY2VudGVyQWx0aXR1ZGVWYWxpZEZvckV4YWdnZXJhdGlvbjsobnVsbD09dGhpcy5fc2VhTGV2ZWxab29tfHxpKSYmdGhpcy5fdXBkYXRlQ2FtZXJhT25UZXJyYWluKCksKGV8fGkpJiZ0aGlzLl9jb25zdHJhaW5DYW1lcmEodCksdGhpcy5fY2FsY01hdHJpY2VzKCk7fWdldFByb2plY3Rpb24oKXtyZXR1cm4gZS5waWNrKHRoaXMucHJvamVjdGlvbixbXCJuYW1lXCIsXCJjZW50ZXJcIixcInBhcmFsbGVsc1wiXSl9c2V0UHJvamVjdGlvbihpKXt0aGlzLnByb2plY3Rpb25PcHRpb25zPWl8fHtuYW1lOlwibWVyY2F0b3JcIn07Y29uc3Qgbz10aGlzLnByb2plY3Rpb24/dGhpcy5nZXRQcm9qZWN0aW9uKCk6dm9pZCAwO3RoaXMucHJvamVjdGlvbj1lLmdldFByb2plY3Rpb24odGhpcy5wcm9qZWN0aW9uT3B0aW9ucyk7Y29uc3Qgcj0hdChvLHRoaXMuZ2V0UHJvamVjdGlvbigpKTtyZXR1cm4gciYmdGhpcy5fY2FsY01hdHJpY2VzKCksdGhpcy5tZXJjYXRvckZyb21UcmFuc2l0aW9uPSExLHJ9c2V0TWVyY2F0b3JGcm9tVHJhbnNpdGlvbigpe2NvbnN0IHQ9dGhpcy5wcm9qZWN0aW9uLm5hbWU7dGhpcy5tZXJjYXRvckZyb21UcmFuc2l0aW9uPSEwLHRoaXMucHJvamVjdGlvbk9wdGlvbnM9e25hbWU6XCJtZXJjYXRvclwifSx0aGlzLnByb2plY3Rpb249ZS5nZXRQcm9qZWN0aW9uKHtuYW1lOlwibWVyY2F0b3JcIn0pO2NvbnN0IGk9dCE9PXRoaXMucHJvamVjdGlvbi5uYW1lO3JldHVybiBpJiZ0aGlzLl9jYWxjTWF0cmljZXMoKSxpfWdldCBtaW5ab29tKCl7cmV0dXJuIHRoaXMuX21pblpvb219c2V0IG1pblpvb20oZSl7dGhpcy5fbWluWm9vbSE9PWUmJih0aGlzLl9taW5ab29tPWUsdGhpcy56b29tPU1hdGgubWF4KHRoaXMuem9vbSxlKSk7fWdldCBtYXhab29tKCl7cmV0dXJuIHRoaXMuX21heFpvb219c2V0IG1heFpvb20oZSl7dGhpcy5fbWF4Wm9vbSE9PWUmJih0aGlzLl9tYXhab29tPWUsdGhpcy56b29tPU1hdGgubWluKHRoaXMuem9vbSxlKSk7fWdldCBtaW5QaXRjaCgpe3JldHVybiB0aGlzLl9taW5QaXRjaH1zZXQgbWluUGl0Y2goZSl7dGhpcy5fbWluUGl0Y2ghPT1lJiYodGhpcy5fbWluUGl0Y2g9ZSx0aGlzLnBpdGNoPU1hdGgubWF4KHRoaXMucGl0Y2gsZSkpO31nZXQgbWF4UGl0Y2goKXtyZXR1cm4gdGhpcy5fbWF4UGl0Y2h9c2V0IG1heFBpdGNoKGUpe3RoaXMuX21heFBpdGNoIT09ZSYmKHRoaXMuX21heFBpdGNoPWUsdGhpcy5waXRjaD1NYXRoLm1pbih0aGlzLnBpdGNoLGUpKTt9Z2V0IHJlbmRlcldvcmxkQ29waWVzKCl7cmV0dXJuIHRoaXMuX3JlbmRlcldvcmxkQ29waWVzJiYhMD09PXRoaXMucHJvamVjdGlvbi5zdXBwb3J0c1dvcmxkQ29waWVzfXNldCByZW5kZXJXb3JsZENvcGllcyhlKXt2b2lkIDA9PT1lP2U9ITA6bnVsbD09PWUmJihlPSExKSx0aGlzLl9yZW5kZXJXb3JsZENvcGllcz1lO31nZXQgd29ybGRTaXplKCl7cmV0dXJuIHRoaXMudGlsZVNpemUqdGhpcy5zY2FsZX1nZXQgY2FtZXJhV29ybGRTaXplRm9yRm9nKCl7Y29uc3QgZT1NYXRoLm1heCh0aGlzLl9jYW1lcmEuZ2V0RGlzdGFuY2VUb0VsZXZhdGlvbih0aGlzLl9hdmVyYWdlRWxldmF0aW9uKSxOdW1iZXIuRVBTSUxPTik7cmV0dXJuIHRoaXMuX3dvcmxkU2l6ZUZyb21ab29tKHRoaXMuX3pvb21Gcm9tTWVyY2F0b3JaKGUpKX1nZXQgY2FtZXJhV29ybGRTaXplKCl7Y29uc3QgZT1NYXRoLm1heCh0aGlzLl9jYW1lcmEuZ2V0RGlzdGFuY2VUb0VsZXZhdGlvbih0aGlzLl9hdmVyYWdlRWxldmF0aW9uLCEwKSxOdW1iZXIuRVBTSUxPTik7cmV0dXJuIHRoaXMuX3dvcmxkU2l6ZUZyb21ab29tKHRoaXMuX3pvb21Gcm9tTWVyY2F0b3JaKGUpKX1nZXQgcGl4ZWxzUGVyTWV0ZXIoKXtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLnBpeGVsc1Blck1ldGVyKHRoaXMuY2VudGVyLmxhdCx0aGlzLndvcmxkU2l6ZSl9Z2V0IGNhbWVyYVBpeGVsc1Blck1ldGVyKCl7cmV0dXJuIGUubWVyY2F0b3JaZnJvbUFsdGl0dWRlKHRoaXMuY2VudGVyLmxhdCx0aGlzLmNhbWVyYVdvcmxkU2l6ZUZvckZvZyl9Z2V0IGNlbnRlck9mZnNldCgpe3JldHVybiB0aGlzLmNlbnRlclBvaW50Ll9zdWIodGhpcy5zaXplLl9kaXYoMikpfWdldCBzaXplKCl7cmV0dXJuIG5ldyBlLlBvaW50KHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpfWdldCBiZWFyaW5nKCl7cmV0dXJuIGUud3JhcCh0aGlzLnJvdGF0aW9uLC0xODAsMTgwKX1zZXQgYmVhcmluZyhlKXt0aGlzLnJvdGF0aW9uPWU7fWdldCByb3RhdGlvbigpe3JldHVybiAtdGhpcy5hbmdsZS9NYXRoLlBJKjE4MH1zZXQgcm90YXRpb24odCl7Y29uc3QgaT0tdCpNYXRoLlBJLzE4MDt2YXIgbzt0aGlzLmFuZ2xlIT09aSYmKHRoaXMuX3VubW9kaWZpZWQ9ITEsdGhpcy5hbmdsZT1pLHRoaXMuX2NhbGNNYXRyaWNlcygpLHRoaXMucm90YXRpb25NYXRyaXg9KG89bmV3IGUuQVJSQVlfVFlQRSg0KSxlLkFSUkFZX1RZUEUhPUZsb2F0MzJBcnJheSYmKG9bMV09MCxvWzJdPTApLG9bMF09MSxvWzNdPTEsbyksZnVuY3Rpb24oZSx0LGkpe3ZhciBvPXRbMF0scj10WzFdLG49dFsyXSxzPXRbM10sYT1NYXRoLnNpbihpKSxsPU1hdGguY29zKGkpO2VbMF09bypsK24qYSxlWzFdPXIqbCtzKmEsZVsyXT1vKi1hK24qbCxlWzNdPXIqLWErcypsO30odGhpcy5yb3RhdGlvbk1hdHJpeCx0aGlzLnJvdGF0aW9uTWF0cml4LHRoaXMuYW5nbGUpKTt9Z2V0IHBpdGNoKCl7cmV0dXJuIHRoaXMuX3BpdGNoL01hdGguUEkqMTgwfXNldCBwaXRjaCh0KXtjb25zdCBpPWUuY2xhbXAodCx0aGlzLm1pblBpdGNoLHRoaXMubWF4UGl0Y2gpLzE4MCpNYXRoLlBJO3RoaXMuX3BpdGNoIT09aSYmKHRoaXMuX3VubW9kaWZpZWQ9ITEsdGhpcy5fcGl0Y2g9aSx0aGlzLl9jYWxjTWF0cmljZXMoKSk7fWdldCBhc3BlY3QoKXtyZXR1cm4gdGhpcy53aWR0aC90aGlzLmhlaWdodH1nZXQgZm92KCl7cmV0dXJuIHRoaXMuX2Zvdi9NYXRoLlBJKjE4MH1nZXQgZm92WCgpe3JldHVybiB0aGlzLl9mb3Z9Z2V0IGZvdlkoKXtjb25zdCBlPTEvTWF0aC50YW4oLjUqdGhpcy5mb3ZYKTtyZXR1cm4gMipNYXRoLmF0YW4oMS90aGlzLmFzcGVjdC9lKX1zZXQgZm92KHQpe3Q9TWF0aC5tYXgoLjAxLE1hdGgubWluKDYwLHQpKSx0aGlzLl9mb3YhPT10JiYodGhpcy5fdW5tb2RpZmllZD0hMSx0aGlzLl9mb3Y9ZS5kZWdUb1JhZCh0KSx0aGlzLl9jYWxjTWF0cmljZXMoKSk7fWdldCBhdmVyYWdlRWxldmF0aW9uKCl7cmV0dXJuIHRoaXMuX2F2ZXJhZ2VFbGV2YXRpb259c2V0IGF2ZXJhZ2VFbGV2YXRpb24oZSl7dGhpcy5fYXZlcmFnZUVsZXZhdGlvbj1lLHRoaXMuX2NhbGNGb2dNYXRyaWNlcygpLHRoaXMuX2Rpc3RhbmNlVGlsZURhdGFDYWNoZT17fTt9Z2V0IHpvb20oKXtyZXR1cm4gdGhpcy5fem9vbX1zZXQgem9vbShlKXtjb25zdCB0PU1hdGgubWluKE1hdGgubWF4KGUsdGhpcy5taW5ab29tKSx0aGlzLm1heFpvb20pO3RoaXMuX3pvb20hPT10JiYodGhpcy5fdW5tb2RpZmllZD0hMSx0aGlzLl9zZXRab29tKHQpLHRoaXMuX3VwZGF0ZVNlYUxldmVsWm9vbSgpLHRoaXMuX2NvbnN0cmFpbigpLHRoaXMuX2NhbGNNYXRyaWNlcygpKTt9X3NldFpvb20oZSl7dGhpcy5fem9vbT1lLHRoaXMuc2NhbGU9dGhpcy56b29tU2NhbGUoZSksdGhpcy50aWxlWm9vbT1NYXRoLmZsb29yKGUpLHRoaXMuem9vbUZyYWN0aW9uPWUtdGhpcy50aWxlWm9vbTt9X3VwZGF0ZUNhbWVyYU9uVGVycmFpbigpe2lmKCF0aGlzLl9lbGV2YXRpb258fCF0aGlzLl9lbGV2YXRpb24uaXNEYXRhQXZhaWxhYmxlQXRQb2ludCh0aGlzLmxvY2F0aW9uQ29vcmRpbmF0ZSh0aGlzLmNlbnRlcikpKXJldHVybiB0aGlzLl9jZW50ZXJBbHRpdHVkZT0wLHRoaXMuX3NlYUxldmVsWm9vbT1udWxsLHZvaWQodGhpcy5fY2VudGVyQWx0aXR1ZGVWYWxpZEZvckV4YWdnZXJhdGlvbj12b2lkIDApO2NvbnN0IGU9dGhpcy5fZWxldmF0aW9uO3RoaXMuX2NlbnRlckFsdGl0dWRlPWUuZ2V0QXRQb2ludE9yWmVybyh0aGlzLmxvY2F0aW9uQ29vcmRpbmF0ZSh0aGlzLmNlbnRlcikpLHRoaXMuX2NlbnRlckFsdGl0dWRlVmFsaWRGb3JFeGFnZ2VyYXRpb249ZS5leGFnZ2VyYXRpb24oKSx0aGlzLl91cGRhdGVTZWFMZXZlbFpvb20oKTt9X3VwZGF0ZVNlYUxldmVsWm9vbSgpe3ZvaWQgMCE9PXRoaXMuX2NlbnRlckFsdGl0dWRlVmFsaWRGb3JFeGFnZ2VyYXRpb24mJih0aGlzLl9zZWFMZXZlbFpvb209dGhpcy5fem9vbUZyb21NZXJjYXRvclooKHRoaXMucGl4ZWxzUGVyTWV0ZXIqdGhpcy5fY2VudGVyQWx0aXR1ZGUrdGhpcy5jYW1lcmFUb0NlbnRlckRpc3RhbmNlKS90aGlzLndvcmxkU2l6ZSkpO31zYW1wbGVBdmVyYWdlRWxldmF0aW9uKCl7aWYoIXRoaXMuX2VsZXZhdGlvbilyZXR1cm4gMDtjb25zdCB0PXRoaXMuX2VsZXZhdGlvbixpPVtbLjUsLjJdLFsuMywuNV0sWy41LC41XSxbLjcsLjVdLFsuNSwuOF1dLG89dGhpcy5ob3Jpem9uTGluZUZyb21Ub3AoKTtsZXQgcj0wLG49MDtmb3IobGV0IHM9MDtzPGkubGVuZ3RoO3MrKyl7Y29uc3QgYT1uZXcgZS5Qb2ludChpW3NdWzBdKnRoaXMud2lkdGgsbytpW3NdWzFdKih0aGlzLmhlaWdodC1vKSksbD10LnBvaW50Q29vcmRpbmF0ZShhKTtpZighbCljb250aW51ZTtjb25zdCBjPTEvTWF0aC5oeXBvdChsWzBdLXRoaXMuX2NhbWVyYS5wb3NpdGlvblswXSxsWzFdLXRoaXMuX2NhbWVyYS5wb3NpdGlvblsxXSk7cis9bFszXSpjLG4rPWM7fXJldHVybiAwPT09bj9OYU46ci9ufWdldCBjZW50ZXIoKXtyZXR1cm4gdGhpcy5fY2VudGVyfXNldCBjZW50ZXIoZSl7ZS5sYXQ9PT10aGlzLl9jZW50ZXIubGF0JiZlLmxuZz09PXRoaXMuX2NlbnRlci5sbmd8fCh0aGlzLl91bm1vZGlmaWVkPSExLHRoaXMuX2NlbnRlcj1lLHRoaXMuX3RlcnJhaW5FbmFibGVkKCkmJihcImdyb3VuZFwiPT09dGhpcy5jYW1lcmFFbGV2YXRpb25SZWZlcmVuY2U/dGhpcy5fdXBkYXRlQ2FtZXJhT25UZXJyYWluKCk6dGhpcy5fdXBkYXRlWm9vbUZyb21FbGV2YXRpb24oKSksdGhpcy5fY29uc3RyYWluKCksdGhpcy5fY2FsY01hdHJpY2VzKCkpO31fdXBkYXRlWm9vbUZyb21FbGV2YXRpb24oKXtpZihudWxsPT10aGlzLl9zZWFMZXZlbFpvb218fCF0aGlzLl9lbGV2YXRpb24pcmV0dXJuO2NvbnN0IGU9dGhpcy5fc2VhTGV2ZWxab29tLHQ9dGhpcy5fZWxldmF0aW9uLmdldEF0UG9pbnRPclplcm8odGhpcy5sb2NhdGlvbkNvb3JkaW5hdGUodGhpcy5jZW50ZXIpKSxpPXRoaXMucGl4ZWxzUGVyTWV0ZXIvdGhpcy53b3JsZFNpemUqdCxvPXRoaXMuX21lcmNhdG9yWmZyb21ab29tKGUpLHI9dGhpcy5fbWVyY2F0b3JaZnJvbVpvb20odGhpcy5fbWF4Wm9vbSksbj1NYXRoLm1heChvLWkscik7dGhpcy5fc2V0Wm9vbSh0aGlzLl96b29tRnJvbU1lcmNhdG9yWihuKSk7fWdldCBwYWRkaW5nKCl7cmV0dXJuIHRoaXMuX2VkZ2VJbnNldHMudG9KU09OKCl9c2V0IHBhZGRpbmcoZSl7dGhpcy5fZWRnZUluc2V0cy5lcXVhbHMoZSl8fCh0aGlzLl91bm1vZGlmaWVkPSExLHRoaXMuX2VkZ2VJbnNldHMuaW50ZXJwb2xhdGUodGhpcy5fZWRnZUluc2V0cyxlLDEpLHRoaXMuX2NhbGNNYXRyaWNlcygpKTt9Y29tcHV0ZVpvb21SZWxhdGl2ZVRvKHQpe2NvbnN0IGk9dGhpcy5yYXlJbnRlcnNlY3Rpb25Db29yZGluYXRlKHRoaXMucG9pbnRSYXlJbnRlcnNlY3Rpb24odGhpcy5jZW50ZXJQb2ludCx0LnRvQWx0aXR1ZGUoKSkpO2xldCBvO289dC56PHRoaXMuX2NhbWVyYS5wb3NpdGlvblsyXT9baS54LGkueSxpLnpdOlt0LngsdC55LHQuel07Y29uc3Qgcj1lLmxlbmd0aChlLnN1YihbXSx0aGlzLl9jYW1lcmEucG9zaXRpb24sbykpO3JldHVybiBlLmNsYW1wKHRoaXMuX3pvb21Gcm9tTWVyY2F0b3JaKHIpLHRoaXMuX21pblpvb20sdGhpcy5fbWF4Wm9vbSl9c2V0RnJlZUNhbWVyYU9wdGlvbnModCl7aWYoIXRoaXMuaGVpZ2h0KXJldHVybjtpZighdC5wb3NpdGlvbiYmIXQub3JpZW50YXRpb24pcmV0dXJuO3RoaXMuX3VwZGF0ZUNhbWVyYVN0YXRlKCk7bGV0IGk9ITE7aWYodC5vcmllbnRhdGlvbiYmIWUuZXhhY3RFcXVhbHModC5vcmllbnRhdGlvbix0aGlzLl9jYW1lcmEub3JpZW50YXRpb24pJiYoaT10aGlzLl9zZXRDYW1lcmFPcmllbnRhdGlvbih0Lm9yaWVudGF0aW9uKSksdC5wb3NpdGlvbil7Y29uc3Qgbz1bdC5wb3NpdGlvbi54LHQucG9zaXRpb24ueSx0LnBvc2l0aW9uLnpdO2UuZXhhY3RFcXVhbHMkMShvLHRoaXMuX2NhbWVyYS5wb3NpdGlvbil8fCh0aGlzLl9zZXRDYW1lcmFQb3NpdGlvbihvKSxpPSEwKTt9aSYmKHRoaXMuX3VwZGF0ZVN0YXRlRnJvbUNhbWVyYSgpLHRoaXMucmVjZW50ZXJPblRlcnJhaW4oKSk7fWdldEZyZWVDYW1lcmFPcHRpb25zKCl7dGhpcy5fdXBkYXRlQ2FtZXJhU3RhdGUoKTtjb25zdCB0PXRoaXMuX2NhbWVyYS5wb3NpdGlvbixpPW5ldyBqbztyZXR1cm4gaS5wb3NpdGlvbj1uZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUodFswXSx0WzFdLHRbMl0pLGkub3JpZW50YXRpb249dGhpcy5fY2FtZXJhLm9yaWVudGF0aW9uLGkuX2VsZXZhdGlvbj10aGlzLmVsZXZhdGlvbixpLl9yZW5kZXJXb3JsZENvcGllcz10aGlzLnJlbmRlcldvcmxkQ29waWVzLGl9X3NldENhbWVyYU9yaWVudGF0aW9uKHQpe2lmKCFlLmxlbmd0aCQxKHQpKXJldHVybiAhMTtlLm5vcm1hbGl6ZSQxKHQsdCk7Y29uc3QgaT1lLnRyYW5zZm9ybVF1YXQoW10sWzAsMCwtMV0sdCksbz1lLnRyYW5zZm9ybVF1YXQoW10sWzAsLTEsMF0sdCk7aWYob1syXTwwKXJldHVybiAhMTtjb25zdCByPU5vKGksbyk7cmV0dXJuICEhciYmKHRoaXMuX2NhbWVyYS5vcmllbnRhdGlvbj1yLCEwKX1fc2V0Q2FtZXJhUG9zaXRpb24odCl7Y29uc3QgaT10aGlzLnpvb21TY2FsZSh0aGlzLm1pblpvb20pKnRoaXMudGlsZVNpemUsbz10aGlzLnpvb21TY2FsZSh0aGlzLm1heFpvb20pKnRoaXMudGlsZVNpemUscj10aGlzLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2U7dFsyXT1lLmNsYW1wKHRbMl0sci9vLHIvaSksdGhpcy5fY2FtZXJhLnBvc2l0aW9uPXQ7fWdldCBjZW50ZXJQb2ludCgpe3JldHVybiB0aGlzLl9lZGdlSW5zZXRzLmdldENlbnRlcih0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KX1nZXQgZm92QWJvdmVDZW50ZXIoKXtyZXR1cm4gdGhpcy5fZm92KiguNSt0aGlzLmNlbnRlck9mZnNldC55L3RoaXMuaGVpZ2h0KX1pc1BhZGRpbmdFcXVhbChlKXtyZXR1cm4gdGhpcy5fZWRnZUluc2V0cy5lcXVhbHMoZSl9aW50ZXJwb2xhdGVQYWRkaW5nKGUsdCxpKXt0aGlzLl91bm1vZGlmaWVkPSExLHRoaXMuX2VkZ2VJbnNldHMuaW50ZXJwb2xhdGUoZSx0LGkpLHRoaXMuX2NvbnN0cmFpbigpLHRoaXMuX2NhbGNNYXRyaWNlcygpO31jb3ZlcmluZ1pvb21MZXZlbChlKXtjb25zdCB0PShlLnJvdW5kWm9vbT9NYXRoLnJvdW5kOk1hdGguZmxvb3IpKHRoaXMuem9vbSt0aGlzLnNjYWxlWm9vbSh0aGlzLnRpbGVTaXplL2UudGlsZVNpemUpKTtyZXR1cm4gTWF0aC5tYXgoMCx0KX1nZXRWaXNpYmxlVW53cmFwcGVkQ29vcmRpbmF0ZXModCl7Y29uc3QgaT1bbmV3IGUuVW53cmFwcGVkVGlsZUlEKDAsdCldO2lmKHRoaXMucmVuZGVyV29ybGRDb3BpZXMpe2NvbnN0IG89dGhpcy5wb2ludENvb3JkaW5hdGUobmV3IGUuUG9pbnQoMCwwKSkscj10aGlzLnBvaW50Q29vcmRpbmF0ZShuZXcgZS5Qb2ludCh0aGlzLndpZHRoLDApKSxuPXRoaXMucG9pbnRDb29yZGluYXRlKG5ldyBlLlBvaW50KHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpKSxzPXRoaXMucG9pbnRDb29yZGluYXRlKG5ldyBlLlBvaW50KDAsdGhpcy5oZWlnaHQpKSxhPU1hdGguZmxvb3IoTWF0aC5taW4oby54LHIueCxuLngscy54KSksbD1NYXRoLmZsb29yKE1hdGgubWF4KG8ueCxyLngsbi54LHMueCkpLGM9MTtmb3IobGV0IG89YS1jO288PWwrYztvKyspMCE9PW8mJmkucHVzaChuZXcgZS5VbndyYXBwZWRUaWxlSUQobyx0KSk7fXJldHVybiBpfWNvdmVyaW5nVGlsZXModCl7bGV0IGk9dGhpcy5jb3ZlcmluZ1pvb21MZXZlbCh0KTtjb25zdCBvPWkscj10aGlzLmVsZXZhdGlvbiYmIXQuaXNUZXJyYWluREVNLG49XCJtZXJjYXRvclwiPT09dGhpcy5wcm9qZWN0aW9uLm5hbWU7aWYodm9pZCAwIT09dC5taW56b29tJiZpPHQubWluem9vbSlyZXR1cm4gW107dm9pZCAwIT09dC5tYXh6b29tJiZpPnQubWF4em9vbSYmKGk9dC5tYXh6b29tKTtjb25zdCBzPXRoaXMubG9jYXRpb25Db29yZGluYXRlKHRoaXMuY2VudGVyKSxhPXRoaXMuY2VudGVyLmxhdCxsPTE8PGksYz1bbCpzLngsbCpzLnksMF0saD1cImdsb2JlXCI9PT10aGlzLnByb2plY3Rpb24ubmFtZSx1PSFoLF89ZS5GcnVzdHVtLmZyb21JbnZQcm9qZWN0aW9uTWF0cml4KHRoaXMuaW52UHJvak1hdHJpeCx0aGlzLndvcmxkU2l6ZSxpLHUpLGQ9aD90aGlzLl9jYW1lcmEubWVyY2F0b3JQb3NpdGlvbjp0aGlzLnBvaW50Q29vcmRpbmF0ZSh0aGlzLmdldENhbWVyYVBvaW50KCkpLHA9bCplLm1lcmNhdG9yWmZyb21BbHRpdHVkZSgxLHRoaXMuY2VudGVyLmxhdCksbT10aGlzLl9jYW1lcmEucG9zaXRpb25bMl0vZS5tZXJjYXRvclpmcm9tQWx0aXR1ZGUoMSx0aGlzLmNlbnRlci5sYXQpLGY9W2wqZC54LGwqZC55LG0qKHU/MTpwKV0sZz10aGlzLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2UvdC50aWxlU2l6ZSoodC5yb3VuZFpvb20/MTouNTAyKSx2PXRoaXMucGl0Y2g8PTYwJiZ0aGlzLl9lZGdlSW5zZXRzLnRvcDw9dGhpcy5fZWRnZUluc2V0cy5ib3R0b20mJiF0aGlzLl9lbGV2YXRpb24mJiF0aGlzLnByb2plY3Rpb24uaXNSZXByb2plY3RlZEluVGlsZVNwYWNlP2k6MCx4PXQuaXNUZXJyYWluREVNJiZ0aGlzLl9lbGV2YXRpb24/MWU0KnRoaXMuX2VsZXZhdGlvbi5leGFnZ2VyYXRpb24oKTp0aGlzLl9jZW50ZXJBbHRpdHVkZSx5PXQuaXNUZXJyYWluREVNPy14OnRoaXMuX2VsZXZhdGlvbj90aGlzLl9lbGV2YXRpb24uZ2V0TWluRWxldmF0aW9uQmVsb3dNU0woKTowLGI9dGhpcy5wcm9qZWN0aW9uLmlzUmVwcm9qZWN0ZWRJblRpbGVTcGFjZT9Wbyh0aGlzKToxLHc9dD0+e2NvbnN0IGk9MS80ZTQsbz1uZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUodC54K2ksdC55LHQueikscj1uZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUodC54LHQueStpLHQueiksbj10LnRvTG5nTGF0KCkscz1vLnRvTG5nTGF0KCksYT1yLnRvTG5nTGF0KCksbD10aGlzLmxvY2F0aW9uQ29vcmRpbmF0ZShuKSxjPXRoaXMubG9jYXRpb25Db29yZGluYXRlKHMpLGg9dGhpcy5sb2NhdGlvbkNvb3JkaW5hdGUoYSksdT1NYXRoLmh5cG90KGMueC1sLngsYy55LWwueSksXz1NYXRoLmh5cG90KGgueC1sLngsaC55LWwueSk7cmV0dXJuIE1hdGguc3FydCh1Kl8pKmIvaX0sVD10PT57Y29uc3QgaT14LG89eTtyZXR1cm4ge2FhYmI6ZS50aWxlQUFCQih0aGlzLGwsMCwwLDAsdCxvLGksdGhpcy5wcm9qZWN0aW9uKSx6b29tOjAseDowLHk6MCxtaW5aOm8sbWF4WjppLHdyYXA6dCxmdWxseVZpc2libGU6ITF9fSxFPVtdO2xldCBDPVtdO2NvbnN0IE09aSxJPXQucmVwYXJzZU92ZXJzY2FsZWQ/bzppLFA9ZT0+ZSplLFM9UCgobS10aGlzLl9jZW50ZXJBbHRpdHVkZSkqcCksRD1lPT57aWYoIXRoaXMuX2VsZXZhdGlvbnx8IWUudGlsZUlEfHwhbilyZXR1cm47Y29uc3QgdD10aGlzLl9lbGV2YXRpb24uZ2V0TWluTWF4Rm9yVGlsZShlLnRpbGVJRCksaT1lLmFhYmI7dD8oaS5taW5bMl09dC5taW4saS5tYXhbMl09dC5tYXgsaS5jZW50ZXJbMl09KGkubWluWzJdK2kubWF4WzJdKS8yKTooZS5zaG91bGRTcGxpdD1MKGUpLGUuc2hvdWxkU3BsaXR8fChpLm1pblsyXT1pLm1heFsyXT1pLmNlbnRlclsyXT10aGlzLl9jZW50ZXJBbHRpdHVkZSkpO30sTD10PT57aWYodC56b29tPHYpcmV0dXJuICEwO2lmKHQuem9vbT09PU0pcmV0dXJuICExO2lmKG51bGwhPXQuc2hvdWxkU3BsaXQpcmV0dXJuIHQuc2hvdWxkU3BsaXQ7Y29uc3QgaT10LmFhYmIuZGlzdGFuY2VYKGYpLG49dC5hYWJiLmRpc3RhbmNlWShmKTtsZXQgcz1TLGw9MTtpZihoKXtzPVAodC5hYWJiLmRpc3RhbmNlWihmKSk7Y29uc3QgaT1NYXRoLnBvdygyLHQuem9vbSksbz1lLmxhdEZyb21NZXJjYXRvclkoKHQueSsxKS9pKSxyPWUubGF0RnJvbU1lcmNhdG9yWSh0LnkvaSksbj1NYXRoLm1pbihNYXRoLm1heChhLG8pLHIpLGM9ZS5jaXJjdW1mZXJlbmNlQXRMYXRpdHVkZShuKS9lLmNpcmN1bWZlcmVuY2VBdExhdGl0dWRlKGEpO2lmKGw9bj09PWE/MS9NYXRoLm1heCgxLHRoaXMuX21lcmNhdG9yU2NhbGVSYXRpby0uMyk6TWF0aC5taW4oMSxjL3RoaXMuX21lcmNhdG9yU2NhbGVSYXRpbyksdGhpcy56b29tPD1lLkdMT0JFX1pPT01fVEhSRVNIT0xEX01JTiYmdC56b29tPT09TS0xJiZjPj0uOSlyZXR1cm4gITB9ZWxzZSBpZihyJiYocz1QKHQuYWFiYi5kaXN0YW5jZVooZikqcCkpLHRoaXMucHJvamVjdGlvbi5pc1JlcHJvamVjdGVkSW5UaWxlU3BhY2UmJm88PTUpe2NvbnN0IGk9TWF0aC5wb3coMix0Lnpvb20pLG89dyhuZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUoKHQueCsuNSkvaSwodC55Ky41KS9pKSk7bD1vPi44NT8xOm87fWNvbnN0IGM9aSppK24qbitzLHU9UCgoMTw8TS10Lnpvb20pKmcqbCooKGUsdCk9PntpZih0KlAoLjcwNyk8ZSlyZXR1cm4gMTtjb25zdCBpPU1hdGguc3FydCh0L2UpO3JldHVybiBpLygxLjQxNDQyNzE1NzAwMTQxNDQrKE1hdGgucG93KDEuMSxpLTEuNDE0NDI3MTU3MDAxNDE0NCsxKS0xKS8oMS4xLTEpLTEpfSkoTWF0aC5tYXgocyxTKSxjKSk7cmV0dXJuIGM8dX07aWYodGhpcy5yZW5kZXJXb3JsZENvcGllcylmb3IobGV0IGU9MTtlPD0zO2UrKylFLnB1c2goVCgtZSkpLEUucHVzaChUKGUpKTtmb3IoRS5wdXNoKFQoMCkpO0UubGVuZ3RoPjA7KXtjb25zdCBvPUUucG9wKCkscz1vLngsYT1vLnk7bGV0IHU9by5mdWxseVZpc2libGU7aWYoIXUpe2NvbnN0IGU9by5hYWJiLmludGVyc2VjdHMoXyk7aWYoMD09PWUpY29udGludWU7dT0yPT09ZTt9aWYoby56b29tIT09TSYmTChvKSlmb3IobGV0IHQ9MDt0PDQ7dCsrKXtjb25zdCBpPShzPDwxKSt0JTIsYz0oYTw8MSkrKHQ+PjEpLF89e2FhYmI6bj9vLmFhYmIucXVhZHJhbnQodCk6ZS50aWxlQUFCQih0aGlzLGwsby56b29tKzEsaSxjLG8ud3JhcCxvLm1pblosby5tYXhaLHRoaXMucHJvamVjdGlvbiksem9vbTpvLnpvb20rMSx4OmkseTpjLHdyYXA6by53cmFwLGZ1bGx5VmlzaWJsZTp1LHRpbGVJRDp2b2lkIDAsc2hvdWxkU3BsaXQ6dm9pZCAwLG1pblo6by5taW5aLG1heFo6by5tYXhafTtyJiYhaCYmKF8udGlsZUlEPW5ldyBlLk92ZXJzY2FsZWRUaWxlSUQoby56b29tKzE9PT1NP0k6by56b29tKzEsby53cmFwLG8uem9vbSsxLGksYyksRChfKSksRS5wdXNoKF8pO31lbHNlIHtjb25zdCByPW8uem9vbT09PU0/STpvLnpvb207aWYodC5taW56b29tJiZ0Lm1pbnpvb20+ciljb250aW51ZTtjb25zdCBuPWNbMF0tKC41K3MrKG8ud3JhcDw8by56b29tKSkqKDE8PGktby56b29tKSxsPWNbMV0tLjUtYSxoPW8udGlsZUlEP28udGlsZUlEOm5ldyBlLk92ZXJzY2FsZWRUaWxlSUQocixvLndyYXAsby56b29tLHMsYSk7Qy5wdXNoKHt0aWxlSUQ6aCxkaXN0YW5jZVNxOm4qbitsKmx9KTt9fWlmKHRoaXMuZm9nQ3VsbERpc3RTcSl7Y29uc3QgaT10aGlzLmZvZ0N1bGxEaXN0U3Esbz10aGlzLmhvcml6b25MaW5lRnJvbVRvcCgpO0M9Qy5maWx0ZXIoKHI9Pntjb25zdCBuPVswLDAsMCwxXSxzPVtlLkVYVEVOVCxlLkVYVEVOVCwwLDFdLGE9dGhpcy5jYWxjdWxhdGVGb2dUaWxlTWF0cml4KHIudGlsZUlELnRvVW53cmFwcGVkKCkpO2UudHJhbnNmb3JtTWF0NCQxKG4sbixhKSxlLnRyYW5zZm9ybU1hdDQkMShzLHMsYSk7Y29uc3QgbD1lLmdldEFBQkJQb2ludFNxdWFyZURpc3QobixzKTtpZigwPT09bClyZXR1cm4gITA7bGV0IGM9ITE7Y29uc3QgaD10aGlzLl9lbGV2YXRpb247aWYoaCYmbD5pJiYwIT09byl7Y29uc3QgaT10aGlzLmNhbGN1bGF0ZVByb2pNYXRyaXgoci50aWxlSUQudG9VbndyYXBwZWQoKSk7bGV0IG47dC5pc1RlcnJhaW5ERU18fChuPWguZ2V0TWluTWF4Rm9yVGlsZShyLnRpbGVJRCkpLG58fChuPXttaW46eSxtYXg6eH0pO2NvbnN0IHM9ZS5mdXJ0aGVzdFRpbGVDb3JuZXIodGhpcy5yb3RhdGlvbiksYT1bc1swXSplLkVYVEVOVCxzWzFdKmUuRVhURU5ULG4ubWF4XTtlLnRyYW5zZm9ybU1hdDQoYSxhLGkpLGM9KDEtYVsxXSkqdGhpcy5oZWlnaHQqLjU8bzt9cmV0dXJuIGw8aXx8Y30pKTt9cmV0dXJuIEMuc29ydCgoKGUsdCk9PmUuZGlzdGFuY2VTcS10LmRpc3RhbmNlU3EpKS5tYXAoKGU9PmUudGlsZUlEKSl9cmVzaXplKGUsdCl7dGhpcy53aWR0aD1lLHRoaXMuaGVpZ2h0PXQsdGhpcy5waXhlbHNUb0dMVW5pdHM9WzIvZSwtMi90XSx0aGlzLl9jb25zdHJhaW4oKSx0aGlzLl9jYWxjTWF0cmljZXMoKTt9Z2V0IHVubW9kaWZpZWQoKXtyZXR1cm4gdGhpcy5fdW5tb2RpZmllZH16b29tU2NhbGUoZSl7cmV0dXJuIE1hdGgucG93KDIsZSl9c2NhbGVab29tKGUpe3JldHVybiBNYXRoLmxvZyhlKS9NYXRoLkxOMn1wcm9qZWN0KHQpe2NvbnN0IGk9ZS5jbGFtcCh0LmxhdCwtZS5NQVhfTUVSQ0FUT1JfTEFUSVRVREUsZS5NQVhfTUVSQ0FUT1JfTEFUSVRVREUpLG89dGhpcy5wcm9qZWN0aW9uLnByb2plY3QodC5sbmcsaSk7cmV0dXJuIG5ldyBlLlBvaW50KG8ueCp0aGlzLndvcmxkU2l6ZSxvLnkqdGhpcy53b3JsZFNpemUpfXVucHJvamVjdChlKXtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLnVucHJvamVjdChlLngvdGhpcy53b3JsZFNpemUsZS55L3RoaXMud29ybGRTaXplKX1nZXQgcG9pbnQoKXtyZXR1cm4gdGhpcy5wcm9qZWN0KHRoaXMuY2VudGVyKX1nZXQgcG9pbnRNZXJjKCl7cmV0dXJuIHRoaXMucG9pbnQuX2Rpdih0aGlzLndvcmxkU2l6ZSl9Z2V0IHBpeGVsc1Blck1ldGVyUmF0aW8oKXtyZXR1cm4gdGhpcy5waXhlbHNQZXJNZXRlci9lLm1lcmNhdG9yWmZyb21BbHRpdHVkZSgxLHRoaXMuY2VudGVyLmxhdCkvdGhpcy53b3JsZFNpemV9c2V0TG9jYXRpb25BdFBvaW50KHQsaSl7bGV0IG8scjtjb25zdCBuPXRoaXMuY2VudGVyUG9pbnQ7aWYoXCJnbG9iZVwiPT09dGhpcy5wcm9qZWN0aW9uLm5hbWUpe2NvbnN0IGU9dGhpcy53b3JsZFNpemU7bz0oaS54LW4ueCkvZSxyPShpLnktbi55KS9lO31lbHNlIHtjb25zdCBlPXRoaXMucG9pbnRDb29yZGluYXRlKGkpLHQ9dGhpcy5wb2ludENvb3JkaW5hdGUobik7bz1lLngtdC54LHI9ZS55LXQueTt9Y29uc3Qgcz10aGlzLmxvY2F0aW9uQ29vcmRpbmF0ZSh0KTt0aGlzLnNldExvY2F0aW9uKG5ldyBlLk1lcmNhdG9yQ29vcmRpbmF0ZShzLngtbyxzLnktcikpO31zZXRMb2NhdGlvbihlKXt0aGlzLmNlbnRlcj10aGlzLmNvb3JkaW5hdGVMb2NhdGlvbihlKSx0aGlzLnByb2plY3Rpb24ud3JhcCYmKHRoaXMuY2VudGVyPXRoaXMuY2VudGVyLndyYXAoKSk7fWxvY2F0aW9uUG9pbnQoZSl7cmV0dXJuIHRoaXMucHJvamVjdGlvbi5sb2NhdGlvblBvaW50KHRoaXMsZSl9bG9jYXRpb25Qb2ludDNEKGUpe3JldHVybiB0aGlzLnByb2plY3Rpb24ubG9jYXRpb25Qb2ludCh0aGlzLGUsITApfXBvaW50TG9jYXRpb24oZSl7cmV0dXJuIHRoaXMuY29vcmRpbmF0ZUxvY2F0aW9uKHRoaXMucG9pbnRDb29yZGluYXRlKGUpKX1wb2ludExvY2F0aW9uM0QoZSl7cmV0dXJuIHRoaXMuY29vcmRpbmF0ZUxvY2F0aW9uKHRoaXMucG9pbnRDb29yZGluYXRlM0QoZSkpfWxvY2F0aW9uQ29vcmRpbmF0ZSh0LGkpe2NvbnN0IG89aT9lLm1lcmNhdG9yWmZyb21BbHRpdHVkZShpLHQubGF0KTp2b2lkIDAscj10aGlzLnByb2plY3Rpb24ucHJvamVjdCh0LmxuZyx0LmxhdCk7cmV0dXJuIG5ldyBlLk1lcmNhdG9yQ29vcmRpbmF0ZShyLngsci55LG8pfWNvb3JkaW5hdGVMb2NhdGlvbihlKXtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLnVucHJvamVjdChlLngsZS55KX1wb2ludFJheUludGVyc2VjdGlvbih0LGkpe2NvbnN0IG89bnVsbCE9aT9pOnRoaXMuX2NlbnRlckFsdGl0dWRlLHI9W3QueCx0LnksMCwxXSxuPVt0LngsdC55LDEsMV07ZS50cmFuc2Zvcm1NYXQ0JDEocixyLHRoaXMucGl4ZWxNYXRyaXhJbnZlcnNlKSxlLnRyYW5zZm9ybU1hdDQkMShuLG4sdGhpcy5waXhlbE1hdHJpeEludmVyc2UpO2NvbnN0IHM9blszXTtlLnNjYWxlJDEocixyLDEvclszXSksZS5zY2FsZSQxKG4sbiwxL3MpO2NvbnN0IGE9clsyXSxsPW5bMl07cmV0dXJuIHtwMDpyLHAxOm4sdDphPT09bD8wOihvLWEpLyhsLWEpfX1zY3JlZW5Qb2ludFRvTWVyY2F0b3JSYXkodCl7Y29uc3QgaT1bdC54LHQueSwwLDFdLG89W3QueCx0LnksMSwxXTtyZXR1cm4gZS50cmFuc2Zvcm1NYXQ0JDEoaSxpLHRoaXMucGl4ZWxNYXRyaXhJbnZlcnNlKSxlLnRyYW5zZm9ybU1hdDQkMShvLG8sdGhpcy5waXhlbE1hdHJpeEludmVyc2UpLGUuc2NhbGUkMShpLGksMS9pWzNdKSxlLnNjYWxlJDEobyxvLDEvb1szXSksaVsyXT1lLm1lcmNhdG9yWmZyb21BbHRpdHVkZShpWzJdLHRoaXMuX2NlbnRlci5sYXQpKnRoaXMud29ybGRTaXplLG9bMl09ZS5tZXJjYXRvclpmcm9tQWx0aXR1ZGUob1syXSx0aGlzLl9jZW50ZXIubGF0KSp0aGlzLndvcmxkU2l6ZSxlLnNjYWxlJDEoaSxpLDEvdGhpcy53b3JsZFNpemUpLGUuc2NhbGUkMShvLG8sMS90aGlzLndvcmxkU2l6ZSksbmV3IGUuUmF5KFtpWzBdLGlbMV0saVsyXV0sZS5ub3JtYWxpemUoW10sZS5zdWIoW10sbyxpKSkpfXJheUludGVyc2VjdGlvbkNvb3JkaW5hdGUodCl7Y29uc3R7cDA6aSxwMTpvLHQ6cn09dCxuPWUubWVyY2F0b3JaZnJvbUFsdGl0dWRlKGlbMl0sdGhpcy5fY2VudGVyLmxhdCkscz1lLm1lcmNhdG9yWmZyb21BbHRpdHVkZShvWzJdLHRoaXMuX2NlbnRlci5sYXQpO3JldHVybiBuZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUoZS5udW1iZXIoaVswXSxvWzBdLHIpL3RoaXMud29ybGRTaXplLGUubnVtYmVyKGlbMV0sb1sxXSxyKS90aGlzLndvcmxkU2l6ZSxlLm51bWJlcihuLHMscikpfXBvaW50Q29vcmRpbmF0ZShlLHQ9dGhpcy5fY2VudGVyQWx0aXR1ZGUpe3JldHVybiB0aGlzLnByb2plY3Rpb24ucG9pbnRDb29yZGluYXRlKHRoaXMsZS54LGUueSx0KX1wb2ludENvb3JkaW5hdGUzRCh0KXtpZighdGhpcy5lbGV2YXRpb24pcmV0dXJuIHRoaXMucG9pbnRDb29yZGluYXRlKHQpO2xldCBpPXRoaXMucHJvamVjdGlvbi5wb2ludENvb3JkaW5hdGUzRCh0aGlzLHQueCx0LnkpO2lmKGkpcmV0dXJuIG5ldyBlLk1lcmNhdG9yQ29vcmRpbmF0ZShpWzBdLGlbMV0saVsyXSk7bGV0IG89MCxyPXRoaXMuaG9yaXpvbkxpbmVGcm9tVG9wKCk7aWYodC55PnIpcmV0dXJuIHRoaXMucG9pbnRDb29yZGluYXRlKHQpO2NvbnN0IG49LjAyKnIscz10LmNsb25lKCk7Zm9yKGxldCB0PTA7dDwxMCYmci1vPm47dCsrKXtzLnk9ZS5udW1iZXIobyxyLC42Nik7Y29uc3QgdD10aGlzLnByb2plY3Rpb24ucG9pbnRDb29yZGluYXRlM0QodGhpcyxzLngscy55KTt0PyhyPXMueSxpPXQpOm89cy55O31yZXR1cm4gaT9uZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUoaVswXSxpWzFdLGlbMl0pOnRoaXMucG9pbnRDb29yZGluYXRlKHQpfWlzUG9pbnRBYm92ZUhvcml6b24oZSl7cmV0dXJuIHRoaXMucHJvamVjdGlvbi5pc1BvaW50QWJvdmVIb3Jpem9uKHRoaXMsZSl9aXNQb2ludE9uU3VyZmFjZSh0KXtpZih0Lnk8MHx8dC55PnRoaXMuaGVpZ2h0fHx0Lng8MHx8dC54PnRoaXMud2lkdGgpcmV0dXJuICExO2lmKHRoaXMuZWxldmF0aW9ufHx0aGlzLnpvb20+PWUuR0xPQkVfWk9PTV9USFJFU0hPTERfTUFYKXJldHVybiAhdGhpcy5pc1BvaW50QWJvdmVIb3Jpem9uKHQpO2NvbnN0IGk9dGhpcy5wb2ludENvb3JkaW5hdGUodCk7cmV0dXJuIGkueT49MCYmaS55PD0xfV9jb29yZGluYXRlUG9pbnQodCxpKXtjb25zdCBvPWkmJnRoaXMuZWxldmF0aW9uP3RoaXMuZWxldmF0aW9uLmdldEF0UG9pbnRPclplcm8odCx0aGlzLl9jZW50ZXJBbHRpdHVkZSk6dGhpcy5fY2VudGVyQWx0aXR1ZGUscj1bdC54KnRoaXMud29ybGRTaXplLHQueSp0aGlzLndvcmxkU2l6ZSxvK3QudG9BbHRpdHVkZSgpLDFdO3JldHVybiBlLnRyYW5zZm9ybU1hdDQkMShyLHIsdGhpcy5waXhlbE1hdHJpeCksclszXT4wP25ldyBlLlBvaW50KHJbMF0vclszXSxyWzFdL3JbM10pOm5ldyBlLlBvaW50KE51bWJlci5NQVhfVkFMVUUsTnVtYmVyLk1BWF9WQUxVRSl9X2dldEJvdW5kc05vblJlY3Rhbmd1bGFyKCl7Y29uc3R7dG9wOnQsbGVmdDppfT10aGlzLl9lZGdlSW5zZXRzLG89dGhpcy5oZWlnaHQtdGhpcy5fZWRnZUluc2V0cy5ib3R0b20scj10aGlzLndpZHRoLXRoaXMuX2VkZ2VJbnNldHMucmlnaHQsbj10aGlzLnBvaW50TG9jYXRpb24zRChuZXcgZS5Qb2ludChpLHQpKSxzPXRoaXMucG9pbnRMb2NhdGlvbjNEKG5ldyBlLlBvaW50KHIsdCkpLGE9dGhpcy5wb2ludExvY2F0aW9uM0QobmV3IGUuUG9pbnQocixvKSksbD10aGlzLnBvaW50TG9jYXRpb24zRChuZXcgZS5Qb2ludChpLG8pKTtsZXQgYz1NYXRoLm1pbihuLmxuZyxzLmxuZyxhLmxuZyxsLmxuZyksaD1NYXRoLm1heChuLmxuZyxzLmxuZyxhLmxuZyxsLmxuZyksdT1NYXRoLm1pbihuLmxhdCxzLmxhdCxhLmxhdCxsLmxhdCksXz1NYXRoLm1heChuLmxhdCxzLmxhdCxhLmxhdCxsLmxhdCk7Y29uc3QgZD1NYXRoLnBvdygyLC10aGlzLnpvb20pLzE2KjI3MCxwPVwiZ2xvYmVcIj09PXRoaXMucHJvamVjdGlvbi5uYW1lPzE6NCxtPSh0LGksbyxyLG4pPT57Y29uc3Qgcz0odCtvKS8yLGE9KGkrcikvMixsPW5ldyBlLlBvaW50KHMsYSkse2xuZzpmLGxhdDpnfT10aGlzLnBvaW50TG9jYXRpb24zRChsKSx2PU1hdGgubWF4KDAsYy1mLHUtZyxmLWgsZy1fKTtjPU1hdGgubWluKGMsZiksaD1NYXRoLm1heChoLGYpLHU9TWF0aC5taW4odSxnKSxfPU1hdGgubWF4KF8sZyksKG48cHx8dj5kKSYmKG0odCxpLHMsYSxuKzEpLG0ocyxhLG8scixuKzEpKTt9O2lmKG0oaSx0LHIsdCwxKSxtKHIsdCxyLG8sMSksbShyLG8saSxvLDEpLG0oaSxvLGksdCwxKSxcImdsb2JlXCI9PT10aGlzLnByb2plY3Rpb24ubmFtZSl7Y29uc3RbdCxpXT1lLnBvbGVzSW5WaWV3cG9ydCh0aGlzKTt0PyhfPTkwLGg9MTgwLGM9LTE4MCk6aSYmKHU9LTkwLGg9MTgwLGM9LTE4MCk7fXJldHVybiBuZXcgZS5MbmdMYXRCb3VuZHMobmV3IGUuTG5nTGF0KGMsdSksbmV3IGUuTG5nTGF0KGgsXykpfV9nZXRCb3VuZHNSZWN0YW5ndWxhcih0LGkpe2NvbnN0e3RvcDpvLGxlZnQ6cn09dGhpcy5fZWRnZUluc2V0cyxuPXRoaXMuaGVpZ2h0LXRoaXMuX2VkZ2VJbnNldHMuYm90dG9tLHM9dGhpcy53aWR0aC10aGlzLl9lZGdlSW5zZXRzLnJpZ2h0LGE9bmV3IGUuUG9pbnQocixvKSxsPW5ldyBlLlBvaW50KHMsbyksYz1uZXcgZS5Qb2ludChzLG4pLGg9bmV3IGUuUG9pbnQocixuKTtsZXQgdT10aGlzLnBvaW50Q29vcmRpbmF0ZShhLHQpLF89dGhpcy5wb2ludENvb3JkaW5hdGUobCx0KTtjb25zdCBkPXRoaXMucG9pbnRDb29yZGluYXRlKGMsaSkscD10aGlzLnBvaW50Q29vcmRpbmF0ZShoLGkpLG09KGUsdCk9Pih0LnktZS55KS8odC54LWUueCk7cmV0dXJuIHUueT4xJiZfLnk+PTA/dT1uZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUoKDEtcC55KS9tKHAsdSkrcC54LDEpOnUueTwwJiZfLnk8PTEmJih1PW5ldyBlLk1lcmNhdG9yQ29vcmRpbmF0ZSgtcC55L20ocCx1KStwLngsMCkpLF8ueT4xJiZ1Lnk+PTA/Xz1uZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUoKDEtZC55KS9tKGQsXykrZC54LDEpOl8ueTwwJiZ1Lnk8PTEmJihfPW5ldyBlLk1lcmNhdG9yQ29vcmRpbmF0ZSgtZC55L20oZCxfKStkLngsMCkpLChuZXcgZS5MbmdMYXRCb3VuZHMpLmV4dGVuZCh0aGlzLmNvb3JkaW5hdGVMb2NhdGlvbih1KSkuZXh0ZW5kKHRoaXMuY29vcmRpbmF0ZUxvY2F0aW9uKF8pKS5leHRlbmQodGhpcy5jb29yZGluYXRlTG9jYXRpb24ocCkpLmV4dGVuZCh0aGlzLmNvb3JkaW5hdGVMb2NhdGlvbihkKSl9X2dldEJvdW5kc1JlY3Rhbmd1bGFyVGVycmFpbigpe2NvbnN0IGU9dGhpcy5lbGV2YXRpb247aWYoIWUudmlzaWJsZURlbVRpbGVzLmxlbmd0aHx8ZS5pc1VzaW5nTW9ja1NvdXJjZSgpKXJldHVybiB0aGlzLl9nZXRCb3VuZHNSZWN0YW5ndWxhcigwLDApO2NvbnN0IHQ9ZS52aXNpYmxlRGVtVGlsZXMucmVkdWNlKCgoZSx0KT0+e2lmKHQuZGVtKXtjb25zdCBpPXQuZGVtLnRyZWU7ZS5taW49TWF0aC5taW4oZS5taW4saS5taW5pbXVtc1swXSksZS5tYXg9TWF0aC5tYXgoZS5tYXgsaS5tYXhpbXVtc1swXSk7fXJldHVybiBlfSkse21pbjpOdW1iZXIuTUFYX1ZBTFVFLG1heDowfSk7cmV0dXJuIHRoaXMuX2dldEJvdW5kc1JlY3Rhbmd1bGFyKHQubWluKmUuZXhhZ2dlcmF0aW9uKCksdC5tYXgqZS5leGFnZ2VyYXRpb24oKSl9Z2V0Qm91bmRzKCl7cmV0dXJuIFwibWVyY2F0b3JcIj09PXRoaXMucHJvamVjdGlvbi5uYW1lfHxcImVxdWlyZWN0YW5ndWxhclwiPT09dGhpcy5wcm9qZWN0aW9uLm5hbWU/dGhpcy5fdGVycmFpbkVuYWJsZWQoKT90aGlzLl9nZXRCb3VuZHNSZWN0YW5ndWxhclRlcnJhaW4oKTp0aGlzLl9nZXRCb3VuZHNSZWN0YW5ndWxhcigwLDApOnRoaXMuX2dldEJvdW5kc05vblJlY3Rhbmd1bGFyKCl9aG9yaXpvbkxpbmVGcm9tVG9wKGU9ITApe2NvbnN0IHQ9dGhpcy5oZWlnaHQvMi9NYXRoLnRhbih0aGlzLl9mb3YvMikvTWF0aC50YW4oTWF0aC5tYXgodGhpcy5fcGl0Y2gsLjEpKSt0aGlzLmNlbnRlck9mZnNldC55LGk9dGhpcy5oZWlnaHQvMi10KigxLXRoaXMuX2hvcml6b25TaGlmdCk7cmV0dXJuIGU/TWF0aC5tYXgoMCxpKTppfWdldE1heEJvdW5kcygpe3JldHVybiB0aGlzLm1heEJvdW5kc31zZXRNYXhCb3VuZHModCl7dGhpcy5tYXhCb3VuZHM9dCx0aGlzLm1pbkxhdD0tZS5NQVhfTUVSQ0FUT1JfTEFUSVRVREUsdGhpcy5tYXhMYXQ9ZS5NQVhfTUVSQ0FUT1JfTEFUSVRVREUsdGhpcy5taW5Mbmc9LTE4MCx0aGlzLm1heExuZz0xODAsdCYmKHRoaXMubWluTGF0PXQuZ2V0U291dGgoKSx0aGlzLm1heExhdD10LmdldE5vcnRoKCksdGhpcy5taW5Mbmc9dC5nZXRXZXN0KCksdGhpcy5tYXhMbmc9dC5nZXRFYXN0KCksdGhpcy5tYXhMbmc8dGhpcy5taW5MbmcmJih0aGlzLm1heExuZys9MzYwKSksdGhpcy53b3JsZE1pblg9ZS5tZXJjYXRvclhmcm9tTG5nKHRoaXMubWluTG5nKSp0aGlzLnRpbGVTaXplLHRoaXMud29ybGRNYXhYPWUubWVyY2F0b3JYZnJvbUxuZyh0aGlzLm1heExuZykqdGhpcy50aWxlU2l6ZSx0aGlzLndvcmxkTWluWT1lLm1lcmNhdG9yWWZyb21MYXQodGhpcy5tYXhMYXQpKnRoaXMudGlsZVNpemUsdGhpcy53b3JsZE1heFk9ZS5tZXJjYXRvcllmcm9tTGF0KHRoaXMubWluTGF0KSp0aGlzLnRpbGVTaXplLHRoaXMuX2NvbnN0cmFpbigpO31jYWxjdWxhdGVQb3NNYXRyaXgoZSx0KXtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLmNyZWF0ZVRpbGVNYXRyaXgodGhpcyx0LGUpfWNhbGN1bGF0ZURpc3RhbmNlVGlsZURhdGEodCl7Y29uc3QgaT10LmtleSxvPXRoaXMuX2Rpc3RhbmNlVGlsZURhdGFDYWNoZTtpZihvW2ldKXJldHVybiBvW2ldO2NvbnN0IHI9dC5jYW5vbmljYWwsbj0xL3RoaXMuaGVpZ2h0LHM9dGhpcy5jYW1lcmFXb3JsZFNpemUsYT1zL3RoaXMuem9vbVNjYWxlKHIueiksbD0oci54K01hdGgucG93KDIsci56KSp0LndyYXApKmEsYz1yLnkqYSxoPXRoaXMucG9pbnQ7aC54Kj1zL3RoaXMud29ybGRTaXplLGgueSo9cy90aGlzLndvcmxkU2l6ZTtjb25zdCB1PXRoaXMuYW5nbGUsXz1NYXRoLnNpbigtdSksZD0tTWF0aC5jb3MoLXUpO3JldHVybiBvW2ldPXtiZWFyaW5nOltfLGRdLGNlbnRlcjpbKGgueC1sKSpuLChoLnktYykqbl0sc2NhbGU6YS9lLkVYVEVOVCpufSxvW2ldfWNhbGN1bGF0ZUZvZ1RpbGVNYXRyaXgodCl7Y29uc3QgaT10LmtleSxvPXRoaXMuX2ZvZ1RpbGVNYXRyaXhDYWNoZTtpZihvW2ldKXJldHVybiBvW2ldO2NvbnN0IHI9dGhpcy5wcm9qZWN0aW9uLmNyZWF0ZVRpbGVNYXRyaXgodGhpcyx0aGlzLmNhbWVyYVdvcmxkU2l6ZUZvckZvZyx0KTtyZXR1cm4gZS5tdWx0aXBseShyLHRoaXMud29ybGRUb0ZvZ01hdHJpeCxyKSxvW2ldPW5ldyBGbG9hdDMyQXJyYXkociksb1tpXX1jYWxjdWxhdGVQcm9qTWF0cml4KHQsaT0hMSl7Y29uc3Qgbz10LmtleSxyPWk/dGhpcy5fYWxpZ25lZFByb2pNYXRyaXhDYWNoZTp0aGlzLl9wcm9qTWF0cml4Q2FjaGU7aWYocltvXSlyZXR1cm4gcltvXTtjb25zdCBuPXRoaXMuY2FsY3VsYXRlUG9zTWF0cml4KHQsdGhpcy53b3JsZFNpemUpO3JldHVybiBlLm11bHRpcGx5KG4sdGhpcy5wcm9qZWN0aW9uLmlzUmVwcm9qZWN0ZWRJblRpbGVTcGFjZT90aGlzLm1lcmNhdG9yTWF0cml4Omk/dGhpcy5hbGlnbmVkUHJvak1hdHJpeDp0aGlzLnByb2pNYXRyaXgsbikscltvXT1uZXcgRmxvYXQzMkFycmF5KG4pLHJbb119Y2FsY3VsYXRlUGl4ZWxzVG9UaWxlVW5pdHNNYXRyaXgodCl7Y29uc3QgaT10LnRpbGVJRC5rZXksbz10aGlzLl9waXhlbHNUb1RpbGVVbml0c0NhY2hlO2lmKG9baV0pcmV0dXJuIG9baV07Y29uc3Qgcj1mdW5jdGlvbih0LGkpe2NvbnN0e3NjYWxlOm99PXQudGlsZVRyYW5zZm9ybSxyPW8qZS5FWFRFTlQvKHQudGlsZVNpemUqTWF0aC5wb3coMixpLnpvb20tdC50aWxlSUQub3ZlcnNjYWxlZFordC50aWxlSUQuY2Fub25pY2FsLnopKTtyZXR1cm4gbj1uZXcgRmxvYXQzMkFycmF5KDQpLGw9KHM9aS5pbnZlcnNlQWRqdXN0bWVudE1hdHJpeClbMV0sYz1zWzJdLGg9c1szXSxfPShhPVtyLHJdKVsxXSxuWzBdPXNbMF0qKHU9YVswXSksblsxXT1sKnUsblsyXT1jKl8sblszXT1oKl8sbjt2YXIgbixzLGEsbCxjLGgsdSxfO30odCx0aGlzKTtyZXR1cm4gb1tpXT1yLG9baV19Y3VzdG9tTGF5ZXJNYXRyaXgoKXtyZXR1cm4gdGhpcy5tZXJjYXRvck1hdHJpeC5zbGljZSgpfWdsb2JlVG9NZXJjYXRvck1hdHJpeCgpe2lmKFwiZ2xvYmVcIj09PXRoaXMucHJvamVjdGlvbi5uYW1lKXtjb25zdCB0PTEvdGhpcy53b3JsZFNpemUsaT1lLmZyb21TY2FsaW5nKFtdLFt0LHQsdF0pO3JldHVybiBlLm11bHRpcGx5KGksaSx0aGlzLmdsb2JlTWF0cml4KSxpfX1yZWNlbnRlck9uVGVycmFpbigpe2lmKCF0aGlzLl9lbGV2YXRpb258fFwiZ2xvYmVcIj09PXRoaXMucHJvamVjdGlvbi5uYW1lKXJldHVybjtjb25zdCB0PXRoaXMuX2VsZXZhdGlvbjt0aGlzLl91cGRhdGVDYW1lcmFTdGF0ZSgpO2NvbnN0IGk9ZS5tZXJjYXRvclpmcm9tQWx0aXR1ZGUoMSx0aGlzLl9jZW50ZXIubGF0KSp0aGlzLndvcmxkU2l6ZSxvPXRoaXMuX2NvbXB1dGVDYW1lcmFQb3NpdGlvbihpKSxyPXRoaXMuX2NhbWVyYS5mb3J3YXJkKCksbj1lLm1lcmNhdG9yWmZyb21BbHRpdHVkZSgxLHRoaXMuX2NlbnRlci5sYXQpO29bMl0vPW4sclsyXS89bixlLm5vcm1hbGl6ZShyLHIpO2NvbnN0IHM9dC5yYXljYXN0KG8scix0LmV4YWdnZXJhdGlvbigpKTtpZihzKXtjb25zdCB0PWUuc2NhbGVBbmRBZGQoW10sbyxyLHMpLGk9bmV3IGUuTWVyY2F0b3JDb29yZGluYXRlKHRbMF0sdFsxXSxlLm1lcmNhdG9yWmZyb21BbHRpdHVkZSh0WzJdLGUubGF0RnJvbU1lcmNhdG9yWSh0WzFdKSkpLGE9KGkueitlLmxlbmd0aChbaS54LW9bMF0saS55LW9bMV0saS56LW9bMl0qbl0pKSp0aGlzLl9waXhlbHNQZXJNZXJjYXRvclBpeGVsO3RoaXMuX3NlYUxldmVsWm9vbT10aGlzLl96b29tRnJvbU1lcmNhdG9yWihhKSx0aGlzLl9jZW50ZXJBbHRpdHVkZT1pLnRvQWx0aXR1ZGUoKSx0aGlzLl9jZW50ZXI9dGhpcy5jb29yZGluYXRlTG9jYXRpb24oaSksdGhpcy5fdXBkYXRlWm9vbUZyb21FbGV2YXRpb24oKSx0aGlzLl9jb25zdHJhaW4oKSx0aGlzLl9jYWxjTWF0cmljZXMoKTt9fV9jb25zdHJhaW5DYW1lcmEodD0hMSl7aWYoIXRoaXMuX2VsZXZhdGlvbilyZXR1cm47Y29uc3QgaT10aGlzLl9lbGV2YXRpb24sbz1lLm1lcmNhdG9yWmZyb21BbHRpdHVkZSgxLHRoaXMuX2NlbnRlci5sYXQpKnRoaXMud29ybGRTaXplLHI9dGhpcy5fY29tcHV0ZUNhbWVyYVBvc2l0aW9uKG8pLG49aS5nZXRBdFBvaW50T3JaZXJvKG5ldyBlLk1lcmNhdG9yQ29vcmRpbmF0ZSguLi5yKSkscz10aGlzLnBpeGVsc1Blck1ldGVyL3RoaXMud29ybGRTaXplKm4sYT10aGlzLl9taW5pbXVtSGVpZ2h0T3ZlclRlcnJhaW4oKSxsPXJbMl0tcztpZihsPD1hKWlmKGw8MHx8dCl7Y29uc3QgdD10aGlzLmxvY2F0aW9uQ29vcmRpbmF0ZSh0aGlzLl9jZW50ZXIsdGhpcy5fY2VudGVyQWx0aXR1ZGUpLGk9W3JbMF0sclsxXSx0LnotclsyXV0sbz1lLmxlbmd0aChpKTtpWzJdLT0oYS1sKS90aGlzLl9waXhlbHNQZXJNZXJjYXRvclBpeGVsO2NvbnN0IG49ZS5sZW5ndGgoaSk7aWYoMD09PW4pcmV0dXJuO2Uuc2NhbGUkMihpLGksby9uKnRoaXMuX3BpeGVsc1Blck1lcmNhdG9yUGl4ZWwpLHRoaXMuX2NhbWVyYS5wb3NpdGlvbj1bclswXSxyWzFdLHQueip0aGlzLl9waXhlbHNQZXJNZXJjYXRvclBpeGVsLWlbMl1dLHRoaXMuX3VwZGF0ZVN0YXRlRnJvbUNhbWVyYSgpO31lbHNlIHRoaXMuX2lzQ2FtZXJhQ29uc3RyYWluZWQ9ITA7fV9jb25zdHJhaW4oKXtpZighdGhpcy5jZW50ZXJ8fCF0aGlzLndpZHRofHwhdGhpcy5oZWlnaHR8fHRoaXMuX2NvbnN0cmFpbmluZylyZXR1cm47dGhpcy5fY29uc3RyYWluaW5nPSEwO2NvbnN0IHQ9XCJnbG9iZVwiPT09dGhpcy5wcm9qZWN0aW9uLm5hbWV8fHRoaXMubWVyY2F0b3JGcm9tVHJhbnNpdGlvbjtpZih0aGlzLnByb2plY3Rpb24uaXNSZXByb2plY3RlZEluVGlsZVNwYWNlfHx0KXtjb25zdCBpPXRoaXMuY2VudGVyO3JldHVybiBpLmxhdD1lLmNsYW1wKGkubGF0LHRoaXMubWluTGF0LHRoaXMubWF4TGF0KSwodGhpcy5tYXhCb3VuZHN8fCF0aGlzLnJlbmRlcldvcmxkQ29waWVzJiYhdCkmJihpLmxuZz1lLmNsYW1wKGkubG5nLHRoaXMubWluTG5nLHRoaXMubWF4TG5nKSksdGhpcy5jZW50ZXI9aSx2b2lkKHRoaXMuX2NvbnN0cmFpbmluZz0hMSl9Y29uc3QgaT10aGlzLl91bm1vZGlmaWVkLHt4Om8seTpyfT10aGlzLnBvaW50O2xldCBuPTAscz1vLGE9cjtjb25zdCBsPXRoaXMud2lkdGgvMixjPXRoaXMuaGVpZ2h0LzIsaD10aGlzLndvcmxkTWluWSp0aGlzLnNjYWxlLHU9dGhpcy53b3JsZE1heFkqdGhpcy5zY2FsZTtpZihyLWM8aCYmKGE9aCtjKSxyK2M+dSYmKGE9dS1jKSx1LWg8dGhpcy5oZWlnaHQmJihuPU1hdGgubWF4KG4sdGhpcy5oZWlnaHQvKHUtaCkpLGE9KHUraCkvMiksdGhpcy5tYXhCb3VuZHN8fCF0aGlzLl9yZW5kZXJXb3JsZENvcGllc3x8IXRoaXMucHJvamVjdGlvbi53cmFwKXtjb25zdCBlPXRoaXMud29ybGRNaW5YKnRoaXMuc2NhbGUsdD10aGlzLndvcmxkTWF4WCp0aGlzLnNjYWxlLGk9dGhpcy53b3JsZFNpemUvMi0oZSt0KS8yO3M9KG8raSt0aGlzLndvcmxkU2l6ZSkldGhpcy53b3JsZFNpemUtaSxzLWw8ZSYmKHM9ZStsKSxzK2w+dCYmKHM9dC1sKSx0LWU8dGhpcy53aWR0aCYmKG49TWF0aC5tYXgobix0aGlzLndpZHRoLyh0LWUpKSxzPSh0K2UpLzIpO31zPT09byYmYT09PXJ8fCh0aGlzLmNlbnRlcj10aGlzLnVucHJvamVjdChuZXcgZS5Qb2ludChzLGEpKSksbiYmKHRoaXMuem9vbSs9dGhpcy5zY2FsZVpvb20obikpLHRoaXMuX2NvbnN0cmFpbkNhbWVyYSgpLHRoaXMuX3VubW9kaWZpZWQ9aSx0aGlzLl9jb25zdHJhaW5pbmc9ITE7fV9taW5ab29tRm9yQm91bmRzKCl7bGV0IGU9TWF0aC5tYXgoMCx0aGlzLnNjYWxlWm9vbSh0aGlzLmhlaWdodC8odGhpcy53b3JsZE1heFktdGhpcy53b3JsZE1pblkpKSk7cmV0dXJuIHRoaXMubWF4Qm91bmRzJiYoZT1NYXRoLm1heChlLHRoaXMuc2NhbGVab29tKHRoaXMud2lkdGgvKHRoaXMud29ybGRNYXhYLXRoaXMud29ybGRNaW5YKSkpKSxlfV9tYXhDYW1lcmFCb3VuZHNEaXN0YW5jZSgpe3JldHVybiB0aGlzLl9tZXJjYXRvclpmcm9tWm9vbSh0aGlzLl9taW5ab29tRm9yQm91bmRzKCkpfV9jYWxjTWF0cmljZXMoKXtpZighdGhpcy5oZWlnaHQpcmV0dXJuO2NvbnN0IHQ9dGhpcy5jZW50ZXJPZmZzZXQsaT10aGlzLnBpeGVsc1Blck1ldGVyO1wiZ2xvYmVcIj09PXRoaXMucHJvamVjdGlvbi5uYW1lJiYodGhpcy5fbWVyY2F0b3JTY2FsZVJhdGlvPWUubWVyY2F0b3JaZnJvbUFsdGl0dWRlKDEsdGhpcy5jZW50ZXIubGF0KS9lLm1lcmNhdG9yWmZyb21BbHRpdHVkZSgxLGUuR0xPQkVfU0NBTEVfTUFUQ0hfTEFUSVRVREUpKTtjb25zdCBvPVdvKHRoaXMucHJvamVjdGlvbix0aGlzLnpvb20sdGhpcy53aWR0aCx0aGlzLmhlaWdodCwxMDI0KTt0aGlzLl9waXhlbHNQZXJNZXJjYXRvclBpeGVsPXRoaXMucHJvamVjdGlvbi5waXhlbFNwYWNlQ29udmVyc2lvbih0aGlzLmNlbnRlci5sYXQsdGhpcy53b3JsZFNpemUsbyksdGhpcy5jYW1lcmFUb0NlbnRlckRpc3RhbmNlPS41L01hdGgudGFuKC41KnRoaXMuX2ZvdikqdGhpcy5oZWlnaHQqdGhpcy5fcGl4ZWxzUGVyTWVyY2F0b3JQaXhlbCx0aGlzLl91cGRhdGVDYW1lcmFTdGF0ZSgpLHRoaXMuX2Zhclo9dGhpcy5wcm9qZWN0aW9uLmZhcnRoZXN0UGl4ZWxEaXN0YW5jZSh0aGlzKSx0aGlzLl9uZWFyWj10aGlzLmhlaWdodC81MDtjb25zdCByPVwibWV0ZXJzXCI9PT10aGlzLnByb2plY3Rpb24uekF4aXNVbml0P2k6MSxuPXRoaXMuX2NhbWVyYS5nZXRXb3JsZFRvQ2FtZXJhKHRoaXMud29ybGRTaXplLHIpLHM9dGhpcy5fY2FtZXJhLmdldENhbWVyYVRvQ2xpcFBlcnNwZWN0aXZlKHRoaXMuX2Zvdix0aGlzLndpZHRoL3RoaXMuaGVpZ2h0LHRoaXMuX25lYXJaLHRoaXMuX2ZhclopO3NbOF09MiotdC54L3RoaXMud2lkdGgsc1s5XT0yKnQueS90aGlzLmhlaWdodDtsZXQgYT1lLm11bChbXSxzLG4pO2lmKHRoaXMucHJvamVjdGlvbi5pc1JlcHJvamVjdGVkSW5UaWxlU3BhY2Upe2NvbnN0IHQ9dGhpcy5sb2NhdGlvbkNvb3JkaW5hdGUodGhpcy5jZW50ZXIpLGk9ZS5pZGVudGl0eShbXSk7ZS50cmFuc2xhdGUoaSxpLFt0LngqdGhpcy53b3JsZFNpemUsdC55KnRoaXMud29ybGRTaXplLDBdKSxlLm11bHRpcGx5KGksaSxabyh0aGlzKSksZS50cmFuc2xhdGUoaSxpLFstdC54KnRoaXMud29ybGRTaXplLC10LnkqdGhpcy53b3JsZFNpemUsMF0pLGUubXVsdGlwbHkoYSxhLGkpLHRoaXMuaW52ZXJzZUFkanVzdG1lbnRNYXRyaXg9ZnVuY3Rpb24oZSl7Y29uc3QgdD1abyhlLCEwKTtyZXR1cm4gdihbXSxbdFswXSx0WzFdLHRbNF0sdFs1XV0pfSh0aGlzKTt9ZWxzZSB0aGlzLmludmVyc2VBZGp1c3RtZW50TWF0cml4PVsxLDAsMCwxXTt0aGlzLm1lcmNhdG9yTWF0cml4PWUuc2NhbGUoW10sYSxbdGhpcy53b3JsZFNpemUsdGhpcy53b3JsZFNpemUsdGhpcy53b3JsZFNpemUvciwxXSksdGhpcy5wcm9qTWF0cml4PWEsdGhpcy5pbnZQcm9qTWF0cml4PWUuaW52ZXJ0KG5ldyBGbG9hdDY0QXJyYXkoMTYpLHRoaXMucHJvak1hdHJpeCk7Y29uc3QgbD1lLmludmVydChbXSxzKTt0aGlzLmZydXN0dW1Db3JuZXJzPWUuRnJ1c3R1bUNvcm5lcnMuZnJvbUludlByb2plY3Rpb25NYXRyaXgobCx0aGlzLmhvcml6b25MaW5lRnJvbVRvcCgpLHRoaXMuaGVpZ2h0KTtjb25zdCBjPW5ldyBGbG9hdDMyQXJyYXkoMTYpO2UuaWRlbnRpdHkoYyksZS5zY2FsZShjLGMsWzEsLTEsMV0pLGUucm90YXRlWChjLGMsdGhpcy5fcGl0Y2gpLGUucm90YXRlWihjLGMsdGhpcy5hbmdsZSk7Y29uc3QgaD1lLnBlcnNwZWN0aXZlKG5ldyBGbG9hdDMyQXJyYXkoMTYpLHRoaXMuX2Zvdix0aGlzLndpZHRoL3RoaXMuaGVpZ2h0LHRoaXMuX25lYXJaLHRoaXMuX2ZhclopLHU9KE1hdGguUEkvMi10aGlzLl9waXRjaCkqKHRoaXMuaGVpZ2h0L3RoaXMuX2ZvdikqdGhpcy5faG9yaXpvblNoaWZ0O2hbOF09MiotdC54L3RoaXMud2lkdGgsaFs5XT0yKih0LnkrdSkvdGhpcy5oZWlnaHQsdGhpcy5za3lib3hNYXRyaXg9ZS5tdWx0aXBseShjLGgsYyk7Y29uc3QgXz10aGlzLnBvaW50LGQ9Xy54LHA9Xy55LG09dGhpcy53aWR0aCUyLzIsZj10aGlzLmhlaWdodCUyLzIsZz1NYXRoLmNvcyh0aGlzLmFuZ2xlKSx4PU1hdGguc2luKHRoaXMuYW5nbGUpLHk9ZC1NYXRoLnJvdW5kKGQpK2cqbSt4KmYsYj1wLU1hdGgucm91bmQocCkrZypmK3gqbSx3PW5ldyBGbG9hdDY0QXJyYXkoYSk7aWYoZS50cmFuc2xhdGUodyx3LFt5Pi41P3ktMTp5LGI+LjU/Yi0xOmIsMF0pLHRoaXMuYWxpZ25lZFByb2pNYXRyaXg9dyxhPWUuY3JlYXRlKCksZS5zY2FsZShhLGEsW3RoaXMud2lkdGgvMiwtdGhpcy5oZWlnaHQvMiwxXSksZS50cmFuc2xhdGUoYSxhLFsxLC0xLDBdKSx0aGlzLmxhYmVsUGxhbmVNYXRyaXg9YSxhPWUuY3JlYXRlKCksZS5zY2FsZShhLGEsWzEsLTEsMV0pLGUudHJhbnNsYXRlKGEsYSxbLTEsLTEsMF0pLGUuc2NhbGUoYSxhLFsyL3RoaXMud2lkdGgsMi90aGlzLmhlaWdodCwxXSksdGhpcy5nbENvb3JkTWF0cml4PWEsdGhpcy5waXhlbE1hdHJpeD1lLm11bHRpcGx5KG5ldyBGbG9hdDY0QXJyYXkoMTYpLHRoaXMubGFiZWxQbGFuZU1hdHJpeCx0aGlzLnByb2pNYXRyaXgpLHRoaXMuX2NhbGNGb2dNYXRyaWNlcygpLHRoaXMuX2Rpc3RhbmNlVGlsZURhdGFDYWNoZT17fSxhPWUuaW52ZXJ0KG5ldyBGbG9hdDY0QXJyYXkoMTYpLHRoaXMucGl4ZWxNYXRyaXgpLCFhKXRocm93IG5ldyBFcnJvcihcImZhaWxlZCB0byBpbnZlcnQgbWF0cml4XCIpO2lmKHRoaXMucGl4ZWxNYXRyaXhJbnZlcnNlPWEsXCJnbG9iZVwiPT09dGhpcy5wcm9qZWN0aW9uLm5hbWV8fHRoaXMubWVyY2F0b3JGcm9tVHJhbnNpdGlvbil7dGhpcy5nbG9iZU1hdHJpeD1lLmNhbGN1bGF0ZUdsb2JlTWF0cml4KHRoaXMpO2NvbnN0IHQ9W3RoaXMuZ2xvYmVNYXRyaXhbMTJdLHRoaXMuZ2xvYmVNYXRyaXhbMTNdLHRoaXMuZ2xvYmVNYXRyaXhbMTRdXTt0aGlzLmdsb2JlQ2VudGVySW5WaWV3U3BhY2U9ZS50cmFuc2Zvcm1NYXQ0KHQsdCxuKSx0aGlzLmdsb2JlUmFkaXVzPXRoaXMud29ybGRTaXplLzIvTWF0aC5QSS0xO31lbHNlIHRoaXMuZ2xvYmVNYXRyaXg9YTt0aGlzLl9wcm9qTWF0cml4Q2FjaGU9e30sdGhpcy5fYWxpZ25lZFByb2pNYXRyaXhDYWNoZT17fSx0aGlzLl9waXhlbHNUb1RpbGVVbml0c0NhY2hlPXt9O31fY2FsY0ZvZ01hdHJpY2VzKCl7dGhpcy5fZm9nVGlsZU1hdHJpeENhY2hlPXt9O2NvbnN0IHQ9dGhpcy5jYW1lcmFXb3JsZFNpemVGb3JGb2csaT10aGlzLmNhbWVyYVBpeGVsc1Blck1ldGVyLG89dGhpcy5fY2FtZXJhLnBvc2l0aW9uLHI9MS90aGlzLmhlaWdodC90aGlzLl9waXhlbHNQZXJNZXJjYXRvclBpeGVsLG49W3QsdCxpXTtlLnNjYWxlJDIobixuLHIpLGUuc2NhbGUkMihvLG8sLTEpLGUubXVsdGlwbHkkMihvLG8sbik7Y29uc3Qgcz1lLmNyZWF0ZSgpO2UudHJhbnNsYXRlKHMscyxvKSxlLnNjYWxlKHMscyxuKSx0aGlzLm1lcmNhdG9yRm9nTWF0cml4PXMsdGhpcy53b3JsZFRvRm9nTWF0cml4PXRoaXMuX2NhbWVyYS5nZXRXb3JsZFRvQ2FtZXJhUG9zaXRpb24odCxpLHIpO31fY29tcHV0ZUNhbWVyYVBvc2l0aW9uKGUpe2NvbnN0IHQ9KGU9ZXx8dGhpcy5waXhlbHNQZXJNZXRlcikvdGhpcy5waXhlbHNQZXJNZXRlcixpPXRoaXMuX2NhbWVyYS5mb3J3YXJkKCksbz10aGlzLnBvaW50LHI9dGhpcy5fbWVyY2F0b3JaZnJvbVpvb20odGhpcy5fc2VhTGV2ZWxab29tP3RoaXMuX3NlYUxldmVsWm9vbTp0aGlzLl96b29tKSp0LWUvdGhpcy53b3JsZFNpemUqdGhpcy5fY2VudGVyQWx0aXR1ZGU7cmV0dXJuIFtvLngvdGhpcy53b3JsZFNpemUtaVswXSpyLG8ueS90aGlzLndvcmxkU2l6ZS1pWzFdKnIsZS90aGlzLndvcmxkU2l6ZSp0aGlzLl9jZW50ZXJBbHRpdHVkZS1pWzJdKnJdfV91cGRhdGVDYW1lcmFTdGF0ZSgpe3RoaXMuaGVpZ2h0JiYodGhpcy5fY2FtZXJhLnNldFBpdGNoQmVhcmluZyh0aGlzLl9waXRjaCx0aGlzLmFuZ2xlKSx0aGlzLl9jYW1lcmEucG9zaXRpb249dGhpcy5fY29tcHV0ZUNhbWVyYVBvc2l0aW9uKCkpO31fdHJhbnNsYXRlQ2FtZXJhQ29uc3RyYWluZWQodCl7Y29uc3QgaT10aGlzLl9tYXhDYW1lcmFCb3VuZHNEaXN0YW5jZSgpKk1hdGguY29zKHRoaXMuX3BpdGNoKSxvPXRoaXMuX2NhbWVyYS5wb3NpdGlvblsyXSxyPXRbMl07bGV0IG49MTt0aGlzLnByb2plY3Rpb24ud3JhcCYmKHRoaXMuY2VudGVyPXRoaXMuY2VudGVyLndyYXAoKSkscj4wJiYobj1NYXRoLm1pbigoaS1vKS9yLDEpKSx0aGlzLl9jYW1lcmEucG9zaXRpb249ZS5zY2FsZUFuZEFkZChbXSx0aGlzLl9jYW1lcmEucG9zaXRpb24sdCxuKSx0aGlzLl91cGRhdGVTdGF0ZUZyb21DYW1lcmEoKTt9X3VwZGF0ZVN0YXRlRnJvbUNhbWVyYSgpe2NvbnN0IHQ9dGhpcy5fY2FtZXJhLnBvc2l0aW9uLGk9dGhpcy5fY2FtZXJhLmZvcndhcmQoKSx7cGl0Y2g6byxiZWFyaW5nOnJ9PXRoaXMuX2NhbWVyYS5nZXRQaXRjaEJlYXJpbmcoKSxuPWUubWVyY2F0b3JaZnJvbUFsdGl0dWRlKHRoaXMuX2NlbnRlckFsdGl0dWRlLHRoaXMuY2VudGVyLmxhdCkqdGhpcy5fcGl4ZWxzUGVyTWVyY2F0b3JQaXhlbCxzPXRoaXMuX21lcmNhdG9yWmZyb21ab29tKHRoaXMuX21heFpvb20pKk1hdGguY29zKGUuZGVnVG9SYWQodGhpcy5fbWF4UGl0Y2gpKSxhPU1hdGgubWF4KCh0WzJdLW4pL01hdGguY29zKG8pLHMpLGw9dGhpcy5fem9vbUZyb21NZXJjYXRvclooYSk7ZS5zY2FsZUFuZEFkZCh0LHQsaSxhKSx0aGlzLl9waXRjaD1lLmNsYW1wKG8sZS5kZWdUb1JhZCh0aGlzLm1pblBpdGNoKSxlLmRlZ1RvUmFkKHRoaXMubWF4UGl0Y2gpKSx0aGlzLmFuZ2xlPWUud3JhcChyLC1NYXRoLlBJLE1hdGguUEkpLHRoaXMuX3NldFpvb20oZS5jbGFtcChsLHRoaXMuX21pblpvb20sdGhpcy5fbWF4Wm9vbSkpLHRoaXMuX3VwZGF0ZVNlYUxldmVsWm9vbSgpLHRoaXMuX2NlbnRlcj10aGlzLmNvb3JkaW5hdGVMb2NhdGlvbihuZXcgZS5NZXJjYXRvckNvb3JkaW5hdGUodFswXSx0WzFdLHRbMl0pKSx0aGlzLl91bm1vZGlmaWVkPSExLHRoaXMuX2NvbnN0cmFpbigpLHRoaXMuX2NhbGNNYXRyaWNlcygpO31fd29ybGRTaXplRnJvbVpvb20oZSl7cmV0dXJuIE1hdGgucG93KDIsZSkqdGhpcy50aWxlU2l6ZX1fbWVyY2F0b3JaZnJvbVpvb20oZSl7cmV0dXJuIHRoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZS90aGlzLl93b3JsZFNpemVGcm9tWm9vbShlKX1fbWluaW11bUhlaWdodE92ZXJUZXJyYWluKCl7Y29uc3QgZT1NYXRoLm1pbigobnVsbCE9dGhpcy5fc2VhTGV2ZWxab29tP3RoaXMuX3NlYUxldmVsWm9vbTp0aGlzLl96b29tKSs0LHRoaXMuX21heFpvb20pO3JldHVybiB0aGlzLl9tZXJjYXRvclpmcm9tWm9vbShlKX1fem9vbUZyb21NZXJjYXRvclooZSl7cmV0dXJuIHRoaXMuc2NhbGVab29tKHRoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZS8oZSp0aGlzLnRpbGVTaXplKSl9em9vbUZyb21NZXJjYXRvclpBZGp1c3RlZCh0KXtsZXQgaT0wLG89ZS5HTE9CRV9aT09NX1RIUkVTSE9MRF9NQVgscj0wLG49MS8wO2Zvcig7by1pPjFlLTYmJm8+aTspe2NvbnN0IGU9aSsuNSooby1pKSxzPXRoaXMudGlsZVNpemUqTWF0aC5wb3coMixlKSxhPXRoaXMuZ2V0Q2FtZXJhVG9DZW50ZXJEaXN0YW5jZSh0aGlzLnByb2plY3Rpb24sZSxzKSxsPXRoaXMuc2NhbGVab29tKGEvKHQqdGhpcy50aWxlU2l6ZSkpLGM9TWF0aC5hYnMoZS1sKTtjPG4mJihuPWMscj1lKSxlPGw/aT1lOm89ZTt9cmV0dXJuIHJ9X3RlcnJhaW5FbmFibGVkKCl7cmV0dXJuICEoIXRoaXMuX2VsZXZhdGlvbnx8IXRoaXMucHJvamVjdGlvbi5zdXBwb3J0c1RlcnJhaW4mJihlLndhcm5PbmNlKFwiVGVycmFpbiBpcyBub3QgeWV0IHN1cHBvcnRlZCB3aXRoIGFsdGVybmF0ZSBwcm9qZWN0aW9ucy4gVXNlIG1lcmNhdG9yIG9yIGdsb2JlIHRvIGVuYWJsZSB0ZXJyYWluLlwiKSwxKSl9YW55Q29ybmVyT2ZmRWRnZSh0LGkpe2NvbnN0IG89TWF0aC5taW4odC54LGkueCkscj1NYXRoLm1heCh0LngsaS54KSxuPU1hdGgubWluKHQueSxpLnkpLHM9TWF0aC5tYXgodC55LGkueSk7aWYobjx0aGlzLmhvcml6b25MaW5lRnJvbVRvcCghMSkpcmV0dXJuICEwO2lmKFwibWVyY2F0b3JcIiE9PXRoaXMucHJvamVjdGlvbi5uYW1lKXJldHVybiAhMTtjb25zdCBhPVtuZXcgZS5Qb2ludChvLG4pLG5ldyBlLlBvaW50KHIscyksbmV3IGUuUG9pbnQobyxzKSxuZXcgZS5Qb2ludChyLG4pXSxsPXRoaXMucmVuZGVyV29ybGRDb3BpZXM/LTM6MCxjPXRoaXMucmVuZGVyV29ybGRDb3BpZXM/NDoxO2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0IHQ9dGhpcy5wb2ludFJheUludGVyc2VjdGlvbihlKTtpZih0LnQ8MClyZXR1cm4gITA7Y29uc3QgaT10aGlzLnJheUludGVyc2VjdGlvbkNvb3JkaW5hdGUodCk7aWYoaS54PGx8fGkueTwwfHxpLng+Y3x8aS55PjEpcmV0dXJuICEwfXJldHVybiAhMX1pc0hvcml6b25WaXNpYmxlKCl7cmV0dXJuIHRoaXMucGl0Y2grZS5yYWRUb0RlZyh0aGlzLmZvdkFib3ZlQ2VudGVyKT44OHx8dGhpcy5hbnlDb3JuZXJPZmZFZGdlKG5ldyBlLlBvaW50KDAsMCksbmV3IGUuUG9pbnQodGhpcy53aWR0aCx0aGlzLmhlaWdodCkpfXpvb21EZWx0YVRvTW92ZW1lbnQodCxpKXtjb25zdCBvPWUubGVuZ3RoKGUuc3ViKFtdLHRoaXMuX2NhbWVyYS5wb3NpdGlvbix0KSkscj10aGlzLl96b29tRnJvbU1lcmNhdG9yWihvKStpO3JldHVybiBvLXRoaXMuX21lcmNhdG9yWmZyb21ab29tKHIpfWdldENhbWVyYVBvaW50KCl7aWYoXCJnbG9iZVwiPT09dGhpcy5wcm9qZWN0aW9uLm5hbWUpe2NvbnN0IHQ9ZnVuY3Rpb24oW3QsaSxvXSxyKXtjb25zdCBuPVt0LGksbywxXTtlLnRyYW5zZm9ybU1hdDQkMShuLG4scik7Y29uc3Qgcz1uWzNdPU1hdGgubWF4KG5bM10sMWUtNik7cmV0dXJuIG5bMF0vPXMsblsxXS89cyxuWzJdLz1zLG59KFt0aGlzLmdsb2JlTWF0cml4WzEyXSx0aGlzLmdsb2JlTWF0cml4WzEzXSx0aGlzLmdsb2JlTWF0cml4WzE0XV0sdGhpcy5waXhlbE1hdHJpeCk7cmV0dXJuIG5ldyBlLlBvaW50KHRbMF0sdFsxXSl9e2NvbnN0IHQ9TWF0aC50YW4odGhpcy5fcGl0Y2gpKih0aGlzLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2V8fDEpO3JldHVybiB0aGlzLmNlbnRlclBvaW50LmFkZChuZXcgZS5Qb2ludCgwLHQpKX19Z2V0Q2FtZXJhVG9DZW50ZXJEaXN0YW5jZShlLHQ9dGhpcy56b29tLGk9dGhpcy53b3JsZFNpemUpe2NvbnN0IG89V28oZSx0LHRoaXMud2lkdGgsdGhpcy5oZWlnaHQsMTAyNCkscj1lLnBpeGVsU3BhY2VDb252ZXJzaW9uKHRoaXMuY2VudGVyLmxhdCxpLG8pO3JldHVybiAuNS9NYXRoLnRhbiguNSp0aGlzLl9mb3YpKnRoaXMuaGVpZ2h0KnJ9Z2V0V29ybGRUb0NhbWVyYU1hdHJpeCgpe2NvbnN0IHQ9dGhpcy5fY2FtZXJhLmdldFdvcmxkVG9DYW1lcmEodGhpcy53b3JsZFNpemUsXCJtZXRlcnNcIj09PXRoaXMucHJvamVjdGlvbi56QXhpc1VuaXQ/dGhpcy5waXhlbHNQZXJNZXRlcjoxKTtyZXR1cm4gXCJnbG9iZVwiPT09dGhpcy5wcm9qZWN0aW9uLm5hbWUmJmUubXVsdGlwbHkodCx0LHRoaXMuZ2xvYmVNYXRyaXgpLHR9fWZ1bmN0aW9uIFlvKGUsdCl7bGV0IGk9ITEsbz1udWxsO2NvbnN0IHI9KCk9PntvPW51bGwsaSYmKGUoKSxvPXNldFRpbWVvdXQocix0KSxpPSExKTt9O3JldHVybiAoKT0+KGk9ITAsb3x8cigpLG8pfWNsYXNzIEtve2NvbnN0cnVjdG9yKHQpe3RoaXMuX2hhc2hOYW1lPXQmJmVuY29kZVVSSUNvbXBvbmVudCh0KSxlLmJpbmRBbGwoW1wiX2dldEN1cnJlbnRIYXNoXCIsXCJfb25IYXNoQ2hhbmdlXCIsXCJfdXBkYXRlSGFzaFwiXSx0aGlzKSx0aGlzLl91cGRhdGVIYXNoPVlvKHRoaXMuX3VwZGF0ZUhhc2hVbnRocm90dGxlZC5iaW5kKHRoaXMpLDMwMCk7fWFkZFRvKHQpe3JldHVybiB0aGlzLl9tYXA9dCxlLndpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiaGFzaGNoYW5nZVwiLHRoaXMuX29uSGFzaENoYW5nZSwhMSksdC5vbihcIm1vdmVlbmRcIix0aGlzLl91cGRhdGVIYXNoKSx0aGlzfXJlbW92ZSgpe3JldHVybiB0aGlzLl9tYXA/KHRoaXMuX21hcC5vZmYoXCJtb3ZlZW5kXCIsdGhpcy5fdXBkYXRlSGFzaCksZS53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImhhc2hjaGFuZ2VcIix0aGlzLl9vbkhhc2hDaGFuZ2UsITEpLGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVIYXNoKCkpLHRoaXMuX21hcD12b2lkIDAsdGhpcyk6dGhpc31nZXRIYXNoU3RyaW5nKCl7Y29uc3QgdD10aGlzLl9tYXA7aWYoIXQpcmV0dXJuIFwiXCI7Y29uc3QgaT1Kbyh0KTtpZih0aGlzLl9oYXNoTmFtZSl7Y29uc3QgdD10aGlzLl9oYXNoTmFtZTtsZXQgbz0hMTtjb25zdCByPWUud2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSkuc3BsaXQoXCImXCIpLm1hcCgoZT0+e2NvbnN0IHI9ZS5zcGxpdChcIj1cIilbMF07cmV0dXJuIHI9PT10PyhvPSEwLGAke3J9PSR7aX1gKTplfSkpLmZpbHRlcigoZT0+ZSkpO3JldHVybiBvfHxyLnB1c2goYCR7dH09JHtpfWApLGAjJHtyLmpvaW4oXCImXCIpfWB9cmV0dXJuIGAjJHtpfWB9X2dldEN1cnJlbnRIYXNoKCl7Y29uc3QgdD1lLndpbmRvdy5sb2NhdGlvbi5oYXNoLnJlcGxhY2UoXCIjXCIsXCJcIik7aWYodGhpcy5faGFzaE5hbWUpe2xldCBlO3JldHVybiB0LnNwbGl0KFwiJlwiKS5tYXAoKGU9PmUuc3BsaXQoXCI9XCIpKSkuZm9yRWFjaCgodD0+e3RbMF09PT10aGlzLl9oYXNoTmFtZSYmKGU9dCk7fSkpLChlJiZlWzFdfHxcIlwiKS5zcGxpdChcIi9cIil9cmV0dXJuIHQuc3BsaXQoXCIvXCIpfV9vbkhhc2hDaGFuZ2UoKXtjb25zdCBlPXRoaXMuX21hcDtpZighZSlyZXR1cm4gITE7Y29uc3QgdD10aGlzLl9nZXRDdXJyZW50SGFzaCgpO2lmKHQubGVuZ3RoPj0zJiYhdC5zb21lKChlPT5pc05hTihlKSkpKXtjb25zdCBpPWUuZHJhZ1JvdGF0ZS5pc0VuYWJsZWQoKSYmZS50b3VjaFpvb21Sb3RhdGUuaXNFbmFibGVkKCk/Kyh0WzNdfHwwKTplLmdldEJlYXJpbmcoKTtyZXR1cm4gZS5qdW1wVG8oe2NlbnRlcjpbK3RbMl0sK3RbMV1dLHpvb206K3RbMF0sYmVhcmluZzppLHBpdGNoOisodFs0XXx8MCl9KSwhMH1yZXR1cm4gITF9X3VwZGF0ZUhhc2hVbnRocm90dGxlZCgpe2NvbnN0IHQ9ZS53aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKC8oIy4rKT8kLyx0aGlzLmdldEhhc2hTdHJpbmcoKSk7ZS53aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoZS53aW5kb3cuaGlzdG9yeS5zdGF0ZSxudWxsLHQpO319ZnVuY3Rpb24gSm8oZSx0KXtjb25zdCBpPWUuZ2V0Q2VudGVyKCksbz1NYXRoLnJvdW5kKDEwMCplLmdldFpvb20oKSkvMTAwLHI9TWF0aC5jZWlsKChvKk1hdGguTE4yK01hdGgubG9nKDUxMi8zNjAvLjUpKS9NYXRoLkxOMTApLG49TWF0aC5wb3coMTAscikscz1NYXRoLnJvdW5kKGkubG5nKm4pL24sYT1NYXRoLnJvdW5kKGkubGF0Km4pL24sbD1lLmdldEJlYXJpbmcoKSxjPWUuZ2V0UGl0Y2goKTtsZXQgaD10P2AvJHtzfS8ke2F9LyR7b31gOmAke299LyR7YX0vJHtzfWA7cmV0dXJuIChsfHxjKSYmKGgrPVwiL1wiK01hdGgucm91bmQoMTAqbCkvMTApLGMmJihoKz1gLyR7TWF0aC5yb3VuZChjKX1gKSxofWNvbnN0IFFvPXtsaW5lYXJpdHk6LjMsZWFzaW5nOmUuYmV6aWVyKDAsMCwuMywxKX0sZXI9ZS5leHRlbmQoe2RlY2VsZXJhdGlvbjoyNTAwLG1heFNwZWVkOjE0MDB9LFFvKSx0cj1lLmV4dGVuZCh7ZGVjZWxlcmF0aW9uOjIwLG1heFNwZWVkOjE0MDB9LFFvKSxpcj1lLmV4dGVuZCh7ZGVjZWxlcmF0aW9uOjFlMyxtYXhTcGVlZDozNjB9LFFvKSxvcj1lLmV4dGVuZCh7ZGVjZWxlcmF0aW9uOjFlMyxtYXhTcGVlZDo5MH0sUW8pO2NsYXNzIHJye2NvbnN0cnVjdG9yKGUpe3RoaXMuX21hcD1lLHRoaXMuY2xlYXIoKTt9Y2xlYXIoKXt0aGlzLl9pbmVydGlhQnVmZmVyPVtdO31yZWNvcmQodCl7dGhpcy5fZHJhaW5JbmVydGlhQnVmZmVyKCksdGhpcy5faW5lcnRpYUJ1ZmZlci5wdXNoKHt0aW1lOmUuZXhwb3J0ZWQubm93KCksc2V0dGluZ3M6dH0pO31fZHJhaW5JbmVydGlhQnVmZmVyKCl7Y29uc3QgdD10aGlzLl9pbmVydGlhQnVmZmVyLGk9ZS5leHBvcnRlZC5ub3coKTtmb3IoO3QubGVuZ3RoPjAmJmktdFswXS50aW1lPjE2MDspdC5zaGlmdCgpO31fb25Nb3ZlRW5kKHQpe2lmKHRoaXMuX21hcC5fcHJlZmVyc1JlZHVjZWRNb3Rpb24oKSlyZXR1cm47aWYodGhpcy5fZHJhaW5JbmVydGlhQnVmZmVyKCksdGhpcy5faW5lcnRpYUJ1ZmZlci5sZW5ndGg8MilyZXR1cm47Y29uc3QgaT17em9vbTowLGJlYXJpbmc6MCxwaXRjaDowLHBhbjpuZXcgZS5Qb2ludCgwLDApLHBpbmNoQXJvdW5kOnZvaWQgMCxhcm91bmQ6dm9pZCAwfTtmb3IoY29uc3R7c2V0dGluZ3M6ZX1vZiB0aGlzLl9pbmVydGlhQnVmZmVyKWkuem9vbSs9ZS56b29tRGVsdGF8fDAsaS5iZWFyaW5nKz1lLmJlYXJpbmdEZWx0YXx8MCxpLnBpdGNoKz1lLnBpdGNoRGVsdGF8fDAsZS5wYW5EZWx0YSYmaS5wYW4uX2FkZChlLnBhbkRlbHRhKSxlLmFyb3VuZCYmKGkuYXJvdW5kPWUuYXJvdW5kKSxlLnBpbmNoQXJvdW5kJiYoaS5waW5jaEFyb3VuZD1lLnBpbmNoQXJvdW5kKTtjb25zdCBvPXRoaXMuX2luZXJ0aWFCdWZmZXJbdGhpcy5faW5lcnRpYUJ1ZmZlci5sZW5ndGgtMV0udGltZS10aGlzLl9pbmVydGlhQnVmZmVyWzBdLnRpbWUscj17fTtpZihpLnBhbi5tYWcoKSl7Y29uc3Qgbj1zcihpLnBhbi5tYWcoKSxvLGUuZXh0ZW5kKHt9LGVyLHR8fHt9KSk7ci5vZmZzZXQ9aS5wYW4ubXVsdChuLmFtb3VudC9pLnBhbi5tYWcoKSksci5jZW50ZXI9dGhpcy5fbWFwLnRyYW5zZm9ybS5jZW50ZXIsbnIocixuKTt9aWYoaS56b29tKXtjb25zdCBlPXNyKGkuem9vbSxvLHRyKTtyLnpvb209dGhpcy5fbWFwLnRyYW5zZm9ybS56b29tK2UuYW1vdW50LG5yKHIsZSk7fWlmKGkuYmVhcmluZyl7Y29uc3QgdD1zcihpLmJlYXJpbmcsbyxpcik7ci5iZWFyaW5nPXRoaXMuX21hcC50cmFuc2Zvcm0uYmVhcmluZytlLmNsYW1wKHQuYW1vdW50LC0xNzksMTc5KSxucihyLHQpO31pZihpLnBpdGNoKXtjb25zdCBlPXNyKGkucGl0Y2gsbyxvcik7ci5waXRjaD10aGlzLl9tYXAudHJhbnNmb3JtLnBpdGNoK2UuYW1vdW50LG5yKHIsZSk7fWlmKHIuem9vbXx8ci5iZWFyaW5nKXtjb25zdCBlPXZvaWQgMD09PWkucGluY2hBcm91bmQ/aS5hcm91bmQ6aS5waW5jaEFyb3VuZDtyLmFyb3VuZD1lP3RoaXMuX21hcC51bnByb2plY3QoZSk6dGhpcy5fbWFwLmdldENlbnRlcigpO31yZXR1cm4gdGhpcy5jbGVhcigpLHIubm9Nb3ZlU3RhcnQ9ITAscn19ZnVuY3Rpb24gbnIoZSx0KXsoIWUuZHVyYXRpb258fGUuZHVyYXRpb248dC5kdXJhdGlvbikmJihlLmR1cmF0aW9uPXQuZHVyYXRpb24sZS5lYXNpbmc9dC5lYXNpbmcpO31mdW5jdGlvbiBzcih0LGksbyl7Y29uc3R7bWF4U3BlZWQ6cixsaW5lYXJpdHk6bixkZWNlbGVyYXRpb246c309byxhPWUuY2xhbXAodCpuLyhpLzFlMyksLXIsciksbD1NYXRoLmFicyhhKS8ocypuKTtyZXR1cm4ge2Vhc2luZzpvLmVhc2luZyxkdXJhdGlvbjoxZTMqbCxhbW91bnQ6YSoobC8yKX19Y2xhc3MgYXIgZXh0ZW5kcyBlLkV2ZW50e3ByZXZlbnREZWZhdWx0KCl7dGhpcy5fZGVmYXVsdFByZXZlbnRlZD0hMDt9Z2V0IGRlZmF1bHRQcmV2ZW50ZWQoKXtyZXR1cm4gdGhpcy5fZGVmYXVsdFByZXZlbnRlZH1jb25zdHJ1Y3Rvcih0LGksbyxyPXt9KXtjb25zdCBuPXAoaS5nZXRDYW52YXNDb250YWluZXIoKSxvKSxzPWkudW5wcm9qZWN0KG4pO3N1cGVyKHQsZS5leHRlbmQoe3BvaW50Om4sbG5nTGF0OnMsb3JpZ2luYWxFdmVudDpvfSxyKSksdGhpcy5fZGVmYXVsdFByZXZlbnRlZD0hMSx0aGlzLnRhcmdldD1pO319Y2xhc3MgbHIgZXh0ZW5kcyBlLkV2ZW50e3ByZXZlbnREZWZhdWx0KCl7dGhpcy5fZGVmYXVsdFByZXZlbnRlZD0hMDt9Z2V0IGRlZmF1bHRQcmV2ZW50ZWQoKXtyZXR1cm4gdGhpcy5fZGVmYXVsdFByZXZlbnRlZH1jb25zdHJ1Y3Rvcih0LGksbyl7Y29uc3Qgcj1cInRvdWNoZW5kXCI9PT10P28uY2hhbmdlZFRvdWNoZXM6by50b3VjaGVzLG49bShpLmdldENhbnZhc0NvbnRhaW5lcigpLHIpLHM9bi5tYXAoKGU9PmkudW5wcm9qZWN0KGUpKSksYT1uLnJlZHVjZSgoKGUsdCxpLG8pPT5lLmFkZCh0LmRpdihvLmxlbmd0aCkpKSxuZXcgZS5Qb2ludCgwLDApKTtzdXBlcih0LHtwb2ludHM6bixwb2ludDphLGxuZ0xhdHM6cyxsbmdMYXQ6aS51bnByb2plY3QoYSksb3JpZ2luYWxFdmVudDpvfSksdGhpcy5fZGVmYXVsdFByZXZlbnRlZD0hMTt9fWNsYXNzIGNyIGV4dGVuZHMgZS5FdmVudHtwcmV2ZW50RGVmYXVsdCgpe3RoaXMuX2RlZmF1bHRQcmV2ZW50ZWQ9ITA7fWdldCBkZWZhdWx0UHJldmVudGVkKCl7cmV0dXJuIHRoaXMuX2RlZmF1bHRQcmV2ZW50ZWR9Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKGUse29yaWdpbmFsRXZlbnQ6aX0pLHRoaXMuX2RlZmF1bHRQcmV2ZW50ZWQ9ITE7fX1jbGFzcyBocntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX21hcD1lLHRoaXMuX2NsaWNrVG9sZXJhbmNlPXQuY2xpY2tUb2xlcmFuY2U7fXJlc2V0KCl7dGhpcy5fbW91c2Vkb3duUG9zPXZvaWQgMDt9d2hlZWwoZSl7cmV0dXJuIHRoaXMuX2ZpcmVQcmV2ZW50YWJsZShuZXcgY3IoZS50eXBlLHRoaXMuX21hcCxlKSl9bW91c2Vkb3duKGUsdCl7cmV0dXJuIHRoaXMuX21vdXNlZG93blBvcz10LHRoaXMuX2ZpcmVQcmV2ZW50YWJsZShuZXcgYXIoZS50eXBlLHRoaXMuX21hcCxlKSl9bW91c2V1cChlKXt0aGlzLl9tYXAuZmlyZShuZXcgYXIoZS50eXBlLHRoaXMuX21hcCxlKSk7fXByZWNsaWNrKHQpe2NvbnN0IGk9ZS5leHRlbmQoe30sdCk7aS50eXBlPVwicHJlY2xpY2tcIix0aGlzLl9tYXAuZmlyZShuZXcgYXIoaS50eXBlLHRoaXMuX21hcCxpKSk7fWNsaWNrKGUsdCl7dGhpcy5fbW91c2Vkb3duUG9zJiZ0aGlzLl9tb3VzZWRvd25Qb3MuZGlzdCh0KT49dGhpcy5fY2xpY2tUb2xlcmFuY2V8fCh0aGlzLnByZWNsaWNrKGUpLHRoaXMuX21hcC5maXJlKG5ldyBhcihlLnR5cGUsdGhpcy5fbWFwLGUpKSk7fWRibGNsaWNrKGUpe3JldHVybiB0aGlzLl9maXJlUHJldmVudGFibGUobmV3IGFyKGUudHlwZSx0aGlzLl9tYXAsZSkpfW1vdXNlb3ZlcihlKXt0aGlzLl9tYXAuZmlyZShuZXcgYXIoZS50eXBlLHRoaXMuX21hcCxlKSk7fW1vdXNlb3V0KGUpe3RoaXMuX21hcC5maXJlKG5ldyBhcihlLnR5cGUsdGhpcy5fbWFwLGUpKTt9dG91Y2hzdGFydChlKXtyZXR1cm4gdGhpcy5fZmlyZVByZXZlbnRhYmxlKG5ldyBscihlLnR5cGUsdGhpcy5fbWFwLGUpKX10b3VjaG1vdmUoZSl7dGhpcy5fbWFwLmZpcmUobmV3IGxyKGUudHlwZSx0aGlzLl9tYXAsZSkpO310b3VjaGVuZChlKXt0aGlzLl9tYXAuZmlyZShuZXcgbHIoZS50eXBlLHRoaXMuX21hcCxlKSk7fXRvdWNoY2FuY2VsKGUpe3RoaXMuX21hcC5maXJlKG5ldyBscihlLnR5cGUsdGhpcy5fbWFwLGUpKTt9X2ZpcmVQcmV2ZW50YWJsZShlKXtpZih0aGlzLl9tYXAuZmlyZShlKSxlLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIHt9fWlzRW5hYmxlZCgpe3JldHVybiAhMH1pc0FjdGl2ZSgpe3JldHVybiAhMX1lbmFibGUoKXt9ZGlzYWJsZSgpe319Y2xhc3MgdXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbWFwPWU7fXJlc2V0KCl7dGhpcy5fZGVsYXlDb250ZXh0TWVudT0hMSx0aGlzLl9jb250ZXh0TWVudUV2ZW50PXZvaWQgMDt9bW91c2Vtb3ZlKGUpe3RoaXMuX21hcC5maXJlKG5ldyBhcihlLnR5cGUsdGhpcy5fbWFwLGUpKTt9bW91c2Vkb3duKCl7dGhpcy5fZGVsYXlDb250ZXh0TWVudT0hMDt9bW91c2V1cCgpe3RoaXMuX2RlbGF5Q29udGV4dE1lbnU9ITEsdGhpcy5fY29udGV4dE1lbnVFdmVudCYmKHRoaXMuX21hcC5maXJlKG5ldyBhcihcImNvbnRleHRtZW51XCIsdGhpcy5fbWFwLHRoaXMuX2NvbnRleHRNZW51RXZlbnQpKSxkZWxldGUgdGhpcy5fY29udGV4dE1lbnVFdmVudCk7fWNvbnRleHRtZW51KGUpe3RoaXMuX2RlbGF5Q29udGV4dE1lbnU/dGhpcy5fY29udGV4dE1lbnVFdmVudD1lOnRoaXMuX21hcC5maXJlKG5ldyBhcihlLnR5cGUsdGhpcy5fbWFwLGUpKSx0aGlzLl9tYXAubGlzdGVucyhcImNvbnRleHRtZW51XCIpJiZlLnByZXZlbnREZWZhdWx0KCk7fWlzRW5hYmxlZCgpe3JldHVybiAhMH1pc0FjdGl2ZSgpe3JldHVybiAhMX1lbmFibGUoKXt9ZGlzYWJsZSgpe319Y2xhc3MgX3J7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9tYXA9ZSx0aGlzLl9lbD1lLmdldENhbnZhc0NvbnRhaW5lcigpLHRoaXMuX2NvbnRhaW5lcj1lLmdldENvbnRhaW5lcigpLHRoaXMuX2NsaWNrVG9sZXJhbmNlPXQuY2xpY2tUb2xlcmFuY2V8fDE7fWlzRW5hYmxlZCgpe3JldHVybiAhIXRoaXMuX2VuYWJsZWR9aXNBY3RpdmUoKXtyZXR1cm4gISF0aGlzLl9hY3RpdmV9ZW5hYmxlKCl7dGhpcy5pc0VuYWJsZWQoKXx8KHRoaXMuX2VuYWJsZWQ9ITApO31kaXNhYmxlKCl7dGhpcy5pc0VuYWJsZWQoKSYmKHRoaXMuX2VuYWJsZWQ9ITEpO31tb3VzZWRvd24oZSx0KXt0aGlzLmlzRW5hYmxlZCgpJiZlLnNoaWZ0S2V5JiYwPT09ZS5idXR0b24mJihoKCksdGhpcy5fc3RhcnRQb3M9dGhpcy5fbGFzdFBvcz10LHRoaXMuX2FjdGl2ZT0hMCk7fW1vdXNlbW92ZVdpbmRvdyhlLHQpe2lmKCF0aGlzLl9hY3RpdmUpcmV0dXJuO2NvbnN0IGk9dCxvPXRoaXMuX3N0YXJ0UG9zLHI9dGhpcy5fbGFzdFBvcztpZighb3x8IXJ8fHIuZXF1YWxzKGkpfHwhdGhpcy5fYm94JiZpLmRpc3Qobyk8dGhpcy5fY2xpY2tUb2xlcmFuY2UpcmV0dXJuO3RoaXMuX2xhc3RQb3M9aSx0aGlzLl9ib3h8fCh0aGlzLl9ib3g9bihcImRpdlwiLFwibWFwYm94Z2wtYm94em9vbVwiLHRoaXMuX2NvbnRhaW5lciksdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jcm9zc2hhaXJcIiksdGhpcy5fZmlyZUV2ZW50KFwiYm94em9vbXN0YXJ0XCIsZSkpO2NvbnN0IHM9TWF0aC5taW4oby54LGkueCksYT1NYXRoLm1heChvLngsaS54KSxsPU1hdGgubWluKG8ueSxpLnkpLGM9TWF0aC5tYXgoby55LGkueSk7dGhpcy5fbWFwLl9yZXF1ZXN0RG9tVGFzaygoKCk9Pnt0aGlzLl9ib3gmJih0aGlzLl9ib3guc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGUoJHtzfXB4LCR7bH1weClgLHRoaXMuX2JveC5zdHlsZS53aWR0aD1hLXMrXCJweFwiLHRoaXMuX2JveC5zdHlsZS5oZWlnaHQ9Yy1sK1wicHhcIik7fSkpO31tb3VzZXVwV2luZG93KHQsaSl7aWYoIXRoaXMuX2FjdGl2ZSlyZXR1cm47Y29uc3Qgbz10aGlzLl9zdGFydFBvcyxyPWk7aWYobyYmMD09PXQuYnV0dG9uKXtpZih0aGlzLnJlc2V0KCksZCgpLG8ueCE9PXIueHx8by55IT09ci55KXJldHVybiB0aGlzLl9tYXAuZmlyZShuZXcgZS5FdmVudChcImJveHpvb21lbmRcIix7b3JpZ2luYWxFdmVudDp0fSkpLHtjYW1lcmFBbmltYXRpb246ZT0+ZS5maXRTY3JlZW5Db29yZGluYXRlcyhvLHIsdGhpcy5fbWFwLmdldEJlYXJpbmcoKSx7bGluZWFyOiExfSl9O3RoaXMuX2ZpcmVFdmVudChcImJveHpvb21jYW5jZWxcIix0KTt9fWtleWRvd24oZSl7dGhpcy5fYWN0aXZlJiYyNz09PWUua2V5Q29kZSYmKHRoaXMucmVzZXQoKSx0aGlzLl9maXJlRXZlbnQoXCJib3h6b29tY2FuY2VsXCIsZSkpO31ibHVyKCl7dGhpcy5yZXNldCgpO31yZXNldCgpe3RoaXMuX2FjdGl2ZT0hMSx0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWNyb3NzaGFpclwiKSx0aGlzLl9ib3gmJih0aGlzLl9ib3gucmVtb3ZlKCksdGhpcy5fYm94PW51bGwpLHUoKSxkZWxldGUgdGhpcy5fc3RhcnRQb3MsZGVsZXRlIHRoaXMuX2xhc3RQb3M7fV9maXJlRXZlbnQodCxpKXtyZXR1cm4gdGhpcy5fbWFwLmZpcmUobmV3IGUuRXZlbnQodCx7b3JpZ2luYWxFdmVudDppfSkpfX1mdW5jdGlvbiBkcihlLHQpe2NvbnN0IGk9e307Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspaVtlW29dLmlkZW50aWZpZXJdPXRbb107cmV0dXJuIGl9Y2xhc3MgcHJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yZXNldCgpLHRoaXMubnVtVG91Y2hlcz1lLm51bVRvdWNoZXM7fXJlc2V0KCl7dGhpcy5jZW50cm9pZD12b2lkIDAsdGhpcy5zdGFydFRpbWU9MCx0aGlzLnRvdWNoZXM9e30sdGhpcy5hYm9ydGVkPSExO310b3VjaHN0YXJ0KHQsaSxvKXsodGhpcy5jZW50cm9pZHx8by5sZW5ndGg+dGhpcy5udW1Ub3VjaGVzKSYmKHRoaXMuYWJvcnRlZD0hMCksdGhpcy5hYm9ydGVkfHwoMD09PXRoaXMuc3RhcnRUaW1lJiYodGhpcy5zdGFydFRpbWU9dC50aW1lU3RhbXApLG8ubGVuZ3RoPT09dGhpcy5udW1Ub3VjaGVzJiYodGhpcy5jZW50cm9pZD1mdW5jdGlvbih0KXtjb25zdCBpPW5ldyBlLlBvaW50KDAsMCk7Zm9yKGNvbnN0IGUgb2YgdClpLl9hZGQoZSk7cmV0dXJuIGkuZGl2KHQubGVuZ3RoKX0oaSksdGhpcy50b3VjaGVzPWRyKG8saSkpKTt9dG91Y2htb3ZlKGUsdCxpKXtpZih0aGlzLmFib3J0ZWR8fCF0aGlzLmNlbnRyb2lkKXJldHVybjtjb25zdCBvPWRyKGksdCk7Zm9yKGNvbnN0IGUgaW4gdGhpcy50b3VjaGVzKXtjb25zdCB0PW9bZV07KCF0fHx0LmRpc3QodGhpcy50b3VjaGVzW2VdKT4zMCkmJih0aGlzLmFib3J0ZWQ9ITApO319dG91Y2hlbmQoZSx0LGkpe2lmKCghdGhpcy5jZW50cm9pZHx8ZS50aW1lU3RhbXAtdGhpcy5zdGFydFRpbWU+NTAwKSYmKHRoaXMuYWJvcnRlZD0hMCksMD09PWkubGVuZ3RoKXtjb25zdCBlPSF0aGlzLmFib3J0ZWQmJnRoaXMuY2VudHJvaWQ7aWYodGhpcy5yZXNldCgpLGUpcmV0dXJuIGV9fX1jbGFzcyBtcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNpbmdsZVRhcD1uZXcgcHIoZSksdGhpcy5udW1UYXBzPWUubnVtVGFwcyx0aGlzLnJlc2V0KCk7fXJlc2V0KCl7dGhpcy5sYXN0VGltZT0xLzAsdGhpcy5sYXN0VGFwPXZvaWQgMCx0aGlzLmNvdW50PTAsdGhpcy5zaW5nbGVUYXAucmVzZXQoKTt9dG91Y2hzdGFydChlLHQsaSl7dGhpcy5zaW5nbGVUYXAudG91Y2hzdGFydChlLHQsaSk7fXRvdWNobW92ZShlLHQsaSl7dGhpcy5zaW5nbGVUYXAudG91Y2htb3ZlKGUsdCxpKTt9dG91Y2hlbmQoZSx0LGkpe2NvbnN0IG89dGhpcy5zaW5nbGVUYXAudG91Y2hlbmQoZSx0LGkpO2lmKG8pe2NvbnN0IHQ9ZS50aW1lU3RhbXAtdGhpcy5sYXN0VGltZTw1MDAsaT0hdGhpcy5sYXN0VGFwfHx0aGlzLmxhc3RUYXAuZGlzdChvKTwzMDtpZih0JiZpfHx0aGlzLnJlc2V0KCksdGhpcy5jb3VudCsrLHRoaXMubGFzdFRpbWU9ZS50aW1lU3RhbXAsdGhpcy5sYXN0VGFwPW8sdGhpcy5jb3VudD09PXRoaXMubnVtVGFwcylyZXR1cm4gdGhpcy5yZXNldCgpLG99fX1jbGFzcyBmcntjb25zdHJ1Y3Rvcigpe3RoaXMuX3pvb21Jbj1uZXcgbXIoe251bVRvdWNoZXM6MSxudW1UYXBzOjJ9KSx0aGlzLl96b29tT3V0PW5ldyBtcih7bnVtVG91Y2hlczoyLG51bVRhcHM6MX0pLHRoaXMucmVzZXQoKTt9cmVzZXQoKXt0aGlzLl9hY3RpdmU9ITEsdGhpcy5fem9vbUluLnJlc2V0KCksdGhpcy5fem9vbU91dC5yZXNldCgpO310b3VjaHN0YXJ0KGUsdCxpKXt0aGlzLl96b29tSW4udG91Y2hzdGFydChlLHQsaSksdGhpcy5fem9vbU91dC50b3VjaHN0YXJ0KGUsdCxpKTt9dG91Y2htb3ZlKGUsdCxpKXt0aGlzLl96b29tSW4udG91Y2htb3ZlKGUsdCxpKSx0aGlzLl96b29tT3V0LnRvdWNobW92ZShlLHQsaSk7fXRvdWNoZW5kKGUsdCxpKXtjb25zdCBvPXRoaXMuX3pvb21Jbi50b3VjaGVuZChlLHQsaSkscj10aGlzLl96b29tT3V0LnRvdWNoZW5kKGUsdCxpKTtyZXR1cm4gbz8odGhpcy5fYWN0aXZlPSEwLGUucHJldmVudERlZmF1bHQoKSxzZXRUaW1lb3V0KCgoKT0+dGhpcy5yZXNldCgpKSwwKSx7Y2FtZXJhQW5pbWF0aW9uOnQ9PnQuZWFzZVRvKHtkdXJhdGlvbjozMDAsem9vbTp0LmdldFpvb20oKSsxLGFyb3VuZDp0LnVucHJvamVjdChvKX0se29yaWdpbmFsRXZlbnQ6ZX0pfSk6cj8odGhpcy5fYWN0aXZlPSEwLGUucHJldmVudERlZmF1bHQoKSxzZXRUaW1lb3V0KCgoKT0+dGhpcy5yZXNldCgpKSwwKSx7Y2FtZXJhQW5pbWF0aW9uOnQ9PnQuZWFzZVRvKHtkdXJhdGlvbjozMDAsem9vbTp0LmdldFpvb20oKS0xLGFyb3VuZDp0LnVucHJvamVjdChyKX0se29yaWdpbmFsRXZlbnQ6ZX0pfSk6dm9pZCAwfXRvdWNoY2FuY2VsKCl7dGhpcy5yZXNldCgpO31lbmFibGUoKXt0aGlzLl9lbmFibGVkPSEwO31kaXNhYmxlKCl7dGhpcy5fZW5hYmxlZD0hMSx0aGlzLnJlc2V0KCk7fWlzRW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfWlzQWN0aXZlKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZX19Y29uc3QgZ3I9ezA6MSwyOjJ9O2NsYXNzIHZye2NvbnN0cnVjdG9yKGUpe3RoaXMucmVzZXQoKSx0aGlzLl9jbGlja1RvbGVyYW5jZT1lLmNsaWNrVG9sZXJhbmNlfHwxO31ibHVyKCl7dGhpcy5yZXNldCgpO31yZXNldCgpe3RoaXMuX2FjdGl2ZT0hMSx0aGlzLl9tb3ZlZD0hMSx0aGlzLl9sYXN0UG9pbnQ9dm9pZCAwLHRoaXMuX2V2ZW50QnV0dG9uPXZvaWQgMDt9X2NvcnJlY3RCdXR0b24oZSx0KXtyZXR1cm4gITF9X21vdmUoZSx0KXtyZXR1cm4ge319bW91c2Vkb3duKGUsdCl7aWYodGhpcy5fbGFzdFBvaW50KXJldHVybjtjb25zdCBpPWYoZSk7dGhpcy5fY29ycmVjdEJ1dHRvbihlLGkpJiYodGhpcy5fbGFzdFBvaW50PXQsdGhpcy5fZXZlbnRCdXR0b249aSk7fW1vdXNlbW92ZVdpbmRvdyhlLHQpe2NvbnN0IGk9dGhpcy5fbGFzdFBvaW50O2lmKGkpaWYoZS5wcmV2ZW50RGVmYXVsdCgpLG51bGwhPXRoaXMuX2V2ZW50QnV0dG9uJiZmdW5jdGlvbihlLHQpe2NvbnN0IGk9Z3JbdF07cmV0dXJuIHZvaWQgMD09PWUuYnV0dG9uc3x8KGUuYnV0dG9ucyZpKSE9PWl9KGUsdGhpcy5fZXZlbnRCdXR0b24pKXRoaXMucmVzZXQoKTtlbHNlIGlmKHRoaXMuX21vdmVkfHwhKHQuZGlzdChpKTx0aGlzLl9jbGlja1RvbGVyYW5jZSkpcmV0dXJuIHRoaXMuX21vdmVkPSEwLHRoaXMuX2xhc3RQb2ludD10LHRoaXMuX21vdmUoaSx0KX1tb3VzZXVwV2luZG93KGUpe3RoaXMuX2xhc3RQb2ludCYmZihlKT09PXRoaXMuX2V2ZW50QnV0dG9uJiYodGhpcy5fbW92ZWQmJmQoKSx0aGlzLnJlc2V0KCkpO31lbmFibGUoKXt0aGlzLl9lbmFibGVkPSEwO31kaXNhYmxlKCl7dGhpcy5fZW5hYmxlZD0hMSx0aGlzLnJlc2V0KCk7fWlzRW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfWlzQWN0aXZlKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZX19Y2xhc3MgeHIgZXh0ZW5kcyB2cnttb3VzZWRvd24oZSx0KXtzdXBlci5tb3VzZWRvd24oZSx0KSx0aGlzLl9sYXN0UG9pbnQmJih0aGlzLl9hY3RpdmU9ITApO31fY29ycmVjdEJ1dHRvbihlLHQpe3JldHVybiAwPT09dCYmIWUuY3RybEtleX1fbW92ZShlLHQpe3JldHVybiB7YXJvdW5kOnQscGFuRGVsdGE6dC5zdWIoZSl9fX1jbGFzcyB5ciBleHRlbmRzIHZye19jb3JyZWN0QnV0dG9uKGUsdCl7cmV0dXJuIDA9PT10JiZlLmN0cmxLZXl8fDI9PT10fV9tb3ZlKGUsdCl7Y29uc3QgaT0uOCoodC54LWUueCk7aWYoaSlyZXR1cm4gdGhpcy5fYWN0aXZlPSEwLHtiZWFyaW5nRGVsdGE6aX19Y29udGV4dG1lbnUoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO319Y2xhc3MgYnIgZXh0ZW5kcyB2cntfY29ycmVjdEJ1dHRvbihlLHQpe3JldHVybiAwPT09dCYmZS5jdHJsS2V5fHwyPT09dH1fbW92ZShlLHQpe2NvbnN0IGk9LS41Kih0LnktZS55KTtpZihpKXJldHVybiB0aGlzLl9hY3RpdmU9ITAse3BpdGNoRGVsdGE6aX19Y29udGV4dG1lbnUoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO319Y2xhc3Mgd3J7Y29uc3RydWN0b3IodCxpKXt0aGlzLl9tYXA9dCx0aGlzLl9lbD10LmdldENhbnZhc0NvbnRhaW5lcigpLHRoaXMuX21pblRvdWNoZXM9MSx0aGlzLl9jbGlja1RvbGVyYW5jZT1pLmNsaWNrVG9sZXJhbmNlfHwxLHRoaXMucmVzZXQoKSxlLmJpbmRBbGwoW1wiX2FkZFRvdWNoUGFuQmxvY2tlclwiLFwiX3Nob3dUb3VjaFBhbkJsb2NrZXJBbGVydFwiXSx0aGlzKTt9cmVzZXQoKXt0aGlzLl9hY3RpdmU9ITEsdGhpcy5fdG91Y2hlcz17fSx0aGlzLl9zdW09bmV3IGUuUG9pbnQoMCwwKTt9dG91Y2hzdGFydChlLHQsaSl7cmV0dXJuIHRoaXMuX2NhbGN1bGF0ZVRyYW5zZm9ybShlLHQsaSl9dG91Y2htb3ZlKHQsaSxvKXtpZih0aGlzLl9hY3RpdmUmJiEoby5sZW5ndGg8dGhpcy5fbWluVG91Y2hlcykpe2lmKHRoaXMuX21hcC5fY29vcGVyYXRpdmVHZXN0dXJlcyYmIXRoaXMuX21hcC5pc01vdmluZygpKXtpZigxPT09by5sZW5ndGgmJiFlLmlzRnVsbHNjcmVlbigpKXJldHVybiB2b2lkIHRoaXMuX3Nob3dUb3VjaFBhbkJsb2NrZXJBbGVydCgpO1wiaGlkZGVuXCIhPT10aGlzLl9hbGVydENvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5JiYodGhpcy5fYWxlcnRDb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT1cImhpZGRlblwiLGNsZWFyVGltZW91dCh0aGlzLl9hbGVydFRpbWVyKSk7fXJldHVybiB0LmNhbmNlbGFibGUmJnQucHJldmVudERlZmF1bHQoKSx0aGlzLl9jYWxjdWxhdGVUcmFuc2Zvcm0odCxpLG8pfX10b3VjaGVuZChlLHQsaSl7dGhpcy5fY2FsY3VsYXRlVHJhbnNmb3JtKGUsdCxpKSx0aGlzLl9hY3RpdmUmJmkubGVuZ3RoPHRoaXMuX21pblRvdWNoZXMmJnRoaXMucmVzZXQoKTt9dG91Y2hjYW5jZWwoKXt0aGlzLnJlc2V0KCk7fV9jYWxjdWxhdGVUcmFuc2Zvcm0odCxpLG8pe28ubGVuZ3RoPjAmJih0aGlzLl9hY3RpdmU9ITApO2NvbnN0IHI9ZHIobyxpKSxuPW5ldyBlLlBvaW50KDAsMCkscz1uZXcgZS5Qb2ludCgwLDApO2xldCBhPTA7Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdLGk9dGhpcy5fdG91Y2hlc1tlXTtpJiYobi5fYWRkKHQpLHMuX2FkZCh0LnN1YihpKSksYSsrLHJbZV09dCk7fWlmKHRoaXMuX3RvdWNoZXM9cixhPHRoaXMuX21pblRvdWNoZXN8fCFzLm1hZygpKXJldHVybjtjb25zdCBsPXMuZGl2KGEpO3JldHVybiB0aGlzLl9zdW0uX2FkZChsKSx0aGlzLl9zdW0ubWFnKCk8dGhpcy5fY2xpY2tUb2xlcmFuY2U/dm9pZCAwOnthcm91bmQ6bi5kaXYoYSkscGFuRGVsdGE6bH19ZW5hYmxlKCl7dGhpcy5fZW5hYmxlZD0hMCx0aGlzLl9tYXAuX2Nvb3BlcmF0aXZlR2VzdHVyZXMmJih0aGlzLl9hZGRUb3VjaFBhbkJsb2NrZXIoKSx0aGlzLl9lbC5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtdG91Y2gtcGFuLWJsb2NrZXItb3ZlcnJpZGVcIixcIm1hcGJveGdsLXNjcm9sbGFibGUtcGFnZVwiKSk7fWRpc2FibGUoKXt0aGlzLl9lbmFibGVkPSExLHRoaXMuX21hcC5fY29vcGVyYXRpdmVHZXN0dXJlcyYmKGNsZWFyVGltZW91dCh0aGlzLl9hbGVydFRpbWVyKSx0aGlzLl9hbGVydENvbnRhaW5lci5yZW1vdmUoKSx0aGlzLl9lbC5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtdG91Y2gtcGFuLWJsb2NrZXItb3ZlcnJpZGVcIixcIm1hcGJveGdsLXNjcm9sbGFibGUtcGFnZVwiKSksdGhpcy5yZXNldCgpO31pc0VuYWJsZWQoKXtyZXR1cm4gISF0aGlzLl9lbmFibGVkfWlzQWN0aXZlKCl7cmV0dXJuICEhdGhpcy5fYWN0aXZlfV9hZGRUb3VjaFBhbkJsb2NrZXIoKXt0aGlzLl9tYXAmJiF0aGlzLl9hbGVydENvbnRhaW5lciYmKHRoaXMuX2FsZXJ0Q29udGFpbmVyPW4oXCJkaXZcIixcIm1hcGJveGdsLXRvdWNoLXBhbi1ibG9ja2VyXCIsdGhpcy5fbWFwLl9jb250YWluZXIpLHRoaXMuX2FsZXJ0Q29udGFpbmVyLnRleHRDb250ZW50PXRoaXMuX21hcC5fZ2V0VUlTdHJpbmcoXCJUb3VjaFBhbkJsb2NrZXIuTWVzc2FnZVwiKSx0aGlzLl9hbGVydENvbnRhaW5lci5zdHlsZS5mb250U2l6ZT1gJHtNYXRoLm1heCgxMCxNYXRoLm1pbigyNCxNYXRoLmZsb29yKC4wNSp0aGlzLl9lbC5jbGllbnRXaWR0aCkpKX1weGApO31fc2hvd1RvdWNoUGFuQmxvY2tlckFsZXJ0KCl7dGhpcy5fYWxlcnRDb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT1cInZpc2libGVcIix0aGlzLl9hbGVydENvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtdG91Y2gtcGFuLWJsb2NrZXItc2hvd1wiKSx0aGlzLl9hbGVydENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJhbGVydFwiKSxjbGVhclRpbWVvdXQodGhpcy5fYWxlcnRUaW1lciksdGhpcy5fYWxlcnRUaW1lcj1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2FsZXJ0Q29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoXCJtYXBib3hnbC10b3VjaC1wYW4tYmxvY2tlci1zaG93XCIpLHRoaXMuX2FsZXJ0Q29udGFpbmVyLnNldEF0dHJpYnV0ZShcInJvbGVcIixcIm51bGxcIik7fSksNTAwKTt9fWNsYXNzIFRye2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNldCgpO31yZXNldCgpe3RoaXMuX2FjdGl2ZT0hMSx0aGlzLl9maXJzdFR3b1RvdWNoZXM9dm9pZCAwO31fc3RhcnQoZSl7fV9tb3ZlKGUsdCxpKXtyZXR1cm4ge319dG91Y2hzdGFydChlLHQsaSl7dGhpcy5fZmlyc3RUd29Ub3VjaGVzfHxpLmxlbmd0aDwyfHwodGhpcy5fZmlyc3RUd29Ub3VjaGVzPVtpWzBdLmlkZW50aWZpZXIsaVsxXS5pZGVudGlmaWVyXSx0aGlzLl9zdGFydChbdFswXSx0WzFdXSkpO310b3VjaG1vdmUoZSx0LGkpe2NvbnN0IG89dGhpcy5fZmlyc3RUd29Ub3VjaGVzO2lmKCFvKXJldHVybjtlLnByZXZlbnREZWZhdWx0KCk7Y29uc3RbcixuXT1vLHM9RXIoaSx0LHIpLGE9RXIoaSx0LG4pO2lmKCFzfHwhYSlyZXR1cm47Y29uc3QgbD10aGlzLl9hcm91bmRDZW50ZXI/bnVsbDpzLmFkZChhKS5kaXYoMik7cmV0dXJuIHRoaXMuX21vdmUoW3MsYV0sbCxlKX10b3VjaGVuZChlLHQsaSl7aWYoIXRoaXMuX2ZpcnN0VHdvVG91Y2hlcylyZXR1cm47Y29uc3RbbyxyXT10aGlzLl9maXJzdFR3b1RvdWNoZXMsbj1FcihpLHQsbykscz1FcihpLHQscik7biYmc3x8KHRoaXMuX2FjdGl2ZSYmZCgpLHRoaXMucmVzZXQoKSk7fXRvdWNoY2FuY2VsKCl7dGhpcy5yZXNldCgpO31lbmFibGUoZSl7dGhpcy5fZW5hYmxlZD0hMCx0aGlzLl9hcm91bmRDZW50ZXI9ISFlJiZcImNlbnRlclwiPT09ZS5hcm91bmQ7fWRpc2FibGUoKXt0aGlzLl9lbmFibGVkPSExLHRoaXMucmVzZXQoKTt9aXNFbmFibGVkKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9aXNBY3RpdmUoKXtyZXR1cm4gdGhpcy5fYWN0aXZlfX1mdW5jdGlvbiBFcihlLHQsaSl7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspaWYoZVtvXS5pZGVudGlmaWVyPT09aSlyZXR1cm4gdFtvXX1mdW5jdGlvbiBDcihlLHQpe3JldHVybiBNYXRoLmxvZyhlL3QpL01hdGguTE4yfWNsYXNzIE1yIGV4dGVuZHMgVHJ7cmVzZXQoKXtzdXBlci5yZXNldCgpLHRoaXMuX2Rpc3RhbmNlPTAsdGhpcy5fc3RhcnREaXN0YW5jZT0wO31fc3RhcnQoZSl7dGhpcy5fc3RhcnREaXN0YW5jZT10aGlzLl9kaXN0YW5jZT1lWzBdLmRpc3QoZVsxXSk7fV9tb3ZlKGUsdCl7Y29uc3QgaT10aGlzLl9kaXN0YW5jZTtpZih0aGlzLl9kaXN0YW5jZT1lWzBdLmRpc3QoZVsxXSksdGhpcy5fYWN0aXZlfHwhKE1hdGguYWJzKENyKHRoaXMuX2Rpc3RhbmNlLHRoaXMuX3N0YXJ0RGlzdGFuY2UpKTwuMSkpcmV0dXJuIHRoaXMuX2FjdGl2ZT0hMCx7em9vbURlbHRhOkNyKHRoaXMuX2Rpc3RhbmNlLGkpLHBpbmNoQXJvdW5kOnR9fX1mdW5jdGlvbiBJcihlLHQpe3JldHVybiAxODAqZS5hbmdsZVdpdGgodCkvTWF0aC5QSX1jbGFzcyBQciBleHRlbmRzIFRye3Jlc2V0KCl7c3VwZXIucmVzZXQoKSx0aGlzLl9taW5EaWFtZXRlcj0wLHRoaXMuX3N0YXJ0VmVjdG9yPXZvaWQgMCx0aGlzLl92ZWN0b3I9dm9pZCAwO31fc3RhcnQoZSl7dGhpcy5fc3RhcnRWZWN0b3I9dGhpcy5fdmVjdG9yPWVbMF0uc3ViKGVbMV0pLHRoaXMuX21pbkRpYW1ldGVyPWVbMF0uZGlzdChlWzFdKTt9X21vdmUoZSx0KXtjb25zdCBpPXRoaXMuX3ZlY3RvcjtpZih0aGlzLl92ZWN0b3I9ZVswXS5zdWIoZVsxXSksaSYmKHRoaXMuX2FjdGl2ZXx8IXRoaXMuX2lzQmVsb3dUaHJlc2hvbGQodGhpcy5fdmVjdG9yKSkpcmV0dXJuIHRoaXMuX2FjdGl2ZT0hMCx7YmVhcmluZ0RlbHRhOklyKHRoaXMuX3ZlY3RvcixpKSxwaW5jaEFyb3VuZDp0fX1faXNCZWxvd1RocmVzaG9sZChlKXt0aGlzLl9taW5EaWFtZXRlcj1NYXRoLm1pbih0aGlzLl9taW5EaWFtZXRlcixlLm1hZygpKTtjb25zdCB0PTI1LyhNYXRoLlBJKnRoaXMuX21pbkRpYW1ldGVyKSozNjAsaT10aGlzLl9zdGFydFZlY3RvcjtpZighaSlyZXR1cm4gITE7Y29uc3Qgbz1JcihlLGkpO3JldHVybiBNYXRoLmFicyhvKTx0fX1mdW5jdGlvbiBTcihlKXtyZXR1cm4gTWF0aC5hYnMoZS55KT5NYXRoLmFicyhlLngpfWNsYXNzIERyIGV4dGVuZHMgVHJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLl9tYXA9ZTt9cmVzZXQoKXtzdXBlci5yZXNldCgpLHRoaXMuX3ZhbGlkPXZvaWQgMCx0aGlzLl9maXJzdE1vdmU9dm9pZCAwLHRoaXMuX2xhc3RQb2ludHM9dm9pZCAwO31fc3RhcnQoZSl7dGhpcy5fbGFzdFBvaW50cz1lLFNyKGVbMF0uc3ViKGVbMV0pKSYmKHRoaXMuX3ZhbGlkPSExKTt9X21vdmUodCxpLG8pe2NvbnN0IHI9dGhpcy5fbGFzdFBvaW50cztpZighcilyZXR1cm47Y29uc3Qgbj10WzBdLnN1YihyWzBdKSxzPXRbMV0uc3ViKHJbMV0pO3JldHVybiB0aGlzLl9tYXAuX2Nvb3BlcmF0aXZlR2VzdHVyZXMmJiFlLmlzRnVsbHNjcmVlbigpJiZvLnRvdWNoZXMubGVuZ3RoPDN8fCh0aGlzLl92YWxpZD10aGlzLmdlc3R1cmVCZWdpbnNWZXJ0aWNhbGx5KG4scyxvLnRpbWVTdGFtcCksIXRoaXMuX3ZhbGlkKT92b2lkIDA6KHRoaXMuX2xhc3RQb2ludHM9dCx0aGlzLl9hY3RpdmU9ITAse3BpdGNoRGVsdGE6KG4ueStzLnkpLzIqLS41fSl9Z2VzdHVyZUJlZ2luc1ZlcnRpY2FsbHkoZSx0LGkpe2lmKHZvaWQgMCE9PXRoaXMuX3ZhbGlkKXJldHVybiB0aGlzLl92YWxpZDtjb25zdCBvPWUubWFnKCk+PTIscj10Lm1hZygpPj0yO2lmKCFvJiYhcilyZXR1cm47aWYoIW98fCFyKXJldHVybiBudWxsPT10aGlzLl9maXJzdE1vdmUmJih0aGlzLl9maXJzdE1vdmU9aSksaS10aGlzLl9maXJzdE1vdmU8MTAwJiZ2b2lkIDA7Y29uc3Qgbj1lLnk+MD09dC55PjA7cmV0dXJuIFNyKGUpJiZTcih0KSYmbn19Y29uc3QgTHI9e3BhblN0ZXA6MTAwLGJlYXJpbmdTdGVwOjE1LHBpdGNoU3RlcDoxMH07Y2xhc3MgQXJ7Y29uc3RydWN0b3IoKXtjb25zdCBlPUxyO3RoaXMuX3BhblN0ZXA9ZS5wYW5TdGVwLHRoaXMuX2JlYXJpbmdTdGVwPWUuYmVhcmluZ1N0ZXAsdGhpcy5fcGl0Y2hTdGVwPWUucGl0Y2hTdGVwLHRoaXMuX3JvdGF0aW9uRGlzYWJsZWQ9ITE7fWJsdXIoKXt0aGlzLnJlc2V0KCk7fXJlc2V0KCl7dGhpcy5fYWN0aXZlPSExO31rZXlkb3duKGUpe2lmKGUuYWx0S2V5fHxlLmN0cmxLZXl8fGUubWV0YUtleSlyZXR1cm47bGV0IHQ9MCxpPTAsbz0wLHI9MCxuPTA7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSA2MTpjYXNlIDEwNzpjYXNlIDE3MTpjYXNlIDE4Nzp0PTE7YnJlYWs7Y2FzZSAxODk6Y2FzZSAxMDk6Y2FzZSAxNzM6dD0tMTticmVhaztjYXNlIDM3OmUuc2hpZnRLZXk/aT0tMTooZS5wcmV2ZW50RGVmYXVsdCgpLHI9LTEpO2JyZWFrO2Nhc2UgMzk6ZS5zaGlmdEtleT9pPTE6KGUucHJldmVudERlZmF1bHQoKSxyPTEpO2JyZWFrO2Nhc2UgMzg6ZS5zaGlmdEtleT9vPTE6KGUucHJldmVudERlZmF1bHQoKSxuPS0xKTticmVhaztjYXNlIDQwOmUuc2hpZnRLZXk/bz0tMTooZS5wcmV2ZW50RGVmYXVsdCgpLG49MSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59cmV0dXJuIHRoaXMuX3JvdGF0aW9uRGlzYWJsZWQmJihpPTAsbz0wKSx7Y2FtZXJhQW5pbWF0aW9uOnM9Pntjb25zdCBhPXMuZ2V0Wm9vbSgpO3MuZWFzZVRvKHtkdXJhdGlvbjozMDAsZWFzZUlkOlwia2V5Ym9hcmRIYW5kbGVyXCIsZWFzaW5nOnpyLHpvb206dD9NYXRoLnJvdW5kKGEpK3QqKGUuc2hpZnRLZXk/MjoxKTphLGJlYXJpbmc6cy5nZXRCZWFyaW5nKCkraSp0aGlzLl9iZWFyaW5nU3RlcCxwaXRjaDpzLmdldFBpdGNoKCkrbyp0aGlzLl9waXRjaFN0ZXAsb2Zmc2V0Olstcip0aGlzLl9wYW5TdGVwLC1uKnRoaXMuX3BhblN0ZXBdLGNlbnRlcjpzLmdldENlbnRlcigpfSx7b3JpZ2luYWxFdmVudDplfSk7fX19ZW5hYmxlKCl7dGhpcy5fZW5hYmxlZD0hMDt9ZGlzYWJsZSgpe3RoaXMuX2VuYWJsZWQ9ITEsdGhpcy5yZXNldCgpO31pc0VuYWJsZWQoKXtyZXR1cm4gdGhpcy5fZW5hYmxlZH1pc0FjdGl2ZSgpe3JldHVybiB0aGlzLl9hY3RpdmV9ZGlzYWJsZVJvdGF0aW9uKCl7dGhpcy5fcm90YXRpb25EaXNhYmxlZD0hMDt9ZW5hYmxlUm90YXRpb24oKXt0aGlzLl9yb3RhdGlvbkRpc2FibGVkPSExO319ZnVuY3Rpb24genIoZSl7cmV0dXJuIGUqKDItZSl9Y29uc3QgUnI9NC4wMDAyNDQxNDA2MjU7Y2xhc3MgT3J7Y29uc3RydWN0b3IodCxpKXt0aGlzLl9tYXA9dCx0aGlzLl9lbD10LmdldENhbnZhc0NvbnRhaW5lcigpLHRoaXMuX2hhbmRsZXI9aSx0aGlzLl9kZWx0YT0wLHRoaXMuX2RlZmF1bHRab29tUmF0ZT0uMDEsdGhpcy5fd2hlZWxab29tUmF0ZT0uMDAyMjIyMjIyMjIyMjIyMjIyMixlLmJpbmRBbGwoW1wiX29uVGltZW91dFwiLFwiX2FkZFNjcm9sbFpvb21CbG9ja2VyXCIsXCJfc2hvd0Jsb2NrZXJBbGVydFwiXSx0aGlzKTt9c2V0Wm9vbVJhdGUoZSl7dGhpcy5fZGVmYXVsdFpvb21SYXRlPWU7fXNldFdoZWVsWm9vbVJhdGUoZSl7dGhpcy5fd2hlZWxab29tUmF0ZT1lO31pc0VuYWJsZWQoKXtyZXR1cm4gISF0aGlzLl9lbmFibGVkfWlzQWN0aXZlKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZXx8dm9pZCAwIT09dGhpcy5fZmluaXNoVGltZW91dH1pc1pvb21pbmcoKXtyZXR1cm4gISF0aGlzLl96b29taW5nfWVuYWJsZShlKXt0aGlzLmlzRW5hYmxlZCgpfHwodGhpcy5fZW5hYmxlZD0hMCx0aGlzLl9hcm91bmRDZW50ZXI9ISFlJiZcImNlbnRlclwiPT09ZS5hcm91bmQsdGhpcy5fbWFwLl9jb29wZXJhdGl2ZUdlc3R1cmVzJiZ0aGlzLl9hZGRTY3JvbGxab29tQmxvY2tlcigpKTt9ZGlzYWJsZSgpe3RoaXMuaXNFbmFibGVkKCkmJih0aGlzLl9lbmFibGVkPSExLHRoaXMuX21hcC5fY29vcGVyYXRpdmVHZXN0dXJlcyYmKGNsZWFyVGltZW91dCh0aGlzLl9hbGVydFRpbWVyKSx0aGlzLl9hbGVydENvbnRhaW5lci5yZW1vdmUoKSkpO313aGVlbCh0KXtpZighdGhpcy5pc0VuYWJsZWQoKSlyZXR1cm47aWYodGhpcy5fbWFwLl9jb29wZXJhdGl2ZUdlc3R1cmVzKXtpZighKHQuY3RybEtleXx8dC5tZXRhS2V5fHx0aGlzLmlzWm9vbWluZygpfHxlLmlzRnVsbHNjcmVlbigpKSlyZXR1cm4gdm9pZCB0aGlzLl9zaG93QmxvY2tlckFsZXJ0KCk7XCJoaWRkZW5cIiE9PXRoaXMuX2FsZXJ0Q29udGFpbmVyLnN0eWxlLnZpc2liaWxpdHkmJih0aGlzLl9hbGVydENvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5PVwiaGlkZGVuXCIsY2xlYXJUaW1lb3V0KHRoaXMuX2FsZXJ0VGltZXIpKTt9bGV0IGk9dC5kZWx0YU1vZGU9PT1lLndpbmRvdy5XaGVlbEV2ZW50LkRPTV9ERUxUQV9MSU5FPzQwKnQuZGVsdGFZOnQuZGVsdGFZO2NvbnN0IG89ZS5leHBvcnRlZC5ub3coKSxyPW8tKHRoaXMuX2xhc3RXaGVlbEV2ZW50VGltZXx8MCk7dGhpcy5fbGFzdFdoZWVsRXZlbnRUaW1lPW8sMCE9PWkmJmklUnI9PTA/dGhpcy5fdHlwZT1cIndoZWVsXCI6MCE9PWkmJk1hdGguYWJzKGkpPDQ/dGhpcy5fdHlwZT1cInRyYWNrcGFkXCI6cj40MDA/KHRoaXMuX3R5cGU9bnVsbCx0aGlzLl9sYXN0VmFsdWU9aSx0aGlzLl90aW1lb3V0PXNldFRpbWVvdXQodGhpcy5fb25UaW1lb3V0LDQwLHQpKTp0aGlzLl90eXBlfHwodGhpcy5fdHlwZT1NYXRoLmFicyhyKmkpPDIwMD9cInRyYWNrcGFkXCI6XCJ3aGVlbFwiLHRoaXMuX3RpbWVvdXQmJihjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCksdGhpcy5fdGltZW91dD1udWxsLGkrPXRoaXMuX2xhc3RWYWx1ZSkpLHQuc2hpZnRLZXkmJmkmJihpLz00KSx0aGlzLl90eXBlJiYodGhpcy5fbGFzdFdoZWVsRXZlbnQ9dCx0aGlzLl9kZWx0YS09aSx0aGlzLl9hY3RpdmV8fHRoaXMuX3N0YXJ0KHQpKSx0LnByZXZlbnREZWZhdWx0KCk7fV9vblRpbWVvdXQoZSl7dGhpcy5fdHlwZT1cIndoZWVsXCIsdGhpcy5fZGVsdGEtPXRoaXMuX2xhc3RWYWx1ZSx0aGlzLl9hY3RpdmV8fHRoaXMuX3N0YXJ0KGUpO31fc3RhcnQoZSl7aWYoIXRoaXMuX2RlbHRhKXJldHVybjt0aGlzLl9mcmFtZUlkJiYodGhpcy5fZnJhbWVJZD1udWxsKSx0aGlzLl9hY3RpdmU9ITAsdGhpcy5pc1pvb21pbmcoKXx8KHRoaXMuX3pvb21pbmc9ITApLHRoaXMuX2ZpbmlzaFRpbWVvdXQmJihjbGVhclRpbWVvdXQodGhpcy5fZmluaXNoVGltZW91dCksZGVsZXRlIHRoaXMuX2ZpbmlzaFRpbWVvdXQpO2NvbnN0IHQ9cCh0aGlzLl9lbCxlKTt0aGlzLl9hcm91bmRQb2ludD10aGlzLl9hcm91bmRDZW50ZXI/dGhpcy5fbWFwLnRyYW5zZm9ybS5jZW50ZXJQb2ludDp0LHRoaXMuX2Fyb3VuZENvb3JkPXRoaXMuX21hcC50cmFuc2Zvcm0ucG9pbnRDb29yZGluYXRlM0QodGhpcy5fYXJvdW5kUG9pbnQpLHRoaXMuX3RhcmdldFpvb209dm9pZCAwLHRoaXMuX2ZyYW1lSWR8fCh0aGlzLl9mcmFtZUlkPSEwLHRoaXMuX2hhbmRsZXIuX3RyaWdnZXJSZW5kZXJGcmFtZSgpKTt9cmVuZGVyRnJhbWUoKXtpZighdGhpcy5fZnJhbWVJZClyZXR1cm47aWYodGhpcy5fZnJhbWVJZD1udWxsLCF0aGlzLmlzQWN0aXZlKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fbWFwLnRyYW5zZm9ybTtcIndoZWVsXCI9PT10aGlzLl90eXBlJiZ0LnByb2plY3Rpb24ud3JhcCYmKHQuX2NlbnRlci5sbmc+PTE4MHx8dC5fY2VudGVyLmxuZzw9LTE4MCkmJih0aGlzLl9wcmV2RWFzZT1udWxsLHRoaXMuX2Vhc2luZz1udWxsLHRoaXMuX2xhc3RXaGVlbEV2ZW50PW51bGwsdGhpcy5fbGFzdFdoZWVsRXZlbnRUaW1lPTApO2NvbnN0IGk9KCk9PnQuX3RlcnJhaW5FbmFibGVkKCkmJnRoaXMuX2Fyb3VuZENvb3JkP3QuY29tcHV0ZVpvb21SZWxhdGl2ZVRvKHRoaXMuX2Fyb3VuZENvb3JkKTp0Lnpvb207aWYoMCE9PXRoaXMuX2RlbHRhKXtjb25zdCBlPVwid2hlZWxcIj09PXRoaXMuX3R5cGUmJk1hdGguYWJzKHRoaXMuX2RlbHRhKT5Scj90aGlzLl93aGVlbFpvb21SYXRlOnRoaXMuX2RlZmF1bHRab29tUmF0ZTtsZXQgbz0yLygxK01hdGguZXhwKC1NYXRoLmFicyh0aGlzLl9kZWx0YSplKSkpO3RoaXMuX2RlbHRhPDAmJjAhPT1vJiYobz0xL28pO2NvbnN0IHI9aSgpLG49TWF0aC5wb3coMixyKSxzPVwibnVtYmVyXCI9PXR5cGVvZiB0aGlzLl90YXJnZXRab29tP3Quem9vbVNjYWxlKHRoaXMuX3RhcmdldFpvb20pOm47dGhpcy5fdGFyZ2V0Wm9vbT1NYXRoLm1pbih0Lm1heFpvb20sTWF0aC5tYXgodC5taW5ab29tLHQuc2NhbGVab29tKHMqbykpKSxcIndoZWVsXCI9PT10aGlzLl90eXBlJiYodGhpcy5fc3RhcnRab29tPXIsdGhpcy5fZWFzaW5nPXRoaXMuX3Ntb290aE91dEVhc2luZygyMDApKSx0aGlzLl9kZWx0YT0wO31jb25zdCBvPVwibnVtYmVyXCI9PXR5cGVvZiB0aGlzLl90YXJnZXRab29tP3RoaXMuX3RhcmdldFpvb206aSgpLHI9dGhpcy5fc3RhcnRab29tLG49dGhpcy5fZWFzaW5nO2xldCBzLGE9ITE7aWYoXCJ3aGVlbFwiPT09dGhpcy5fdHlwZSYmciYmbil7Y29uc3QgdD1NYXRoLm1pbigoZS5leHBvcnRlZC5ub3coKS10aGlzLl9sYXN0V2hlZWxFdmVudFRpbWUpLzIwMCwxKSxpPW4odCk7cz1lLm51bWJlcihyLG8saSksdDwxP3RoaXMuX2ZyYW1lSWR8fCh0aGlzLl9mcmFtZUlkPSEwKTphPSEwO31lbHNlIHM9byxhPSEwO3JldHVybiB0aGlzLl9hY3RpdmU9ITAsYSYmKHRoaXMuX2FjdGl2ZT0hMSx0aGlzLl9maW5pc2hUaW1lb3V0PXNldFRpbWVvdXQoKCgpPT57dGhpcy5fem9vbWluZz0hMSx0aGlzLl9oYW5kbGVyLl90cmlnZ2VyUmVuZGVyRnJhbWUoKSxkZWxldGUgdGhpcy5fdGFyZ2V0Wm9vbSxkZWxldGUgdGhpcy5fZmluaXNoVGltZW91dDt9KSwyMDApKSx7bm9JbmVydGlhOiEwLG5lZWRzUmVuZGVyRnJhbWU6IWEsem9vbURlbHRhOnMtaSgpLGFyb3VuZDp0aGlzLl9hcm91bmRQb2ludCxhcm91bmRDb29yZDp0aGlzLl9hcm91bmRDb29yZCxvcmlnaW5hbEV2ZW50OnRoaXMuX2xhc3RXaGVlbEV2ZW50fX1fc21vb3RoT3V0RWFzaW5nKHQpe2xldCBpPWUuZWFzZTtpZih0aGlzLl9wcmV2RWFzZSl7Y29uc3QgdD10aGlzLl9wcmV2RWFzZSxvPShlLmV4cG9ydGVkLm5vdygpLXQuc3RhcnQpL3QuZHVyYXRpb24scj10LmVhc2luZyhvKy4wMSktdC5lYXNpbmcobyksbj0uMjcvTWF0aC5zcXJ0KHIqcisxZS00KSouMDEscz1NYXRoLnNxcnQoLjA3MjktbipuKTtpPWUuYmV6aWVyKG4scywuMjUsMSk7fXJldHVybiB0aGlzLl9wcmV2RWFzZT17c3RhcnQ6ZS5leHBvcnRlZC5ub3coKSxkdXJhdGlvbjp0LGVhc2luZzppfSxpfWJsdXIoKXt0aGlzLnJlc2V0KCk7fXJlc2V0KCl7dGhpcy5fYWN0aXZlPSExO31fYWRkU2Nyb2xsWm9vbUJsb2NrZXIoKXt0aGlzLl9tYXAmJiF0aGlzLl9hbGVydENvbnRhaW5lciYmKHRoaXMuX2FsZXJ0Q29udGFpbmVyPW4oXCJkaXZcIixcIm1hcGJveGdsLXNjcm9sbC16b29tLWJsb2NrZXJcIix0aGlzLl9tYXAuX2NvbnRhaW5lciksdGhpcy5fYWxlcnRDb250YWluZXIudGV4dENvbnRlbnQ9LyhNYWN8aVBhZCkvaS50ZXN0KGUud2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpP3RoaXMuX21hcC5fZ2V0VUlTdHJpbmcoXCJTY3JvbGxab29tQmxvY2tlci5DbWRNZXNzYWdlXCIpOnRoaXMuX21hcC5fZ2V0VUlTdHJpbmcoXCJTY3JvbGxab29tQmxvY2tlci5DdHJsTWVzc2FnZVwiKSx0aGlzLl9hbGVydENvbnRhaW5lci5zdHlsZS5mb250U2l6ZT1gJHtNYXRoLm1heCgxMCxNYXRoLm1pbigyNCxNYXRoLmZsb29yKC4wNSp0aGlzLl9lbC5jbGllbnRXaWR0aCkpKX1weGApO31fc2hvd0Jsb2NrZXJBbGVydCgpe3RoaXMuX2FsZXJ0Q29udGFpbmVyLnN0eWxlLnZpc2liaWxpdHk9XCJ2aXNpYmxlXCIsdGhpcy5fYWxlcnRDb250YWluZXIuY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLXNjcm9sbC16b29tLWJsb2NrZXItc2hvd1wiKSx0aGlzLl9hbGVydENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJhbGVydFwiKSxjbGVhclRpbWVvdXQodGhpcy5fYWxlcnRUaW1lciksdGhpcy5fYWxlcnRUaW1lcj1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2FsZXJ0Q29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoXCJtYXBib3hnbC1zY3JvbGwtem9vbS1ibG9ja2VyLXNob3dcIiksdGhpcy5fYWxlcnRDb250YWluZXIuc2V0QXR0cmlidXRlKFwicm9sZVwiLFwibnVsbFwiKTt9KSwyMDApO319Y2xhc3MgQnJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9jbGlja1pvb209ZSx0aGlzLl90YXBab29tPXQ7fWVuYWJsZSgpe3RoaXMuX2NsaWNrWm9vbS5lbmFibGUoKSx0aGlzLl90YXBab29tLmVuYWJsZSgpO31kaXNhYmxlKCl7dGhpcy5fY2xpY2tab29tLmRpc2FibGUoKSx0aGlzLl90YXBab29tLmRpc2FibGUoKTt9aXNFbmFibGVkKCl7cmV0dXJuIHRoaXMuX2NsaWNrWm9vbS5pc0VuYWJsZWQoKSYmdGhpcy5fdGFwWm9vbS5pc0VuYWJsZWQoKX1pc0FjdGl2ZSgpe3JldHVybiB0aGlzLl9jbGlja1pvb20uaXNBY3RpdmUoKXx8dGhpcy5fdGFwWm9vbS5pc0FjdGl2ZSgpfX1jbGFzcyBrcntjb25zdHJ1Y3Rvcigpe3RoaXMucmVzZXQoKTt9cmVzZXQoKXt0aGlzLl9hY3RpdmU9ITE7fWJsdXIoKXt0aGlzLnJlc2V0KCk7fWRibGNsaWNrKGUsdCl7cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSx7Y2FtZXJhQW5pbWF0aW9uOmk9PntpLmVhc2VUbyh7ZHVyYXRpb246MzAwLHpvb206aS5nZXRab29tKCkrKGUuc2hpZnRLZXk/LTE6MSksYXJvdW5kOmkudW5wcm9qZWN0KHQpfSx7b3JpZ2luYWxFdmVudDplfSk7fX19ZW5hYmxlKCl7dGhpcy5fZW5hYmxlZD0hMDt9ZGlzYWJsZSgpe3RoaXMuX2VuYWJsZWQ9ITEsdGhpcy5yZXNldCgpO31pc0VuYWJsZWQoKXtyZXR1cm4gdGhpcy5fZW5hYmxlZH1pc0FjdGl2ZSgpe3JldHVybiB0aGlzLl9hY3RpdmV9fWNsYXNzIEZye2NvbnN0cnVjdG9yKCl7dGhpcy5fdGFwPW5ldyBtcih7bnVtVG91Y2hlczoxLG51bVRhcHM6MX0pLHRoaXMucmVzZXQoKTt9cmVzZXQoKXt0aGlzLl9hY3RpdmU9ITEsdGhpcy5fc3dpcGVQb2ludD12b2lkIDAsdGhpcy5fc3dpcGVUb3VjaD0wLHRoaXMuX3RhcFRpbWU9MCx0aGlzLl90YXAucmVzZXQoKTt9dG91Y2hzdGFydChlLHQsaSl7dGhpcy5fc3dpcGVQb2ludHx8KHRoaXMuX3RhcFRpbWUmJmUudGltZVN0YW1wLXRoaXMuX3RhcFRpbWU+NTAwJiZ0aGlzLnJlc2V0KCksdGhpcy5fdGFwVGltZT9pLmxlbmd0aD4wJiYodGhpcy5fc3dpcGVQb2ludD10WzBdLHRoaXMuX3N3aXBlVG91Y2g9aVswXS5pZGVudGlmaWVyKTp0aGlzLl90YXAudG91Y2hzdGFydChlLHQsaSkpO310b3VjaG1vdmUoZSx0LGkpe2lmKHRoaXMuX3RhcFRpbWUpe2lmKHRoaXMuX3N3aXBlUG9pbnQpe2lmKGlbMF0uaWRlbnRpZmllciE9PXRoaXMuX3N3aXBlVG91Y2gpcmV0dXJuO2NvbnN0IG89dFswXSxyPW8ueS10aGlzLl9zd2lwZVBvaW50Lnk7cmV0dXJuIHRoaXMuX3N3aXBlUG9pbnQ9byxlLnByZXZlbnREZWZhdWx0KCksdGhpcy5fYWN0aXZlPSEwLHt6b29tRGVsdGE6ci8xMjh9fX1lbHNlIHRoaXMuX3RhcC50b3VjaG1vdmUoZSx0LGkpO310b3VjaGVuZChlLHQsaSl7dGhpcy5fdGFwVGltZT90aGlzLl9zd2lwZVBvaW50JiYwPT09aS5sZW5ndGgmJnRoaXMucmVzZXQoKTp0aGlzLl90YXAudG91Y2hlbmQoZSx0LGkpJiYodGhpcy5fdGFwVGltZT1lLnRpbWVTdGFtcCk7fXRvdWNoY2FuY2VsKCl7dGhpcy5yZXNldCgpO31lbmFibGUoKXt0aGlzLl9lbmFibGVkPSEwO31kaXNhYmxlKCl7dGhpcy5fZW5hYmxlZD0hMSx0aGlzLnJlc2V0KCk7fWlzRW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfWlzQWN0aXZlKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZX19Y2xhc3MgVXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuX2VsPWUsdGhpcy5fbW91c2VQYW49dCx0aGlzLl90b3VjaFBhbj1pO31lbmFibGUoZSl7dGhpcy5faW5lcnRpYU9wdGlvbnM9ZXx8e30sdGhpcy5fbW91c2VQYW4uZW5hYmxlKCksdGhpcy5fdG91Y2hQYW4uZW5hYmxlKCksdGhpcy5fZWwuY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLXRvdWNoLWRyYWctcGFuXCIpO31kaXNhYmxlKCl7dGhpcy5fbW91c2VQYW4uZGlzYWJsZSgpLHRoaXMuX3RvdWNoUGFuLmRpc2FibGUoKSx0aGlzLl9lbC5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtdG91Y2gtZHJhZy1wYW5cIik7fWlzRW5hYmxlZCgpe3JldHVybiB0aGlzLl9tb3VzZVBhbi5pc0VuYWJsZWQoKSYmdGhpcy5fdG91Y2hQYW4uaXNFbmFibGVkKCl9aXNBY3RpdmUoKXtyZXR1cm4gdGhpcy5fbW91c2VQYW4uaXNBY3RpdmUoKXx8dGhpcy5fdG91Y2hQYW4uaXNBY3RpdmUoKX19Y2xhc3MgTnJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuX3BpdGNoV2l0aFJvdGF0ZT1lLnBpdGNoV2l0aFJvdGF0ZSx0aGlzLl9tb3VzZVJvdGF0ZT10LHRoaXMuX21vdXNlUGl0Y2g9aTt9ZW5hYmxlKCl7dGhpcy5fbW91c2VSb3RhdGUuZW5hYmxlKCksdGhpcy5fcGl0Y2hXaXRoUm90YXRlJiZ0aGlzLl9tb3VzZVBpdGNoLmVuYWJsZSgpO31kaXNhYmxlKCl7dGhpcy5fbW91c2VSb3RhdGUuZGlzYWJsZSgpLHRoaXMuX21vdXNlUGl0Y2guZGlzYWJsZSgpO31pc0VuYWJsZWQoKXtyZXR1cm4gdGhpcy5fbW91c2VSb3RhdGUuaXNFbmFibGVkKCkmJighdGhpcy5fcGl0Y2hXaXRoUm90YXRlfHx0aGlzLl9tb3VzZVBpdGNoLmlzRW5hYmxlZCgpKX1pc0FjdGl2ZSgpe3JldHVybiB0aGlzLl9tb3VzZVJvdGF0ZS5pc0FjdGl2ZSgpfHx0aGlzLl9tb3VzZVBpdGNoLmlzQWN0aXZlKCl9fWNsYXNzIGpye2NvbnN0cnVjdG9yKGUsdCxpLG8pe3RoaXMuX2VsPWUsdGhpcy5fdG91Y2hab29tPXQsdGhpcy5fdG91Y2hSb3RhdGU9aSx0aGlzLl90YXBEcmFnWm9vbT1vLHRoaXMuX3JvdGF0aW9uRGlzYWJsZWQ9ITEsdGhpcy5fZW5hYmxlZD0hMDt9ZW5hYmxlKGUpe3RoaXMuX3RvdWNoWm9vbS5lbmFibGUoZSksdGhpcy5fcm90YXRpb25EaXNhYmxlZHx8dGhpcy5fdG91Y2hSb3RhdGUuZW5hYmxlKGUpLHRoaXMuX3RhcERyYWdab29tLmVuYWJsZSgpLHRoaXMuX2VsLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC10b3VjaC16b29tLXJvdGF0ZVwiKTt9ZGlzYWJsZSgpe3RoaXMuX3RvdWNoWm9vbS5kaXNhYmxlKCksdGhpcy5fdG91Y2hSb3RhdGUuZGlzYWJsZSgpLHRoaXMuX3RhcERyYWdab29tLmRpc2FibGUoKSx0aGlzLl9lbC5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtdG91Y2gtem9vbS1yb3RhdGVcIik7fWlzRW5hYmxlZCgpe3JldHVybiB0aGlzLl90b3VjaFpvb20uaXNFbmFibGVkKCkmJih0aGlzLl9yb3RhdGlvbkRpc2FibGVkfHx0aGlzLl90b3VjaFJvdGF0ZS5pc0VuYWJsZWQoKSkmJnRoaXMuX3RhcERyYWdab29tLmlzRW5hYmxlZCgpfWlzQWN0aXZlKCl7cmV0dXJuIHRoaXMuX3RvdWNoWm9vbS5pc0FjdGl2ZSgpfHx0aGlzLl90b3VjaFJvdGF0ZS5pc0FjdGl2ZSgpfHx0aGlzLl90YXBEcmFnWm9vbS5pc0FjdGl2ZSgpfWRpc2FibGVSb3RhdGlvbigpe3RoaXMuX3JvdGF0aW9uRGlzYWJsZWQ9ITAsdGhpcy5fdG91Y2hSb3RhdGUuZGlzYWJsZSgpO31lbmFibGVSb3RhdGlvbigpe3RoaXMuX3JvdGF0aW9uRGlzYWJsZWQ9ITEsdGhpcy5fdG91Y2hab29tLmlzRW5hYmxlZCgpJiZ0aGlzLl90b3VjaFJvdGF0ZS5lbmFibGUoKTt9fWNvbnN0IEdyPWU9PmUuem9vbXx8ZS5kcmFnfHxlLnBpdGNofHxlLnJvdGF0ZTtjbGFzcyBaciBleHRlbmRzIGUuRXZlbnR7fWNsYXNzIFZye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdGFudHM9WzEsMSwuMDFdLHRoaXMucmFkaXVzPTA7fXNldHVwKHQsaSl7Y29uc3Qgbz1lLnN1YihbXSxpLHQpO3RoaXMucmFkaXVzPWUubGVuZ3RoKG9bMl08MD9lLmRpdihbXSxvLHRoaXMuY29uc3RhbnRzKTpbb1swXSxvWzFdLDBdKTt9cHJvamVjdFJheSh0KXtlLmRpdih0LHQsdGhpcy5jb25zdGFudHMpLGUubm9ybWFsaXplKHQsdCksZS5tdWwkMSh0LHQsdGhpcy5jb25zdGFudHMpO2NvbnN0IGk9ZS5zY2FsZSQyKFtdLHQsdGhpcy5yYWRpdXMpO2lmKGlbMl0+MCl7Y29uc3QgdD1lLnNjYWxlJDIoW10sWzAsMCwxXSxlLmRvdChpLFswLDAsMV0pKSxvPWUuc2NhbGUkMihbXSxlLm5vcm1hbGl6ZShbXSxbaVswXSxpWzFdLDBdKSx0aGlzLnJhZGl1cykscj1lLmFkZChbXSxpLGUuc2NhbGUkMihbXSxlLnN1YihbXSxlLmFkZChbXSxvLHQpLGkpLDIpKTtpWzBdPXJbMF0saVsxXT1yWzFdO31yZXR1cm4gaX19ZnVuY3Rpb24gV3IoZSl7cmV0dXJuIGUucGFuRGVsdGEmJmUucGFuRGVsdGEubWFnKCl8fGUuem9vbURlbHRhfHxlLmJlYXJpbmdEZWx0YXx8ZS5waXRjaERlbHRhfWNsYXNzIFhye2NvbnN0cnVjdG9yKHQsaSl7dGhpcy5fbWFwPXQsdGhpcy5fZWw9dGhpcy5fbWFwLmdldENhbnZhc0NvbnRhaW5lcigpLHRoaXMuX2hhbmRsZXJzPVtdLHRoaXMuX2hhbmRsZXJzQnlJZD17fSx0aGlzLl9jaGFuZ2VzPVtdLHRoaXMuX2luZXJ0aWE9bmV3IHJyKHQpLHRoaXMuX2JlYXJpbmdTbmFwPWkuYmVhcmluZ1NuYXAsdGhpcy5fcHJldmlvdXNBY3RpdmVIYW5kbGVycz17fSx0aGlzLl90cmFja2luZ0VsbGlwc29pZD1uZXcgVnIsdGhpcy5fZHJhZ09yaWdpbj1udWxsLHRoaXMuX2V2ZW50c0luUHJvZ3Jlc3M9e30sdGhpcy5fYWRkRGVmYXVsdEhhbmRsZXJzKGkpLGUuYmluZEFsbChbXCJoYW5kbGVFdmVudFwiLFwiaGFuZGxlV2luZG93RXZlbnRcIl0sdGhpcyk7Y29uc3Qgbz10aGlzLl9lbDt0aGlzLl9saXN0ZW5lcnM9W1tvLFwidG91Y2hzdGFydFwiLHtwYXNzaXZlOiEwfV0sW28sXCJ0b3VjaG1vdmVcIix7cGFzc2l2ZTohMX1dLFtvLFwidG91Y2hlbmRcIix2b2lkIDBdLFtvLFwidG91Y2hjYW5jZWxcIix2b2lkIDBdLFtvLFwibW91c2Vkb3duXCIsdm9pZCAwXSxbbyxcIm1vdXNlbW92ZVwiLHZvaWQgMF0sW28sXCJtb3VzZXVwXCIsdm9pZCAwXSxbZS53aW5kb3cuZG9jdW1lbnQsXCJtb3VzZW1vdmVcIix7Y2FwdHVyZTohMH1dLFtlLndpbmRvdy5kb2N1bWVudCxcIm1vdXNldXBcIix2b2lkIDBdLFtvLFwibW91c2VvdmVyXCIsdm9pZCAwXSxbbyxcIm1vdXNlb3V0XCIsdm9pZCAwXSxbbyxcImRibGNsaWNrXCIsdm9pZCAwXSxbbyxcImNsaWNrXCIsdm9pZCAwXSxbbyxcImtleWRvd25cIix7Y2FwdHVyZTohMX1dLFtvLFwia2V5dXBcIix2b2lkIDBdLFtvLFwid2hlZWxcIix7cGFzc2l2ZTohMX1dLFtvLFwiY29udGV4dG1lbnVcIix2b2lkIDBdLFtlLndpbmRvdyxcImJsdXJcIix2b2lkIDBdXTtmb3IoY29uc3RbdCxpLG9db2YgdGhpcy5fbGlzdGVuZXJzKXQuYWRkRXZlbnRMaXN0ZW5lcihpLHQ9PT1lLndpbmRvdy5kb2N1bWVudD90aGlzLmhhbmRsZVdpbmRvd0V2ZW50OnRoaXMuaGFuZGxlRXZlbnQsbyk7fWRlc3Ryb3koKXtmb3IoY29uc3RbdCxpLG9db2YgdGhpcy5fbGlzdGVuZXJzKXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihpLHQ9PT1lLndpbmRvdy5kb2N1bWVudD90aGlzLmhhbmRsZVdpbmRvd0V2ZW50OnRoaXMuaGFuZGxlRXZlbnQsbyk7fV9hZGREZWZhdWx0SGFuZGxlcnMoZSl7Y29uc3QgdD10aGlzLl9tYXAsaT10LmdldENhbnZhc0NvbnRhaW5lcigpO3RoaXMuX2FkZChcIm1hcEV2ZW50XCIsbmV3IGhyKHQsZSkpO2NvbnN0IG89dC5ib3hab29tPW5ldyBfcih0LGUpO3RoaXMuX2FkZChcImJveFpvb21cIixvKTtjb25zdCByPW5ldyBmcixuPW5ldyBrcjt0LmRvdWJsZUNsaWNrWm9vbT1uZXcgQnIobixyKSx0aGlzLl9hZGQoXCJ0YXBab29tXCIsciksdGhpcy5fYWRkKFwiY2xpY2tab29tXCIsbik7Y29uc3Qgcz1uZXcgRnI7dGhpcy5fYWRkKFwidGFwRHJhZ1pvb21cIixzKTtjb25zdCBhPXQudG91Y2hQaXRjaD1uZXcgRHIodCk7dGhpcy5fYWRkKFwidG91Y2hQaXRjaFwiLGEpO2NvbnN0IGw9bmV3IHlyKGUpLGM9bmV3IGJyKGUpO3QuZHJhZ1JvdGF0ZT1uZXcgTnIoZSxsLGMpLHRoaXMuX2FkZChcIm1vdXNlUm90YXRlXCIsbCxbXCJtb3VzZVBpdGNoXCJdKSx0aGlzLl9hZGQoXCJtb3VzZVBpdGNoXCIsYyxbXCJtb3VzZVJvdGF0ZVwiXSk7Y29uc3QgaD1uZXcgeHIoZSksdT1uZXcgd3IodCxlKTt0LmRyYWdQYW49bmV3IFVyKGksaCx1KSx0aGlzLl9hZGQoXCJtb3VzZVBhblwiLGgpLHRoaXMuX2FkZChcInRvdWNoUGFuXCIsdSxbXCJ0b3VjaFpvb21cIixcInRvdWNoUm90YXRlXCJdKTtjb25zdCBfPW5ldyBQcixkPW5ldyBNcjt0LnRvdWNoWm9vbVJvdGF0ZT1uZXcganIoaSxkLF8scyksdGhpcy5fYWRkKFwidG91Y2hSb3RhdGVcIixfLFtcInRvdWNoUGFuXCIsXCJ0b3VjaFpvb21cIl0pLHRoaXMuX2FkZChcInRvdWNoWm9vbVwiLGQsW1widG91Y2hQYW5cIixcInRvdWNoUm90YXRlXCJdKSx0aGlzLl9hZGQoXCJibG9ja2FibGVNYXBFdmVudFwiLG5ldyB1cih0KSk7Y29uc3QgcD10LnNjcm9sbFpvb209bmV3IE9yKHQsdGhpcyk7dGhpcy5fYWRkKFwic2Nyb2xsWm9vbVwiLHAsW1wibW91c2VQYW5cIl0pO2NvbnN0IG09dC5rZXlib2FyZD1uZXcgQXI7dGhpcy5fYWRkKFwia2V5Ym9hcmRcIixtKTtmb3IoY29uc3QgaSBvZiBbXCJib3hab29tXCIsXCJkb3VibGVDbGlja1pvb21cIixcInRhcERyYWdab29tXCIsXCJ0b3VjaFBpdGNoXCIsXCJkcmFnUm90YXRlXCIsXCJkcmFnUGFuXCIsXCJ0b3VjaFpvb21Sb3RhdGVcIixcInNjcm9sbFpvb21cIixcImtleWJvYXJkXCJdKWUuaW50ZXJhY3RpdmUmJmVbaV0mJnRbaV0uZW5hYmxlKGVbaV0pO31fYWRkKGUsdCxpKXt0aGlzLl9oYW5kbGVycy5wdXNoKHtoYW5kbGVyTmFtZTplLGhhbmRsZXI6dCxhbGxvd2VkOml9KSx0aGlzLl9oYW5kbGVyc0J5SWRbZV09dDt9c3RvcChlKXtpZighdGhpcy5fdXBkYXRpbmdDYW1lcmEpe2Zvcihjb25zdHtoYW5kbGVyOmV9b2YgdGhpcy5faGFuZGxlcnMpZS5yZXNldCgpO3RoaXMuX2luZXJ0aWEuY2xlYXIoKSx0aGlzLl9maXJlRXZlbnRzKHt9LHt9LGUpLHRoaXMuX2NoYW5nZXM9W107fX1pc0FjdGl2ZSgpe2Zvcihjb25zdHtoYW5kbGVyOmV9b2YgdGhpcy5faGFuZGxlcnMpaWYoZS5pc0FjdGl2ZSgpKXJldHVybiAhMDtyZXR1cm4gITF9aXNab29taW5nKCl7cmV0dXJuICEhdGhpcy5fZXZlbnRzSW5Qcm9ncmVzcy56b29tfHx0aGlzLl9tYXAuc2Nyb2xsWm9vbS5pc1pvb21pbmcoKX1pc1JvdGF0aW5nKCl7cmV0dXJuICEhdGhpcy5fZXZlbnRzSW5Qcm9ncmVzcy5yb3RhdGV9aXNNb3ZpbmcoKXtyZXR1cm4gISFHcih0aGlzLl9ldmVudHNJblByb2dyZXNzKXx8dGhpcy5pc1pvb21pbmcoKX1faXNEcmFnZ2luZygpe3JldHVybiAhIXRoaXMuX2V2ZW50c0luUHJvZ3Jlc3MuZHJhZ31fYmxvY2tlZEJ5QWN0aXZlKGUsdCxpKXtmb3IoY29uc3QgbyBpbiBlKWlmKG8hPT1pJiYoIXR8fHQuaW5kZXhPZihvKTwwKSlyZXR1cm4gITA7cmV0dXJuICExfWhhbmRsZVdpbmRvd0V2ZW50KGUpe3RoaXMuaGFuZGxlRXZlbnQoZSxgJHtlLnR5cGV9V2luZG93YCk7fV9nZXRNYXBUb3VjaGVzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl0aGlzLl9lbC5jb250YWlucyhpLnRhcmdldCkmJnQucHVzaChpKTtyZXR1cm4gdH1oYW5kbGVFdmVudChlLHQpe3RoaXMuX3VwZGF0aW5nQ2FtZXJhPSEwO2NvbnN0IGk9XCJyZW5kZXJGcmFtZVwiPT09ZS50eXBlLG89aT92b2lkIDA6ZSxyPXtuZWVkc1JlbmRlckZyYW1lOiExfSxuPXt9LHM9e30sYT1lLnRvdWNoZXM/dGhpcy5fZ2V0TWFwVG91Y2hlcyhlLnRvdWNoZXMpOnZvaWQgMCxsPWE/bSh0aGlzLl9lbCxhKTppP3ZvaWQgMDpwKHRoaXMuX2VsLGUpO2Zvcihjb25zdHtoYW5kbGVyTmFtZTppLGhhbmRsZXI6YyxhbGxvd2VkOmh9b2YgdGhpcy5faGFuZGxlcnMpe2lmKCFjLmlzRW5hYmxlZCgpKWNvbnRpbnVlO2xldCB1O3RoaXMuX2Jsb2NrZWRCeUFjdGl2ZShzLGgsaSk/Yy5yZXNldCgpOmNbdHx8ZS50eXBlXSYmKHU9Y1t0fHxlLnR5cGVdKGUsbCxhKSx0aGlzLm1lcmdlSGFuZGxlclJlc3VsdChyLG4sdSxpLG8pLHUmJnUubmVlZHNSZW5kZXJGcmFtZSYmdGhpcy5fdHJpZ2dlclJlbmRlckZyYW1lKCkpLCh1fHxjLmlzQWN0aXZlKCkpJiYoc1tpXT1jKTt9Y29uc3QgYz17fTtmb3IoY29uc3QgZSBpbiB0aGlzLl9wcmV2aW91c0FjdGl2ZUhhbmRsZXJzKXNbZV18fChjW2VdPW8pO3RoaXMuX3ByZXZpb3VzQWN0aXZlSGFuZGxlcnM9cywoT2JqZWN0LmtleXMoYykubGVuZ3RofHxXcihyKSkmJih0aGlzLl9jaGFuZ2VzLnB1c2goW3IsbixjXSksdGhpcy5fdHJpZ2dlclJlbmRlckZyYW1lKCkpLChPYmplY3Qua2V5cyhzKS5sZW5ndGh8fFdyKHIpKSYmdGhpcy5fbWFwLl9zdG9wKCEwKSx0aGlzLl91cGRhdGluZ0NhbWVyYT0hMTtjb25zdHtjYW1lcmFBbmltYXRpb246aH09cjtoJiYodGhpcy5faW5lcnRpYS5jbGVhcigpLHRoaXMuX2ZpcmVFdmVudHMoe30se30sITApLHRoaXMuX2NoYW5nZXM9W10saCh0aGlzLl9tYXApKTt9bWVyZ2VIYW5kbGVyUmVzdWx0KHQsaSxvLHIsbil7aWYoIW8pcmV0dXJuO2UuZXh0ZW5kKHQsbyk7Y29uc3Qgcz17aGFuZGxlck5hbWU6cixvcmlnaW5hbEV2ZW50Om8ub3JpZ2luYWxFdmVudHx8bn07dm9pZCAwIT09by56b29tRGVsdGEmJihpLnpvb209cyksdm9pZCAwIT09by5wYW5EZWx0YSYmKGkuZHJhZz1zKSx2b2lkIDAhPT1vLnBpdGNoRGVsdGEmJihpLnBpdGNoPXMpLHZvaWQgMCE9PW8uYmVhcmluZ0RlbHRhJiYoaS5yb3RhdGU9cyk7fV9hcHBseUNoYW5nZXMoKXtjb25zdCB0PXt9LGk9e30sbz17fTtmb3IoY29uc3RbcixuLHNdb2YgdGhpcy5fY2hhbmdlcylyLnBhbkRlbHRhJiYodC5wYW5EZWx0YT0odC5wYW5EZWx0YXx8bmV3IGUuUG9pbnQoMCwwKSkuX2FkZChyLnBhbkRlbHRhKSksci56b29tRGVsdGEmJih0Lnpvb21EZWx0YT0odC56b29tRGVsdGF8fDApK3Iuem9vbURlbHRhKSxyLmJlYXJpbmdEZWx0YSYmKHQuYmVhcmluZ0RlbHRhPSh0LmJlYXJpbmdEZWx0YXx8MCkrci5iZWFyaW5nRGVsdGEpLHIucGl0Y2hEZWx0YSYmKHQucGl0Y2hEZWx0YT0odC5waXRjaERlbHRhfHwwKStyLnBpdGNoRGVsdGEpLHZvaWQgMCE9PXIuYXJvdW5kJiYodC5hcm91bmQ9ci5hcm91bmQpLHZvaWQgMCE9PXIuYXJvdW5kQ29vcmQmJih0LmFyb3VuZENvb3JkPXIuYXJvdW5kQ29vcmQpLHZvaWQgMCE9PXIucGluY2hBcm91bmQmJih0LnBpbmNoQXJvdW5kPXIucGluY2hBcm91bmQpLHIubm9JbmVydGlhJiYodC5ub0luZXJ0aWE9ci5ub0luZXJ0aWEpLGUuZXh0ZW5kKGksbiksZS5leHRlbmQobyxzKTt0aGlzLl91cGRhdGVNYXBUcmFuc2Zvcm0odCxpLG8pLHRoaXMuX2NoYW5nZXM9W107fV91cGRhdGVNYXBUcmFuc2Zvcm0odCxpLG8pe2NvbnN0IHI9dGhpcy5fbWFwLG49ci50cmFuc2Zvcm0scz1lPT5bZS54LGUueSxlLnpdO2lmKChlPT57Y29uc3QgdD10aGlzLl9ldmVudHNJblByb2dyZXNzLmRyYWc7cmV0dXJuIHQmJiF0aGlzLl9oYW5kbGVyc0J5SWRbdC5oYW5kbGVyTmFtZV0uaXNBY3RpdmUoKX0pKCkmJiFXcih0KSl7Y29uc3QgZT1uLnpvb207bi5jYW1lcmFFbGV2YXRpb25SZWZlcmVuY2U9XCJzZWFcIixuLnJlY2VudGVyT25UZXJyYWluKCksbi5jYW1lcmFFbGV2YXRpb25SZWZlcmVuY2U9XCJncm91bmRcIixlIT09bi56b29tJiZ0aGlzLl9tYXAuX3VwZGF0ZSghMCk7fWlmKG4uX2lzQ2FtZXJhQ29uc3RyYWluZWQmJnIuX3N0b3AoITApLCFXcih0KSlyZXR1cm4gdm9pZCB0aGlzLl9maXJlRXZlbnRzKGksbywhMCk7bGV0e3BhbkRlbHRhOmEsem9vbURlbHRhOmwsYmVhcmluZ0RlbHRhOmMscGl0Y2hEZWx0YTpoLGFyb3VuZDp1LGFyb3VuZENvb3JkOl8scGluY2hBcm91bmQ6ZH09dDtuLl9pc0NhbWVyYUNvbnN0cmFpbmVkJiYobD4wJiYobD0wKSxuLl9pc0NhbWVyYUNvbnN0cmFpbmVkPSExKSx2b2lkIDAhPT1kJiYodT1kKSwobHx8KGU9PmlbZV0mJiF0aGlzLl9ldmVudHNJblByb2dyZXNzW2VdKShcImRyYWdcIikpJiZ1JiYodGhpcy5fZHJhZ09yaWdpbj1zKG4ucG9pbnRDb29yZGluYXRlM0QodSkpLHRoaXMuX3RyYWNraW5nRWxsaXBzb2lkLnNldHVwKG4uX2NhbWVyYS5wb3NpdGlvbix0aGlzLl9kcmFnT3JpZ2luKSksbi5jYW1lcmFFbGV2YXRpb25SZWZlcmVuY2U9XCJzZWFcIixyLl9zdG9wKCEwKSx1PXV8fHIudHJhbnNmb3JtLmNlbnRlclBvaW50LGMmJihuLmJlYXJpbmcrPWMpLGgmJihuLnBpdGNoKz1oKSxuLl91cGRhdGVDYW1lcmFTdGF0ZSgpO2NvbnN0IHA9WzAsMCwwXTtpZihhKWlmKFwibWVyY2F0b3JcIj09PW4ucHJvamVjdGlvbi5uYW1lKXtjb25zdCBlPXRoaXMuX3RyYWNraW5nRWxsaXBzb2lkLnByb2plY3RSYXkobi5zY3JlZW5Qb2ludFRvTWVyY2F0b3JSYXkodSkuZGlyKSx0PXRoaXMuX3RyYWNraW5nRWxsaXBzb2lkLnByb2plY3RSYXkobi5zY3JlZW5Qb2ludFRvTWVyY2F0b3JSYXkodS5zdWIoYSkpLmRpcik7cFswXT10WzBdLWVbMF0scFsxXT10WzFdLWVbMV07fWVsc2Uge2NvbnN0IHQ9bi5wb2ludENvb3JkaW5hdGUodSk7aWYoXCJnbG9iZVwiPT09bi5wcm9qZWN0aW9uLm5hbWUpe2E9YS5yb3RhdGUoLW4uYW5nbGUpO2NvbnN0IGk9bi5fcGl4ZWxzUGVyTWVyY2F0b3JQaXhlbC9uLndvcmxkU2l6ZTtwWzBdPS1hLngqZS5tZXJjYXRvclNjYWxlKGUubGF0RnJvbU1lcmNhdG9yWSh0LnkpKSppLHBbMV09LWEueSplLm1lcmNhdG9yU2NhbGUobi5jZW50ZXIubGF0KSppO31lbHNlIHtjb25zdCBlPW4ucG9pbnRDb29yZGluYXRlKHUuc3ViKGEpKTt0JiZlJiYocFswXT1lLngtdC54LHBbMV09ZS55LXQueSk7fX1jb25zdCBtPW4uem9vbSxmPVswLDAsMF07aWYobCl7Y29uc3QgdD1zKF98fG4ucG9pbnRDb29yZGluYXRlM0QodSkpLGk9e2RpcjplLm5vcm1hbGl6ZShbXSxlLnN1YihbXSx0LG4uX2NhbWVyYS5wb3NpdGlvbikpfTtpZihpLmRpclsyXTwwKXtjb25zdCBvPW4uem9vbURlbHRhVG9Nb3ZlbWVudCh0LGwpO2Uuc2NhbGUkMihmLGkuZGlyLG8pO319Y29uc3QgZz1lLmFkZChwLHAsZik7bi5fdHJhbnNsYXRlQ2FtZXJhQ29uc3RyYWluZWQoZyksbCYmTWF0aC5hYnMobi56b29tLW0pPjFlLTQmJm4ucmVjZW50ZXJPblRlcnJhaW4oKSxuLmNhbWVyYUVsZXZhdGlvblJlZmVyZW5jZT1cImdyb3VuZFwiLHRoaXMuX21hcC5fdXBkYXRlKCksdC5ub0luZXJ0aWF8fHRoaXMuX2luZXJ0aWEucmVjb3JkKHQpLHRoaXMuX2ZpcmVFdmVudHMoaSxvLCEwKTt9X2ZpcmVFdmVudHModCxpLG8pe2NvbnN0IHI9R3IodGhpcy5fZXZlbnRzSW5Qcm9ncmVzcyksbj1Hcih0KSxzPXt9O2Zvcihjb25zdCBlIGluIHQpe2NvbnN0e29yaWdpbmFsRXZlbnQ6aX09dFtlXTt0aGlzLl9ldmVudHNJblByb2dyZXNzW2VdfHwoc1tgJHtlfXN0YXJ0YF09aSksdGhpcy5fZXZlbnRzSW5Qcm9ncmVzc1tlXT10W2VdO30hciYmbiYmdGhpcy5fZmlyZUV2ZW50KFwibW92ZXN0YXJ0XCIsbi5vcmlnaW5hbEV2ZW50KTtmb3IoY29uc3QgZSBpbiBzKXRoaXMuX2ZpcmVFdmVudChlLHNbZV0pO24mJnRoaXMuX2ZpcmVFdmVudChcIm1vdmVcIixuLm9yaWdpbmFsRXZlbnQpO2Zvcihjb25zdCBlIGluIHQpe2NvbnN0e29yaWdpbmFsRXZlbnQ6aX09dFtlXTt0aGlzLl9maXJlRXZlbnQoZSxpKTt9Y29uc3QgYT17fTtsZXQgbDtmb3IoY29uc3QgZSBpbiB0aGlzLl9ldmVudHNJblByb2dyZXNzKXtjb25zdHtoYW5kbGVyTmFtZTp0LG9yaWdpbmFsRXZlbnQ6b309dGhpcy5fZXZlbnRzSW5Qcm9ncmVzc1tlXTt0aGlzLl9oYW5kbGVyc0J5SWRbdF0uaXNBY3RpdmUoKXx8KGRlbGV0ZSB0aGlzLl9ldmVudHNJblByb2dyZXNzW2VdLGw9aVt0XXx8byxhW2Ake2V9ZW5kYF09bCk7fWZvcihjb25zdCBlIGluIGEpdGhpcy5fZmlyZUV2ZW50KGUsYVtlXSk7Y29uc3QgYz1Hcih0aGlzLl9ldmVudHNJblByb2dyZXNzKTtpZihvJiYocnx8bikmJiFjKXt0aGlzLl91cGRhdGluZ0NhbWVyYT0hMDtjb25zdCB0PXRoaXMuX2luZXJ0aWEuX29uTW92ZUVuZCh0aGlzLl9tYXAuZHJhZ1Bhbi5faW5lcnRpYU9wdGlvbnMpLGk9ZT0+MCE9PWUmJi10aGlzLl9iZWFyaW5nU25hcDxlJiZlPHRoaXMuX2JlYXJpbmdTbmFwO3Q/KGkodC5iZWFyaW5nfHx0aGlzLl9tYXAuZ2V0QmVhcmluZygpKSYmKHQuYmVhcmluZz0wKSx0aGlzLl9tYXAuZWFzZVRvKHQse29yaWdpbmFsRXZlbnQ6bH0pKToodGhpcy5fbWFwLmZpcmUobmV3IGUuRXZlbnQoXCJtb3ZlZW5kXCIse29yaWdpbmFsRXZlbnQ6bH0pKSxpKHRoaXMuX21hcC5nZXRCZWFyaW5nKCkpJiZ0aGlzLl9tYXAucmVzZXROb3J0aCgpKSx0aGlzLl91cGRhdGluZ0NhbWVyYT0hMTt9fV9maXJlRXZlbnQodCxpKXt0aGlzLl9tYXAuZmlyZShuZXcgZS5FdmVudCh0LGk/e29yaWdpbmFsRXZlbnQ6aX06e30pKTt9X3JlcXVlc3RGcmFtZSgpe3JldHVybiB0aGlzLl9tYXAudHJpZ2dlclJlcGFpbnQoKSx0aGlzLl9tYXAuX3JlbmRlclRhc2tRdWV1ZS5hZGQoKGU9Pnt0aGlzLl9mcmFtZUlkPXZvaWQgMCx0aGlzLmhhbmRsZUV2ZW50KG5ldyBacihcInJlbmRlckZyYW1lXCIse3RpbWVTdGFtcDplfSkpLHRoaXMuX2FwcGx5Q2hhbmdlcygpO30pKX1fdHJpZ2dlclJlbmRlckZyYW1lKCl7dm9pZCAwPT09dGhpcy5fZnJhbWVJZCYmKHRoaXMuX2ZyYW1lSWQ9dGhpcy5fcmVxdWVzdEZyYW1lKCkpO319Y29uc3QgcXI9XCJtYXAuc2V0RnJlZUNhbWVyYU9wdGlvbnMoLi4uKSBhbmQgbWFwLmdldEZyZWVDYW1lcmFPcHRpb25zKCkgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGZvciBub24tbWVyY2F0b3IgcHJvamVjdGlvbnMuXCI7Y2xhc3MgJHIgZXh0ZW5kcyBlLkV2ZW50ZWR7Y29uc3RydWN0b3IodCxpKXtzdXBlcigpLHRoaXMuX21vdmluZz0hMSx0aGlzLl96b29taW5nPSExLHRoaXMudHJhbnNmb3JtPXQsdGhpcy5fYmVhcmluZ1NuYXA9aS5iZWFyaW5nU25hcCx0aGlzLl9yZXNwZWN0UHJlZmVyc1JlZHVjZWRNb3Rpb249ITEhPT1pLnJlc3BlY3RQcmVmZXJzUmVkdWNlZE1vdGlvbixlLmJpbmRBbGwoW1wiX3JlbmRlckZyYW1lQ2FsbGJhY2tcIl0sdGhpcyk7fWdldENlbnRlcigpe3JldHVybiBuZXcgZS5MbmdMYXQodGhpcy50cmFuc2Zvcm0uY2VudGVyLmxuZyx0aGlzLnRyYW5zZm9ybS5jZW50ZXIubGF0KX1zZXRDZW50ZXIoZSx0KXtyZXR1cm4gdGhpcy5qdW1wVG8oe2NlbnRlcjplfSx0KX1wYW5CeSh0LGksbyl7cmV0dXJuIHQ9ZS5Qb2ludC5jb252ZXJ0KHQpLm11bHQoLTEpLHRoaXMucGFuVG8odGhpcy50cmFuc2Zvcm0uY2VudGVyLGUuZXh0ZW5kKHtvZmZzZXQ6dH0saSksbyl9cGFuVG8odCxpLG8pe3JldHVybiB0aGlzLmVhc2VUbyhlLmV4dGVuZCh7Y2VudGVyOnR9LGkpLG8pfWdldFpvb20oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0uem9vbX1zZXRab29tKGUsdCl7cmV0dXJuIHRoaXMuanVtcFRvKHt6b29tOmV9LHQpLHRoaXN9em9vbVRvKHQsaSxvKXtyZXR1cm4gdGhpcy5lYXNlVG8oZS5leHRlbmQoe3pvb206dH0saSksbyl9em9vbUluKGUsdCl7cmV0dXJuIHRoaXMuem9vbVRvKHRoaXMuZ2V0Wm9vbSgpKzEsZSx0KSx0aGlzfXpvb21PdXQoZSx0KXtyZXR1cm4gdGhpcy56b29tVG8odGhpcy5nZXRab29tKCktMSxlLHQpLHRoaXN9Z2V0QmVhcmluZygpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5iZWFyaW5nfXNldEJlYXJpbmcoZSx0KXtyZXR1cm4gdGhpcy5qdW1wVG8oe2JlYXJpbmc6ZX0sdCksdGhpc31nZXRQYWRkaW5nKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLnBhZGRpbmd9c2V0UGFkZGluZyhlLHQpe3JldHVybiB0aGlzLmp1bXBUbyh7cGFkZGluZzplfSx0KSx0aGlzfXJvdGF0ZVRvKHQsaSxvKXtyZXR1cm4gdGhpcy5lYXNlVG8oZS5leHRlbmQoe2JlYXJpbmc6dH0saSksbyl9cmVzZXROb3J0aCh0LGkpe3JldHVybiB0aGlzLnJvdGF0ZVRvKDAsZS5leHRlbmQoe2R1cmF0aW9uOjFlM30sdCksaSksdGhpc31yZXNldE5vcnRoUGl0Y2godCxpKXtyZXR1cm4gdGhpcy5lYXNlVG8oZS5leHRlbmQoe2JlYXJpbmc6MCxwaXRjaDowLGR1cmF0aW9uOjFlM30sdCksaSksdGhpc31zbmFwVG9Ob3J0aChlLHQpe3JldHVybiBNYXRoLmFicyh0aGlzLmdldEJlYXJpbmcoKSk8dGhpcy5fYmVhcmluZ1NuYXA/dGhpcy5yZXNldE5vcnRoKGUsdCk6dGhpc31nZXRQaXRjaCgpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5waXRjaH1zZXRQaXRjaChlLHQpe3JldHVybiB0aGlzLmp1bXBUbyh7cGl0Y2g6ZX0sdCksdGhpc31jYW1lcmFGb3JCb3VuZHModCxpKXt0PWUuTG5nTGF0Qm91bmRzLmNvbnZlcnQodCk7Y29uc3Qgbz1pJiZpLmJlYXJpbmd8fDAscj1pJiZpLnBpdGNofHwwLG49dC5nZXROb3J0aFdlc3QoKSxzPXQuZ2V0U291dGhFYXN0KCk7cmV0dXJuIHRoaXMuX2NhbWVyYUZvckJvdW5kcyh0aGlzLnRyYW5zZm9ybSxuLHMsbyxyLGkpfV9leHRlbmRDYW1lcmFPcHRpb25zKHQpe2NvbnN0IGk9e3RvcDowLGJvdHRvbTowLHJpZ2h0OjAsbGVmdDowfTtpZihcIm51bWJlclwiPT10eXBlb2YodD1lLmV4dGVuZCh7cGFkZGluZzppLG9mZnNldDpbMCwwXSxtYXhab29tOnRoaXMudHJhbnNmb3JtLm1heFpvb219LHQpKS5wYWRkaW5nKXtjb25zdCBlPXQucGFkZGluZzt0LnBhZGRpbmc9e3RvcDplLGJvdHRvbTplLHJpZ2h0OmUsbGVmdDplfTt9cmV0dXJuIHQucGFkZGluZz1lLmV4dGVuZChpLHQucGFkZGluZyksdH1fbWluaW11bUFBQkJGcnVzdHVtRGlzdGFuY2UoZSx0KXtjb25zdCBpPXQubWF4WzBdLXQubWluWzBdLG89dC5tYXhbMV0tdC5taW5bMV07cmV0dXJuIGkvbz5lLmFzcGVjdD9pLygyKk1hdGgudGFuKC41KmUuZm92WCkqZS5hc3BlY3QpOm8vKDIqTWF0aC50YW4oLjUqZS5mb3ZZKSplLmFzcGVjdCl9X2NhbWVyYUZvckJvdW5kc09uR2xvYmUodCxpLG8scixuLHMpe2NvbnN0IGE9dC5jbG9uZSgpLGw9dGhpcy5fZXh0ZW5kQ2FtZXJhT3B0aW9ucyhzKTthLmJlYXJpbmc9cixhLnBpdGNoPW47Y29uc3QgYz1lLkxuZ0xhdC5jb252ZXJ0KGkpLGg9ZS5MbmdMYXQuY29udmVydChvKSx1PS41KihjLmxhdCtoLmxhdCksXz0uNSooYy5sbmcraC5sbmcpLGQ9ZS5sYXRMbmdUb0VDRUYodSxfKSxwPWUubm9ybWFsaXplKFtdLGQpLG09ZS5ub3JtYWxpemUoW10sZS5jcm9zcyhbXSxwLFswLDEsMF0pKSxmPWUuY3Jvc3MoW10sbSxwKSxnPVttWzBdLG1bMV0sbVsyXSwwLGZbMF0sZlsxXSxmWzJdLDAscFswXSxwWzFdLHBbMl0sMCwwLDAsMCwxXSx2PVtkLGUubGF0TG5nVG9FQ0VGKGMubGF0LGMubG5nKSxlLmxhdExuZ1RvRUNFRihoLmxhdCxjLmxuZyksZS5sYXRMbmdUb0VDRUYoaC5sYXQsaC5sbmcpLGUubGF0TG5nVG9FQ0VGKGMubGF0LGgubG5nKSxlLmxhdExuZ1RvRUNFRih1LGMubG5nKSxlLmxhdExuZ1RvRUNFRih1LGgubG5nKSxlLmxhdExuZ1RvRUNFRihjLmxhdCxfKSxlLmxhdExuZ1RvRUNFRihoLmxhdCxfKV07bGV0IHg9ZS5BYWJiLmZyb21Qb2ludHModi5tYXAoKHQ9PltlLmRvdChtLHQpLGUuZG90KGYsdCksZS5kb3QocCx0KV0pKSk7Y29uc3QgeT1lLnRyYW5zZm9ybU1hdDQoW10seC5jZW50ZXIsZyk7MD09PWUuc3F1YXJlZExlbmd0aCh5KSYmZS5zZXQoeSwwLDAsMSksZS5ub3JtYWxpemUoeSx5KSxlLnNjYWxlJDIoeSx5LGUuR0xPQkVfUkFESVVTKSxhLmNlbnRlcj1lLmVjZWZUb0xhdExuZyh5KTtjb25zdCBiPWEuZ2V0V29ybGRUb0NhbWVyYU1hdHJpeCgpLHc9ZS5pbnZlcnQobmV3IEZsb2F0NjRBcnJheSgxNiksYik7eD1lLkFhYmIuYXBwbHlUcmFuc2Zvcm0oeCxlLm11bHRpcGx5KFtdLGIsZykpLGUudHJhbnNmb3JtTWF0NCh5LHksYik7Y29uc3QgVD0uNSooeC5tYXhbMl0teC5taW5bMl0pLEU9dGhpcy5fbWluaW11bUFBQkJGcnVzdHVtRGlzdGFuY2UoYSx4KSxDPWUuc2NhbGUkMihbXSxbMCwwLDFdLFQpLE09ZS5hZGQoQyx5LEMpLEk9RSsoMD09PWEucGl0Y2g/MDplLmRpc3RhbmNlKHksTSkpLFA9YS5nbG9iZUNlbnRlckluVmlld1NwYWNlLFM9ZS5zdWIoW10seSxbUFswXSxQWzFdLFBbMl1dKTtlLm5vcm1hbGl6ZShTLFMpLGUuc2NhbGUkMihTLFMsSSk7Y29uc3QgRD1lLmFkZChbXSx5LFMpO2UudHJhbnNmb3JtTWF0NChELEQsdyk7Y29uc3QgTD1lLmVhcnRoUmFkaXVzL2UuR0xPQkVfUkFESVVTLEE9ZS5sZW5ndGgoRCksej1lLm1lcmNhdG9yWmZyb21BbHRpdHVkZShNYXRoLm1heChBKkwtZS5lYXJ0aFJhZGl1cyxOdW1iZXIuRVBTSUxPTiksMCksUj1NYXRoLm1pbihhLnpvb21Gcm9tTWVyY2F0b3JaQWRqdXN0ZWQoeiksbC5tYXhab29tKTtyZXR1cm4gUj4uNSooZS5HTE9CRV9aT09NX1RIUkVTSE9MRF9NSU4rZS5HTE9CRV9aT09NX1RIUkVTSE9MRF9NQVgpPyhhLnNldFByb2plY3Rpb24oe25hbWU6XCJtZXJjYXRvclwifSksYS56b29tPVIsdGhpcy5fY2FtZXJhRm9yQm91bmRzKGEsaSxvLHIsbixzKSk6e2NlbnRlcjphLmNlbnRlcix6b29tOlIsYmVhcmluZzpyLHBpdGNoOm59fXF1ZXJ5VGVycmFpbkVsZXZhdGlvbih0LGkpe2NvbnN0IG89dGhpcy50cmFuc2Zvcm0uZWxldmF0aW9uO3JldHVybiBvPyhpPWUuZXh0ZW5kKHt9LHtleGFnZ2VyYXRlZDohMH0saSksby5nZXRBdFBvaW50KGUuTWVyY2F0b3JDb29yZGluYXRlLmZyb21MbmdMYXQodCksbnVsbCxpLmV4YWdnZXJhdGVkKSk6bnVsbH1fY2FtZXJhRm9yQm91bmRzKHQsaSxvLHIsbixzKXtpZihcImdsb2JlXCI9PT10LnByb2plY3Rpb24ubmFtZSlyZXR1cm4gdGhpcy5fY2FtZXJhRm9yQm91bmRzT25HbG9iZSh0LGksbyxyLG4scyk7Y29uc3QgYT10LmNsb25lKCksbD10aGlzLl9leHRlbmRDYW1lcmFPcHRpb25zKHMpLGM9YS5wYWRkaW5nO2EuYmVhcmluZz1yLGEucGl0Y2g9bjtjb25zdCBoPWUuTG5nTGF0LmNvbnZlcnQoaSksdT1lLkxuZ0xhdC5jb252ZXJ0KG8pLF89bmV3IGUuTG5nTGF0KGgubG5nLHUubGF0KSxkPW5ldyBlLkxuZ0xhdCh1LmxuZyxoLmxhdCkscD1hLnByb2plY3QoaCksbT1hLnByb2plY3QodSksZj10aGlzLnF1ZXJ5VGVycmFpbkVsZXZhdGlvbihoKSxnPXRoaXMucXVlcnlUZXJyYWluRWxldmF0aW9uKHUpLHY9dGhpcy5xdWVyeVRlcnJhaW5FbGV2YXRpb24oXykseD10aGlzLnF1ZXJ5VGVycmFpbkVsZXZhdGlvbihkKSx5PVtbcC54LHAueSxNYXRoLm1pbihmfHwwLGd8fDAsdnx8MCx4fHwwKV0sW20ueCxtLnksTWF0aC5tYXgoZnx8MCxnfHwwLHZ8fDAseHx8MCldXTtsZXQgYj1lLkFhYmIuZnJvbVBvaW50cyh5KTtjb25zdCB3PWEuZ2V0V29ybGRUb0NhbWVyYU1hdHJpeCgpLFQ9ZS5pbnZlcnQobmV3IEZsb2F0NjRBcnJheSgxNiksdyk7Yj1lLkFhYmIuYXBwbHlUcmFuc2Zvcm0oYix3KTtjb25zdCBFPWUuc3ViKFtdLGIubWF4LGIubWluKSxDPWMubGVmdHx8MCxNPWMucmlnaHR8fDAsST1jLmJvdHRvbXx8MCxQPWMudG9wfHwwLHtsZWZ0OlMscmlnaHQ6RCx0b3A6TCxib3R0b206QX09bC5wYWRkaW5nLHo9LjUqKEMrTSksUj0uNSooUCtJKSxPPU1hdGgubWluKGEuc2NhbGVab29tKGEuc2NhbGUqTWF0aC5taW4oKGEud2lkdGgtKEMrTStTK0QpKS9FWzBdLChhLmhlaWdodC0oSStQK0ErTCkpL0VbMV0pKSxsLm1heFpvb20pLEI9YS5zY2FsZS9hLnpvb21TY2FsZShPKTtiPW5ldyBlLkFhYmIoW2IubWluWzBdLShTK3opKkIsYi5taW5bMV0tKEErUikqQixiLm1pblsyXV0sW2IubWF4WzBdKyhEK3opKkIsYi5tYXhbMV0rKEwrUikqQixiLm1heFsyXV0pO2NvbnN0IGs9LjUqRVsyXSxGPXRoaXMuX21pbmltdW1BQUJCRnJ1c3R1bURpc3RhbmNlKGEsYiksVT1bMCwwLDEsMF07ZS50cmFuc2Zvcm1NYXQ0JDEoVSxVLHcpLGUubm9ybWFsaXplJDIoVSxVKTtjb25zdCBOPWUuc2NhbGUkMihbXSxVLEYrayksaj1lLmFkZChbXSxiLmNlbnRlcixOKSxHPShcIm51bWJlclwiPT10eXBlb2YgbC5vZmZzZXQueCYmXCJudW1iZXJcIj09dHlwZW9mIGwub2Zmc2V0Lnk/bmV3IGUuUG9pbnQobC5vZmZzZXQueCxsLm9mZnNldC55KTplLlBvaW50LmNvbnZlcnQobC5vZmZzZXQpKS5yb3RhdGUoLWUuZGVnVG9SYWQocikpO2IuY2VudGVyWzBdLT1HLngqQixiLmNlbnRlclsxXSs9Ry55KkIsZS50cmFuc2Zvcm1NYXQ0KGIuY2VudGVyLGIuY2VudGVyLFQpLGUudHJhbnNmb3JtTWF0NChqLGosVCk7Y29uc3QgWj1bYi5jZW50ZXJbMF0sYi5jZW50ZXJbMV0salsyXSphLnBpeGVsc1Blck1ldGVyXTtlLnNjYWxlJDIoWixaLDEvYS53b3JsZFNpemUpO2NvbnN0IFY9ZS5sbmdGcm9tTWVyY2F0b3JYKFpbMF0pLFc9ZS5sYXRGcm9tTWVyY2F0b3JZKFpbMV0pLFg9TWF0aC5taW4oYS5fem9vbUZyb21NZXJjYXRvclooWlsyXSksbC5tYXhab29tKSxxPW5ldyBlLkxuZ0xhdChWLFcpO3JldHVybiBhLm1lcmNhdG9yRnJvbVRyYW5zaXRpb24mJlg8LjUqKGUuR0xPQkVfWk9PTV9USFJFU0hPTERfTUlOK2UuR0xPQkVfWk9PTV9USFJFU0hPTERfTUFYKT8oYS5zZXRQcm9qZWN0aW9uKHtuYW1lOlwiZ2xvYmVcIn0pLGEuem9vbT1YLHRoaXMuX2NhbWVyYUZvckJvdW5kcyhhLGksbyxyLG4scykpOntjZW50ZXI6cSx6b29tOlgsYmVhcmluZzpyLHBpdGNoOm59fWZpdEJvdW5kcyhlLHQsaSl7Y29uc3Qgbz10aGlzLmNhbWVyYUZvckJvdW5kcyhlLHQpO3JldHVybiB0aGlzLl9maXRJbnRlcm5hbChvLHQsaSl9Zml0U2NyZWVuQ29vcmRpbmF0ZXModCxpLG8scixuKXtjb25zdCBzPWUuUG9pbnQuY29udmVydCh0KSxhPWUuUG9pbnQuY29udmVydChpKSxsPW5ldyBlLlBvaW50KE1hdGgubWluKHMueCxhLngpLE1hdGgubWluKHMueSxhLnkpKSxjPW5ldyBlLlBvaW50KE1hdGgubWF4KHMueCxhLngpLE1hdGgubWF4KHMueSxhLnkpKTtpZihcIm1lcmNhdG9yXCI9PT10aGlzLnRyYW5zZm9ybS5wcm9qZWN0aW9uLm5hbWUmJnRoaXMudHJhbnNmb3JtLmFueUNvcm5lck9mZkVkZ2UocyxhKSlyZXR1cm4gdGhpcztjb25zdCBoPXRoaXMudHJhbnNmb3JtLnBvaW50TG9jYXRpb24zRChsKSx1PXRoaXMudHJhbnNmb3JtLnBvaW50TG9jYXRpb24zRChjKSxfPXRoaXMudHJhbnNmb3JtLnBvaW50TG9jYXRpb24zRChuZXcgZS5Qb2ludChsLngsYy55KSksZD10aGlzLnRyYW5zZm9ybS5wb2ludExvY2F0aW9uM0QobmV3IGUuUG9pbnQoYy54LGwueSkpLHA9W01hdGgubWluKGgubG5nLHUubG5nLF8ubG5nLGQubG5nKSxNYXRoLm1pbihoLmxhdCx1LmxhdCxfLmxhdCxkLmxhdCldLG09W01hdGgubWF4KGgubG5nLHUubG5nLF8ubG5nLGQubG5nKSxNYXRoLm1heChoLmxhdCx1LmxhdCxfLmxhdCxkLmxhdCldLGY9ciYmci5waXRjaD9yLnBpdGNoOnRoaXMuZ2V0UGl0Y2goKSxnPXRoaXMuX2NhbWVyYUZvckJvdW5kcyh0aGlzLnRyYW5zZm9ybSxwLG0sbyxmLHIpO3JldHVybiB0aGlzLl9maXRJbnRlcm5hbChnLHIsbil9X2ZpdEludGVybmFsKHQsaSxvKXtyZXR1cm4gdD8oZGVsZXRlKGk9ZS5leHRlbmQodCxpKSkucGFkZGluZyxpLmxpbmVhcj90aGlzLmVhc2VUbyhpLG8pOnRoaXMuZmx5VG8oaSxvKSk6dGhpc31qdW1wVG8odCxpKXt0aGlzLnN0b3AoKTtjb25zdCBvPXQucHJlbG9hZE9ubHk/dGhpcy50cmFuc2Zvcm0uY2xvbmUoKTp0aGlzLnRyYW5zZm9ybTtsZXQgcj0hMSxuPSExLHM9ITE7cmV0dXJuIFwiem9vbVwiaW4gdCYmby56b29tIT09K3Quem9vbSYmKHI9ITAsby56b29tPSt0Lnpvb20pLHZvaWQgMCE9PXQuY2VudGVyJiYoby5jZW50ZXI9ZS5MbmdMYXQuY29udmVydCh0LmNlbnRlcikpLFwiYmVhcmluZ1wiaW4gdCYmby5iZWFyaW5nIT09K3QuYmVhcmluZyYmKG49ITAsby5iZWFyaW5nPSt0LmJlYXJpbmcpLFwicGl0Y2hcImluIHQmJm8ucGl0Y2ghPT0rdC5waXRjaCYmKHM9ITAsby5waXRjaD0rdC5waXRjaCksbnVsbD09dC5wYWRkaW5nfHxvLmlzUGFkZGluZ0VxdWFsKHQucGFkZGluZyl8fChvLnBhZGRpbmc9dC5wYWRkaW5nKSx0LnByZWxvYWRPbmx5Pyh0aGlzLl9wcmVsb2FkVGlsZXMobyksdGhpcyk6KHRoaXMuZmlyZShuZXcgZS5FdmVudChcIm1vdmVzdGFydFwiLGkpKS5maXJlKG5ldyBlLkV2ZW50KFwibW92ZVwiLGkpKSxyJiZ0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJ6b29tc3RhcnRcIixpKSkuZmlyZShuZXcgZS5FdmVudChcInpvb21cIixpKSkuZmlyZShuZXcgZS5FdmVudChcInpvb21lbmRcIixpKSksbiYmdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwicm90YXRlc3RhcnRcIixpKSkuZmlyZShuZXcgZS5FdmVudChcInJvdGF0ZVwiLGkpKS5maXJlKG5ldyBlLkV2ZW50KFwicm90YXRlZW5kXCIsaSkpLHMmJnRoaXMuZmlyZShuZXcgZS5FdmVudChcInBpdGNoc3RhcnRcIixpKSkuZmlyZShuZXcgZS5FdmVudChcInBpdGNoXCIsaSkpLmZpcmUobmV3IGUuRXZlbnQoXCJwaXRjaGVuZFwiLGkpKSx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJtb3ZlZW5kXCIsaSkpKX1nZXRGcmVlQ2FtZXJhT3B0aW9ucygpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5wcm9qZWN0aW9uLnN1cHBvcnRzRnJlZUNhbWVyYXx8ZS53YXJuT25jZShxciksdGhpcy50cmFuc2Zvcm0uZ2V0RnJlZUNhbWVyYU9wdGlvbnMoKX1zZXRGcmVlQ2FtZXJhT3B0aW9ucyh0LGkpe2NvbnN0IG89dGhpcy50cmFuc2Zvcm07aWYoIW8ucHJvamVjdGlvbi5zdXBwb3J0c0ZyZWVDYW1lcmEpcmV0dXJuIGUud2Fybk9uY2UocXIpLHRoaXM7dGhpcy5zdG9wKCk7Y29uc3Qgcj1vLnpvb20sbj1vLnBpdGNoLHM9by5iZWFyaW5nO28uc2V0RnJlZUNhbWVyYU9wdGlvbnModCk7Y29uc3QgYT1yIT09by56b29tLGw9biE9PW8ucGl0Y2gsYz1zIT09by5iZWFyaW5nO3JldHVybiB0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJtb3Zlc3RhcnRcIixpKSkuZmlyZShuZXcgZS5FdmVudChcIm1vdmVcIixpKSksYSYmdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiem9vbXN0YXJ0XCIsaSkpLmZpcmUobmV3IGUuRXZlbnQoXCJ6b29tXCIsaSkpLmZpcmUobmV3IGUuRXZlbnQoXCJ6b29tZW5kXCIsaSkpLGMmJnRoaXMuZmlyZShuZXcgZS5FdmVudChcInJvdGF0ZXN0YXJ0XCIsaSkpLmZpcmUobmV3IGUuRXZlbnQoXCJyb3RhdGVcIixpKSkuZmlyZShuZXcgZS5FdmVudChcInJvdGF0ZWVuZFwiLGkpKSxsJiZ0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJwaXRjaHN0YXJ0XCIsaSkpLmZpcmUobmV3IGUuRXZlbnQoXCJwaXRjaFwiLGkpKS5maXJlKG5ldyBlLkV2ZW50KFwicGl0Y2hlbmRcIixpKSksdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwibW92ZWVuZFwiLGkpKSx0aGlzfWVhc2VUbyh0LGkpe3RoaXMuX3N0b3AoITEsdC5lYXNlSWQpLCghMT09PSh0PWUuZXh0ZW5kKHtvZmZzZXQ6WzAsMF0sZHVyYXRpb246NTAwLGVhc2luZzplLmVhc2V9LHQpKS5hbmltYXRlfHx0aGlzLl9wcmVmZXJzUmVkdWNlZE1vdGlvbih0KSkmJih0LmR1cmF0aW9uPTApO2NvbnN0IG89dGhpcy50cmFuc2Zvcm0scj10aGlzLmdldFpvb20oKSxuPXRoaXMuZ2V0QmVhcmluZygpLHM9dGhpcy5nZXRQaXRjaCgpLGE9dGhpcy5nZXRQYWRkaW5nKCksbD1cInpvb21cImluIHQ/K3Quem9vbTpyLGM9XCJiZWFyaW5nXCJpbiB0P3RoaXMuX25vcm1hbGl6ZUJlYXJpbmcodC5iZWFyaW5nLG4pOm4saD1cInBpdGNoXCJpbiB0Pyt0LnBpdGNoOnMsdT1cInBhZGRpbmdcImluIHQ/dC5wYWRkaW5nOm8ucGFkZGluZyxfPWUuUG9pbnQuY29udmVydCh0Lm9mZnNldCk7bGV0IGQscCxtO2lmKFwiZ2xvYmVcIj09PW8ucHJvamVjdGlvbi5uYW1lKXtjb25zdCBpPWUuTWVyY2F0b3JDb29yZGluYXRlLmZyb21MbmdMYXQoby5jZW50ZXIpLHI9Xy5yb3RhdGUoLW8uYW5nbGUpO2kueCs9ci54L28ud29ybGRTaXplLGkueSs9ci55L28ud29ybGRTaXplO2NvbnN0IG49aS50b0xuZ0xhdCgpLHM9ZS5MbmdMYXQuY29udmVydCh0LmNlbnRlcnx8bik7dGhpcy5fbm9ybWFsaXplQ2VudGVyKHMpLGQ9by5jZW50ZXJQb2ludC5hZGQocikscD1uZXcgZS5Qb2ludChpLngsaS55KS5tdWx0KG8ud29ybGRTaXplKSxtPW5ldyBlLlBvaW50KGUubWVyY2F0b3JYZnJvbUxuZyhzLmxuZyksZS5tZXJjYXRvcllmcm9tTGF0KHMubGF0KSkubXVsdChvLndvcmxkU2l6ZSkuc3ViKHApO31lbHNlIHtkPW8uY2VudGVyUG9pbnQuYWRkKF8pO2NvbnN0IGk9by5wb2ludExvY2F0aW9uKGQpLHI9ZS5MbmdMYXQuY29udmVydCh0LmNlbnRlcnx8aSk7dGhpcy5fbm9ybWFsaXplQ2VudGVyKHIpLHA9by5wcm9qZWN0KGkpLG09by5wcm9qZWN0KHIpLnN1YihwKTt9Y29uc3QgZj1vLnpvb21TY2FsZShsLXIpO2xldCBnLHY7dC5hcm91bmQmJihnPWUuTG5nTGF0LmNvbnZlcnQodC5hcm91bmQpLHY9by5sb2NhdGlvblBvaW50KGcpKTtjb25zdCB4PXRoaXMuX3pvb21pbmd8fGwhPT1yLHk9dGhpcy5fcm90YXRpbmd8fG4hPT1jLGI9dGhpcy5fcGl0Y2hpbmd8fGghPT1zLHc9IW8uaXNQYWRkaW5nRXF1YWwodSksVD1vPT5UPT57aWYoeCYmKG8uem9vbT1lLm51bWJlcihyLGwsVCkpLHkmJihvLmJlYXJpbmc9ZS5udW1iZXIobixjLFQpKSxiJiYoby5waXRjaD1lLm51bWJlcihzLGgsVCkpLHcmJihvLmludGVycG9sYXRlUGFkZGluZyhhLHUsVCksZD1vLmNlbnRlclBvaW50LmFkZChfKSksZylvLnNldExvY2F0aW9uQXRQb2ludChnLHYpO2Vsc2Uge2NvbnN0IGU9by56b29tU2NhbGUoby56b29tLXIpLHQ9bD5yP01hdGgubWluKDIsZik6TWF0aC5tYXgoLjUsZiksaT1NYXRoLnBvdyh0LDEtVCksbj1vLnVucHJvamVjdChwLmFkZChtLm11bHQoVCppKSkubXVsdChlKSk7by5zZXRMb2NhdGlvbkF0UG9pbnQoby5yZW5kZXJXb3JsZENvcGllcz9uLndyYXAoKTpuLGQpO31yZXR1cm4gdC5wcmVsb2FkT25seXx8dGhpcy5fZmlyZU1vdmVFdmVudHMoaSksb307aWYodC5wcmVsb2FkT25seSl7Y29uc3QgZT10aGlzLl9lbXVsYXRlKFQsdC5kdXJhdGlvbixvKTtyZXR1cm4gdGhpcy5fcHJlbG9hZFRpbGVzKGUpLHRoaXN9Y29uc3QgRT17bW92aW5nOnRoaXMuX21vdmluZyx6b29taW5nOnRoaXMuX3pvb21pbmcscm90YXRpbmc6dGhpcy5fcm90YXRpbmcscGl0Y2hpbmc6dGhpcy5fcGl0Y2hpbmd9O3JldHVybiB0aGlzLl96b29taW5nPXgsdGhpcy5fcm90YXRpbmc9eSx0aGlzLl9waXRjaGluZz1iLHRoaXMuX3BhZGRpbmc9dyx0aGlzLl9lYXNlSWQ9dC5lYXNlSWQsdGhpcy5fcHJlcGFyZUVhc2UoaSx0Lm5vTW92ZVN0YXJ0LEUpLHRoaXMuX2Vhc2UoVChvKSwoZT0+e28ucmVjZW50ZXJPblRlcnJhaW4oKSx0aGlzLl9hZnRlckVhc2UoaSxlKTt9KSx0KSx0aGlzfV9wcmVwYXJlRWFzZSh0LGksbz17fSl7dGhpcy5fbW92aW5nPSEwLHRoaXMudHJhbnNmb3JtLmNhbWVyYUVsZXZhdGlvblJlZmVyZW5jZT1cInNlYVwiLGl8fG8ubW92aW5nfHx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJtb3Zlc3RhcnRcIix0KSksdGhpcy5fem9vbWluZyYmIW8uem9vbWluZyYmdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiem9vbXN0YXJ0XCIsdCkpLHRoaXMuX3JvdGF0aW5nJiYhby5yb3RhdGluZyYmdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwicm90YXRlc3RhcnRcIix0KSksdGhpcy5fcGl0Y2hpbmcmJiFvLnBpdGNoaW5nJiZ0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJwaXRjaHN0YXJ0XCIsdCkpO31fZmlyZU1vdmVFdmVudHModCl7dGhpcy5maXJlKG5ldyBlLkV2ZW50KFwibW92ZVwiLHQpKSx0aGlzLl96b29taW5nJiZ0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJ6b29tXCIsdCkpLHRoaXMuX3JvdGF0aW5nJiZ0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJyb3RhdGVcIix0KSksdGhpcy5fcGl0Y2hpbmcmJnRoaXMuZmlyZShuZXcgZS5FdmVudChcInBpdGNoXCIsdCkpO31fYWZ0ZXJFYXNlKHQsaSl7aWYodGhpcy5fZWFzZUlkJiZpJiZ0aGlzLl9lYXNlSWQ9PT1pKXJldHVybjt0aGlzLl9lYXNlSWQ9dm9pZCAwLHRoaXMudHJhbnNmb3JtLmNhbWVyYUVsZXZhdGlvblJlZmVyZW5jZT1cImdyb3VuZFwiO2NvbnN0IG89dGhpcy5fem9vbWluZyxyPXRoaXMuX3JvdGF0aW5nLG49dGhpcy5fcGl0Y2hpbmc7dGhpcy5fbW92aW5nPSExLHRoaXMuX3pvb21pbmc9ITEsdGhpcy5fcm90YXRpbmc9ITEsdGhpcy5fcGl0Y2hpbmc9ITEsdGhpcy5fcGFkZGluZz0hMSxvJiZ0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJ6b29tZW5kXCIsdCkpLHImJnRoaXMuZmlyZShuZXcgZS5FdmVudChcInJvdGF0ZWVuZFwiLHQpKSxuJiZ0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJwaXRjaGVuZFwiLHQpKSx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJtb3ZlZW5kXCIsdCkpO31mbHlUbyh0LGkpe2lmKHRoaXMuX3ByZWZlcnNSZWR1Y2VkTW90aW9uKHQpKXtjb25zdCBvPWUucGljayh0LFtcImNlbnRlclwiLFwiem9vbVwiLFwiYmVhcmluZ1wiLFwicGl0Y2hcIixcImFyb3VuZFwiXSk7cmV0dXJuIHRoaXMuanVtcFRvKG8saSl9dGhpcy5zdG9wKCksdD1lLmV4dGVuZCh7b2Zmc2V0OlswLDBdLHNwZWVkOjEuMixjdXJ2ZToxLjQyLGVhc2luZzplLmVhc2V9LHQpO2NvbnN0IG89dGhpcy50cmFuc2Zvcm0scj10aGlzLmdldFpvb20oKSxuPXRoaXMuZ2V0QmVhcmluZygpLHM9dGhpcy5nZXRQaXRjaCgpLGE9dGhpcy5nZXRQYWRkaW5nKCksbD1cInpvb21cImluIHQ/ZS5jbGFtcCgrdC56b29tLG8ubWluWm9vbSxvLm1heFpvb20pOnIsYz1cImJlYXJpbmdcImluIHQ/dGhpcy5fbm9ybWFsaXplQmVhcmluZyh0LmJlYXJpbmcsbik6bixoPVwicGl0Y2hcImluIHQ/K3QucGl0Y2g6cyx1PVwicGFkZGluZ1wiaW4gdD90LnBhZGRpbmc6by5wYWRkaW5nLF89by56b29tU2NhbGUobC1yKSxkPWUuUG9pbnQuY29udmVydCh0Lm9mZnNldCk7bGV0IHA9by5jZW50ZXJQb2ludC5hZGQoZCk7Y29uc3QgbT1vLnBvaW50TG9jYXRpb24ocCksZj1lLkxuZ0xhdC5jb252ZXJ0KHQuY2VudGVyfHxtKTt0aGlzLl9ub3JtYWxpemVDZW50ZXIoZik7Y29uc3QgZz1vLnByb2plY3QobSksdj1vLnByb2plY3QoZikuc3ViKGcpO2xldCB4PXQuY3VydmU7Y29uc3QgeT1NYXRoLm1heChvLndpZHRoLG8uaGVpZ2h0KSxiPXkvXyx3PXYubWFnKCk7aWYoXCJtaW5ab29tXCJpbiB0KXtjb25zdCBpPWUuY2xhbXAoTWF0aC5taW4odC5taW5ab29tLHIsbCksby5taW5ab29tLG8ubWF4Wm9vbSksbj15L28uem9vbVNjYWxlKGktcik7eD1NYXRoLnNxcnQobi93KjIpO31jb25zdCBUPXgqeDtmdW5jdGlvbiBFKGUpe2NvbnN0IHQ9KGIqYi15KnkrKGU/LTE6MSkqVCpUKncqdykvKDIqKGU/Yjp5KSpUKncpO3JldHVybiBNYXRoLmxvZyhNYXRoLnNxcnQodCp0KzEpLXQpfWZ1bmN0aW9uIEMoZSl7cmV0dXJuIChNYXRoLmV4cChlKS1NYXRoLmV4cCgtZSkpLzJ9ZnVuY3Rpb24gTShlKXtyZXR1cm4gKE1hdGguZXhwKGUpK01hdGguZXhwKC1lKSkvMn1jb25zdCBJPUUoMCk7bGV0IFA9ZnVuY3Rpb24oZSl7cmV0dXJuIE0oSSkvTShJK3gqZSl9LFM9ZnVuY3Rpb24oZSl7cmV0dXJuIHkqKChNKEkpKihDKHQ9SSt4KmUpL00odCkpLUMoSSkpL1QpL3c7dmFyIHQ7fSxEPShFKDEpLUkpL3g7aWYoTWF0aC5hYnModyk8MWUtNnx8IWlzRmluaXRlKEQpKXtpZihNYXRoLmFicyh5LWIpPDFlLTYpcmV0dXJuIHRoaXMuZWFzZVRvKHQsaSk7Y29uc3QgZT1iPHk/LTE6MTtEPU1hdGguYWJzKE1hdGgubG9nKGIveSkpL3gsUz1mdW5jdGlvbigpe3JldHVybiAwfSxQPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmV4cChlKngqdCl9O310LmR1cmF0aW9uPVwiZHVyYXRpb25cImluIHQ/K3QuZHVyYXRpb246MWUzKkQvKFwic2NyZWVuU3BlZWRcImluIHQ/K3Quc2NyZWVuU3BlZWQveDordC5zcGVlZCksdC5tYXhEdXJhdGlvbiYmdC5kdXJhdGlvbj50Lm1heER1cmF0aW9uJiYodC5kdXJhdGlvbj0wKTtjb25zdCBMPW4hPT1jLEE9aCE9PXMsej0hby5pc1BhZGRpbmdFcXVhbCh1KSxSPW89Pl89Pntjb25zdCBtPV8qRCx4PTEvUChtKTtvLnpvb209MT09PV8/bDpyK28uc2NhbGVab29tKHgpLEwmJihvLmJlYXJpbmc9ZS5udW1iZXIobixjLF8pKSxBJiYoby5waXRjaD1lLm51bWJlcihzLGgsXykpLHomJihvLmludGVycG9sYXRlUGFkZGluZyhhLHUsXykscD1vLmNlbnRlclBvaW50LmFkZChkKSk7Y29uc3QgeT0xPT09Xz9mOm8udW5wcm9qZWN0KGcuYWRkKHYubXVsdChTKG0pKSkubXVsdCh4KSk7cmV0dXJuIG8uc2V0TG9jYXRpb25BdFBvaW50KG8ucmVuZGVyV29ybGRDb3BpZXM/eS53cmFwKCk6eSxwKSxvLl91cGRhdGVDYW1lcmFPblRlcnJhaW4oKSx0LnByZWxvYWRPbmx5fHx0aGlzLl9maXJlTW92ZUV2ZW50cyhpKSxvfTtpZih0LnByZWxvYWRPbmx5KXtjb25zdCBlPXRoaXMuX2VtdWxhdGUoUix0LmR1cmF0aW9uLG8pO3JldHVybiB0aGlzLl9wcmVsb2FkVGlsZXMoZSksdGhpc31yZXR1cm4gdGhpcy5fem9vbWluZz0hMCx0aGlzLl9yb3RhdGluZz1MLHRoaXMuX3BpdGNoaW5nPUEsdGhpcy5fcGFkZGluZz16LHRoaXMuX3ByZXBhcmVFYXNlKGksITEpLHRoaXMuX2Vhc2UoUihvKSwoKCk9PnRoaXMuX2FmdGVyRWFzZShpKSksdCksdGhpc31pc0Vhc2luZygpe3JldHVybiAhIXRoaXMuX2Vhc2VGcmFtZUlkfXN0b3AoKXtyZXR1cm4gdGhpcy5fc3RvcCgpfV9zdG9wKGUsdCl7aWYodGhpcy5fZWFzZUZyYW1lSWQmJih0aGlzLl9jYW5jZWxSZW5kZXJGcmFtZSh0aGlzLl9lYXNlRnJhbWVJZCksdGhpcy5fZWFzZUZyYW1lSWQ9dm9pZCAwLHRoaXMuX29uRWFzZUZyYW1lPXZvaWQgMCksdGhpcy5fb25FYXNlRW5kKXtjb25zdCBlPXRoaXMuX29uRWFzZUVuZDt0aGlzLl9vbkVhc2VFbmQ9dm9pZCAwLGUuY2FsbCh0aGlzLHQpO31pZighZSl7Y29uc3QgZT10aGlzLmhhbmRsZXJzO2UmJmUuc3RvcCghMSk7fXJldHVybiB0aGlzfV9lYXNlKHQsaSxvKXshMT09PW8uYW5pbWF0ZXx8MD09PW8uZHVyYXRpb24/KHQoMSksaSgpKToodGhpcy5fZWFzZVN0YXJ0PWUuZXhwb3J0ZWQubm93KCksdGhpcy5fZWFzZU9wdGlvbnM9byx0aGlzLl9vbkVhc2VGcmFtZT10LHRoaXMuX29uRWFzZUVuZD1pLHRoaXMuX2Vhc2VGcmFtZUlkPXRoaXMuX3JlcXVlc3RSZW5kZXJGcmFtZSh0aGlzLl9yZW5kZXJGcmFtZUNhbGxiYWNrKSk7fV9yZW5kZXJGcmFtZUNhbGxiYWNrKCl7Y29uc3QgdD1NYXRoLm1pbigoZS5leHBvcnRlZC5ub3coKS10aGlzLl9lYXNlU3RhcnQpL3RoaXMuX2Vhc2VPcHRpb25zLmR1cmF0aW9uLDEpLGk9dGhpcy5fb25FYXNlRnJhbWU7aSYmaSh0aGlzLl9lYXNlT3B0aW9ucy5lYXNpbmcodCkpLHQ8MT90aGlzLl9lYXNlRnJhbWVJZD10aGlzLl9yZXF1ZXN0UmVuZGVyRnJhbWUodGhpcy5fcmVuZGVyRnJhbWVDYWxsYmFjayk6dGhpcy5zdG9wKCk7fV9ub3JtYWxpemVCZWFyaW5nKHQsaSl7dD1lLndyYXAodCwtMTgwLDE4MCk7Y29uc3Qgbz1NYXRoLmFicyh0LWkpO3JldHVybiBNYXRoLmFicyh0LTM2MC1pKTxvJiYodC09MzYwKSxNYXRoLmFicyh0KzM2MC1pKTxvJiYodCs9MzYwKSx0fV9ub3JtYWxpemVDZW50ZXIoZSl7Y29uc3QgdD10aGlzLnRyYW5zZm9ybTtpZighdC5yZW5kZXJXb3JsZENvcGllc3x8dC5tYXhCb3VuZHMpcmV0dXJuO2NvbnN0IGk9ZS5sbmctdC5jZW50ZXIubG5nO2UubG5nKz1pPjE4MD8tMzYwOmk8LTE4MD8zNjA6MDt9X3ByZWZlcnNSZWR1Y2VkTW90aW9uKHQpe3JldHVybiB0aGlzLl9yZXNwZWN0UHJlZmVyc1JlZHVjZWRNb3Rpb24mJmUuZXhwb3J0ZWQucHJlZmVyc1JlZHVjZWRNb3Rpb24mJiEodCYmdC5lc3NlbnRpYWwpfV9lbXVsYXRlKGUsdCxpKXtjb25zdCBvPU1hdGguY2VpbCgxNSp0LzFlMykscj1bXSxuPWUoaS5jbG9uZSgpKTtmb3IobGV0IGU9MDtlPD1vO2UrKyl7Y29uc3QgdD1uKGUvbyk7ci5wdXNoKHQuY2xvbmUoKSk7fXJldHVybiByfX1jbGFzcyBIcntjb25zdHJ1Y3Rvcih0PXt9KXt0aGlzLm9wdGlvbnM9dCxlLmJpbmRBbGwoW1wiX3RvZ2dsZUF0dHJpYnV0aW9uXCIsXCJfdXBkYXRlRWRpdExpbmtcIixcIl91cGRhdGVEYXRhXCIsXCJfdXBkYXRlQ29tcGFjdFwiXSx0aGlzKTt9Z2V0RGVmYXVsdFBvc2l0aW9uKCl7cmV0dXJuIFwiYm90dG9tLXJpZ2h0XCJ9b25BZGQoZSl7Y29uc3QgdD10aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5jb21wYWN0O3JldHVybiB0aGlzLl9tYXA9ZSx0aGlzLl9jb250YWluZXI9bihcImRpdlwiLFwibWFwYm94Z2wtY3RybCBtYXBib3hnbC1jdHJsLWF0dHJpYlwiKSx0aGlzLl9jb21wYWN0QnV0dG9uPW4oXCJidXR0b25cIixcIm1hcGJveGdsLWN0cmwtYXR0cmliLWJ1dHRvblwiLHRoaXMuX2NvbnRhaW5lciksbihcInNwYW5cIixcIm1hcGJveGdsLWN0cmwtaWNvblwiLHRoaXMuX2NvbXBhY3RCdXR0b24pLnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsXCJ0cnVlXCIpLHRoaXMuX2NvbXBhY3RCdXR0b24udHlwZT1cImJ1dHRvblwiLHRoaXMuX2NvbXBhY3RCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5fdG9nZ2xlQXR0cmlidXRpb24pLHRoaXMuX3NldEVsZW1lbnRUaXRsZSh0aGlzLl9jb21wYWN0QnV0dG9uLFwiVG9nZ2xlQXR0cmlidXRpb25cIiksdGhpcy5faW5uZXJDb250YWluZXI9bihcImRpdlwiLFwibWFwYm94Z2wtY3RybC1hdHRyaWItaW5uZXJcIix0aGlzLl9jb250YWluZXIpLHRoaXMuX2lubmVyQ29udGFpbmVyLnNldEF0dHJpYnV0ZShcInJvbGVcIixcImxpc3RcIiksdCYmdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jb21wYWN0XCIpLHRoaXMuX3VwZGF0ZUF0dHJpYnV0aW9ucygpLHRoaXMuX3VwZGF0ZUVkaXRMaW5rKCksdGhpcy5fbWFwLm9uKFwic3R5bGVkYXRhXCIsdGhpcy5fdXBkYXRlRGF0YSksdGhpcy5fbWFwLm9uKFwic291cmNlZGF0YVwiLHRoaXMuX3VwZGF0ZURhdGEpLHRoaXMuX21hcC5vbihcIm1vdmVlbmRcIix0aGlzLl91cGRhdGVFZGl0TGluayksdm9pZCAwPT09dCYmKHRoaXMuX21hcC5vbihcInJlc2l6ZVwiLHRoaXMuX3VwZGF0ZUNvbXBhY3QpLHRoaXMuX3VwZGF0ZUNvbXBhY3QoKSksdGhpcy5fY29udGFpbmVyfW9uUmVtb3ZlKCl7dGhpcy5fY29udGFpbmVyLnJlbW92ZSgpLHRoaXMuX21hcC5vZmYoXCJzdHlsZWRhdGFcIix0aGlzLl91cGRhdGVEYXRhKSx0aGlzLl9tYXAub2ZmKFwic291cmNlZGF0YVwiLHRoaXMuX3VwZGF0ZURhdGEpLHRoaXMuX21hcC5vZmYoXCJtb3ZlZW5kXCIsdGhpcy5fdXBkYXRlRWRpdExpbmspLHRoaXMuX21hcC5vZmYoXCJyZXNpemVcIix0aGlzLl91cGRhdGVDb21wYWN0KSx0aGlzLl9tYXA9dm9pZCAwLHRoaXMuX2F0dHJpYkhUTUw9dm9pZCAwO31fc2V0RWxlbWVudFRpdGxlKGUsdCl7Y29uc3QgaT10aGlzLl9tYXAuX2dldFVJU3RyaW5nKGBBdHRyaWJ1dGlvbkNvbnRyb2wuJHt0fWApO2Uuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLGkpLGUucmVtb3ZlQXR0cmlidXRlKFwidGl0bGVcIiksZS5maXJzdEVsZW1lbnRDaGlsZCYmZS5maXJzdEVsZW1lbnRDaGlsZC5zZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiLGkpO31fdG9nZ2xlQXR0cmlidXRpb24oKXt0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKFwibWFwYm94Z2wtY29tcGFjdC1zaG93XCIpPyh0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWNvbXBhY3Qtc2hvd1wiKSx0aGlzLl9jb21wYWN0QnV0dG9uLnNldEF0dHJpYnV0ZShcImFyaWEtZXhwYW5kZWRcIixcImZhbHNlXCIpKToodGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jb21wYWN0LXNob3dcIiksdGhpcy5fY29tcGFjdEJ1dHRvbi5zZXRBdHRyaWJ1dGUoXCJhcmlhLWV4cGFuZGVkXCIsXCJ0cnVlXCIpKTt9X3VwZGF0ZUVkaXRMaW5rKCl7bGV0IHQ9dGhpcy5fZWRpdExpbms7dHx8KHQ9dGhpcy5fZWRpdExpbms9dGhpcy5fY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCIubWFwYm94LWltcHJvdmUtbWFwXCIpKTtjb25zdCBpPVt7a2V5Olwib3duZXJcIix2YWx1ZTp0aGlzLnN0eWxlT3duZXJ9LHtrZXk6XCJpZFwiLHZhbHVlOnRoaXMuc3R5bGVJZH0se2tleTpcImFjY2Vzc190b2tlblwiLHZhbHVlOnRoaXMuX21hcC5fcmVxdWVzdE1hbmFnZXIuX2N1c3RvbUFjY2Vzc1Rva2VufHxlLmNvbmZpZy5BQ0NFU1NfVE9LRU59XTtpZih0KXtjb25zdCBvPWkucmVkdWNlKCgoZSx0LG8pPT4odC52YWx1ZSYmKGUrPWAke3Qua2V5fT0ke3QudmFsdWV9JHtvPGkubGVuZ3RoLTE/XCImXCI6XCJcIn1gKSxlKSksXCI/XCIpO3QuaHJlZj1gJHtlLmNvbmZpZy5GRUVEQkFDS19VUkx9LyR7b30jJHtKbyh0aGlzLl9tYXAsITApfWAsdC5yZWw9XCJub29wZW5lciBub2ZvbGxvd1wiLHRoaXMuX3NldEVsZW1lbnRUaXRsZSh0LFwiTWFwRmVlZGJhY2tcIik7fX1fdXBkYXRlRGF0YShlKXshZXx8XCJtZXRhZGF0YVwiIT09ZS5zb3VyY2VEYXRhVHlwZSYmXCJ2aXNpYmlsaXR5XCIhPT1lLnNvdXJjZURhdGFUeXBlJiZcInN0eWxlXCIhPT1lLmRhdGFUeXBlfHwodGhpcy5fdXBkYXRlQXR0cmlidXRpb25zKCksdGhpcy5fdXBkYXRlRWRpdExpbmsoKSk7fV91cGRhdGVBdHRyaWJ1dGlvbnMoKXtpZighdGhpcy5fbWFwLnN0eWxlKXJldHVybjtsZXQgZT1bXTtpZih0aGlzLl9tYXAuc3R5bGUuc3R5bGVzaGVldCl7Y29uc3QgZT10aGlzLl9tYXAuc3R5bGUuc3R5bGVzaGVldDt0aGlzLnN0eWxlT3duZXI9ZS5vd25lcix0aGlzLnN0eWxlSWQ9ZS5pZDt9Y29uc3QgdD10aGlzLl9tYXAuc3R5bGUuX3NvdXJjZUNhY2hlcztmb3IoY29uc3QgaSBpbiB0KXtjb25zdCBvPXRbaV07aWYoby51c2VkKXtjb25zdCB0PW8uZ2V0U291cmNlKCk7dC5hdHRyaWJ1dGlvbiYmZS5pbmRleE9mKHQuYXR0cmlidXRpb24pPDAmJmUucHVzaCh0LmF0dHJpYnV0aW9uKTt9fWUuc29ydCgoKGUsdCk9PmUubGVuZ3RoLXQubGVuZ3RoKSksZT1lLmZpbHRlcigoKHQsaSk9Pntmb3IobGV0IG89aSsxO288ZS5sZW5ndGg7bysrKWlmKGVbb10uaW5kZXhPZih0KT49MClyZXR1cm4gITE7cmV0dXJuICEwfSkpLHRoaXMub3B0aW9ucy5jdXN0b21BdHRyaWJ1dGlvbiYmKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zLmN1c3RvbUF0dHJpYnV0aW9uKT9lPVsuLi50aGlzLm9wdGlvbnMuY3VzdG9tQXR0cmlidXRpb24sLi4uZV06ZS51bnNoaWZ0KHRoaXMub3B0aW9ucy5jdXN0b21BdHRyaWJ1dGlvbikpO2NvbnN0IGk9ZS5qb2luKFwiIHwgXCIpO2khPT10aGlzLl9hdHRyaWJIVE1MJiYodGhpcy5fYXR0cmliSFRNTD1pLGUubGVuZ3RoPyh0aGlzLl9pbm5lckNvbnRhaW5lci5pbm5lckhUTUw9aSx0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWF0dHJpYi1lbXB0eVwiKSk6dGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1hdHRyaWItZW1wdHlcIiksdGhpcy5fZWRpdExpbms9bnVsbCk7fV91cGRhdGVDb21wYWN0KCl7dGhpcy5fbWFwLmdldENhbnZhc0NvbnRhaW5lcigpLm9mZnNldFdpZHRoPD02NDA/dGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jb21wYWN0XCIpOnRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY29tcGFjdFwiLFwibWFwYm94Z2wtY29tcGFjdC1zaG93XCIpO319Y2xhc3MgWXJ7Y29uc3RydWN0b3IoKXtlLmJpbmRBbGwoW1wiX3VwZGF0ZUxvZ29cIixcIl91cGRhdGVDb21wYWN0XCJdLHRoaXMpO31vbkFkZChlKXt0aGlzLl9tYXA9ZSx0aGlzLl9jb250YWluZXI9bihcImRpdlwiLFwibWFwYm94Z2wtY3RybFwiKTtjb25zdCB0PW4oXCJhXCIsXCJtYXBib3hnbC1jdHJsLWxvZ29cIik7cmV0dXJuIHQudGFyZ2V0PVwiX2JsYW5rXCIsdC5yZWw9XCJub29wZW5lciBub2ZvbGxvd1wiLHQuaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vXCIsdC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsdGhpcy5fbWFwLl9nZXRVSVN0cmluZyhcIkxvZ29Db250cm9sLlRpdGxlXCIpKSx0LnNldEF0dHJpYnV0ZShcInJlbFwiLFwibm9vcGVuZXIgbm9mb2xsb3dcIiksdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKHQpLHRoaXMuX2NvbnRhaW5lci5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLHRoaXMuX21hcC5vbihcInNvdXJjZWRhdGFcIix0aGlzLl91cGRhdGVMb2dvKSx0aGlzLl91cGRhdGVMb2dvKCksdGhpcy5fbWFwLm9uKFwicmVzaXplXCIsdGhpcy5fdXBkYXRlQ29tcGFjdCksdGhpcy5fdXBkYXRlQ29tcGFjdCgpLHRoaXMuX2NvbnRhaW5lcn1vblJlbW92ZSgpe3RoaXMuX2NvbnRhaW5lci5yZW1vdmUoKSx0aGlzLl9tYXAub2ZmKFwic291cmNlZGF0YVwiLHRoaXMuX3VwZGF0ZUxvZ28pLHRoaXMuX21hcC5vZmYoXCJyZXNpemVcIix0aGlzLl91cGRhdGVDb21wYWN0KTt9Z2V0RGVmYXVsdFBvc2l0aW9uKCl7cmV0dXJuIFwiYm90dG9tLWxlZnRcIn1fdXBkYXRlTG9nbyhlKXtlJiZcIm1ldGFkYXRhXCIhPT1lLnNvdXJjZURhdGFUeXBlfHwodGhpcy5fY29udGFpbmVyLnN0eWxlLmRpc3BsYXk9dGhpcy5fbG9nb1JlcXVpcmVkKCk/XCJibG9ja1wiOlwibm9uZVwiKTt9X2xvZ29SZXF1aXJlZCgpe2lmKCF0aGlzLl9tYXAuc3R5bGUpcmV0dXJuICEwO2NvbnN0IGU9dGhpcy5fbWFwLnN0eWxlLl9zb3VyY2VDYWNoZXM7aWYoMD09PU9iamVjdC5lbnRyaWVzKGUpLmxlbmd0aClyZXR1cm4gITA7Zm9yKGNvbnN0IHQgaW4gZSl7Y29uc3QgaT1lW3RdLmdldFNvdXJjZSgpO2lmKGkuaGFzT3duUHJvcGVydHkoXCJtYXBib3hfbG9nb1wiKSYmIWkubWFwYm94X2xvZ28pcmV0dXJuICExfXJldHVybiAhMH1fdXBkYXRlQ29tcGFjdCgpe2NvbnN0IGU9dGhpcy5fY29udGFpbmVyLmNoaWxkcmVuO2lmKGUubGVuZ3RoKXtjb25zdCB0PWVbMF07dGhpcy5fbWFwLmdldENhbnZhc0NvbnRhaW5lcigpLm9mZnNldFdpZHRoPDI1MD90LmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jb21wYWN0XCIpOnQuY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWNvbXBhY3RcIik7fX19Y2xhc3MgS3J7Y29uc3RydWN0b3IoKXt0aGlzLl9xdWV1ZT1bXSx0aGlzLl9pZD0wLHRoaXMuX2NsZWFyZWQ9ITEsdGhpcy5fY3VycmVudGx5UnVubmluZz0hMTt9YWRkKGUpe2NvbnN0IHQ9Kyt0aGlzLl9pZDtyZXR1cm4gdGhpcy5fcXVldWUucHVzaCh7Y2FsbGJhY2s6ZSxpZDp0LGNhbmNlbGxlZDohMX0pLHR9cmVtb3ZlKGUpe2NvbnN0IHQ9dGhpcy5fY3VycmVudGx5UnVubmluZyxpPXQ/dGhpcy5fcXVldWUuY29uY2F0KHQpOnRoaXMuX3F1ZXVlO2Zvcihjb25zdCB0IG9mIGkpaWYodC5pZD09PWUpcmV0dXJuIHZvaWQodC5jYW5jZWxsZWQ9ITApfXJ1bihlPTApe2NvbnN0IHQ9dGhpcy5fY3VycmVudGx5UnVubmluZz10aGlzLl9xdWV1ZTt0aGlzLl9xdWV1ZT1bXTtmb3IoY29uc3QgaSBvZiB0KWlmKCFpLmNhbmNlbGxlZCYmKGkuY2FsbGJhY2soZSksdGhpcy5fY2xlYXJlZCkpYnJlYWs7dGhpcy5fY2xlYXJlZD0hMSx0aGlzLl9jdXJyZW50bHlSdW5uaW5nPSExO31jbGVhcigpe3RoaXMuX2N1cnJlbnRseVJ1bm5pbmcmJih0aGlzLl9jbGVhcmVkPSEwKSx0aGlzLl9xdWV1ZT1bXTt9fWZ1bmN0aW9uIEpyKHQsaSxvKXtpZih0PW5ldyBlLkxuZ0xhdCh0LmxuZyx0LmxhdCksaSl7Y29uc3Qgcj1uZXcgZS5MbmdMYXQodC5sbmctMzYwLHQubGF0KSxuPW5ldyBlLkxuZ0xhdCh0LmxuZyszNjAsdC5sYXQpLHM9MzYwKk1hdGguY2VpbChNYXRoLmFicyh0LmxuZy1vLmNlbnRlci5sbmcpLzM2MCksYT1vLmxvY2F0aW9uUG9pbnQodCkuZGlzdFNxcihpKSxsPWkueDwwfHxpLnk8MHx8aS54Pm8ud2lkdGh8fGkueT5vLmhlaWdodDtvLmxvY2F0aW9uUG9pbnQocikuZGlzdFNxcihpKTxhJiYobHx8TWF0aC5hYnMoci5sbmctby5jZW50ZXIubG5nKTxzKT90PXI6by5sb2NhdGlvblBvaW50KG4pLmRpc3RTcXIoaSk8YSYmKGx8fE1hdGguYWJzKG4ubG5nLW8uY2VudGVyLmxuZyk8cykmJih0PW4pO31mb3IoO01hdGguYWJzKHQubG5nLW8uY2VudGVyLmxuZyk+MTgwOyl7Y29uc3QgZT1vLmxvY2F0aW9uUG9pbnQodCk7aWYoZS54Pj0wJiZlLnk+PTAmJmUueDw9by53aWR0aCYmZS55PD1vLmhlaWdodClicmVhazt0LmxuZz5vLmNlbnRlci5sbmc/dC5sbmctPTM2MDp0LmxuZys9MzYwO31yZXR1cm4gdH1jb25zdCBRcj17Y2VudGVyOlwidHJhbnNsYXRlKC01MCUsLTUwJSlcIix0b3A6XCJ0cmFuc2xhdGUoLTUwJSwwKVwiLFwidG9wLWxlZnRcIjpcInRyYW5zbGF0ZSgwLDApXCIsXCJ0b3AtcmlnaHRcIjpcInRyYW5zbGF0ZSgtMTAwJSwwKVwiLGJvdHRvbTpcInRyYW5zbGF0ZSgtNTAlLC0xMDAlKVwiLFwiYm90dG9tLWxlZnRcIjpcInRyYW5zbGF0ZSgwLC0xMDAlKVwiLFwiYm90dG9tLXJpZ2h0XCI6XCJ0cmFuc2xhdGUoLTEwMCUsLTEwMCUpXCIsbGVmdDpcInRyYW5zbGF0ZSgwLC01MCUpXCIscmlnaHQ6XCJ0cmFuc2xhdGUoLTEwMCUsLTUwJSlcIn07Y2xhc3MgZW4gZXh0ZW5kcyBlLkV2ZW50ZWR7Y29uc3RydWN0b3IodCxpKXtpZihzdXBlcigpLCh0IGluc3RhbmNlb2YgZS53aW5kb3cuSFRNTEVsZW1lbnR8fGkpJiYodD1lLmV4dGVuZCh7ZWxlbWVudDp0fSxpKSksZS5iaW5kQWxsKFtcIl91cGRhdGVcIixcIl9vbk1vdmVcIixcIl9vblVwXCIsXCJfYWRkRHJhZ0hhbmRsZXJcIixcIl9vbk1hcENsaWNrXCIsXCJfb25LZXlQcmVzc1wiLFwiX2NsZWFyRmFkZVRpbWVyXCJdLHRoaXMpLHRoaXMuX2FuY2hvcj10JiZ0LmFuY2hvcnx8XCJjZW50ZXJcIix0aGlzLl9jb2xvcj10JiZ0LmNvbG9yfHxcIiMzRkIxQ0VcIix0aGlzLl9zY2FsZT10JiZ0LnNjYWxlfHwxLHRoaXMuX2RyYWdnYWJsZT10JiZ0LmRyYWdnYWJsZXx8ITEsdGhpcy5fY2xpY2tUb2xlcmFuY2U9dCYmdC5jbGlja1RvbGVyYW5jZXx8MCx0aGlzLl9pc0RyYWdnaW5nPSExLHRoaXMuX3N0YXRlPVwiaW5hY3RpdmVcIix0aGlzLl9yb3RhdGlvbj10JiZ0LnJvdGF0aW9ufHwwLHRoaXMuX3JvdGF0aW9uQWxpZ25tZW50PXQmJnQucm90YXRpb25BbGlnbm1lbnR8fFwiYXV0b1wiLHRoaXMuX3BpdGNoQWxpZ25tZW50PXQmJnQucGl0Y2hBbGlnbm1lbnQmJnQucGl0Y2hBbGlnbm1lbnR8fFwiYXV0b1wiLHRoaXMuX3VwZGF0ZU1vdmluZz0oKT0+dGhpcy5fdXBkYXRlKCEwKSx0aGlzLl9vY2NsdWRlZE9wYWNpdHk9dCYmdC5vY2NsdWRlZE9wYWNpdHl8fC4yLHQmJnQuZWxlbWVudCl0aGlzLl9lbGVtZW50PXQuZWxlbWVudCx0aGlzLl9vZmZzZXQ9ZS5Qb2ludC5jb252ZXJ0KHQmJnQub2Zmc2V0fHxbMCwwXSk7ZWxzZSB7dGhpcy5fZGVmYXVsdE1hcmtlcj0hMCx0aGlzLl9lbGVtZW50PW4oXCJkaXZcIik7Y29uc3QgaT00MSxvPTI3LHI9cyhcInN2Z1wiLHtkaXNwbGF5OlwiYmxvY2tcIixoZWlnaHQ6aSp0aGlzLl9zY2FsZStcInB4XCIsd2lkdGg6byp0aGlzLl9zY2FsZStcInB4XCIsdmlld0JveDpgMCAwICR7b30gJHtpfWB9LHRoaXMuX2VsZW1lbnQpLGE9cyhcInJhZGlhbEdyYWRpZW50XCIse2lkOlwic2hhZG93R3JhZGllbnRcIn0scyhcImRlZnNcIix7fSxyKSk7cyhcInN0b3BcIix7b2Zmc2V0OlwiMTAlXCIsXCJzdG9wLW9wYWNpdHlcIjouNH0sYSkscyhcInN0b3BcIix7b2Zmc2V0OlwiMTAwJVwiLFwic3RvcC1vcGFjaXR5XCI6LjA1fSxhKSxzKFwiZWxsaXBzZVwiLHtjeDoxMy41LGN5OjM0Ljgscng6MTAuNSxyeTo1LjI1LGZpbGw6XCJ1cmwoI3NoYWRvd0dyYWRpZW50KVwifSxyKSxzKFwicGF0aFwiLHtmaWxsOnRoaXMuX2NvbG9yLGQ6XCJNMjcsMTMuNUMyNywxOS4wNyAyMC4yNSwyNyAxNC43NSwzNC41QzE0LjAyLDM1LjUgMTIuOTgsMzUuNSAxMi4yNSwzNC41QzYuNzUsMjcgMCwxOS4yMiAwLDEzLjVDMCw2LjA0IDYuMDQsMCAxMy41LDBDMjAuOTYsMCAyNyw2LjA0IDI3LDEzLjVaXCJ9LHIpLHMoXCJwYXRoXCIse29wYWNpdHk6LjI1LGQ6XCJNMTMuNSwwQzYuMDQsMCAwLDYuMDQgMCwxMy41QzAsMTkuMjIgNi43NSwyNyAxMi4yNSwzNC41QzEzLDM1LjUyIDE0LjAyLDM1LjUgMTQuNzUsMzQuNUMyMC4yNSwyNyAyNywxOS4wNyAyNywxMy41QzI3LDYuMDQgMjAuOTYsMCAxMy41LDBaTTEzLjUsMUMyMC40MiwxIDI2LDYuNTggMjYsMTMuNUMyNiwxNS45IDI0LjUsMTkuMTggMjIuMjIsMjIuNzRDMTkuOTUsMjYuMyAxNi43MSwzMC4xNCAxMy45NCwzMy45MUMxMy43NCwzNC4xOCAxMy42MSwzNC4zMiAxMy41LDM0LjQ0QzEzLjM5LDM0LjMyIDEzLjI2LDM0LjE4IDEzLjA2LDMzLjkxQzEwLjI4LDMwLjEzIDcuNDEsMjYuMzEgNS4wMiwyMi43N0MyLjYyLDE5LjIzIDEsMTUuOTUgMSwxMy41QzEsNi41OCA2LjU4LDEgMTMuNSwxWlwifSxyKSxzKFwiY2lyY2xlXCIse2ZpbGw6XCJ3aGl0ZVwiLGN4OjEzLjUsY3k6MTMuNSxyOjUuNX0sciksdGhpcy5fb2Zmc2V0PWUuUG9pbnQuY29udmVydCh0JiZ0Lm9mZnNldHx8WzAsLTE0XSk7fXRoaXMuX2VsZW1lbnQuaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKXx8dGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsXCJNYXAgbWFya2VyXCIpLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLW1hcmtlclwiKSx0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJkcmFnc3RhcnRcIiwoZT0+e2UucHJldmVudERlZmF1bHQoKTt9KSksdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsKGU9PntlLnByZXZlbnREZWZhdWx0KCk7fSkpO2NvbnN0IG89dGhpcy5fZWxlbWVudC5jbGFzc0xpc3Q7Zm9yKGNvbnN0IGUgaW4gUXIpby5yZW1vdmUoYG1hcGJveGdsLW1hcmtlci1hbmNob3ItJHtlfWApO28uYWRkKGBtYXBib3hnbC1tYXJrZXItYW5jaG9yLSR7dGhpcy5fYW5jaG9yfWApLHRoaXMuX3BvcHVwPW51bGw7fWFkZFRvKGUpe3JldHVybiBlPT09dGhpcy5fbWFwfHwodGhpcy5yZW1vdmUoKSx0aGlzLl9tYXA9ZSxlLmdldENhbnZhc0NvbnRhaW5lcigpLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpLGUub24oXCJtb3ZlXCIsdGhpcy5fdXBkYXRlTW92aW5nKSxlLm9uKFwibW92ZWVuZFwiLHRoaXMuX3VwZGF0ZSksZS5vbihcInJlbW92ZVwiLHRoaXMuX2NsZWFyRmFkZVRpbWVyKSxlLl9hZGRNYXJrZXIodGhpcyksdGhpcy5zZXREcmFnZ2FibGUodGhpcy5fZHJhZ2dhYmxlKSx0aGlzLl91cGRhdGUoKSxlLm9uKFwiY2xpY2tcIix0aGlzLl9vbk1hcENsaWNrKSksdGhpc31yZW1vdmUoKXtjb25zdCBlPXRoaXMuX21hcDtyZXR1cm4gZSYmKGUub2ZmKFwiY2xpY2tcIix0aGlzLl9vbk1hcENsaWNrKSxlLm9mZihcIm1vdmVcIix0aGlzLl91cGRhdGVNb3ZpbmcpLGUub2ZmKFwibW92ZWVuZFwiLHRoaXMuX3VwZGF0ZSksZS5vZmYoXCJtb3VzZWRvd25cIix0aGlzLl9hZGREcmFnSGFuZGxlciksZS5vZmYoXCJ0b3VjaHN0YXJ0XCIsdGhpcy5fYWRkRHJhZ0hhbmRsZXIpLGUub2ZmKFwibW91c2V1cFwiLHRoaXMuX29uVXApLGUub2ZmKFwidG91Y2hlbmRcIix0aGlzLl9vblVwKSxlLm9mZihcIm1vdXNlbW92ZVwiLHRoaXMuX29uTW92ZSksZS5vZmYoXCJ0b3VjaG1vdmVcIix0aGlzLl9vbk1vdmUpLGUub2ZmKFwicmVtb3ZlXCIsdGhpcy5fY2xlYXJGYWRlVGltZXIpLGUuX3JlbW92ZU1hcmtlcih0aGlzKSx0aGlzLl9tYXA9dm9pZCAwKSx0aGlzLl9jbGVhckZhZGVUaW1lcigpLHRoaXMuX2VsZW1lbnQucmVtb3ZlKCksdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLnJlbW92ZSgpLHRoaXN9Z2V0TG5nTGF0KCl7cmV0dXJuIHRoaXMuX2xuZ0xhdH1zZXRMbmdMYXQodCl7cmV0dXJuIHRoaXMuX2xuZ0xhdD1lLkxuZ0xhdC5jb252ZXJ0KHQpLHRoaXMuX3Bvcz1udWxsLHRoaXMuX3BvcHVwJiZ0aGlzLl9wb3B1cC5zZXRMbmdMYXQodGhpcy5fbG5nTGF0KSx0aGlzLl91cGRhdGUoITApLHRoaXN9Z2V0RWxlbWVudCgpe3JldHVybiB0aGlzLl9lbGVtZW50fXNldFBvcHVwKGUpe2lmKHRoaXMuX3BvcHVwJiYodGhpcy5fcG9wdXAucmVtb3ZlKCksdGhpcy5fcG9wdXA9bnVsbCx0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcInJvbGVcIiksdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIix0aGlzLl9vbktleVByZXNzKSx0aGlzLl9vcmlnaW5hbFRhYkluZGV4fHx0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcInRhYmluZGV4XCIpKSxlKXtpZighKFwib2Zmc2V0XCJpbiBlLm9wdGlvbnMpKXtjb25zdCB0PTM4LjEsaT0xMy41LG89TWF0aC5zcXJ0KE1hdGgucG93KGksMikvMik7ZS5vcHRpb25zLm9mZnNldD10aGlzLl9kZWZhdWx0TWFya2VyP3t0b3A6WzAsMF0sXCJ0b3AtbGVmdFwiOlswLDBdLFwidG9wLXJpZ2h0XCI6WzAsMF0sYm90dG9tOlswLC10XSxcImJvdHRvbS1sZWZ0XCI6W28sLTEqKHQtaStvKV0sXCJib3R0b20tcmlnaHRcIjpbLW8sLTEqKHQtaStvKV0sbGVmdDpbaSwtMSoodC1pKV0scmlnaHQ6Wy1pLC0xKih0LWkpXX06dGhpcy5fb2Zmc2V0O310aGlzLl9wb3B1cD1lLGUuX21hcmtlcj10aGlzLHRoaXMuX2xuZ0xhdCYmdGhpcy5fcG9wdXAuc2V0TG5nTGF0KHRoaXMuX2xuZ0xhdCksdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJidXR0b25cIiksdGhpcy5fb3JpZ2luYWxUYWJJbmRleD10aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpLHRoaXMuX29yaWdpbmFsVGFiSW5kZXh8fHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcIjBcIiksdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIix0aGlzLl9vbktleVByZXNzKSx0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZShcImFyaWEtZXhwYW5kZWRcIixcImZhbHNlXCIpO31yZXR1cm4gdGhpc31fb25LZXlQcmVzcyhlKXtjb25zdCB0PWUuY29kZSxpPWUuY2hhckNvZGV8fGUua2V5Q29kZTtcIlNwYWNlXCIhPT10JiZcIkVudGVyXCIhPT10JiYzMiE9PWkmJjEzIT09aXx8dGhpcy50b2dnbGVQb3B1cCgpO31fb25NYXBDbGljayhlKXtjb25zdCB0PWUub3JpZ2luYWxFdmVudC50YXJnZXQsaT10aGlzLl9lbGVtZW50O3RoaXMuX3BvcHVwJiYodD09PWl8fGkuY29udGFpbnModCkpJiZ0aGlzLnRvZ2dsZVBvcHVwKCk7fWdldFBvcHVwKCl7cmV0dXJuIHRoaXMuX3BvcHVwfXRvZ2dsZVBvcHVwKCl7Y29uc3QgZT10aGlzLl9wb3B1cDtyZXR1cm4gZT8oZS5pc09wZW4oKT8oZS5yZW1vdmUoKSx0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZShcImFyaWEtZXhwYW5kZWRcIixcImZhbHNlXCIpKTp0aGlzLl9tYXAmJihlLmFkZFRvKHRoaXMuX21hcCksdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWV4cGFuZGVkXCIsXCJ0cnVlXCIpKSx0aGlzKTp0aGlzfV9iZWhpbmRUZXJyYWluKCl7Y29uc3QgZT10aGlzLl9tYXAsdD10aGlzLl9wb3M7aWYoIWV8fCF0KXJldHVybiAhMTtjb25zdCBpPWUudW5wcm9qZWN0KHQpLG89ZS5nZXRGcmVlQ2FtZXJhT3B0aW9ucygpO2lmKCFvLnBvc2l0aW9uKXJldHVybiAhMTtjb25zdCByPW8ucG9zaXRpb24udG9MbmdMYXQoKTtyZXR1cm4gci5kaXN0YW5jZVRvKGkpPC45KnIuZGlzdGFuY2VUbyh0aGlzLl9sbmdMYXQpfV9ldmFsdWF0ZU9wYWNpdHkoKXtjb25zdCB0PXRoaXMuX21hcDtpZighdClyZXR1cm47Y29uc3QgaT10aGlzLl9wb3M7aWYoIWl8fGkueDwwfHxpLng+dC50cmFuc2Zvcm0ud2lkdGh8fGkueTwwfHxpLnk+dC50cmFuc2Zvcm0uaGVpZ2h0KXJldHVybiB2b2lkIHRoaXMuX2NsZWFyRmFkZVRpbWVyKCk7Y29uc3Qgbz10LnVucHJvamVjdChpKTtsZXQgcjt0Ll9zaG93aW5nR2xvYmUoKSYmZS5pc0xuZ0xhdEJlaGluZEdsb2JlKHQudHJhbnNmb3JtLHRoaXMuX2xuZ0xhdCk/cj0wOihyPTEtdC5fcXVlcnlGb2dPcGFjaXR5KG8pLHQudHJhbnNmb3JtLl90ZXJyYWluRW5hYmxlZCgpJiZ0LmdldFRlcnJhaW4oKSYmdGhpcy5fYmVoaW5kVGVycmFpbigpJiYocio9dGhpcy5fb2NjbHVkZWRPcGFjaXR5KSksdGhpcy5fZWxlbWVudC5zdHlsZS5vcGFjaXR5PWAke3J9YCx0aGlzLl9lbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHM9cj4wP1wiYXV0b1wiOlwibm9uZVwiLHRoaXMuX3BvcHVwJiZ0aGlzLl9wb3B1cC5fc2V0T3BhY2l0eShyKSx0aGlzLl9mYWRlVGltZXI9bnVsbDt9X2NsZWFyRmFkZVRpbWVyKCl7dGhpcy5fZmFkZVRpbWVyJiYoY2xlYXJUaW1lb3V0KHRoaXMuX2ZhZGVUaW1lciksdGhpcy5fZmFkZVRpbWVyPW51bGwpO31fdXBkYXRlRE9NKCl7Y29uc3QgZT10aGlzLl9wb3M7aWYoIWV8fCF0aGlzLl9tYXApcmV0dXJuO2NvbnN0IHQ9dGhpcy5fb2Zmc2V0Lm11bHQodGhpcy5fc2NhbGUpO3RoaXMuX2VsZW1lbnQuc3R5bGUudHJhbnNmb3JtPWBcXG4gICAgICAgICAgICB0cmFuc2xhdGUoJHtlLnh9cHgsJHtlLnl9cHgpXFxuICAgICAgICAgICAgJHtRclt0aGlzLl9hbmNob3JdfVxcbiAgICAgICAgICAgICR7dGhpcy5fY2FsY3VsYXRlWFlUcmFuc2Zvcm0oKX0gJHt0aGlzLl9jYWxjdWxhdGVaVHJhbnNmb3JtKCl9XFxuICAgICAgICAgICAgdHJhbnNsYXRlKCR7dC54fXB4LCR7dC55fXB4KVxcbiAgICAgICAgYDt9X2NhbGN1bGF0ZVhZVHJhbnNmb3JtKCl7Y29uc3QgdD10aGlzLl9wb3MsaT10aGlzLl9tYXAsbz10aGlzLmdldFBpdGNoQWxpZ25tZW50KCk7aWYoIWl8fCF0fHxcIm1hcFwiIT09bylyZXR1cm4gXCJcIjtpZighaS5fc2hvd2luZ0dsb2JlKCkpe2NvbnN0IGU9aS5nZXRQaXRjaCgpO3JldHVybiBlP2Byb3RhdGVYKCR7ZX1kZWcpYDpcIlwifWNvbnN0IHI9ZS5yYWRUb0RlZyhlLmdsb2JlVGlsdEF0TG5nTGF0KGkudHJhbnNmb3JtLHRoaXMuX2xuZ0xhdCkpLG49dC5zdWIoZS5nbG9iZUNlbnRlclRvU2NyZWVuUG9pbnQoaS50cmFuc2Zvcm0pKSxzPU1hdGguYWJzKG4ueCkrTWF0aC5hYnMobi55KTtpZigwPT09cylyZXR1cm4gXCJcIjtjb25zdCBhPXIvcztyZXR1cm4gYHJvdGF0ZVgoJHstbi55KmF9ZGVnKSByb3RhdGVZKCR7bi54KmF9ZGVnKWB9X2NhbGN1bGF0ZVpUcmFuc2Zvcm0oKXtjb25zdCB0PXRoaXMuX3BvcyxpPXRoaXMuX21hcDtpZighaXx8IXQpcmV0dXJuIFwiXCI7bGV0IG89MDtjb25zdCByPXRoaXMuZ2V0Um90YXRpb25BbGlnbm1lbnQoKTtpZihcIm1hcFwiPT09cilpZihpLl9zaG93aW5nR2xvYmUoKSl7Y29uc3QgdD1pLnByb2plY3QobmV3IGUuTG5nTGF0KHRoaXMuX2xuZ0xhdC5sbmcsdGhpcy5fbG5nTGF0LmxhdCsuMDAxKSkscj1pLnByb2plY3QobmV3IGUuTG5nTGF0KHRoaXMuX2xuZ0xhdC5sbmcsdGhpcy5fbG5nTGF0LmxhdC0uMDAxKSkuc3ViKHQpO289ZS5yYWRUb0RlZyhNYXRoLmF0YW4yKHIueSxyLngpKS05MDt9ZWxzZSBvPS1pLmdldEJlYXJpbmcoKTtlbHNlIGlmKFwiaG9yaXpvblwiPT09cil7Y29uc3Qgcj1lLnNtb290aHN0ZXAoNCw2LGkuZ2V0Wm9vbSgpKSxuPWUuZ2xvYmVDZW50ZXJUb1NjcmVlblBvaW50KGkudHJhbnNmb3JtKTtuLnkrPXIqaS50cmFuc2Zvcm0uaGVpZ2h0O2NvbnN0IHM9dC5zdWIobiksYT1lLnJhZFRvRGVnKE1hdGguYXRhbjIocy55LHMueCkpO289KGE+OTA/YS0yNzA6YSs5MCkqKDEtcik7fXJldHVybiBvKz10aGlzLl9yb3RhdGlvbixvP2Byb3RhdGVaKCR7b31kZWcpYDpcIlwifV91cGRhdGUodCl7ZS53aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fdXBkYXRlRnJhbWVJZCk7Y29uc3QgaT10aGlzLl9tYXA7aSYmKGkudHJhbnNmb3JtLnJlbmRlcldvcmxkQ29waWVzJiYodGhpcy5fbG5nTGF0PUpyKHRoaXMuX2xuZ0xhdCx0aGlzLl9wb3MsaS50cmFuc2Zvcm0pKSx0aGlzLl9wb3M9aS5wcm9qZWN0KHRoaXMuX2xuZ0xhdCksITA9PT10P3RoaXMuX3VwZGF0ZUZyYW1lSWQ9ZS53aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX2VsZW1lbnQmJnRoaXMuX3BvcyYmdGhpcy5fYW5jaG9yJiYodGhpcy5fcG9zPXRoaXMuX3Bvcy5yb3VuZCgpLHRoaXMuX3VwZGF0ZURPTSgpKTt9KSk6dGhpcy5fcG9zPXRoaXMuX3Bvcy5yb3VuZCgpLGkuX3JlcXVlc3REb21UYXNrKCgoKT0+e3RoaXMuX21hcCYmKHRoaXMuX2VsZW1lbnQmJnRoaXMuX3BvcyYmdGhpcy5fYW5jaG9yJiZ0aGlzLl91cGRhdGVET00oKSwoaS5fc2hvd2luZ0dsb2JlKCl8fGkuZ2V0VGVycmFpbigpfHxpLmdldEZvZygpKSYmIXRoaXMuX2ZhZGVUaW1lciYmKHRoaXMuX2ZhZGVUaW1lcj1zZXRUaW1lb3V0KHRoaXMuX2V2YWx1YXRlT3BhY2l0eS5iaW5kKHRoaXMpLDYwKSkpO30pKSk7fWdldE9mZnNldCgpe3JldHVybiB0aGlzLl9vZmZzZXR9c2V0T2Zmc2V0KHQpe3JldHVybiB0aGlzLl9vZmZzZXQ9ZS5Qb2ludC5jb252ZXJ0KHQpLHRoaXMuX3VwZGF0ZSgpLHRoaXN9X29uTW92ZSh0KXtjb25zdCBpPXRoaXMuX21hcDtpZighaSlyZXR1cm47Y29uc3Qgbz10aGlzLl9wb2ludGVyZG93blBvcyxyPXRoaXMuX3Bvc2l0aW9uRGVsdGE7aWYobyYmcil7aWYoIXRoaXMuX2lzRHJhZ2dpbmcpe2NvbnN0IGU9dGhpcy5fY2xpY2tUb2xlcmFuY2V8fGkuX2NsaWNrVG9sZXJhbmNlO2lmKHQucG9pbnQuZGlzdChvKTxlKXJldHVybjt0aGlzLl9pc0RyYWdnaW5nPSEwO310aGlzLl9wb3M9dC5wb2ludC5zdWIociksdGhpcy5fbG5nTGF0PWkudW5wcm9qZWN0KHRoaXMuX3BvcyksdGhpcy5zZXRMbmdMYXQodGhpcy5fbG5nTGF0KSx0aGlzLl9lbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHM9XCJub25lXCIsXCJwZW5kaW5nXCI9PT10aGlzLl9zdGF0ZSYmKHRoaXMuX3N0YXRlPVwiYWN0aXZlXCIsdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZHJhZ3N0YXJ0XCIpKSksdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZHJhZ1wiKSk7fX1fb25VcCgpe3RoaXMuX2VsZW1lbnQuc3R5bGUucG9pbnRlckV2ZW50cz1cImF1dG9cIix0aGlzLl9wb3NpdGlvbkRlbHRhPW51bGwsdGhpcy5fcG9pbnRlcmRvd25Qb3M9bnVsbCx0aGlzLl9pc0RyYWdnaW5nPSExO2NvbnN0IHQ9dGhpcy5fbWFwO3QmJih0Lm9mZihcIm1vdXNlbW92ZVwiLHRoaXMuX29uTW92ZSksdC5vZmYoXCJ0b3VjaG1vdmVcIix0aGlzLl9vbk1vdmUpKSxcImFjdGl2ZVwiPT09dGhpcy5fc3RhdGUmJnRoaXMuZmlyZShuZXcgZS5FdmVudChcImRyYWdlbmRcIikpLHRoaXMuX3N0YXRlPVwiaW5hY3RpdmVcIjt9X2FkZERyYWdIYW5kbGVyKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLGk9dGhpcy5fcG9zO3QmJmkmJnRoaXMuX2VsZW1lbnQuY29udGFpbnMoZS5vcmlnaW5hbEV2ZW50LnRhcmdldCkmJihlLnByZXZlbnREZWZhdWx0KCksdGhpcy5fcG9zaXRpb25EZWx0YT1lLnBvaW50LnN1YihpKSx0aGlzLl9wb2ludGVyZG93blBvcz1lLnBvaW50LHRoaXMuX3N0YXRlPVwicGVuZGluZ1wiLHQub24oXCJtb3VzZW1vdmVcIix0aGlzLl9vbk1vdmUpLHQub24oXCJ0b3VjaG1vdmVcIix0aGlzLl9vbk1vdmUpLHQub25jZShcIm1vdXNldXBcIix0aGlzLl9vblVwKSx0Lm9uY2UoXCJ0b3VjaGVuZFwiLHRoaXMuX29uVXApKTt9c2V0RHJhZ2dhYmxlKGUpe3RoaXMuX2RyYWdnYWJsZT0hIWU7Y29uc3QgdD10aGlzLl9tYXA7cmV0dXJuIHQmJihlPyh0Lm9uKFwibW91c2Vkb3duXCIsdGhpcy5fYWRkRHJhZ0hhbmRsZXIpLHQub24oXCJ0b3VjaHN0YXJ0XCIsdGhpcy5fYWRkRHJhZ0hhbmRsZXIpKToodC5vZmYoXCJtb3VzZWRvd25cIix0aGlzLl9hZGREcmFnSGFuZGxlciksdC5vZmYoXCJ0b3VjaHN0YXJ0XCIsdGhpcy5fYWRkRHJhZ0hhbmRsZXIpKSksdGhpc31pc0RyYWdnYWJsZSgpe3JldHVybiB0aGlzLl9kcmFnZ2FibGV9c2V0Um90YXRpb24oZSl7cmV0dXJuIHRoaXMuX3JvdGF0aW9uPWV8fDAsdGhpcy5fdXBkYXRlKCksdGhpc31nZXRSb3RhdGlvbigpe3JldHVybiB0aGlzLl9yb3RhdGlvbn1zZXRSb3RhdGlvbkFsaWdubWVudChlKXtyZXR1cm4gdGhpcy5fcm90YXRpb25BbGlnbm1lbnQ9ZXx8XCJhdXRvXCIsdGhpcy5fdXBkYXRlKCksdGhpc31nZXRSb3RhdGlvbkFsaWdubWVudCgpe3JldHVybiBcImF1dG9cIj09PXRoaXMuX3JvdGF0aW9uQWxpZ25tZW50fHxcImhvcml6b25cIj09PXRoaXMuX3JvdGF0aW9uQWxpZ25tZW50JiZ0aGlzLl9tYXAmJiF0aGlzLl9tYXAuX3Nob3dpbmdHbG9iZSgpP1widmlld3BvcnRcIjp0aGlzLl9yb3RhdGlvbkFsaWdubWVudH1zZXRQaXRjaEFsaWdubWVudChlKXtyZXR1cm4gdGhpcy5fcGl0Y2hBbGlnbm1lbnQ9ZXx8XCJhdXRvXCIsdGhpcy5fdXBkYXRlKCksdGhpc31nZXRQaXRjaEFsaWdubWVudCgpe3JldHVybiBcImF1dG9cIj09PXRoaXMuX3BpdGNoQWxpZ25tZW50P3RoaXMuZ2V0Um90YXRpb25BbGlnbm1lbnQoKTp0aGlzLl9waXRjaEFsaWdubWVudH1zZXRPY2NsdWRlZE9wYWNpdHkoZSl7cmV0dXJuIHRoaXMuX29jY2x1ZGVkT3BhY2l0eT1lfHwuMix0aGlzLl91cGRhdGUoKSx0aGlzfWdldE9jY2x1ZGVkT3BhY2l0eSgpe3JldHVybiB0aGlzLl9vY2NsdWRlZE9wYWNpdHl9fWNvbnN0IHRuPXtjbG9zZUJ1dHRvbjohMCxjbG9zZU9uQ2xpY2s6ITAsZm9jdXNBZnRlck9wZW46ITAsY2xhc3NOYW1lOlwiXCIsbWF4V2lkdGg6XCIyNDBweFwifSxvbj1bXCJhW2hyZWZdXCIsXCJbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9Jy0xJ10pXCIsXCJbY29udGVudGVkaXRhYmxlXTpub3QoW2NvbnRlbnRlZGl0YWJsZT0nZmFsc2UnXSlcIixcImJ1dHRvbjpub3QoW2Rpc2FibGVkXSlcIixcImlucHV0Om5vdChbZGlzYWJsZWRdKVwiLFwic2VsZWN0Om5vdChbZGlzYWJsZWRdKVwiLFwidGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pXCJdLmpvaW4oXCIsIFwiKTtmdW5jdGlvbiBybih0PW5ldyBlLlBvaW50KDAsMCksaT1cImJvdHRvbVwiKXtpZihcIm51bWJlclwiPT10eXBlb2YgdCl7Y29uc3Qgbz1NYXRoLnJvdW5kKE1hdGguc3FydCguNSpNYXRoLnBvdyh0LDIpKSk7c3dpdGNoKGkpe2Nhc2VcInRvcFwiOnJldHVybiBuZXcgZS5Qb2ludCgwLHQpO2Nhc2VcInRvcC1sZWZ0XCI6cmV0dXJuIG5ldyBlLlBvaW50KG8sbyk7Y2FzZVwidG9wLXJpZ2h0XCI6cmV0dXJuIG5ldyBlLlBvaW50KC1vLG8pO2Nhc2VcImJvdHRvbVwiOnJldHVybiBuZXcgZS5Qb2ludCgwLC10KTtjYXNlXCJib3R0b20tbGVmdFwiOnJldHVybiBuZXcgZS5Qb2ludChvLC1vKTtjYXNlXCJib3R0b20tcmlnaHRcIjpyZXR1cm4gbmV3IGUuUG9pbnQoLW8sLW8pO2Nhc2VcImxlZnRcIjpyZXR1cm4gbmV3IGUuUG9pbnQodCwwKTtjYXNlXCJyaWdodFwiOnJldHVybiBuZXcgZS5Qb2ludCgtdCwwKX1yZXR1cm4gbmV3IGUuUG9pbnQoMCwwKX1yZXR1cm4gdCBpbnN0YW5jZW9mIGUuUG9pbnR8fEFycmF5LmlzQXJyYXkodCk/ZS5Qb2ludC5jb252ZXJ0KHQpOmUuUG9pbnQuY29udmVydCh0W2ldfHxbMCwwXSl9Y2xhc3Mgbm57Y29uc3RydWN0b3IoZSl7dGhpcy5qdW1wVG8oZSk7fWdldFZhbHVlKHQpe2lmKHQ8PXRoaXMuX3N0YXJ0VGltZSlyZXR1cm4gdGhpcy5fc3RhcnQ7aWYodD49dGhpcy5fZW5kVGltZSlyZXR1cm4gdGhpcy5fZW5kO2NvbnN0IGk9ZS5lYXNlQ3ViaWNJbk91dCgodC10aGlzLl9zdGFydFRpbWUpLyh0aGlzLl9lbmRUaW1lLXRoaXMuX3N0YXJ0VGltZSkpO3JldHVybiB0aGlzLl9zdGFydCooMS1pKSt0aGlzLl9lbmQqaX1pc0Vhc2luZyhlKXtyZXR1cm4gZT49dGhpcy5fc3RhcnRUaW1lJiZlPD10aGlzLl9lbmRUaW1lfWp1bXBUbyhlKXt0aGlzLl9zdGFydFRpbWU9LTEvMCx0aGlzLl9lbmRUaW1lPS0xLzAsdGhpcy5fc3RhcnQ9ZSx0aGlzLl9lbmQ9ZTt9ZWFzZVRvKGUsdCxpKXt0aGlzLl9zdGFydD10aGlzLmdldFZhbHVlKHQpLHRoaXMuX2VuZD1lLHRoaXMuX3N0YXJ0VGltZT10LHRoaXMuX2VuZFRpbWU9dCtpO319Y29uc3Qgc249e1wiQXR0cmlidXRpb25Db250cm9sLlRvZ2dsZUF0dHJpYnV0aW9uXCI6XCJUb2dnbGUgYXR0cmlidXRpb25cIixcIkF0dHJpYnV0aW9uQ29udHJvbC5NYXBGZWVkYmFja1wiOlwiTWFwIGZlZWRiYWNrXCIsXCJGdWxsc2NyZWVuQ29udHJvbC5FbnRlclwiOlwiRW50ZXIgZnVsbHNjcmVlblwiLFwiRnVsbHNjcmVlbkNvbnRyb2wuRXhpdFwiOlwiRXhpdCBmdWxsc2NyZWVuXCIsXCJHZW9sb2NhdGVDb250cm9sLkZpbmRNeUxvY2F0aW9uXCI6XCJGaW5kIG15IGxvY2F0aW9uXCIsXCJHZW9sb2NhdGVDb250cm9sLkxvY2F0aW9uTm90QXZhaWxhYmxlXCI6XCJMb2NhdGlvbiBub3QgYXZhaWxhYmxlXCIsXCJMb2dvQ29udHJvbC5UaXRsZVwiOlwiTWFwYm94IGxvZ29cIixcIk1hcC5UaXRsZVwiOlwiTWFwXCIsXCJOYXZpZ2F0aW9uQ29udHJvbC5SZXNldEJlYXJpbmdcIjpcIlJlc2V0IGJlYXJpbmcgdG8gbm9ydGhcIixcIk5hdmlnYXRpb25Db250cm9sLlpvb21JblwiOlwiWm9vbSBpblwiLFwiTmF2aWdhdGlvbkNvbnRyb2wuWm9vbU91dFwiOlwiWm9vbSBvdXRcIixcIlNjcm9sbFpvb21CbG9ja2VyLkN0cmxNZXNzYWdlXCI6XCJVc2UgY3RybCArIHNjcm9sbCB0byB6b29tIHRoZSBtYXBcIixcIlNjcm9sbFpvb21CbG9ja2VyLkNtZE1lc3NhZ2VcIjpcIlVzZSDijJggKyBzY3JvbGwgdG8gem9vbSB0aGUgbWFwXCIsXCJUb3VjaFBhbkJsb2NrZXIuTWVzc2FnZVwiOlwiVXNlIHR3byBmaW5nZXJzIHRvIG1vdmUgdGhlIG1hcFwifSxhbj17Y2VudGVyOlswLDBdLHpvb206MCxiZWFyaW5nOjAscGl0Y2g6MCxtaW5ab29tOi0yLG1heFpvb206MjIsbWluUGl0Y2g6MCxtYXhQaXRjaDo4NSxpbnRlcmFjdGl2ZTohMCxzY3JvbGxab29tOiEwLGJveFpvb206ITAsZHJhZ1JvdGF0ZTohMCxkcmFnUGFuOiEwLGtleWJvYXJkOiEwLGRvdWJsZUNsaWNrWm9vbTohMCx0b3VjaFpvb21Sb3RhdGU6ITAsdG91Y2hQaXRjaDohMCxjb29wZXJhdGl2ZUdlc3R1cmVzOiExLHBlcmZvcm1hbmNlTWV0cmljc0NvbGxlY3Rpb246ITAsYmVhcmluZ1NuYXA6NyxjbGlja1RvbGVyYW5jZTozLHBpdGNoV2l0aFJvdGF0ZTohMCxoYXNoOiExLGF0dHJpYnV0aW9uQ29udHJvbDohMCxmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OiExLHByZXNlcnZlRHJhd2luZ0J1ZmZlcjohMSx0cmFja1Jlc2l6ZTohMCxvcHRpbWl6ZUZvclRlcnJhaW46ITAscmVuZGVyV29ybGRDb3BpZXM6ITAscmVmcmVzaEV4cGlyZWRUaWxlczohMCxtaW5UaWxlQ2FjaGVTaXplOm51bGwsbWF4VGlsZUNhY2hlU2l6ZTpudWxsLGxvY2FsSWRlb2dyYXBoRm9udEZhbWlseTpcInNhbnMtc2VyaWZcIixsb2NhbEZvbnRGYW1pbHk6bnVsbCx0cmFuc2Zvcm1SZXF1ZXN0Om51bGwsYWNjZXNzVG9rZW46bnVsbCxmYWRlRHVyYXRpb246MzAwLHJlc3BlY3RQcmVmZXJzUmVkdWNlZE1vdGlvbjohMCxjcm9zc1NvdXJjZUNvbGxpc2lvbnM6ITB9LGxuPXtzaG93Q29tcGFzczohMCxzaG93Wm9vbTohMCx2aXN1YWxpemVQaXRjaDohMX07Y2xhc3MgY257Y29uc3RydWN0b3IodCxpLG89ITEpe3RoaXMuX2NsaWNrVG9sZXJhbmNlPTEwLHRoaXMuZWxlbWVudD1pLHRoaXMubW91c2VSb3RhdGU9bmV3IHlyKHtjbGlja1RvbGVyYW5jZTp0LmRyYWdSb3RhdGUuX21vdXNlUm90YXRlLl9jbGlja1RvbGVyYW5jZX0pLHRoaXMubWFwPXQsbyYmKHRoaXMubW91c2VQaXRjaD1uZXcgYnIoe2NsaWNrVG9sZXJhbmNlOnQuZHJhZ1JvdGF0ZS5fbW91c2VQaXRjaC5fY2xpY2tUb2xlcmFuY2V9KSksZS5iaW5kQWxsKFtcIm1vdXNlZG93blwiLFwibW91c2Vtb3ZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaHN0YXJ0XCIsXCJ0b3VjaG1vdmVcIixcInRvdWNoZW5kXCIsXCJyZXNldFwiXSx0aGlzKSxpLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0aGlzLm1vdXNlZG93biksaS5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLHRoaXMudG91Y2hzdGFydCx7cGFzc2l2ZTohMX0pLGkuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLHRoaXMudG91Y2htb3ZlKSxpLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLHRoaXMudG91Y2hlbmQpLGkuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoY2FuY2VsXCIsdGhpcy5yZXNldCk7fWRvd24oZSx0KXt0aGlzLm1vdXNlUm90YXRlLm1vdXNlZG93bihlLHQpLHRoaXMubW91c2VQaXRjaCYmdGhpcy5tb3VzZVBpdGNoLm1vdXNlZG93bihlLHQpLGgoKTt9bW92ZShlLHQpe2NvbnN0IGk9dGhpcy5tYXAsbz10aGlzLm1vdXNlUm90YXRlLm1vdXNlbW92ZVdpbmRvdyhlLHQpLHI9byYmby5iZWFyaW5nRGVsdGE7aWYociYmaS5zZXRCZWFyaW5nKGkuZ2V0QmVhcmluZygpK3IpLHRoaXMubW91c2VQaXRjaCl7Y29uc3Qgbz10aGlzLm1vdXNlUGl0Y2gubW91c2Vtb3ZlV2luZG93KGUsdCkscj1vJiZvLnBpdGNoRGVsdGE7ciYmaS5zZXRQaXRjaChpLmdldFBpdGNoKCkrcik7fX1vZmYoKXtjb25zdCBlPXRoaXMuZWxlbWVudDtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0aGlzLm1vdXNlZG93biksZS5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLHRoaXMudG91Y2hzdGFydCx7cGFzc2l2ZTohMX0pLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLHRoaXMudG91Y2htb3ZlKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLHRoaXMudG91Y2hlbmQpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoY2FuY2VsXCIsdGhpcy5yZXNldCksdGhpcy5vZmZUZW1wKCk7fW9mZlRlbXAoKXt1KCksZS53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHRoaXMubW91c2Vtb3ZlKSxlLndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLHRoaXMubW91c2V1cCk7fW1vdXNlZG93bih0KXt0aGlzLmRvd24oZS5leHRlbmQoe30sdCx7Y3RybEtleTohMCxwcmV2ZW50RGVmYXVsdDooKT0+dC5wcmV2ZW50RGVmYXVsdCgpfSkscCh0aGlzLmVsZW1lbnQsdCkpLGUud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0aGlzLm1vdXNlbW92ZSksZS53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIix0aGlzLm1vdXNldXApO31tb3VzZW1vdmUoZSl7dGhpcy5tb3ZlKGUscCh0aGlzLmVsZW1lbnQsZSkpO31tb3VzZXVwKGUpe3RoaXMubW91c2VSb3RhdGUubW91c2V1cFdpbmRvdyhlKSx0aGlzLm1vdXNlUGl0Y2gmJnRoaXMubW91c2VQaXRjaC5tb3VzZXVwV2luZG93KGUpLHRoaXMub2ZmVGVtcCgpO310b3VjaHN0YXJ0KGUpezEhPT1lLnRhcmdldFRvdWNoZXMubGVuZ3RoP3RoaXMucmVzZXQoKToodGhpcy5fc3RhcnRQb3M9dGhpcy5fbGFzdFBvcz1tKHRoaXMuZWxlbWVudCxlLnRhcmdldFRvdWNoZXMpWzBdLHRoaXMuZG93bih7dHlwZTpcIm1vdXNlZG93blwiLGJ1dHRvbjowLGN0cmxLZXk6ITAscHJldmVudERlZmF1bHQ6KCk9PmUucHJldmVudERlZmF1bHQoKX0sdGhpcy5fc3RhcnRQb3MpKTt9dG91Y2htb3ZlKGUpezEhPT1lLnRhcmdldFRvdWNoZXMubGVuZ3RoP3RoaXMucmVzZXQoKToodGhpcy5fbGFzdFBvcz1tKHRoaXMuZWxlbWVudCxlLnRhcmdldFRvdWNoZXMpWzBdLHRoaXMubW92ZSh7cHJldmVudERlZmF1bHQ6KCk9PmUucHJldmVudERlZmF1bHQoKX0sdGhpcy5fbGFzdFBvcykpO310b3VjaGVuZChlKXswPT09ZS50YXJnZXRUb3VjaGVzLmxlbmd0aCYmdGhpcy5fc3RhcnRQb3MmJnRoaXMuX2xhc3RQb3MmJnRoaXMuX3N0YXJ0UG9zLmRpc3QodGhpcy5fbGFzdFBvcyk8dGhpcy5fY2xpY2tUb2xlcmFuY2UmJnRoaXMuZWxlbWVudC5jbGljaygpLHRoaXMucmVzZXQoKTt9cmVzZXQoKXt0aGlzLm1vdXNlUm90YXRlLnJlc2V0KCksdGhpcy5tb3VzZVBpdGNoJiZ0aGlzLm1vdXNlUGl0Y2gucmVzZXQoKSxkZWxldGUgdGhpcy5fc3RhcnRQb3MsZGVsZXRlIHRoaXMuX2xhc3RQb3MsdGhpcy5vZmZUZW1wKCk7fX1jb25zdCBobj17cG9zaXRpb25PcHRpb25zOntlbmFibGVIaWdoQWNjdXJhY3k6ITEsbWF4aW11bUFnZTowLHRpbWVvdXQ6NmUzfSxmaXRCb3VuZHNPcHRpb25zOnttYXhab29tOjE1fSx0cmFja1VzZXJMb2NhdGlvbjohMSxzaG93QWNjdXJhY3lDaXJjbGU6ITAsc2hvd1VzZXJMb2NhdGlvbjohMCxzaG93VXNlckhlYWRpbmc6ITF9LHVuPXttYXhXaWR0aDoxMDAsdW5pdDpcIm1ldHJpY1wifSxfbj17a2lsb21ldGVyOlwia21cIixtZXRlcjpcIm1cIixtaWxlOlwibWlcIixmb290OlwiZnRcIixcIm5hdXRpY2FsLW1pbGVcIjpcIm5tXCJ9LGRuPXt2ZXJzaW9uOmUudmVyc2lvbixzdXBwb3J0ZWQ6aSxzZXRSVExUZXh0UGx1Z2luOmUuc2V0UlRMVGV4dFBsdWdpbixnZXRSVExUZXh0UGx1Z2luU3RhdHVzOmUuZ2V0UlRMVGV4dFBsdWdpblN0YXR1cyxNYXA6Y2xhc3MgZXh0ZW5kcyAkcntjb25zdHJ1Y3Rvcih0KXtpZihlLkxpdmVQZXJmb3JtYW5jZVV0aWxzLm1hcmsoZS5QZXJmb3JtYW5jZU1hcmtlcnMuY3JlYXRlKSxudWxsIT0odD1lLmV4dGVuZCh7fSxhbix0KSkubWluWm9vbSYmbnVsbCE9dC5tYXhab29tJiZ0Lm1pblpvb20+dC5tYXhab29tKXRocm93IG5ldyBFcnJvcihcIm1heFpvb20gbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWluWm9vbVwiKTtpZihudWxsIT10Lm1pblBpdGNoJiZudWxsIT10Lm1heFBpdGNoJiZ0Lm1pblBpdGNoPnQubWF4UGl0Y2gpdGhyb3cgbmV3IEVycm9yKFwibWF4UGl0Y2ggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWluUGl0Y2hcIik7aWYobnVsbCE9dC5taW5QaXRjaCYmdC5taW5QaXRjaDwwKXRocm93IG5ldyBFcnJvcihcIm1pblBpdGNoIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDBcIik7aWYobnVsbCE9dC5tYXhQaXRjaCYmdC5tYXhQaXRjaD44NSl0aHJvdyBuZXcgRXJyb3IoXCJtYXhQaXRjaCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byA4NVwiKTtpZih0LmFudGlhbGlhcyYmZS5pc1NhZmFyaVdpdGhBbnRpYWxpYXNpbmdCdWcoZS53aW5kb3cpJiYodC5hbnRpYWxpYXM9ITEsZS53YXJuT25jZShcIkFudGlhbGlhc2luZyBpcyBkaXNhYmxlZCBmb3IgdGhpcyBXZWJHTCBjb250ZXh0IHRvIGF2b2lkIGJyb3dzZXIgYnVnOiBodHRwczovL2dpdGh1Yi5jb20vbWFwYm94L21hcGJveC1nbC1qcy9pc3N1ZXMvMTE2MDlcIikpLHN1cGVyKG5ldyBIbyh0Lm1pblpvb20sdC5tYXhab29tLHQubWluUGl0Y2gsdC5tYXhQaXRjaCx0LnJlbmRlcldvcmxkQ29waWVzKSx0KSx0aGlzLl9pbnRlcmFjdGl2ZT10LmludGVyYWN0aXZlLHRoaXMuX21pblRpbGVDYWNoZVNpemU9dC5taW5UaWxlQ2FjaGVTaXplLHRoaXMuX21heFRpbGVDYWNoZVNpemU9dC5tYXhUaWxlQ2FjaGVTaXplLHRoaXMuX2ZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ9dC5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0LHRoaXMuX3ByZXNlcnZlRHJhd2luZ0J1ZmZlcj10LnByZXNlcnZlRHJhd2luZ0J1ZmZlcix0aGlzLl9hbnRpYWxpYXM9dC5hbnRpYWxpYXMsdGhpcy5fdXNlV2ViR0wyPXQudXNlV2ViR0wyLHRoaXMuX3RyYWNrUmVzaXplPXQudHJhY2tSZXNpemUsdGhpcy5fYmVhcmluZ1NuYXA9dC5iZWFyaW5nU25hcCx0aGlzLl9yZWZyZXNoRXhwaXJlZFRpbGVzPXQucmVmcmVzaEV4cGlyZWRUaWxlcyx0aGlzLl9mYWRlRHVyYXRpb249dC5mYWRlRHVyYXRpb24sdGhpcy5faXNJbml0aWFsTG9hZD0hMCx0aGlzLl9jcm9zc1NvdXJjZUNvbGxpc2lvbnM9dC5jcm9zc1NvdXJjZUNvbGxpc2lvbnMsdGhpcy5fY29sbGVjdFJlc291cmNlVGltaW5nPXQuY29sbGVjdFJlc291cmNlVGltaW5nLHRoaXMuX29wdGltaXplRm9yVGVycmFpbj10Lm9wdGltaXplRm9yVGVycmFpbix0aGlzLl9sYW5ndWFnZT10aGlzLl9wYXJzZUxhbmd1YWdlKHQubGFuZ3VhZ2UpLHRoaXMuX3dvcmxkdmlldz10Lndvcmxkdmlldyx0aGlzLl9yZW5kZXJUYXNrUXVldWU9bmV3IEtyLHRoaXMuX2RvbVJlbmRlclRhc2tRdWV1ZT1uZXcgS3IsdGhpcy5fY29udHJvbHM9W10sdGhpcy5fbWFya2Vycz1bXSx0aGlzLl9wb3B1cHM9W10sdGhpcy5fbWFwSWQ9ZS51bmlxdWVJZCgpLHRoaXMuX2xvY2FsZT1lLmV4dGVuZCh7fSxzbix0LmxvY2FsZSksdGhpcy5fY2xpY2tUb2xlcmFuY2U9dC5jbGlja1RvbGVyYW5jZSx0aGlzLl9jb29wZXJhdGl2ZUdlc3R1cmVzPXQuY29vcGVyYXRpdmVHZXN0dXJlcyx0aGlzLl9wZXJmb3JtYW5jZU1ldHJpY3NDb2xsZWN0aW9uPXQucGVyZm9ybWFuY2VNZXRyaWNzQ29sbGVjdGlvbix0aGlzLl9jb250YWluZXJXaWR0aD0wLHRoaXMuX2NvbnRhaW5lckhlaWdodD0wLHRoaXMuX2F2ZXJhZ2VFbGV2YXRpb25MYXN0U2FtcGxlZEF0PS0xLzAsdGhpcy5fYXZlcmFnZUVsZXZhdGlvbkV4YWdnZXJhdGlvbj0wLHRoaXMuX2F2ZXJhZ2VFbGV2YXRpb249bmV3IG5uKDApLHRoaXMuX2ludGVyYWN0aW9uUmFuZ2U9WzEvMCwtMS8wXSx0aGlzLl92aXNpYmlsaXR5SGlkZGVuPTAsdGhpcy5fdXNlRXhwbGljaXRQcm9qZWN0aW9uPSExLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBlLlJlcXVlc3RNYW5hZ2VyKHQudHJhbnNmb3JtUmVxdWVzdCx0LmFjY2Vzc1Rva2VuLHQudGVzdE1vZGUpLHRoaXMuX3NpbGVuY2VBdXRoRXJyb3JzPSEhdC50ZXN0TW9kZSxcInN0cmluZ1wiPT10eXBlb2YgdC5jb250YWluZXIpe2lmKHRoaXMuX2NvbnRhaW5lcj1lLndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0LmNvbnRhaW5lciksIXRoaXMuX2NvbnRhaW5lcil0aHJvdyBuZXcgRXJyb3IoYENvbnRhaW5lciAnJHt0LmNvbnRhaW5lcn0nIG5vdCBmb3VuZC5gKX1lbHNlIHtpZighKHQuY29udGFpbmVyIGluc3RhbmNlb2YgZS53aW5kb3cuSFRNTEVsZW1lbnQpKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdHlwZTogJ2NvbnRhaW5lcicgbXVzdCBiZSBhIFN0cmluZyBvciBIVE1MRWxlbWVudC5cIik7dGhpcy5fY29udGFpbmVyPXQuY29udGFpbmVyO31pZih0aGlzLl9jb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGg+MCYmZS53YXJuT25jZShcIlRoZSBtYXAgY29udGFpbmVyIGVsZW1lbnQgc2hvdWxkIGJlIGVtcHR5LCBvdGhlcndpc2UgdGhlIG1hcCdzIGludGVyYWN0aXZpdHkgd2lsbCBiZSBuZWdhdGl2ZWx5IGltcGFjdGVkLiBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IGEgbWVzc2FnZSB3aGVuIFdlYkdMIGlzIG5vdCBzdXBwb3J0ZWQsIHVzZSB0aGUgTWFwYm94IEdMIFN1cHBvcnRlZCBwbHVnaW4gaW5zdGVhZC5cIiksdC5tYXhCb3VuZHMmJnRoaXMuc2V0TWF4Qm91bmRzKHQubWF4Qm91bmRzKSxlLmJpbmRBbGwoW1wiX29uV2luZG93T25saW5lXCIsXCJfb25XaW5kb3dSZXNpemVcIixcIl9vblZpc2liaWxpdHlDaGFuZ2VcIixcIl9vbk1hcFNjcm9sbFwiLFwiX2NvbnRleHRMb3N0XCIsXCJfY29udGV4dFJlc3RvcmVkXCJdLHRoaXMpLHRoaXMuX3NldHVwQ29udGFpbmVyKCksdGhpcy5fc2V0dXBQYWludGVyKCksdm9pZCAwPT09dGhpcy5wYWludGVyKXRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBpbml0aWFsaXplIFdlYkdMLlwiKTt0aGlzLm9uKFwibW92ZVwiLCgoKT0+dGhpcy5fdXBkYXRlKCExKSkpLHRoaXMub24oXCJtb3ZlZW5kXCIsKCgpPT50aGlzLl91cGRhdGUoITEpKSksdGhpcy5vbihcInpvb21cIiwoKCk9PnRoaXMuX3VwZGF0ZSghMCkpKSx2b2lkIDAhPT1lLndpbmRvdyYmKGUud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIix0aGlzLl9vbldpbmRvd09ubGluZSwhMSksZS53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHRoaXMuX29uV2luZG93UmVzaXplLCExKSxlLndpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwib3JpZW50YXRpb25jaGFuZ2VcIix0aGlzLl9vbldpbmRvd1Jlc2l6ZSwhMSksZS53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VcIix0aGlzLl9vbldpbmRvd1Jlc2l6ZSwhMSksZS53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIix0aGlzLl9vblZpc2liaWxpdHlDaGFuZ2UsITEpKSx0aGlzLmhhbmRsZXJzPW5ldyBYcih0aGlzLHQpLHRoaXMuX2xvY2FsRm9udEZhbWlseT10LmxvY2FsRm9udEZhbWlseSx0aGlzLl9sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHk9dC5sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHksdC5zdHlsZSYmdGhpcy5zZXRTdHlsZSh0LnN0eWxlLHtsb2NhbEZvbnRGYW1pbHk6dGhpcy5fbG9jYWxGb250RmFtaWx5LGxvY2FsSWRlb2dyYXBoRm9udEZhbWlseTp0aGlzLl9sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHl9KSx0LnByb2plY3Rpb24mJnRoaXMuc2V0UHJvamVjdGlvbih0LnByb2plY3Rpb24pLHRoaXMuX2hhc2g9dC5oYXNoJiZuZXcgS28oXCJzdHJpbmdcIj09dHlwZW9mIHQuaGFzaCYmdC5oYXNofHx2b2lkIDApLmFkZFRvKHRoaXMpLHRoaXMuX2hhc2gmJnRoaXMuX2hhc2guX29uSGFzaENoYW5nZSgpfHwodGhpcy5qdW1wVG8oe2NlbnRlcjp0LmNlbnRlcix6b29tOnQuem9vbSxiZWFyaW5nOnQuYmVhcmluZyxwaXRjaDp0LnBpdGNofSksdC5ib3VuZHMmJih0aGlzLnJlc2l6ZSgpLHRoaXMuZml0Qm91bmRzKHQuYm91bmRzLGUuZXh0ZW5kKHt9LHQuZml0Qm91bmRzT3B0aW9ucyx7ZHVyYXRpb246MH0pKSkpLHRoaXMucmVzaXplKCksdC5hdHRyaWJ1dGlvbkNvbnRyb2wmJnRoaXMuYWRkQ29udHJvbChuZXcgSHIoe2N1c3RvbUF0dHJpYnV0aW9uOnQuY3VzdG9tQXR0cmlidXRpb259KSksdGhpcy5fbG9nb0NvbnRyb2w9bmV3IFlyLHRoaXMuYWRkQ29udHJvbCh0aGlzLl9sb2dvQ29udHJvbCx0LmxvZ29Qb3NpdGlvbiksdGhpcy5vbihcInN0eWxlLmxvYWRcIiwoKCk9Pnt0aGlzLnRyYW5zZm9ybS51bm1vZGlmaWVkJiZ0aGlzLmp1bXBUbyh0aGlzLnN0eWxlLnN0eWxlc2hlZXQpO30pKSx0aGlzLm9uKFwiZGF0YVwiLCh0PT57dGhpcy5fdXBkYXRlKFwic3R5bGVcIj09PXQuZGF0YVR5cGUpLHRoaXMuZmlyZShuZXcgZS5FdmVudChgJHt0LmRhdGFUeXBlfWRhdGFgLHQpKTt9KSksdGhpcy5vbihcImRhdGFsb2FkaW5nXCIsKHQ9Pnt0aGlzLmZpcmUobmV3IGUuRXZlbnQoYCR7dC5kYXRhVHlwZX1kYXRhbG9hZGluZ2AsdCkpO30pKTt9X2dldE1hcElkKCl7cmV0dXJuIHRoaXMuX21hcElkfWFkZENvbnRyb2wodCxpKXtpZih2b2lkIDA9PT1pJiYoaT10LmdldERlZmF1bHRQb3NpdGlvbj90LmdldERlZmF1bHRQb3NpdGlvbigpOlwidG9wLXJpZ2h0XCIpLCF0fHwhdC5vbkFkZClyZXR1cm4gdGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudCB0byBtYXAuYWRkQ29udHJvbCgpLiBBcmd1bWVudCBtdXN0IGJlIGEgY29udHJvbCB3aXRoIG9uQWRkIGFuZCBvblJlbW92ZSBtZXRob2RzLlwiKSkpO2NvbnN0IG89dC5vbkFkZCh0aGlzKTt0aGlzLl9jb250cm9scy5wdXNoKHQpO2NvbnN0IHI9dGhpcy5fY29udHJvbFBvc2l0aW9uc1tpXTtyZXR1cm4gLTEhPT1pLmluZGV4T2YoXCJib3R0b21cIik/ci5pbnNlcnRCZWZvcmUobyxyLmZpcnN0Q2hpbGQpOnIuYXBwZW5kQ2hpbGQobyksdGhpc31yZW1vdmVDb250cm9sKHQpe2lmKCF0fHwhdC5vblJlbW92ZSlyZXR1cm4gdGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudCB0byBtYXAucmVtb3ZlQ29udHJvbCgpLiBBcmd1bWVudCBtdXN0IGJlIGEgY29udHJvbCB3aXRoIG9uQWRkIGFuZCBvblJlbW92ZSBtZXRob2RzLlwiKSkpO2NvbnN0IGk9dGhpcy5fY29udHJvbHMuaW5kZXhPZih0KTtyZXR1cm4gaT4tMSYmdGhpcy5fY29udHJvbHMuc3BsaWNlKGksMSksdC5vblJlbW92ZSh0aGlzKSx0aGlzfWhhc0NvbnRyb2woZSl7cmV0dXJuIHRoaXMuX2NvbnRyb2xzLmluZGV4T2YoZSk+LTF9Z2V0Q29udGFpbmVyKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn1nZXRDYW52YXNDb250YWluZXIoKXtyZXR1cm4gdGhpcy5fY2FudmFzQ29udGFpbmVyfWdldENhbnZhcygpe3JldHVybiB0aGlzLl9jYW52YXN9cmVzaXplKHQpe2lmKHRoaXMuX3VwZGF0ZUNvbnRhaW5lckRpbWVuc2lvbnMoKSx0aGlzLl9jb250YWluZXJXaWR0aD09PXRoaXMudHJhbnNmb3JtLndpZHRoJiZ0aGlzLl9jb250YWluZXJIZWlnaHQ9PT10aGlzLnRyYW5zZm9ybS5oZWlnaHQpcmV0dXJuIHRoaXM7dGhpcy5fcmVzaXplQ2FudmFzKHRoaXMuX2NvbnRhaW5lcldpZHRoLHRoaXMuX2NvbnRhaW5lckhlaWdodCksdGhpcy50cmFuc2Zvcm0ucmVzaXplKHRoaXMuX2NvbnRhaW5lcldpZHRoLHRoaXMuX2NvbnRhaW5lckhlaWdodCksdGhpcy5wYWludGVyLnJlc2l6ZShNYXRoLmNlaWwodGhpcy5fY29udGFpbmVyV2lkdGgpLE1hdGguY2VpbCh0aGlzLl9jb250YWluZXJIZWlnaHQpKTtjb25zdCBpPSF0aGlzLl9tb3Zpbmc7cmV0dXJuIGkmJnRoaXMuZmlyZShuZXcgZS5FdmVudChcIm1vdmVzdGFydFwiLHQpKS5maXJlKG5ldyBlLkV2ZW50KFwibW92ZVwiLHQpKSx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJyZXNpemVcIix0KSksaSYmdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwibW92ZWVuZFwiLHQpKSx0aGlzfWdldEJvdW5kcygpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5nZXRCb3VuZHMoKX1nZXRNYXhCb3VuZHMoKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0uZ2V0TWF4Qm91bmRzKCl8fG51bGx9c2V0TWF4Qm91bmRzKHQpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5zZXRNYXhCb3VuZHMoZS5MbmdMYXRCb3VuZHMuY29udmVydCh0KSksdGhpcy5fdXBkYXRlKCl9c2V0TWluWm9vbSh0KXtpZigodD1udWxsPT10Py0yOnQpPj0tMiYmdDw9dGhpcy50cmFuc2Zvcm0ubWF4Wm9vbSlyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubWluWm9vbT10LHRoaXMuX3VwZGF0ZSgpLHRoaXMuZ2V0Wm9vbSgpPHQ/dGhpcy5zZXRab29tKHQpOnRoaXMuZmlyZShuZXcgZS5FdmVudChcInpvb21zdGFydFwiKSkuZmlyZShuZXcgZS5FdmVudChcInpvb21cIikpLmZpcmUobmV3IGUuRXZlbnQoXCJ6b29tZW5kXCIpKSx0aGlzO3Rocm93IG5ldyBFcnJvcihcIm1pblpvb20gbXVzdCBiZSBiZXR3ZWVuIC0yIGFuZCB0aGUgY3VycmVudCBtYXhab29tLCBpbmNsdXNpdmVcIil9Z2V0TWluWm9vbSgpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5taW5ab29tfXNldE1heFpvb20odCl7aWYoKHQ9bnVsbD09dD8yMjp0KT49dGhpcy50cmFuc2Zvcm0ubWluWm9vbSlyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubWF4Wm9vbT10LHRoaXMuX3VwZGF0ZSgpLHRoaXMuZ2V0Wm9vbSgpPnQ/dGhpcy5zZXRab29tKHQpOnRoaXMuZmlyZShuZXcgZS5FdmVudChcInpvb21zdGFydFwiKSkuZmlyZShuZXcgZS5FdmVudChcInpvb21cIikpLmZpcmUobmV3IGUuRXZlbnQoXCJ6b29tZW5kXCIpKSx0aGlzO3Rocm93IG5ldyBFcnJvcihcIm1heFpvb20gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgbWluWm9vbVwiKX1nZXRNYXhab29tKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLm1heFpvb219c2V0TWluUGl0Y2godCl7aWYoKHQ9bnVsbD09dD8wOnQpPDApdGhyb3cgbmV3IEVycm9yKFwibWluUGl0Y2ggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMFwiKTtpZih0Pj0wJiZ0PD10aGlzLnRyYW5zZm9ybS5tYXhQaXRjaClyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubWluUGl0Y2g9dCx0aGlzLl91cGRhdGUoKSx0aGlzLmdldFBpdGNoKCk8dD90aGlzLnNldFBpdGNoKHQpOnRoaXMuZmlyZShuZXcgZS5FdmVudChcInBpdGNoc3RhcnRcIikpLmZpcmUobmV3IGUuRXZlbnQoXCJwaXRjaFwiKSkuZmlyZShuZXcgZS5FdmVudChcInBpdGNoZW5kXCIpKSx0aGlzO3Rocm93IG5ldyBFcnJvcihcIm1pblBpdGNoIG11c3QgYmUgYmV0d2VlbiAwIGFuZCB0aGUgY3VycmVudCBtYXhQaXRjaCwgaW5jbHVzaXZlXCIpfWdldE1pblBpdGNoKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLm1pblBpdGNofXNldE1heFBpdGNoKHQpe2lmKCh0PW51bGw9PXQ/ODU6dCk+ODUpdGhyb3cgbmV3IEVycm9yKFwibWF4UGl0Y2ggbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gODVcIik7aWYodD49dGhpcy50cmFuc2Zvcm0ubWluUGl0Y2gpcmV0dXJuIHRoaXMudHJhbnNmb3JtLm1heFBpdGNoPXQsdGhpcy5fdXBkYXRlKCksdGhpcy5nZXRQaXRjaCgpPnQ/dGhpcy5zZXRQaXRjaCh0KTp0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJwaXRjaHN0YXJ0XCIpKS5maXJlKG5ldyBlLkV2ZW50KFwicGl0Y2hcIikpLmZpcmUobmV3IGUuRXZlbnQoXCJwaXRjaGVuZFwiKSksdGhpczt0aHJvdyBuZXcgRXJyb3IoXCJtYXhQaXRjaCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW5QaXRjaFwiKX1nZXRNYXhQaXRjaCgpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5tYXhQaXRjaH1nZXRSZW5kZXJXb3JsZENvcGllcygpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5yZW5kZXJXb3JsZENvcGllc31zZXRSZW5kZXJXb3JsZENvcGllcyhlKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ucmVuZGVyV29ybGRDb3BpZXM9ZSx0aGlzLnRyYW5zZm9ybS5yZW5kZXJXb3JsZENvcGllc3x8dGhpcy5fZm9yY2VNYXJrZXJBbmRQb3B1cFVwZGF0ZSghMCksdGhpcy5fdXBkYXRlKCl9Z2V0TGFuZ3VhZ2UoKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2V9X3BhcnNlTGFuZ3VhZ2UodCl7cmV0dXJuIFwiYXV0b1wiPT09dD9lLndpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2U6QXJyYXkuaXNBcnJheSh0KT8wPT09dC5sZW5ndGg/dm9pZCAwOnQubWFwKCh0PT5cImF1dG9cIj09PXQ/ZS53aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlOnQpKTp0fXNldExhbmd1YWdlKGUpe2NvbnN0IHQ9dGhpcy5fcGFyc2VMYW5ndWFnZShlKTtpZighdGhpcy5zdHlsZXx8dD09PXRoaXMuX2xhbmd1YWdlKXJldHVybiB0aGlzO3RoaXMuX2xhbmd1YWdlPXQsdGhpcy5zdHlsZS5fcmVsb2FkU291cmNlcygpO2Zvcihjb25zdCBlIG9mIHRoaXMuX2NvbnRyb2xzKWUuX3NldExhbmd1YWdlJiZlLl9zZXRMYW5ndWFnZSh0aGlzLl9sYW5ndWFnZSk7cmV0dXJuIHRoaXN9Z2V0V29ybGR2aWV3KCl7cmV0dXJuIHRoaXMuX3dvcmxkdmlld31zZXRXb3JsZHZpZXcoZSl7cmV0dXJuIHRoaXMuc3R5bGUmJmUhPT10aGlzLl93b3JsZHZpZXc/KHRoaXMuX3dvcmxkdmlldz1lLHRoaXMuc3R5bGUuX3JlbG9hZFNvdXJjZXMoKSx0aGlzKTp0aGlzfWdldFByb2plY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubWVyY2F0b3JGcm9tVHJhbnNpdGlvbj97bmFtZTpcImdsb2JlXCIsY2VudGVyOlswLDBdfTp0aGlzLnRyYW5zZm9ybS5nZXRQcm9qZWN0aW9uKCl9X3Nob3dpbmdHbG9iZSgpe3JldHVybiBcImdsb2JlXCI9PT10aGlzLnRyYW5zZm9ybS5wcm9qZWN0aW9uLm5hbWV9c2V0UHJvamVjdGlvbihlKXtyZXR1cm4gdGhpcy5fbGF6eUluaXRFbXB0eVN0eWxlKCksZT9cInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9e25hbWU6ZX0pOmU9bnVsbCx0aGlzLl91c2VFeHBsaWNpdFByb2plY3Rpb249ISFlLHRoaXMuX3ByaW9yaXRpemVBbmRVcGRhdGVQcm9qZWN0aW9uKGUsdGhpcy5zdHlsZS5zdHlsZXNoZWV0P3RoaXMuc3R5bGUuc3R5bGVzaGVldC5wcm9qZWN0aW9uOm51bGwpfV91cGRhdGVQcm9qZWN0aW9uVHJhbnNpdGlvbigpe2lmKFwiZ2xvYmVcIiE9PXRoaXMuZ2V0UHJvamVjdGlvbigpLm5hbWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy50cmFuc2Zvcm0saT10LnByb2plY3Rpb24ubmFtZTtsZXQgbztcImdsb2JlXCI9PT1pJiZ0Lnpvb20+PWUuR0xPQkVfWk9PTV9USFJFU0hPTERfTUFYPyh0LnNldE1lcmNhdG9yRnJvbVRyYW5zaXRpb24oKSxvPSEwKTpcIm1lcmNhdG9yXCI9PT1pJiZ0Lnpvb208ZS5HTE9CRV9aT09NX1RIUkVTSE9MRF9NQVgmJih0LnNldFByb2plY3Rpb24oe25hbWU6XCJnbG9iZVwifSksbz0hMCksbyYmKHRoaXMuc3R5bGUuYXBwbHlQcm9qZWN0aW9uVXBkYXRlKCksdGhpcy5zdHlsZS5fZm9yY2VTeW1ib2xMYXllclVwZGF0ZSgpKTt9X3ByaW9yaXRpemVBbmRVcGRhdGVQcm9qZWN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3VwZGF0ZVByb2plY3Rpb24oZXx8dHx8e25hbWU6XCJtZXJjYXRvclwifSl9X3VwZGF0ZVByb2plY3Rpb24odCl7bGV0IGk7aWYoaT1cImdsb2JlXCI9PT10Lm5hbWUmJnRoaXMudHJhbnNmb3JtLnpvb20+PWUuR0xPQkVfWk9PTV9USFJFU0hPTERfTUFYP3RoaXMudHJhbnNmb3JtLnNldE1lcmNhdG9yRnJvbVRyYW5zaXRpb24oKTp0aGlzLnRyYW5zZm9ybS5zZXRQcm9qZWN0aW9uKHQpLHRoaXMuc3R5bGUuYXBwbHlQcm9qZWN0aW9uVXBkYXRlKCksaSl7dGhpcy5wYWludGVyLmNsZWFyQmFja2dyb3VuZFRpbGVzKCk7Zm9yKGNvbnN0IGUgaW4gdGhpcy5zdHlsZS5fc291cmNlQ2FjaGVzKXRoaXMuc3R5bGUuX3NvdXJjZUNhY2hlc1tlXS5jbGVhclRpbGVzKCk7dGhpcy5fdXBkYXRlKCEwKSx0aGlzLl9mb3JjZU1hcmtlckFuZFBvcHVwVXBkYXRlKCEwKTt9cmV0dXJuIHRoaXN9cHJvamVjdCh0KXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubG9jYXRpb25Qb2ludDNEKGUuTG5nTGF0LmNvbnZlcnQodCkpfXVucHJvamVjdCh0KXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ucG9pbnRMb2NhdGlvbjNEKGUuUG9pbnQuY29udmVydCh0KSl9aXNNb3ZpbmcoKXtyZXR1cm4gdGhpcy5fbW92aW5nfHx0aGlzLmhhbmRsZXJzJiZ0aGlzLmhhbmRsZXJzLmlzTW92aW5nKCl8fCExfWlzWm9vbWluZygpe3JldHVybiB0aGlzLl96b29taW5nfHx0aGlzLmhhbmRsZXJzJiZ0aGlzLmhhbmRsZXJzLmlzWm9vbWluZygpfHwhMX1pc1JvdGF0aW5nKCl7cmV0dXJuIHRoaXMuX3JvdGF0aW5nfHx0aGlzLmhhbmRsZXJzJiZ0aGlzLmhhbmRsZXJzLmlzUm90YXRpbmcoKXx8ITF9X2lzRHJhZ2dpbmcoKXtyZXR1cm4gdGhpcy5oYW5kbGVycyYmdGhpcy5oYW5kbGVycy5faXNEcmFnZ2luZygpfHwhMX1fY3JlYXRlRGVsZWdhdGVkTGlzdGVuZXIoZSx0LGkpe2lmKFwibW91c2VlbnRlclwiPT09ZXx8XCJtb3VzZW92ZXJcIj09PWUpe2xldCBvPSExO2NvbnN0IHI9cj0+e2NvbnN0IG49dC5maWx0ZXIoKGU9PnRoaXMuZ2V0TGF5ZXIoZSkpKSxzPW4ubGVuZ3RoP3RoaXMucXVlcnlSZW5kZXJlZEZlYXR1cmVzKHIucG9pbnQse2xheWVyczpufSk6W107cy5sZW5ndGg/b3x8KG89ITAsaS5jYWxsKHRoaXMsbmV3IGFyKGUsdGhpcyxyLm9yaWdpbmFsRXZlbnQse2ZlYXR1cmVzOnN9KSkpOm89ITE7fSxuPSgpPT57bz0hMTt9O3JldHVybiB7bGF5ZXJzOm5ldyBTZXQodCksbGlzdGVuZXI6aSxkZWxlZ2F0ZXM6e21vdXNlbW92ZTpyLG1vdXNlb3V0Om59fX1pZihcIm1vdXNlbGVhdmVcIj09PWV8fFwibW91c2VvdXRcIj09PWUpe2xldCBvPSExO2NvbnN0IHI9cj0+e2NvbnN0IG49dC5maWx0ZXIoKGU9PnRoaXMuZ2V0TGF5ZXIoZSkpKTsobi5sZW5ndGg/dGhpcy5xdWVyeVJlbmRlcmVkRmVhdHVyZXMoci5wb2ludCx7bGF5ZXJzOm59KTpbXSkubGVuZ3RoP289ITA6byYmKG89ITEsaS5jYWxsKHRoaXMsbmV3IGFyKGUsdGhpcyxyLm9yaWdpbmFsRXZlbnQpKSk7fSxuPXQ9PntvJiYobz0hMSxpLmNhbGwodGhpcyxuZXcgYXIoZSx0aGlzLHQub3JpZ2luYWxFdmVudCkpKTt9O3JldHVybiB7bGF5ZXJzOm5ldyBTZXQodCksbGlzdGVuZXI6aSxkZWxlZ2F0ZXM6e21vdXNlbW92ZTpyLG1vdXNlb3V0Om59fX17Y29uc3Qgbz1lPT57Y29uc3Qgbz10LmZpbHRlcigoZT0+dGhpcy5nZXRMYXllcihlKSkpLHI9by5sZW5ndGg/dGhpcy5xdWVyeVJlbmRlcmVkRmVhdHVyZXMoZS5wb2ludCx7bGF5ZXJzOm99KTpbXTtyLmxlbmd0aCYmKGUuZmVhdHVyZXM9cixpLmNhbGwodGhpcyxlKSxkZWxldGUgZS5mZWF0dXJlcyk7fTtyZXR1cm4ge2xheWVyczpuZXcgU2V0KHQpLGxpc3RlbmVyOmksZGVsZWdhdGVzOntbZV06b319fX1vbihlLHQsaSl7aWYodm9pZCAwPT09aSlyZXR1cm4gc3VwZXIub24oZSx0KTtBcnJheS5pc0FycmF5KHQpfHwodD1bdF0pO2NvbnN0IG89dGhpcy5fY3JlYXRlRGVsZWdhdGVkTGlzdGVuZXIoZSx0LGkpO3RoaXMuX2RlbGVnYXRlZExpc3RlbmVycz10aGlzLl9kZWxlZ2F0ZWRMaXN0ZW5lcnN8fHt9LHRoaXMuX2RlbGVnYXRlZExpc3RlbmVyc1tlXT10aGlzLl9kZWxlZ2F0ZWRMaXN0ZW5lcnNbZV18fFtdLHRoaXMuX2RlbGVnYXRlZExpc3RlbmVyc1tlXS5wdXNoKG8pO2Zvcihjb25zdCBlIGluIG8uZGVsZWdhdGVzKXRoaXMub24oZSxvLmRlbGVnYXRlc1tlXSk7cmV0dXJuIHRoaXN9b25jZShlLHQsaSl7aWYodm9pZCAwPT09aSlyZXR1cm4gc3VwZXIub25jZShlLHQpO0FycmF5LmlzQXJyYXkodCl8fCh0PVt0XSk7Y29uc3Qgbz10aGlzLl9jcmVhdGVEZWxlZ2F0ZWRMaXN0ZW5lcihlLHQsaSk7Zm9yKGNvbnN0IGUgaW4gby5kZWxlZ2F0ZXMpdGhpcy5vbmNlKGUsby5kZWxlZ2F0ZXNbZV0pO3JldHVybiB0aGlzfW9mZihlLHQsaSl7aWYodm9pZCAwPT09aSlyZXR1cm4gc3VwZXIub2ZmKGUsdCk7dD1uZXcgU2V0KEFycmF5LmlzQXJyYXkodCk/dDpbdF0pO2NvbnN0IG89KGUsdCk9PntpZihlLnNpemUhPT10LnNpemUpcmV0dXJuICExO2Zvcihjb25zdCBpIG9mIGUpaWYoIXQuaGFzKGkpKXJldHVybiAhMTtyZXR1cm4gITB9LHI9dGhpcy5fZGVsZWdhdGVkTGlzdGVuZXJzP3RoaXMuX2RlbGVnYXRlZExpc3RlbmVyc1tlXTp2b2lkIDA7cmV0dXJuIHImJihlPT57Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IG49ZVtyXTtpZihuLmxpc3RlbmVyPT09aSYmbyhuLmxheWVycyx0KSl7Zm9yKGNvbnN0IGUgaW4gbi5kZWxlZ2F0ZXMpdGhpcy5vZmYoZSxuLmRlbGVnYXRlc1tlXSk7cmV0dXJuIGUuc3BsaWNlKHIsMSksdGhpc319fSkociksdGhpc31xdWVyeVJlbmRlcmVkRmVhdHVyZXModCxpKXtyZXR1cm4gdGhpcy5zdHlsZT8odm9pZCAwIT09aXx8dm9pZCAwPT09dHx8dCBpbnN0YW5jZW9mIGUuUG9pbnR8fEFycmF5LmlzQXJyYXkodCl8fChpPXQsdD12b2lkIDApLHRoaXMuc3R5bGUucXVlcnlSZW5kZXJlZEZlYXR1cmVzKHQ9dHx8W1swLDBdLFt0aGlzLnRyYW5zZm9ybS53aWR0aCx0aGlzLnRyYW5zZm9ybS5oZWlnaHRdXSxpPWl8fHt9LHRoaXMudHJhbnNmb3JtKSk6W119cXVlcnlTb3VyY2VGZWF0dXJlcyhlLHQpe3JldHVybiB0aGlzLnN0eWxlLnF1ZXJ5U291cmNlRmVhdHVyZXMoZSx0KX1pc1BvaW50T25TdXJmYWNlKHQpe2NvbnN0e25hbWU6aX09dGhpcy50cmFuc2Zvcm0ucHJvamVjdGlvbjtyZXR1cm4gXCJnbG9iZVwiIT09aSYmXCJtZXJjYXRvclwiIT09aSYmZS53YXJuT25jZShgJHtpfSBwcm9qZWN0aW9uIGRvZXMgbm90IHN1cHBvcnQgaXNQb2ludE9uU3VyZmFjZSwgdGhpcyBBUEkgbWF5IGJlaGF2ZSB1bmV4cGVjdGVkbHkuYCksdGhpcy50cmFuc2Zvcm0uaXNQb2ludE9uU3VyZmFjZShlLlBvaW50LmNvbnZlcnQodCkpfXNldFN0eWxlKHQsaSl7cmV0dXJuICExIT09KGk9ZS5leHRlbmQoe30se2xvY2FsSWRlb2dyYXBoRm9udEZhbWlseTp0aGlzLl9sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHksbG9jYWxGb250RmFtaWx5OnRoaXMuX2xvY2FsRm9udEZhbWlseX0saSkpLmRpZmYmJmkubG9jYWxJZGVvZ3JhcGhGb250RmFtaWx5PT09dGhpcy5fbG9jYWxJZGVvZ3JhcGhGb250RmFtaWx5JiZpLmxvY2FsRm9udEZhbWlseT09PXRoaXMuX2xvY2FsRm9udEZhbWlseSYmdGhpcy5zdHlsZSYmdD8odGhpcy5fZGlmZlN0eWxlKHQsaSksdGhpcyk6KHRoaXMuX2xvY2FsSWRlb2dyYXBoRm9udEZhbWlseT1pLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseSx0aGlzLl9sb2NhbEZvbnRGYW1pbHk9aS5sb2NhbEZvbnRGYW1pbHksdGhpcy5fdXBkYXRlU3R5bGUodCxpKSl9X2dldFVJU3RyaW5nKGUpe2NvbnN0IHQ9dGhpcy5fbG9jYWxlW2VdO2lmKG51bGw9PXQpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIFVJIHN0cmluZyAnJHtlfSdgKTtyZXR1cm4gdH1fdXBkYXRlU3R5bGUoZSx0KXtyZXR1cm4gdGhpcy5zdHlsZSYmKHRoaXMuc3R5bGUuc2V0RXZlbnRlZFBhcmVudChudWxsKSx0aGlzLnN0eWxlLl9yZW1vdmUoKSx0aGlzLnN0eWxlPXZvaWQgMCksZSYmKHRoaXMuc3R5bGU9bmV3IEt0KHRoaXMsdHx8e30pLHRoaXMuc3R5bGUuc2V0RXZlbnRlZFBhcmVudCh0aGlzLHtzdHlsZTp0aGlzLnN0eWxlfSksXCJzdHJpbmdcIj09dHlwZW9mIGU/dGhpcy5zdHlsZS5sb2FkVVJMKGUpOnRoaXMuc3R5bGUubG9hZEpTT04oZSkpLHRoaXMuX3VwZGF0ZVRlcnJhaW4oKSx0aGlzfV9sYXp5SW5pdEVtcHR5U3R5bGUoKXt0aGlzLnN0eWxlfHwodGhpcy5zdHlsZT1uZXcgS3QodGhpcyx7fSksdGhpcy5zdHlsZS5zZXRFdmVudGVkUGFyZW50KHRoaXMse3N0eWxlOnRoaXMuc3R5bGV9KSx0aGlzLnN0eWxlLmxvYWRFbXB0eSgpKTt9X2RpZmZTdHlsZSh0LGkpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXtjb25zdCBvPXRoaXMuX3JlcXVlc3RNYW5hZ2VyLm5vcm1hbGl6ZVN0eWxlVVJMKHQpLHI9dGhpcy5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdChvLGUuUmVzb3VyY2VUeXBlLlN0eWxlKTtlLmdldEpTT04ociwoKHQsbyk9Pnt0P3RoaXMuZmlyZShuZXcgZS5FcnJvckV2ZW50KHQpKTpvJiZ0aGlzLl91cGRhdGVEaWZmKG8saSk7fSkpO31lbHNlIFwib2JqZWN0XCI9PXR5cGVvZiB0JiZ0aGlzLl91cGRhdGVEaWZmKHQsaSk7fV91cGRhdGVEaWZmKHQsaSl7dHJ5e3RoaXMuc3R5bGUuc2V0U3RhdGUodCkmJnRoaXMuX3VwZGF0ZSghMCk7fWNhdGNoKG8pe2Uud2Fybk9uY2UoYFVuYWJsZSB0byBwZXJmb3JtIHN0eWxlIGRpZmY6ICR7by5tZXNzYWdlfHxvLmVycm9yfHxvfS4gIFJlYnVpbGRpbmcgdGhlIHN0eWxlIGZyb20gc2NyYXRjaC5gKSx0aGlzLl91cGRhdGVTdHlsZSh0LGkpO319Z2V0U3R5bGUoKXtpZih0aGlzLnN0eWxlKXJldHVybiB0aGlzLnN0eWxlLnNlcmlhbGl6ZSgpfWlzU3R5bGVMb2FkZWQoKXtyZXR1cm4gdGhpcy5zdHlsZT90aGlzLnN0eWxlLmxvYWRlZCgpOihlLndhcm5PbmNlKFwiVGhlcmUgaXMgbm8gc3R5bGUgYWRkZWQgdG8gdGhlIG1hcC5cIiksITEpfWFkZFNvdXJjZShlLHQpe3JldHVybiB0aGlzLl9sYXp5SW5pdEVtcHR5U3R5bGUoKSx0aGlzLnN0eWxlLmFkZFNvdXJjZShlLHQpLHRoaXMuX3VwZGF0ZSghMCl9aXNTb3VyY2VMb2FkZWQoZSl7cmV0dXJuICEhdGhpcy5zdHlsZSYmdGhpcy5zdHlsZS5faXNTb3VyY2VDYWNoZUxvYWRlZChlKX1hcmVUaWxlc0xvYWRlZCgpe2NvbnN0IGU9dGhpcy5zdHlsZSYmdGhpcy5zdHlsZS5fc291cmNlQ2FjaGVzO2Zvcihjb25zdCB0IGluIGUpe2NvbnN0IGk9ZVt0XS5fdGlsZXM7Zm9yKGNvbnN0IGUgaW4gaSl7Y29uc3QgdD1pW2VdO2lmKFwibG9hZGVkXCIhPT10LnN0YXRlJiZcImVycm9yZWRcIiE9PXQuc3RhdGUpcmV0dXJuICExfX1yZXR1cm4gITB9YWRkU291cmNlVHlwZShlLHQsaSl7dGhpcy5fbGF6eUluaXRFbXB0eVN0eWxlKCksdGhpcy5zdHlsZS5hZGRTb3VyY2VUeXBlKGUsdCxpKTt9cmVtb3ZlU291cmNlKGUpe3JldHVybiB0aGlzLnN0eWxlLnJlbW92ZVNvdXJjZShlKSx0aGlzLl91cGRhdGVUZXJyYWluKCksdGhpcy5fdXBkYXRlKCEwKX1nZXRTb3VyY2UoZSl7cmV0dXJuIHRoaXMuc3R5bGUuZ2V0U291cmNlKGUpfWFkZEltYWdlKHQsaSx7cGl4ZWxSYXRpbzpvPTEsc2RmOnI9ITEsc3RyZXRjaFg6bixzdHJldGNoWTpzLGNvbnRlbnQ6YX09e30pe2lmKHRoaXMuX2xhenlJbml0RW1wdHlTdHlsZSgpLGkgaW5zdGFuY2VvZiBlLndpbmRvdy5IVE1MSW1hZ2VFbGVtZW50fHxlLndpbmRvdy5JbWFnZUJpdG1hcCYmaSBpbnN0YW5jZW9mIGUud2luZG93LkltYWdlQml0bWFwKXtjb25zdHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6aH09ZS5leHBvcnRlZC5nZXRJbWFnZURhdGEoaSk7dGhpcy5zdHlsZS5hZGRJbWFnZSh0LHtkYXRhOm5ldyBlLlJHQkFJbWFnZSh7d2lkdGg6bCxoZWlnaHQ6Y30saCkscGl4ZWxSYXRpbzpvLHN0cmV0Y2hYOm4sc3RyZXRjaFk6cyxjb250ZW50OmEsc2RmOnIsdmVyc2lvbjowfSk7fWVsc2UgaWYodm9pZCAwPT09aS53aWR0aHx8dm9pZCAwPT09aS5oZWlnaHQpdGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudHMgdG8gbWFwLmFkZEltYWdlKCkuIFRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhbiBgSFRNTEltYWdlRWxlbWVudGAsIGBJbWFnZURhdGFgLCBgSW1hZ2VCaXRtYXBgLCBvciBvYmplY3Qgd2l0aCBgd2lkdGhgLCBgaGVpZ2h0YCwgYW5kIGBkYXRhYCBwcm9wZXJ0aWVzIHdpdGggdGhlIHNhbWUgZm9ybWF0IGFzIGBJbWFnZURhdGFgXCIpKSk7ZWxzZSB7Y29uc3R7d2lkdGg6bCxoZWlnaHQ6Y309aSxoPWk7dGhpcy5zdHlsZS5hZGRJbWFnZSh0LHtkYXRhOm5ldyBlLlJHQkFJbWFnZSh7d2lkdGg6bCxoZWlnaHQ6Y30sbmV3IFVpbnQ4QXJyYXkoaC5kYXRhKSkscGl4ZWxSYXRpbzpvLHN0cmV0Y2hYOm4sc3RyZXRjaFk6cyxjb250ZW50OmEsc2RmOnIsdmVyc2lvbjowLHVzZXJJbWFnZTpofSksaC5vbkFkZCYmaC5vbkFkZCh0aGlzLHQpO319dXBkYXRlSW1hZ2UodCxpKXtjb25zdCBvPXRoaXMuc3R5bGUuZ2V0SW1hZ2UodCk7aWYoIW8pcmV0dXJuIHZvaWQgdGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKFwiVGhlIG1hcCBoYXMgbm8gaW1hZ2Ugd2l0aCB0aGF0IGlkLiBJZiB5b3UgYXJlIGFkZGluZyBhIG5ldyBpbWFnZSB1c2UgYG1hcC5hZGRJbWFnZSguLi4pYCBpbnN0ZWFkLlwiKSkpO2NvbnN0IHI9aSBpbnN0YW5jZW9mIGUud2luZG93LkhUTUxJbWFnZUVsZW1lbnR8fGUud2luZG93LkltYWdlQml0bWFwJiZpIGluc3RhbmNlb2YgZS53aW5kb3cuSW1hZ2VCaXRtYXA/ZS5leHBvcnRlZC5nZXRJbWFnZURhdGEoaSk6aSx7d2lkdGg6bixoZWlnaHQ6c309cjt2b2lkIDAhPT1uJiZ2b2lkIDAhPT1zP249PT1vLmRhdGEud2lkdGgmJnM9PT1vLmRhdGEuaGVpZ2h0PyhvLmRhdGEucmVwbGFjZShyLmRhdGEsIShpIGluc3RhbmNlb2YgZS53aW5kb3cuSFRNTEltYWdlRWxlbWVudHx8ZS53aW5kb3cuSW1hZ2VCaXRtYXAmJmkgaW5zdGFuY2VvZiBlLndpbmRvdy5JbWFnZUJpdG1hcCkpLHRoaXMuc3R5bGUudXBkYXRlSW1hZ2UodCxvKSk6dGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKGBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgdXBkYXRlZCBpbWFnZSAoJHtufSwgJHtzfSlcXG4gICAgICAgICAgICAgICAgbXVzdCBiZSB0aGF0IHNhbWUgYXMgdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIGltYWdlXFxuICAgICAgICAgICAgICAgICgke28uZGF0YS53aWR0aH0sICR7by5kYXRhLmhlaWdodH0pYCkpKTp0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50cyB0byBtYXAudXBkYXRlSW1hZ2UoKS4gVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGFuIGBIVE1MSW1hZ2VFbGVtZW50YCwgYEltYWdlRGF0YWAsIGBJbWFnZUJpdG1hcGAsIG9yIG9iamVjdCB3aXRoIGB3aWR0aGAsIGBoZWlnaHRgLCBhbmQgYGRhdGFgIHByb3BlcnRpZXMgd2l0aCB0aGUgc2FtZSBmb3JtYXQgYXMgYEltYWdlRGF0YWBcIikpKTt9aGFzSW1hZ2UodCl7cmV0dXJuIHQ/ISF0aGlzLnN0eWxlLmdldEltYWdlKHQpOih0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkIGltYWdlIGlkXCIpKSksITEpfXJlbW92ZUltYWdlKGUpe3RoaXMuc3R5bGUucmVtb3ZlSW1hZ2UoZSk7fWxvYWRJbWFnZSh0LGkpe2UuZ2V0SW1hZ2UodGhpcy5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdCh0LGUuUmVzb3VyY2VUeXBlLkltYWdlKSwoKHQsbyk9PntpKHQsbyBpbnN0YW5jZW9mIGUud2luZG93LkhUTUxJbWFnZUVsZW1lbnQ/ZS5leHBvcnRlZC5nZXRJbWFnZURhdGEobyk6byk7fSkpO31saXN0SW1hZ2VzKCl7cmV0dXJuIHRoaXMuc3R5bGUubGlzdEltYWdlcygpfWFkZExheWVyKGUsdCl7cmV0dXJuIHRoaXMuX2xhenlJbml0RW1wdHlTdHlsZSgpLHRoaXMuc3R5bGUuYWRkTGF5ZXIoZSx0KSx0aGlzLl91cGRhdGUoITApfW1vdmVMYXllcihlLHQpe3JldHVybiB0aGlzLnN0eWxlLm1vdmVMYXllcihlLHQpLHRoaXMuX3VwZGF0ZSghMCl9cmVtb3ZlTGF5ZXIoZSl7cmV0dXJuIHRoaXMuc3R5bGUucmVtb3ZlTGF5ZXIoZSksdGhpcy5fdXBkYXRlKCEwKX1nZXRMYXllcihlKXtyZXR1cm4gdGhpcy5zdHlsZS5nZXRMYXllcihlKX1zZXRMYXllclpvb21SYW5nZShlLHQsaSl7cmV0dXJuIHRoaXMuc3R5bGUuc2V0TGF5ZXJab29tUmFuZ2UoZSx0LGkpLHRoaXMuX3VwZGF0ZSghMCl9c2V0RmlsdGVyKGUsdCxpPXt9KXtyZXR1cm4gdGhpcy5zdHlsZS5zZXRGaWx0ZXIoZSx0LGkpLHRoaXMuX3VwZGF0ZSghMCl9Z2V0RmlsdGVyKGUpe3JldHVybiB0aGlzLnN0eWxlLmdldEZpbHRlcihlKX1zZXRQYWludFByb3BlcnR5KGUsdCxpLG89e30pe3JldHVybiB0aGlzLnN0eWxlLnNldFBhaW50UHJvcGVydHkoZSx0LGksbyksdGhpcy5fdXBkYXRlKCEwKX1nZXRQYWludFByb3BlcnR5KGUsdCl7cmV0dXJuIHRoaXMuc3R5bGUuZ2V0UGFpbnRQcm9wZXJ0eShlLHQpfXNldExheW91dFByb3BlcnR5KGUsdCxpLG89e30pe3JldHVybiB0aGlzLnN0eWxlLnNldExheW91dFByb3BlcnR5KGUsdCxpLG8pLHRoaXMuX3VwZGF0ZSghMCl9Z2V0TGF5b3V0UHJvcGVydHkoZSx0KXtyZXR1cm4gdGhpcy5zdHlsZS5nZXRMYXlvdXRQcm9wZXJ0eShlLHQpfXNldExpZ2h0KGUsdD17fSl7cmV0dXJuIHRoaXMuX2xhenlJbml0RW1wdHlTdHlsZSgpLHRoaXMuc3R5bGUuc2V0TGlnaHQoZSx0KSx0aGlzLl91cGRhdGUoITApfWdldExpZ2h0KCl7cmV0dXJuIHRoaXMuc3R5bGUuZ2V0TGlnaHQoKX1zZXRUZXJyYWluKGUpe3JldHVybiB0aGlzLl9sYXp5SW5pdEVtcHR5U3R5bGUoKSwhZSYmdGhpcy50cmFuc2Zvcm0ucHJvamVjdGlvbi5yZXF1aXJlc0RyYXBpbmc/dGhpcy5zdHlsZS5zZXRUZXJyYWluRm9yRHJhcGluZygpOnRoaXMuc3R5bGUuc2V0VGVycmFpbihlKSx0aGlzLl9hdmVyYWdlRWxldmF0aW9uTGFzdFNhbXBsZWRBdD0tMS8wLHRoaXMuX3VwZGF0ZSghMCl9Z2V0VGVycmFpbigpe3JldHVybiB0aGlzLnN0eWxlP3RoaXMuc3R5bGUuZ2V0VGVycmFpbigpOm51bGx9c2V0Rm9nKGUpe3JldHVybiB0aGlzLl9sYXp5SW5pdEVtcHR5U3R5bGUoKSx0aGlzLnN0eWxlLnNldEZvZyhlKSx0aGlzLl91cGRhdGUoITApfWdldEZvZygpe3JldHVybiB0aGlzLnN0eWxlP3RoaXMuc3R5bGUuZ2V0Rm9nKCk6bnVsbH1fcXVlcnlGb2dPcGFjaXR5KHQpe3JldHVybiB0aGlzLnN0eWxlJiZ0aGlzLnN0eWxlLmZvZz90aGlzLnN0eWxlLmZvZy5nZXRPcGFjaXR5QXRMYXRMbmcoZS5MbmdMYXQuY29udmVydCh0KSx0aGlzLnRyYW5zZm9ybSk6MH1zZXRGZWF0dXJlU3RhdGUoZSx0KXtyZXR1cm4gdGhpcy5zdHlsZS5zZXRGZWF0dXJlU3RhdGUoZSx0KSx0aGlzLl91cGRhdGUoKX1yZW1vdmVGZWF0dXJlU3RhdGUoZSx0KXtyZXR1cm4gdGhpcy5zdHlsZS5yZW1vdmVGZWF0dXJlU3RhdGUoZSx0KSx0aGlzLl91cGRhdGUoKX1nZXRGZWF0dXJlU3RhdGUoZSl7cmV0dXJuIHRoaXMuc3R5bGUuZ2V0RmVhdHVyZVN0YXRlKGUpfV91cGRhdGVDb250YWluZXJEaW1lbnNpb25zKCl7aWYoIXRoaXMuX2NvbnRhaW5lcilyZXR1cm47Y29uc3QgdD10aGlzLl9jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh8fDQwMCxpPXRoaXMuX2NvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR8fDMwMDtsZXQgbyxyLG4scz10aGlzLl9jb250YWluZXI7Zm9yKDtzJiYoIXJ8fCFuKTspe2NvbnN0IHQ9ZS53aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShzKS50cmFuc2Zvcm07dCYmXCJub25lXCIhPT10JiYobz10Lm1hdGNoKC9tYXRyaXguKlxcKCguKylcXCkvKVsxXS5zcGxpdChcIiwgXCIpLG9bMF0mJlwiMFwiIT09b1swXSYmXCIxXCIhPT1vWzBdJiYocj1vWzBdKSxvWzNdJiZcIjBcIiE9PW9bM10mJlwiMVwiIT09b1szXSYmKG49b1szXSkpLHM9cy5wYXJlbnRFbGVtZW50O310aGlzLl9jb250YWluZXJXaWR0aD1yP01hdGguYWJzKHQvcik6dCx0aGlzLl9jb250YWluZXJIZWlnaHQ9bj9NYXRoLmFicyhpL24pOmk7fV9kZXRlY3RNaXNzaW5nQ1NTKCl7XCJyZ2IoMjUwLCAxMjgsIDExNClcIiE9PWUud2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fbWlzc2luZ0NTU0NhbmFyeSkuZ2V0UHJvcGVydHlWYWx1ZShcImJhY2tncm91bmQtY29sb3JcIikmJmUud2Fybk9uY2UoXCJUaGlzIHBhZ2UgYXBwZWFycyB0byBiZSBtaXNzaW5nIENTUyBkZWNsYXJhdGlvbnMgZm9yIE1hcGJveCBHTCBKUywgd2hpY2ggbWF5IGNhdXNlIHRoZSBtYXAgdG8gZGlzcGxheSBpbmNvcnJlY3RseS4gUGxlYXNlIGVuc3VyZSB5b3VyIHBhZ2UgaW5jbHVkZXMgbWFwYm94LWdsLmNzcywgYXMgZGVzY3JpYmVkIGluIGh0dHBzOi8vd3d3Lm1hcGJveC5jb20vbWFwYm94LWdsLWpzL2FwaS8uXCIpO31fc2V0dXBDb250YWluZXIoKXtjb25zdCBlPXRoaXMuX2NvbnRhaW5lcjtlLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1tYXBcIiksKHRoaXMuX21pc3NpbmdDU1NDYW5hcnk9bihcImRpdlwiLFwibWFwYm94Z2wtY2FuYXJ5XCIsZSkpLnN0eWxlLnZpc2liaWxpdHk9XCJoaWRkZW5cIix0aGlzLl9kZXRlY3RNaXNzaW5nQ1NTKCk7Y29uc3QgdD10aGlzLl9jYW52YXNDb250YWluZXI9bihcImRpdlwiLFwibWFwYm94Z2wtY2FudmFzLWNvbnRhaW5lclwiLGUpO3RoaXMuX2ludGVyYWN0aXZlJiZ0LmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1pbnRlcmFjdGl2ZVwiKSx0aGlzLl9jYW52YXM9bihcImNhbnZhc1wiLFwibWFwYm94Z2wtY2FudmFzXCIsdCksdGhpcy5fY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoXCJ3ZWJnbGNvbnRleHRsb3N0XCIsdGhpcy5fY29udGV4dExvc3QsITEpLHRoaXMuX2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKFwid2ViZ2xjb250ZXh0cmVzdG9yZWRcIix0aGlzLl9jb250ZXh0UmVzdG9yZWQsITEpLHRoaXMuX2NhbnZhcy5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLFwiMFwiKSx0aGlzLl9jYW52YXMuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLHRoaXMuX2dldFVJU3RyaW5nKFwiTWFwLlRpdGxlXCIpKSx0aGlzLl9jYW52YXMuc2V0QXR0cmlidXRlKFwicm9sZVwiLFwicmVnaW9uXCIpLHRoaXMuX3VwZGF0ZUNvbnRhaW5lckRpbWVuc2lvbnMoKSx0aGlzLl9yZXNpemVDYW52YXModGhpcy5fY29udGFpbmVyV2lkdGgsdGhpcy5fY29udGFpbmVySGVpZ2h0KTtjb25zdCBpPXRoaXMuX2NvbnRyb2xDb250YWluZXI9bihcImRpdlwiLFwibWFwYm94Z2wtY29udHJvbC1jb250YWluZXJcIixlKSxvPXRoaXMuX2NvbnRyb2xQb3NpdGlvbnM9e307W1widG9wLWxlZnRcIixcInRvcC1yaWdodFwiLFwiYm90dG9tLWxlZnRcIixcImJvdHRvbS1yaWdodFwiXS5mb3JFYWNoKChlPT57b1tlXT1uKFwiZGl2XCIsYG1hcGJveGdsLWN0cmwtJHtlfWAsaSk7fSkpLHRoaXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsdGhpcy5fb25NYXBTY3JvbGwsITEpO31fcmVzaXplQ2FudmFzKHQsaSl7Y29uc3Qgbz1lLmV4cG9ydGVkLmRldmljZVBpeGVsUmF0aW98fDE7dGhpcy5fY2FudmFzLndpZHRoPW8qTWF0aC5jZWlsKHQpLHRoaXMuX2NhbnZhcy5oZWlnaHQ9bypNYXRoLmNlaWwoaSksdGhpcy5fY2FudmFzLnN0eWxlLndpZHRoPWAke3R9cHhgLHRoaXMuX2NhbnZhcy5zdHlsZS5oZWlnaHQ9YCR7aX1weGA7fV9hZGRNYXJrZXIoZSl7dGhpcy5fbWFya2Vycy5wdXNoKGUpO31fcmVtb3ZlTWFya2VyKGUpe2NvbnN0IHQ9dGhpcy5fbWFya2Vycy5pbmRleE9mKGUpOy0xIT09dCYmdGhpcy5fbWFya2Vycy5zcGxpY2UodCwxKTt9X2FkZFBvcHVwKGUpe3RoaXMuX3BvcHVwcy5wdXNoKGUpO31fcmVtb3ZlUG9wdXAoZSl7Y29uc3QgdD10aGlzLl9wb3B1cHMuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX3BvcHVwcy5zcGxpY2UodCwxKTt9X3NldHVwUGFpbnRlcigpe2NvbnN0IHQ9ZS5leHRlbmQoe30saS53ZWJHTENvbnRleHRBdHRyaWJ1dGVzLHtmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OnRoaXMuX2ZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQscHJlc2VydmVEcmF3aW5nQnVmZmVyOnRoaXMuX3ByZXNlcnZlRHJhd2luZ0J1ZmZlcixhbnRpYWxpYXM6dGhpcy5fYW50aWFsaWFzfHwhMX0pLG89dGhpcy5fdXNlV2ViR0wyJiZ0aGlzLl9jYW52YXMuZ2V0Q29udGV4dChcIndlYmdsMlwiLHQpLHI9b3x8dGhpcy5fY2FudmFzLmdldENvbnRleHQoXCJ3ZWJnbFwiLHQpfHx0aGlzLl9jYW52YXMuZ2V0Q29udGV4dChcImV4cGVyaW1lbnRhbC13ZWJnbFwiLHQpO3I/KHRoaXMuX3VzZVdlYkdMMiYmIW8mJmUud2Fybk9uY2UoXCJGYWlsZWQgdG8gY3JlYXRlIFdlYkdMIDIgY29udGV4dC4gVXNpbmcgV2ViR0wgMS5cIiksZS5zdG9yZUF1dGhTdGF0ZShyLCEwKSx0aGlzLnBhaW50ZXI9bmV3IEJvKHIsdGhpcy50cmFuc2Zvcm0sISFvKSx0aGlzLm9uKFwiZGF0YVwiLChlPT57XCJzb3VyY2VcIj09PWUuZGF0YVR5cGUmJnRoaXMucGFpbnRlci5zZXRUaWxlTG9hZGVkRmxhZyghMCk7fSkpLGUuZXhwb3J0ZWQkMS50ZXN0U3VwcG9ydChyKSk6dGhpcy5maXJlKG5ldyBlLkVycm9yRXZlbnQobmV3IEVycm9yKFwiRmFpbGVkIHRvIGluaXRpYWxpemUgV2ViR0xcIikpKTt9X2NvbnRleHRMb3N0KHQpe3QucHJldmVudERlZmF1bHQoKSx0aGlzLl9mcmFtZSYmKHRoaXMuX2ZyYW1lLmNhbmNlbCgpLHRoaXMuX2ZyYW1lPW51bGwpLHRoaXMuZmlyZShuZXcgZS5FdmVudChcIndlYmdsY29udGV4dGxvc3RcIix7b3JpZ2luYWxFdmVudDp0fSkpO31fY29udGV4dFJlc3RvcmVkKHQpe3RoaXMuX3NldHVwUGFpbnRlcigpLHRoaXMucmVzaXplKCksdGhpcy5fdXBkYXRlKCksdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwid2ViZ2xjb250ZXh0cmVzdG9yZWRcIix7b3JpZ2luYWxFdmVudDp0fSkpO31fb25NYXBTY3JvbGwoZSl7aWYoZS50YXJnZXQ9PT10aGlzLl9jb250YWluZXIpcmV0dXJuIHRoaXMuX2NvbnRhaW5lci5zY3JvbGxUb3A9MCx0aGlzLl9jb250YWluZXIuc2Nyb2xsTGVmdD0wLCExfWxvYWRlZCgpe3JldHVybiAhdGhpcy5fc3R5bGVEaXJ0eSYmIXRoaXMuX3NvdXJjZXNEaXJ0eSYmISF0aGlzLnN0eWxlJiZ0aGlzLnN0eWxlLmxvYWRlZCgpfV91cGRhdGUoZSl7cmV0dXJuIHRoaXMuc3R5bGU/KHRoaXMuX3N0eWxlRGlydHk9dGhpcy5fc3R5bGVEaXJ0eXx8ZSx0aGlzLl9zb3VyY2VzRGlydHk9ITAsdGhpcy50cmlnZ2VyUmVwYWludCgpLHRoaXMpOnRoaXN9X3JlcXVlc3RSZW5kZXJGcmFtZShlKXtyZXR1cm4gdGhpcy5fdXBkYXRlKCksdGhpcy5fcmVuZGVyVGFza1F1ZXVlLmFkZChlKX1fY2FuY2VsUmVuZGVyRnJhbWUoZSl7dGhpcy5fcmVuZGVyVGFza1F1ZXVlLnJlbW92ZShlKTt9X3JlcXVlc3REb21UYXNrKGUpeyF0aGlzLmxvYWRlZCgpfHx0aGlzLmxvYWRlZCgpJiYhdGhpcy5pc01vdmluZygpP2UoKTp0aGlzLl9kb21SZW5kZXJUYXNrUXVldWUuYWRkKGUpO31fcmVuZGVyKHQpe2xldCBpO2NvbnN0IG89dGhpcy5wYWludGVyLmNvbnRleHQuZXh0VGltZXJRdWVyeSxyPWUuZXhwb3J0ZWQubm93KCk7aWYodGhpcy5saXN0ZW5zKFwiZ3B1LXRpbWluZy1mcmFtZVwiKSYmKGk9by5jcmVhdGVRdWVyeUVYVCgpLG8uYmVnaW5RdWVyeUVYVChvLlRJTUVfRUxBUFNFRF9FWFQsaSkpLHRoaXMucGFpbnRlci5jb250ZXh0LnNldERpcnR5KCksdGhpcy5wYWludGVyLnNldEJhc2VTdGF0ZSgpLCh0aGlzLmlzTW92aW5nKCl8fHRoaXMuaXNSb3RhdGluZygpfHx0aGlzLmlzWm9vbWluZygpKSYmKHRoaXMuX2ludGVyYWN0aW9uUmFuZ2VbMF09TWF0aC5taW4odGhpcy5faW50ZXJhY3Rpb25SYW5nZVswXSxlLndpbmRvdy5wZXJmb3JtYW5jZS5ub3coKSksdGhpcy5faW50ZXJhY3Rpb25SYW5nZVsxXT1NYXRoLm1heCh0aGlzLl9pbnRlcmFjdGlvblJhbmdlWzFdLGUud2luZG93LnBlcmZvcm1hbmNlLm5vdygpKSksdGhpcy5fcmVuZGVyVGFza1F1ZXVlLnJ1bih0KSx0aGlzLl9kb21SZW5kZXJUYXNrUXVldWUucnVuKHQpLHRoaXMuX3JlbW92ZWQpcmV0dXJuO3RoaXMuX3VwZGF0ZVByb2plY3Rpb25UcmFuc2l0aW9uKCk7Y29uc3Qgbj10aGlzLl9pc0luaXRpYWxMb2FkPzA6dGhpcy5fZmFkZUR1cmF0aW9uO2lmKHRoaXMuc3R5bGUmJnRoaXMuX3N0eWxlRGlydHkpe3RoaXMuX3N0eWxlRGlydHk9ITE7Y29uc3QgdD10aGlzLnRyYW5zZm9ybS56b29tLGk9dGhpcy50cmFuc2Zvcm0ucGl0Y2gsbz1lLmV4cG9ydGVkLm5vdygpLHI9bmV3IGUuRXZhbHVhdGlvblBhcmFtZXRlcnModCx7bm93Om8sZmFkZUR1cmF0aW9uOm4scGl0Y2g6aSx0cmFuc2l0aW9uOnRoaXMuc3R5bGUuZ2V0VHJhbnNpdGlvbigpfSk7dGhpcy5zdHlsZS51cGRhdGUocik7fXRoaXMuc3R5bGUmJnRoaXMuc3R5bGUuZm9nJiZ0aGlzLnN0eWxlLmZvZy5oYXNUcmFuc2l0aW9uKCkmJih0aGlzLnN0eWxlLl9tYXJrZXJzTmVlZFVwZGF0ZT0hMCx0aGlzLl9zb3VyY2VzRGlydHk9ITApO2xldCBzPSExO2lmKHRoaXMuc3R5bGUmJnRoaXMuX3NvdXJjZXNEaXJ0eT8odGhpcy5fc291cmNlc0RpcnR5PSExLHRoaXMucGFpbnRlci5fdXBkYXRlRm9nKHRoaXMuc3R5bGUpLHRoaXMuX3VwZGF0ZVRlcnJhaW4oKSxzPXRoaXMuX3VwZGF0ZUF2ZXJhZ2VFbGV2YXRpb24ociksdGhpcy5zdHlsZS5fdXBkYXRlU291cmNlcyh0aGlzLnRyYW5zZm9ybSksdGhpcy5fZm9yY2VNYXJrZXJBbmRQb3B1cFVwZGF0ZSgpKTpzPXRoaXMuX3VwZGF0ZUF2ZXJhZ2VFbGV2YXRpb24ociksdGhpcy5fcGxhY2VtZW50RGlydHk9dGhpcy5zdHlsZSYmdGhpcy5zdHlsZS5fdXBkYXRlUGxhY2VtZW50KHRoaXMucGFpbnRlci50cmFuc2Zvcm0sdGhpcy5zaG93Q29sbGlzaW9uQm94ZXMsbix0aGlzLl9jcm9zc1NvdXJjZUNvbGxpc2lvbnMpLHRoaXMuc3R5bGUmJnRoaXMucGFpbnRlci5yZW5kZXIodGhpcy5zdHlsZSx7c2hvd1RpbGVCb3VuZGFyaWVzOnRoaXMuc2hvd1RpbGVCb3VuZGFyaWVzLHNob3dUZXJyYWluV2lyZWZyYW1lOnRoaXMuc2hvd1RlcnJhaW5XaXJlZnJhbWUsc2hvd092ZXJkcmF3SW5zcGVjdG9yOnRoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3RvcixzaG93UXVlcnlHZW9tZXRyeTohIXRoaXMuX3Nob3dRdWVyeUdlb21ldHJ5LHNob3dUaWxlQUFCQnM6dGhpcy5zaG93VGlsZUFBQkJzLHJvdGF0aW5nOnRoaXMuaXNSb3RhdGluZygpLHpvb21pbmc6dGhpcy5pc1pvb21pbmcoKSxtb3Zpbmc6dGhpcy5pc01vdmluZygpLGZhZGVEdXJhdGlvbjpuLGlzSW5pdGlhbExvYWQ6dGhpcy5faXNJbml0aWFsTG9hZCxzaG93UGFkZGluZzp0aGlzLnNob3dQYWRkaW5nLGdwdVRpbWluZzohIXRoaXMubGlzdGVucyhcImdwdS10aW1pbmctbGF5ZXJcIiksZ3B1VGltaW5nRGVmZXJyZWRSZW5kZXI6ISF0aGlzLmxpc3RlbnMoXCJncHUtdGltaW5nLWRlZmVycmVkLXJlbmRlclwiKSxzcGVlZEluZGV4VGltaW5nOnRoaXMuc3BlZWRJbmRleFRpbWluZ30pLHRoaXMuZmlyZShuZXcgZS5FdmVudChcInJlbmRlclwiKSksdGhpcy5sb2FkZWQoKSYmIXRoaXMuX2xvYWRlZCYmKHRoaXMuX2xvYWRlZD0hMCx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJsb2FkXCIpKSksdGhpcy5zdHlsZSYmdGhpcy5zdHlsZS5oYXNUcmFuc2l0aW9ucygpJiYodGhpcy5fc3R5bGVEaXJ0eT0hMCksdGhpcy5zdHlsZSYmIXRoaXMuX3BsYWNlbWVudERpcnR5JiZ0aGlzLnN0eWxlLl9yZWxlYXNlU3ltYm9sRmFkZVRpbGVzKCksaSl7Y29uc3QgdD1lLmV4cG9ydGVkLm5vdygpLXI7by5lbmRRdWVyeUVYVChvLlRJTUVfRUxBUFNFRF9FWFQsaSksc2V0VGltZW91dCgoKCk9Pntjb25zdCBuPW8uZ2V0UXVlcnlPYmplY3RFWFQoaSxvLlFVRVJZX1JFU1VMVF9FWFQpLzFlNjtvLmRlbGV0ZVF1ZXJ5RVhUKGkpLHRoaXMuZmlyZShuZXcgZS5FdmVudChcImdwdS10aW1pbmctZnJhbWVcIix7Y3B1VGltZTp0LGdwdVRpbWU6bn0pKSxlLndpbmRvdy5wZXJmb3JtYW5jZS5tYXJrKFwiZnJhbWUtZ3B1XCIse3N0YXJ0VGltZTpyLGRldGFpbDp7Z3B1VGltZTpufX0pO30pLDUwKTt9aWYodGhpcy5saXN0ZW5zKFwiZ3B1LXRpbWluZy1sYXllclwiKSl7Y29uc3QgdD10aGlzLnBhaW50ZXIuY29sbGVjdEdwdVRpbWVycygpO3NldFRpbWVvdXQoKCgpPT57Y29uc3QgaT10aGlzLnBhaW50ZXIucXVlcnlHcHVUaW1lcnModCk7dGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZ3B1LXRpbWluZy1sYXllclwiLHtsYXllclRpbWVzOml9KSk7fSksNTApO31pZih0aGlzLmxpc3RlbnMoXCJncHUtdGltaW5nLWRlZmVycmVkLXJlbmRlclwiKSl7Y29uc3QgdD10aGlzLnBhaW50ZXIuY29sbGVjdERlZmVycmVkUmVuZGVyR3B1UXVlcmllcygpO3NldFRpbWVvdXQoKCgpPT57Y29uc3QgaT10aGlzLnBhaW50ZXIucXVlcnlHcHVUaW1lRGVmZXJyZWRSZW5kZXIodCk7dGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZ3B1LXRpbWluZy1kZWZlcnJlZC1yZW5kZXJcIix7Z3B1VGltZTppfSkpO30pLDUwKTt9Y29uc3QgYT10aGlzLl9zb3VyY2VzRGlydHl8fHRoaXMuX3N0eWxlRGlydHl8fHRoaXMuX3BsYWNlbWVudERpcnR5fHxzO2lmKGF8fHRoaXMuX3JlcGFpbnQpdGhpcy50cmlnZ2VyUmVwYWludCgpO2Vsc2Uge2NvbnN0IHQ9IXRoaXMuaXNNb3ZpbmcoKSYmdGhpcy5sb2FkZWQoKTtpZih0JiYocz10aGlzLl91cGRhdGVBdmVyYWdlRWxldmF0aW9uKHIsITApKSxzKXRoaXMudHJpZ2dlclJlcGFpbnQoKTtlbHNlIGlmKHRoaXMuX3RyaWdnZXJGcmFtZSghMSksdCYmKHRoaXMuZmlyZShuZXcgZS5FdmVudChcImlkbGVcIikpLHRoaXMuX2lzSW5pdGlhbExvYWQ9ITEsdGhpcy5zcGVlZEluZGV4VGltaW5nKSl7Y29uc3QgdD10aGlzLl9jYWxjdWxhdGVTcGVlZEluZGV4KCk7dGhpcy5maXJlKG5ldyBlLkV2ZW50KFwic3BlZWRpbmRleGNvbXBsZXRlZFwiLHtzcGVlZEluZGV4OnR9KSksdGhpcy5zcGVlZEluZGV4VGltaW5nPSExO319IXRoaXMuX2xvYWRlZHx8dGhpcy5fZnVsbHlMb2FkZWR8fGF8fCh0aGlzLl9mdWxseUxvYWRlZD0hMCxlLkxpdmVQZXJmb3JtYW5jZVV0aWxzLm1hcmsoZS5QZXJmb3JtYW5jZU1hcmtlcnMuZnVsbExvYWQpLHRoaXMuX3BlcmZvcm1hbmNlTWV0cmljc0NvbGxlY3Rpb24mJmUucG9zdFBlcmZvcm1hbmNlRXZlbnQodGhpcy5fcmVxdWVzdE1hbmFnZXIuX2N1c3RvbUFjY2Vzc1Rva2VuLHt3aWR0aDp0aGlzLnBhaW50ZXIud2lkdGgsaGVpZ2h0OnRoaXMucGFpbnRlci5oZWlnaHQsaW50ZXJhY3Rpb25SYW5nZTp0aGlzLl9pbnRlcmFjdGlvblJhbmdlLHZpc2liaWxpdHlIaWRkZW46dGhpcy5fdmlzaWJpbGl0eUhpZGRlbix0ZXJyYWluRW5hYmxlZDohIXRoaXMucGFpbnRlci5zdHlsZS5nZXRUZXJyYWluKCksZm9nRW5hYmxlZDohIXRoaXMucGFpbnRlci5zdHlsZS5nZXRGb2coKSxwcm9qZWN0aW9uOnRoaXMuZ2V0UHJvamVjdGlvbigpLm5hbWUsem9vbTp0aGlzLnRyYW5zZm9ybS56b29tLHJlbmRlcmVyOnRoaXMucGFpbnRlci5jb250ZXh0LnJlbmRlcmVyLHZlbmRvcjp0aGlzLnBhaW50ZXIuY29udGV4dC52ZW5kb3J9KSx0aGlzLl9hdXRoZW50aWNhdGUoKSk7fV9mb3JjZU1hcmtlckFuZFBvcHVwVXBkYXRlKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMuX21hcmtlcnMpZSYmIXRoaXMuZ2V0UmVuZGVyV29ybGRDb3BpZXMoKSYmKHQuX2xuZ0xhdD10Ll9sbmdMYXQud3JhcCgpKSx0Ll91cGRhdGUoKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9wb3B1cHMpIWV8fHRoaXMuZ2V0UmVuZGVyV29ybGRDb3BpZXMoKXx8dC5fdHJhY2tQb2ludGVyfHwodC5fbG5nTGF0PXQuX2xuZ0xhdC53cmFwKCkpLHQuX3VwZGF0ZSgpO31fdXBkYXRlQXZlcmFnZUVsZXZhdGlvbihlLHQ9ITEpe2NvbnN0IGk9ZT0+KHRoaXMudHJhbnNmb3JtLmF2ZXJhZ2VFbGV2YXRpb249ZSx0aGlzLl91cGRhdGUoITEpLCEwKTtpZighdGhpcy5wYWludGVyLmF2ZXJhZ2VFbGV2YXRpb25OZWVkc0Vhc2luZygpKXJldHVybiAwIT09dGhpcy50cmFuc2Zvcm0uYXZlcmFnZUVsZXZhdGlvbiYmaSgwKTtpZigodHx8ZS10aGlzLl9hdmVyYWdlRWxldmF0aW9uTGFzdFNhbXBsZWRBdD41MDApJiYhdGhpcy5fYXZlcmFnZUVsZXZhdGlvbi5pc0Vhc2luZyhlKSl7Y29uc3QgdD10aGlzLnRyYW5zZm9ybS5hdmVyYWdlRWxldmF0aW9uO2xldCBvPXRoaXMudHJhbnNmb3JtLnNhbXBsZUF2ZXJhZ2VFbGV2YXRpb24oKSxyPSExO3RoaXMudHJhbnNmb3JtLmVsZXZhdGlvbiYmKHI9dGhpcy50cmFuc2Zvcm0uZWxldmF0aW9uLmV4YWdnZXJhdGlvbigpIT09dGhpcy5fYXZlcmFnZUVsZXZhdGlvbkV4YWdnZXJhdGlvbix0aGlzLl9hdmVyYWdlRWxldmF0aW9uRXhhZ2dlcmF0aW9uPXRoaXMudHJhbnNmb3JtLmVsZXZhdGlvbi5leGFnZ2VyYXRpb24oKSksaXNOYU4obyk/bz0wOnRoaXMuX2F2ZXJhZ2VFbGV2YXRpb25MYXN0U2FtcGxlZEF0PWU7Y29uc3Qgbj1NYXRoLmFicyh0LW8pO2lmKG4+MSl7aWYodGhpcy5faXNJbml0aWFsTG9hZHx8cilyZXR1cm4gdGhpcy5fYXZlcmFnZUVsZXZhdGlvbi5qdW1wVG8obyksaShvKTt0aGlzLl9hdmVyYWdlRWxldmF0aW9uLmVhc2VUbyhvLGUsMzAwKTt9ZWxzZSBpZihuPjFlLTQpcmV0dXJuIHRoaXMuX2F2ZXJhZ2VFbGV2YXRpb24uanVtcFRvKG8pLGkobyl9cmV0dXJuICEhdGhpcy5fYXZlcmFnZUVsZXZhdGlvbi5pc0Vhc2luZyhlKSYmaSh0aGlzLl9hdmVyYWdlRWxldmF0aW9uLmdldFZhbHVlKGUpKX1fYXV0aGVudGljYXRlKCl7ZS5nZXRNYXBTZXNzaW9uQVBJKHRoaXMuX2dldE1hcElkKCksdGhpcy5fcmVxdWVzdE1hbmFnZXIuX3NrdVRva2VuLHRoaXMuX3JlcXVlc3RNYW5hZ2VyLl9jdXN0b21BY2Nlc3NUb2tlbiwodD0+e2lmKHQmJih0Lm1lc3NhZ2U9PT1lLkFVVEhfRVJSX01TR3x8NDAxPT09dC5zdGF0dXMpKXtjb25zdCB0PXRoaXMucGFpbnRlci5jb250ZXh0LmdsO2Uuc3RvcmVBdXRoU3RhdGUodCwhMSksdGhpcy5fbG9nb0NvbnRyb2wgaW5zdGFuY2VvZiBZciYmdGhpcy5fbG9nb0NvbnRyb2wuX3VwZGF0ZUxvZ28oKSx0JiZ0LmNsZWFyKHQuREVQVEhfQlVGRkVSX0JJVHx0LkNPTE9SX0JVRkZFUl9CSVR8dC5TVEVOQ0lMX0JVRkZFUl9CSVQpLHRoaXMuX3NpbGVuY2VBdXRoRXJyb3JzfHx0aGlzLmZpcmUobmV3IGUuRXJyb3JFdmVudChuZXcgRXJyb3IoXCJBIHZhbGlkIE1hcGJveCBhY2Nlc3MgdG9rZW4gaXMgcmVxdWlyZWQgdG8gdXNlIE1hcGJveCBHTCBKUy4gVG8gY3JlYXRlIGFuIGFjY291bnQgb3IgYSBuZXcgYWNjZXNzIHRva2VuLCB2aXNpdCBodHRwczovL2FjY291bnQubWFwYm94LmNvbS9cIikpKTt9fSkpLGUucG9zdE1hcExvYWRFdmVudCh0aGlzLl9nZXRNYXBJZCgpLHRoaXMuX3JlcXVlc3RNYW5hZ2VyLl9za3VUb2tlbix0aGlzLl9yZXF1ZXN0TWFuYWdlci5fY3VzdG9tQWNjZXNzVG9rZW4sKCgpPT57fSkpO31fdXBkYXRlVGVycmFpbigpe2NvbnN0IGU9dGhpcy5faXNEcmFnZ2luZygpO3RoaXMucGFpbnRlci51cGRhdGVUZXJyYWluKHRoaXMuc3R5bGUsZSk7fV9jYWxjdWxhdGVTcGVlZEluZGV4KCl7Y29uc3QgZT10aGlzLnBhaW50ZXIuY2FudmFzQ29weSgpLHQ9dGhpcy5wYWludGVyLmdldENhbnZhc0NvcGllc0FuZFRpbWVzdGFtcHMoKTt0LnRpbWVTdGFtcHMucHVzaChwZXJmb3JtYW5jZS5ub3coKSk7Y29uc3QgaT10aGlzLnBhaW50ZXIuY29udGV4dC5nbCxvPWkuY3JlYXRlRnJhbWVidWZmZXIoKTtmdW5jdGlvbiByKGUpe2kuZnJhbWVidWZmZXJUZXh0dXJlMkQoaS5GUkFNRUJVRkZFUixpLkNPTE9SX0FUVEFDSE1FTlQwLGkuVEVYVFVSRV8yRCxlLDApO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoaS5kcmF3aW5nQnVmZmVyV2lkdGgqaS5kcmF3aW5nQnVmZmVySGVpZ2h0KjQpO3JldHVybiBpLnJlYWRQaXhlbHMoMCwwLGkuZHJhd2luZ0J1ZmZlcldpZHRoLGkuZHJhd2luZ0J1ZmZlckhlaWdodCxpLlJHQkEsaS5VTlNJR05FRF9CWVRFLHQpLHR9cmV0dXJuIGkuYmluZEZyYW1lYnVmZmVyKGkuRlJBTUVCVUZGRVIsbyksdGhpcy5fY2FudmFzUGl4ZWxDb21wYXJpc29uKHIoZSksdC5jYW52YXNDb3BpZXMubWFwKHIpLHQudGltZVN0YW1wcyl9X2NhbnZhc1BpeGVsQ29tcGFyaXNvbihlLHQsaSl7bGV0IG89aVsxXS1pWzBdO2NvbnN0IHI9ZS5sZW5ndGgvNDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgcz10W25dO2xldCBhPTA7Zm9yKGxldCB0PTA7dDxzLmxlbmd0aDt0Kz00KXNbdF09PT1lW3RdJiZzW3QrMV09PT1lW3QrMV0mJnNbdCsyXT09PWVbdCsyXSYmc1t0KzNdPT09ZVt0KzNdJiYoYSs9MSk7bys9KGlbbisyXS1pW24rMV0pKigxLWEvcik7fXJldHVybiBvfXJlbW92ZSgpe3RoaXMuX2hhc2gmJnRoaXMuX2hhc2gucmVtb3ZlKCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fY29udHJvbHMpZS5vblJlbW92ZSh0aGlzKTt0aGlzLl9jb250cm9scz1bXSx0aGlzLl9mcmFtZSYmKHRoaXMuX2ZyYW1lLmNhbmNlbCgpLHRoaXMuX2ZyYW1lPW51bGwpLHRoaXMuX3JlbmRlclRhc2tRdWV1ZS5jbGVhcigpLHRoaXMuX2RvbVJlbmRlclRhc2tRdWV1ZS5jbGVhcigpLHRoaXMuc3R5bGUmJnRoaXMuc3R5bGUuZGVzdHJveSgpLHRoaXMucGFpbnRlci5kZXN0cm95KCksdGhpcy5oYW5kbGVycyYmdGhpcy5oYW5kbGVycy5kZXN0cm95KCksdGhpcy5oYW5kbGVycz12b2lkIDAsdGhpcy5zZXRTdHlsZShudWxsKSx2b2lkIDAhPT1lLndpbmRvdyYmKGUud2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIix0aGlzLl9vbldpbmRvd1Jlc2l6ZSwhMSksZS53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm9yaWVudGF0aW9uY2hhbmdlXCIsdGhpcy5fb25XaW5kb3dSZXNpemUsITEpLGUud2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlXCIsdGhpcy5fb25XaW5kb3dSZXNpemUsITEpLGUud2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIix0aGlzLl9vbldpbmRvd09ubGluZSwhMSksZS53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIix0aGlzLl9vblZpc2liaWxpdHlDaGFuZ2UsITEpKTtjb25zdCB0PXRoaXMucGFpbnRlci5jb250ZXh0LmdsLmdldEV4dGVuc2lvbihcIldFQkdMX2xvc2VfY29udGV4dFwiKTt0JiZ0Lmxvc2VDb250ZXh0KCksdGhpcy5fY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ3ZWJnbGNvbnRleHRsb3N0XCIsdGhpcy5fY29udGV4dExvc3QsITEpLHRoaXMuX2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKFwid2ViZ2xjb250ZXh0cmVzdG9yZWRcIix0aGlzLl9jb250ZXh0UmVzdG9yZWQsITEpLHRoaXMuX2NhbnZhc0NvbnRhaW5lci5yZW1vdmUoKSx0aGlzLl9jb250cm9sQ29udGFpbmVyLnJlbW92ZSgpLHRoaXMuX21pc3NpbmdDU1NDYW5hcnkucmVtb3ZlKCksdGhpcy5fY2FudmFzPXZvaWQgMCx0aGlzLl9jYW52YXNDb250YWluZXI9dm9pZCAwLHRoaXMuX2NvbnRyb2xDb250YWluZXI9dm9pZCAwLHRoaXMuX21pc3NpbmdDU1NDYW5hcnk9dm9pZCAwLHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtbWFwXCIpLHRoaXMuX2NvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsdGhpcy5fb25NYXBTY3JvbGwsITEpLGUucmVtb3ZlQXV0aFN0YXRlKHRoaXMucGFpbnRlci5jb250ZXh0LmdsKSx0aGlzLl9yZW1vdmVkPSEwLHRoaXMuZmlyZShuZXcgZS5FdmVudChcInJlbW92ZVwiKSk7fXRyaWdnZXJSZXBhaW50KCl7dGhpcy5fdHJpZ2dlckZyYW1lKCEwKTt9X3RyaWdnZXJGcmFtZSh0KXt0aGlzLl9yZW5kZXJOZXh0RnJhbWU9dGhpcy5fcmVuZGVyTmV4dEZyYW1lfHx0LHRoaXMuc3R5bGUmJiF0aGlzLl9mcmFtZSYmKHRoaXMuX2ZyYW1lPWUuZXhwb3J0ZWQuZnJhbWUoKGU9Pntjb25zdCB0PSEhdGhpcy5fcmVuZGVyTmV4dEZyYW1lO3RoaXMuX2ZyYW1lPW51bGwsdGhpcy5fcmVuZGVyTmV4dEZyYW1lPW51bGwsdCYmdGhpcy5fcmVuZGVyKGUpO30pKSk7fV9wcmVsb2FkVGlsZXModCl7Y29uc3QgaT10aGlzLnN0eWxlP09iamVjdC52YWx1ZXModGhpcy5zdHlsZS5fc291cmNlQ2FjaGVzKTpbXTtyZXR1cm4gZS5hc3luY0FsbChpLCgoZSxpKT0+ZS5fcHJlbG9hZFRpbGVzKHQsaSkpLCgoKT0+e3RoaXMudHJpZ2dlclJlcGFpbnQoKTt9KSksdGhpc31fb25XaW5kb3dPbmxpbmUoKXt0aGlzLl91cGRhdGUoKTt9X29uV2luZG93UmVzaXplKGUpe3RoaXMuX3RyYWNrUmVzaXplJiZ0aGlzLnJlc2l6ZSh7b3JpZ2luYWxFdmVudDplfSkuX3VwZGF0ZSgpO31fb25WaXNpYmlsaXR5Q2hhbmdlKCl7XCJoaWRkZW5cIj09PWUud2luZG93LmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSYmdGhpcy5fdmlzaWJpbGl0eUhpZGRlbisrO31nZXQgc2hvd1RpbGVCb3VuZGFyaWVzKCl7cmV0dXJuICEhdGhpcy5fc2hvd1RpbGVCb3VuZGFyaWVzfXNldCBzaG93VGlsZUJvdW5kYXJpZXMoZSl7dGhpcy5fc2hvd1RpbGVCb3VuZGFyaWVzIT09ZSYmKHRoaXMuX3Nob3dUaWxlQm91bmRhcmllcz1lLHRoaXMuX3VwZGF0ZSgpKTt9Z2V0IHNob3dUZXJyYWluV2lyZWZyYW1lKCl7cmV0dXJuICEhdGhpcy5fc2hvd1RlcnJhaW5XaXJlZnJhbWV9c2V0IHNob3dUZXJyYWluV2lyZWZyYW1lKGUpe3RoaXMuX3Nob3dUZXJyYWluV2lyZWZyYW1lIT09ZSYmKHRoaXMuX3Nob3dUZXJyYWluV2lyZWZyYW1lPWUsdGhpcy5fdXBkYXRlKCkpO31nZXQgc3BlZWRJbmRleFRpbWluZygpe3JldHVybiAhIXRoaXMuX3NwZWVkSW5kZXhUaW1pbmd9c2V0IHNwZWVkSW5kZXhUaW1pbmcoZSl7dGhpcy5fc3BlZWRJbmRleFRpbWluZyE9PWUmJih0aGlzLl9zcGVlZEluZGV4VGltaW5nPWUsdGhpcy5fdXBkYXRlKCkpO31nZXQgc2hvd1BhZGRpbmcoKXtyZXR1cm4gISF0aGlzLl9zaG93UGFkZGluZ31zZXQgc2hvd1BhZGRpbmcoZSl7dGhpcy5fc2hvd1BhZGRpbmchPT1lJiYodGhpcy5fc2hvd1BhZGRpbmc9ZSx0aGlzLl91cGRhdGUoKSk7fWdldCBzaG93Q29sbGlzaW9uQm94ZXMoKXtyZXR1cm4gISF0aGlzLl9zaG93Q29sbGlzaW9uQm94ZXN9c2V0IHNob3dDb2xsaXNpb25Cb3hlcyhlKXt0aGlzLl9zaG93Q29sbGlzaW9uQm94ZXMhPT1lJiYodGhpcy5fc2hvd0NvbGxpc2lvbkJveGVzPWUsZT90aGlzLnN0eWxlLl9nZW5lcmF0ZUNvbGxpc2lvbkJveGVzKCk6dGhpcy5fdXBkYXRlKCkpO31nZXQgc2hvd092ZXJkcmF3SW5zcGVjdG9yKCl7cmV0dXJuICEhdGhpcy5fc2hvd092ZXJkcmF3SW5zcGVjdG9yfXNldCBzaG93T3ZlcmRyYXdJbnNwZWN0b3IoZSl7dGhpcy5fc2hvd092ZXJkcmF3SW5zcGVjdG9yIT09ZSYmKHRoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3Rvcj1lLHRoaXMuX3VwZGF0ZSgpKTt9Z2V0IHJlcGFpbnQoKXtyZXR1cm4gISF0aGlzLl9yZXBhaW50fXNldCByZXBhaW50KGUpe3RoaXMuX3JlcGFpbnQhPT1lJiYodGhpcy5fcmVwYWludD1lLHRoaXMudHJpZ2dlclJlcGFpbnQoKSk7fWdldCB2ZXJ0aWNlcygpe3JldHVybiAhIXRoaXMuX3ZlcnRpY2VzfXNldCB2ZXJ0aWNlcyhlKXt0aGlzLl92ZXJ0aWNlcz1lLHRoaXMuX3VwZGF0ZSgpO31nZXQgc2hvd1RpbGVBQUJCcygpe3JldHVybiAhIXRoaXMuX3Nob3dUaWxlQUFCQnN9c2V0IHNob3dUaWxlQUFCQnMoZSl7dGhpcy5fc2hvd1RpbGVBQUJCcyE9PWUmJih0aGlzLl9zaG93VGlsZUFBQkJzPWUsZSYmdGhpcy5fdXBkYXRlKCkpO31fc2V0Q2FjaGVMaW1pdHModCxpKXtlLnNldENhY2hlTGltaXRzKHQsaSk7fWdldCB2ZXJzaW9uKCl7cmV0dXJuIGUudmVyc2lvbn19LE5hdmlnYXRpb25Db250cm9sOmNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMub3B0aW9ucz1lLmV4dGVuZCh7fSxsbix0KSx0aGlzLl9jb250YWluZXI9bihcImRpdlwiLFwibWFwYm94Z2wtY3RybCBtYXBib3hnbC1jdHJsLWdyb3VwXCIpLHRoaXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwoZT0+ZS5wcmV2ZW50RGVmYXVsdCgpKSksdGhpcy5vcHRpb25zLnNob3dab29tJiYoZS5iaW5kQWxsKFtcIl9zZXRCdXR0b25UaXRsZVwiLFwiX3VwZGF0ZVpvb21CdXR0b25zXCJdLHRoaXMpLHRoaXMuX3pvb21JbkJ1dHRvbj10aGlzLl9jcmVhdGVCdXR0b24oXCJtYXBib3hnbC1jdHJsLXpvb20taW5cIiwoZT0+e3RoaXMuX21hcCYmdGhpcy5fbWFwLnpvb21Jbih7fSx7b3JpZ2luYWxFdmVudDplfSk7fSkpLG4oXCJzcGFuXCIsXCJtYXBib3hnbC1jdHJsLWljb25cIix0aGlzLl96b29tSW5CdXR0b24pLnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsXCJ0cnVlXCIpLHRoaXMuX3pvb21PdXRCdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKFwibWFwYm94Z2wtY3RybC16b29tLW91dFwiLChlPT57dGhpcy5fbWFwJiZ0aGlzLl9tYXAuem9vbU91dCh7fSx7b3JpZ2luYWxFdmVudDplfSk7fSkpLG4oXCJzcGFuXCIsXCJtYXBib3hnbC1jdHJsLWljb25cIix0aGlzLl96b29tT3V0QnV0dG9uKS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLFwidHJ1ZVwiKSksdGhpcy5vcHRpb25zLnNob3dDb21wYXNzJiYoZS5iaW5kQWxsKFtcIl9yb3RhdGVDb21wYXNzQXJyb3dcIl0sdGhpcyksdGhpcy5fY29tcGFzcz10aGlzLl9jcmVhdGVCdXR0b24oXCJtYXBib3hnbC1jdHJsLWNvbXBhc3NcIiwoZT0+e2NvbnN0IHQ9dGhpcy5fbWFwO3QmJih0aGlzLm9wdGlvbnMudmlzdWFsaXplUGl0Y2g/dC5yZXNldE5vcnRoUGl0Y2goe30se29yaWdpbmFsRXZlbnQ6ZX0pOnQucmVzZXROb3J0aCh7fSx7b3JpZ2luYWxFdmVudDplfSkpO30pKSx0aGlzLl9jb21wYXNzSWNvbj1uKFwic3BhblwiLFwibWFwYm94Z2wtY3RybC1pY29uXCIsdGhpcy5fY29tcGFzcyksdGhpcy5fY29tcGFzc0ljb24uc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIixcInRydWVcIikpO31fdXBkYXRlWm9vbUJ1dHRvbnMoKXtjb25zdCBlPXRoaXMuX21hcDtpZighZSlyZXR1cm47Y29uc3QgdD1lLmdldFpvb20oKSxpPXQ9PT1lLmdldE1heFpvb20oKSxvPXQ9PT1lLmdldE1pblpvb20oKTt0aGlzLl96b29tSW5CdXR0b24uZGlzYWJsZWQ9aSx0aGlzLl96b29tT3V0QnV0dG9uLmRpc2FibGVkPW8sdGhpcy5fem9vbUluQnV0dG9uLnNldEF0dHJpYnV0ZShcImFyaWEtZGlzYWJsZWRcIixpLnRvU3RyaW5nKCkpLHRoaXMuX3pvb21PdXRCdXR0b24uc2V0QXR0cmlidXRlKFwiYXJpYS1kaXNhYmxlZFwiLG8udG9TdHJpbmcoKSk7fV9yb3RhdGVDb21wYXNzQXJyb3coKXtjb25zdCBlPXRoaXMuX21hcDtpZighZSlyZXR1cm47Y29uc3QgdD10aGlzLm9wdGlvbnMudmlzdWFsaXplUGl0Y2g/YHNjYWxlKCR7MS9NYXRoLnBvdyhNYXRoLmNvcyhlLnRyYW5zZm9ybS5waXRjaCooTWF0aC5QSS8xODApKSwuNSl9KSByb3RhdGVYKCR7ZS50cmFuc2Zvcm0ucGl0Y2h9ZGVnKSByb3RhdGVaKCR7ZS50cmFuc2Zvcm0uYW5nbGUqKDE4MC9NYXRoLlBJKX1kZWcpYDpgcm90YXRlKCR7ZS50cmFuc2Zvcm0uYW5nbGUqKDE4MC9NYXRoLlBJKX1kZWcpYDtlLl9yZXF1ZXN0RG9tVGFzaygoKCk9Pnt0aGlzLl9jb21wYXNzSWNvbiYmKHRoaXMuX2NvbXBhc3NJY29uLnN0eWxlLnRyYW5zZm9ybT10KTt9KSk7fW9uQWRkKGUpe3JldHVybiB0aGlzLl9tYXA9ZSx0aGlzLm9wdGlvbnMuc2hvd1pvb20mJih0aGlzLl9zZXRCdXR0b25UaXRsZSh0aGlzLl96b29tSW5CdXR0b24sXCJab29tSW5cIiksdGhpcy5fc2V0QnV0dG9uVGl0bGUodGhpcy5fem9vbU91dEJ1dHRvbixcIlpvb21PdXRcIiksZS5vbihcInpvb21cIix0aGlzLl91cGRhdGVab29tQnV0dG9ucyksdGhpcy5fdXBkYXRlWm9vbUJ1dHRvbnMoKSksdGhpcy5vcHRpb25zLnNob3dDb21wYXNzJiYodGhpcy5fc2V0QnV0dG9uVGl0bGUodGhpcy5fY29tcGFzcyxcIlJlc2V0QmVhcmluZ1wiKSx0aGlzLm9wdGlvbnMudmlzdWFsaXplUGl0Y2gmJmUub24oXCJwaXRjaFwiLHRoaXMuX3JvdGF0ZUNvbXBhc3NBcnJvdyksZS5vbihcInJvdGF0ZVwiLHRoaXMuX3JvdGF0ZUNvbXBhc3NBcnJvdyksdGhpcy5fcm90YXRlQ29tcGFzc0Fycm93KCksdGhpcy5faGFuZGxlcj1uZXcgY24oZSx0aGlzLl9jb21wYXNzLHRoaXMub3B0aW9ucy52aXN1YWxpemVQaXRjaCkpLHRoaXMuX2NvbnRhaW5lcn1vblJlbW92ZSgpe2NvbnN0IGU9dGhpcy5fbWFwO2UmJih0aGlzLl9jb250YWluZXIucmVtb3ZlKCksdGhpcy5vcHRpb25zLnNob3dab29tJiZlLm9mZihcInpvb21cIix0aGlzLl91cGRhdGVab29tQnV0dG9ucyksdGhpcy5vcHRpb25zLnNob3dDb21wYXNzJiYodGhpcy5vcHRpb25zLnZpc3VhbGl6ZVBpdGNoJiZlLm9mZihcInBpdGNoXCIsdGhpcy5fcm90YXRlQ29tcGFzc0Fycm93KSxlLm9mZihcInJvdGF0ZVwiLHRoaXMuX3JvdGF0ZUNvbXBhc3NBcnJvdyksdGhpcy5faGFuZGxlciYmdGhpcy5faGFuZGxlci5vZmYoKSx0aGlzLl9oYW5kbGVyPXZvaWQgMCksdGhpcy5fbWFwPXZvaWQgMCk7fV9jcmVhdGVCdXR0b24oZSx0KXtjb25zdCBpPW4oXCJidXR0b25cIixlLHRoaXMuX2NvbnRhaW5lcik7cmV0dXJuIGkudHlwZT1cImJ1dHRvblwiLGkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdCksaX1fc2V0QnV0dG9uVGl0bGUoZSx0KXtpZighdGhpcy5fbWFwKXJldHVybjtjb25zdCBpPXRoaXMuX21hcC5fZ2V0VUlTdHJpbmcoYE5hdmlnYXRpb25Db250cm9sLiR7dH1gKTtlLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIixpKSxlLmZpcnN0RWxlbWVudENoaWxkJiZlLmZpcnN0RWxlbWVudENoaWxkLnNldEF0dHJpYnV0ZShcInRpdGxlXCIsaSk7fX0sR2VvbG9jYXRlQ29udHJvbDpjbGFzcyBleHRlbmRzIGUuRXZlbnRlZHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMub3B0aW9ucz1lLmV4dGVuZCh7Z2VvbG9jYXRpb246ZS53aW5kb3cubmF2aWdhdG9yLmdlb2xvY2F0aW9ufSxobix0KSxlLmJpbmRBbGwoW1wiX29uU3VjY2Vzc1wiLFwiX29uRXJyb3JcIixcIl9vblpvb21cIixcIl9maW5pc2hcIixcIl9zZXR1cFVJXCIsXCJfdXBkYXRlQ2FtZXJhXCIsXCJfdXBkYXRlTWFya2VyXCIsXCJfdXBkYXRlTWFya2VyUm90YXRpb25cIixcIl9vbkRldmljZU9yaWVudGF0aW9uXCJdLHRoaXMpLHRoaXMuX3VwZGF0ZU1hcmtlclJvdGF0aW9uVGhyb3R0bGVkPVlvKHRoaXMuX3VwZGF0ZU1hcmtlclJvdGF0aW9uLDIwKSx0aGlzLl9udW1iZXJPZldhdGNoZXM9MDt9b25BZGQoZSl7cmV0dXJuIHRoaXMuX21hcD1lLHRoaXMuX2NvbnRhaW5lcj1uKFwiZGl2XCIsXCJtYXBib3hnbC1jdHJsIG1hcGJveGdsLWN0cmwtZ3JvdXBcIiksdGhpcy5fY2hlY2tHZW9sb2NhdGlvblN1cHBvcnQodGhpcy5fc2V0dXBVSSksdGhpcy5fY29udGFpbmVyfW9uUmVtb3ZlKCl7dm9pZCAwIT09dGhpcy5fZ2VvbG9jYXRpb25XYXRjaElEJiYodGhpcy5vcHRpb25zLmdlb2xvY2F0aW9uLmNsZWFyV2F0Y2godGhpcy5fZ2VvbG9jYXRpb25XYXRjaElEKSx0aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQ9dm9pZCAwKSx0aGlzLm9wdGlvbnMuc2hvd1VzZXJMb2NhdGlvbiYmdGhpcy5fdXNlckxvY2F0aW9uRG90TWFya2VyJiZ0aGlzLl91c2VyTG9jYXRpb25Eb3RNYXJrZXIucmVtb3ZlKCksdGhpcy5vcHRpb25zLnNob3dBY2N1cmFjeUNpcmNsZSYmdGhpcy5fYWNjdXJhY3lDaXJjbGVNYXJrZXImJnRoaXMuX2FjY3VyYWN5Q2lyY2xlTWFya2VyLnJlbW92ZSgpLHRoaXMuX2NvbnRhaW5lci5yZW1vdmUoKSx0aGlzLl9tYXAub2ZmKFwiem9vbVwiLHRoaXMuX29uWm9vbSksdGhpcy5fbWFwPXZvaWQgMCx0aGlzLl9udW1iZXJPZldhdGNoZXM9MCx0aGlzLl9ub1RpbWVvdXQ9ITE7fV9jaGVja0dlb2xvY2F0aW9uU3VwcG9ydCh0KXtjb25zdCBpPShlPSEhdGhpcy5vcHRpb25zLmdlb2xvY2F0aW9uKT0+e3RoaXMuX3N1cHBvcnRzR2VvbG9jYXRpb249ZSx0KGUpO307dm9pZCAwIT09dGhpcy5fc3VwcG9ydHNHZW9sb2NhdGlvbj90KHRoaXMuX3N1cHBvcnRzR2VvbG9jYXRpb24pOnZvaWQgMCE9PWUud2luZG93Lm5hdmlnYXRvci5wZXJtaXNzaW9ucz9lLndpbmRvdy5uYXZpZ2F0b3IucGVybWlzc2lvbnMucXVlcnkoe25hbWU6XCJnZW9sb2NhdGlvblwifSkudGhlbigoZT0+aShcImRlbmllZFwiIT09ZS5zdGF0ZSkpKS5jYXRjaCgoKCk9PmkoKSkpOmkoKTt9X2lzT3V0T2ZNYXBNYXhCb3VuZHMoZSl7Y29uc3QgdD10aGlzLl9tYXAuZ2V0TWF4Qm91bmRzKCksaT1lLmNvb3JkcztyZXR1cm4gISF0JiYoaS5sb25naXR1ZGU8dC5nZXRXZXN0KCl8fGkubG9uZ2l0dWRlPnQuZ2V0RWFzdCgpfHxpLmxhdGl0dWRlPHQuZ2V0U291dGgoKXx8aS5sYXRpdHVkZT50LmdldE5vcnRoKCkpfV9zZXRFcnJvclN0YXRlKCl7c3dpdGNoKHRoaXMuX3dhdGNoU3RhdGUpe2Nhc2VcIldBSVRJTkdfQUNUSVZFXCI6dGhpcy5fd2F0Y2hTdGF0ZT1cIkFDVElWRV9FUlJPUlwiLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yXCIpO2JyZWFrO2Nhc2VcIkFDVElWRV9MT0NLXCI6dGhpcy5fd2F0Y2hTdGF0ZT1cIkFDVElWRV9FUlJPUlwiLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKTticmVhaztjYXNlXCJCQUNLR1JPVU5EXCI6dGhpcy5fd2F0Y2hTdGF0ZT1cIkJBQ0tHUk9VTkRfRVJST1JcIix0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmRcIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kLWVycm9yXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKTt9fV9vblN1Y2Nlc3ModCl7aWYodGhpcy5fbWFwKXtpZih0aGlzLl9pc091dE9mTWFwTWF4Qm91bmRzKHQpKXJldHVybiB0aGlzLl9zZXRFcnJvclN0YXRlKCksdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwib3V0b2ZtYXhib3VuZHNcIix0KSksdGhpcy5fdXBkYXRlTWFya2VyKCksdm9pZCB0aGlzLl9maW5pc2goKTtpZih0aGlzLm9wdGlvbnMudHJhY2tVc2VyTG9jYXRpb24pc3dpdGNoKHRoaXMuX2xhc3RLbm93blBvc2l0aW9uPXQsdGhpcy5fd2F0Y2hTdGF0ZSl7Y2FzZVwiV0FJVElOR19BQ1RJVkVcIjpjYXNlXCJBQ1RJVkVfTE9DS1wiOmNhc2VcIkFDVElWRV9FUlJPUlwiOnRoaXMuX3dhdGNoU3RhdGU9XCJBQ1RJVkVfTE9DS1wiLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvclwiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZVwiKTticmVhaztjYXNlXCJCQUNLR1JPVU5EXCI6Y2FzZVwiQkFDS0dST1VORF9FUlJPUlwiOnRoaXMuX3dhdGNoU3RhdGU9XCJCQUNLR1JPVU5EXCIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS13YWl0aW5nXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYmFja2dyb3VuZC1lcnJvclwiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmRcIik7fXRoaXMub3B0aW9ucy5zaG93VXNlckxvY2F0aW9uJiZcIk9GRlwiIT09dGhpcy5fd2F0Y2hTdGF0ZSYmdGhpcy5fdXBkYXRlTWFya2VyKHQpLHRoaXMub3B0aW9ucy50cmFja1VzZXJMb2NhdGlvbiYmXCJBQ1RJVkVfTE9DS1wiIT09dGhpcy5fd2F0Y2hTdGF0ZXx8dGhpcy5fdXBkYXRlQ2FtZXJhKHQpLHRoaXMub3B0aW9ucy5zaG93VXNlckxvY2F0aW9uJiZ0aGlzLl9kb3RFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJtYXBib3hnbC11c2VyLWxvY2F0aW9uLWRvdC1zdGFsZVwiKSx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJnZW9sb2NhdGVcIix0KSksdGhpcy5fZmluaXNoKCk7fX1fdXBkYXRlQ2FtZXJhKHQpe2NvbnN0IGk9bmV3IGUuTG5nTGF0KHQuY29vcmRzLmxvbmdpdHVkZSx0LmNvb3Jkcy5sYXRpdHVkZSksbz10LmNvb3Jkcy5hY2N1cmFjeSxyPXRoaXMuX21hcC5nZXRCZWFyaW5nKCksbj1lLmV4dGVuZCh7YmVhcmluZzpyfSx0aGlzLm9wdGlvbnMuZml0Qm91bmRzT3B0aW9ucyk7dGhpcy5fbWFwLmZpdEJvdW5kcyhpLnRvQm91bmRzKG8pLG4se2dlb2xvY2F0ZVNvdXJjZTohMH0pO31fdXBkYXRlTWFya2VyKHQpe2lmKHQpe2NvbnN0IGk9bmV3IGUuTG5nTGF0KHQuY29vcmRzLmxvbmdpdHVkZSx0LmNvb3Jkcy5sYXRpdHVkZSk7dGhpcy5fYWNjdXJhY3lDaXJjbGVNYXJrZXIuc2V0TG5nTGF0KGkpLmFkZFRvKHRoaXMuX21hcCksdGhpcy5fdXNlckxvY2F0aW9uRG90TWFya2VyLnNldExuZ0xhdChpKS5hZGRUbyh0aGlzLl9tYXApLHRoaXMuX2FjY3VyYWN5PXQuY29vcmRzLmFjY3VyYWN5LHRoaXMub3B0aW9ucy5zaG93VXNlckxvY2F0aW9uJiZ0aGlzLm9wdGlvbnMuc2hvd0FjY3VyYWN5Q2lyY2xlJiZ0aGlzLl91cGRhdGVDaXJjbGVSYWRpdXMoKTt9ZWxzZSB0aGlzLl91c2VyTG9jYXRpb25Eb3RNYXJrZXIucmVtb3ZlKCksdGhpcy5fYWNjdXJhY3lDaXJjbGVNYXJrZXIucmVtb3ZlKCk7fV91cGRhdGVDaXJjbGVSYWRpdXMoKXtjb25zdCB0PXRoaXMuX21hcC50cmFuc2Zvcm0saT1lLm1lcmNhdG9yWmZyb21BbHRpdHVkZSgxLHQuX2NlbnRlci5sYXQpKnQud29ybGRTaXplLG89TWF0aC5jZWlsKDIqdGhpcy5fYWNjdXJhY3kqaSk7dGhpcy5fY2lyY2xlRWxlbWVudC5zdHlsZS53aWR0aD1gJHtvfXB4YCx0aGlzLl9jaXJjbGVFbGVtZW50LnN0eWxlLmhlaWdodD1gJHtvfXB4YDt9X29uWm9vbSgpe3RoaXMub3B0aW9ucy5zaG93VXNlckxvY2F0aW9uJiZ0aGlzLm9wdGlvbnMuc2hvd0FjY3VyYWN5Q2lyY2xlJiZ0aGlzLl91cGRhdGVDaXJjbGVSYWRpdXMoKTt9X3VwZGF0ZU1hcmtlclJvdGF0aW9uKCl7dGhpcy5fdXNlckxvY2F0aW9uRG90TWFya2VyJiZcIm51bWJlclwiPT10eXBlb2YgdGhpcy5faGVhZGluZz8odGhpcy5fdXNlckxvY2F0aW9uRG90TWFya2VyLnNldFJvdGF0aW9uKHRoaXMuX2hlYWRpbmcpLHRoaXMuX2RvdEVsZW1lbnQuY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLXVzZXItbG9jYXRpb24tc2hvdy1oZWFkaW5nXCIpKToodGhpcy5fZG90RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtdXNlci1sb2NhdGlvbi1zaG93LWhlYWRpbmdcIiksdGhpcy5fdXNlckxvY2F0aW9uRG90TWFya2VyLnNldFJvdGF0aW9uKDApKTt9X29uRXJyb3IodCl7aWYodGhpcy5fbWFwKXtpZih0aGlzLm9wdGlvbnMudHJhY2tVc2VyTG9jYXRpb24paWYoMT09PXQuY29kZSl7dGhpcy5fd2F0Y2hTdGF0ZT1cIk9GRlwiLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZVwiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvclwiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmRcIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kLWVycm9yXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5kaXNhYmxlZD0hMDtjb25zdCBlPXRoaXMuX21hcC5fZ2V0VUlTdHJpbmcoXCJHZW9sb2NhdGVDb250cm9sLkxvY2F0aW9uTm90QXZhaWxhYmxlXCIpO3RoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsZSksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmZpcnN0RWxlbWVudENoaWxkJiZ0aGlzLl9nZW9sb2NhdGVCdXR0b24uZmlyc3RFbGVtZW50Q2hpbGQuc2V0QXR0cmlidXRlKFwidGl0bGVcIixlKSx2b2lkIDAhPT10aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQmJnRoaXMuX2NsZWFyV2F0Y2goKTt9ZWxzZSB7aWYoMz09PXQuY29kZSYmdGhpcy5fbm9UaW1lb3V0KXJldHVybjt0aGlzLl9zZXRFcnJvclN0YXRlKCk7fVwiT0ZGXCIhPT10aGlzLl93YXRjaFN0YXRlJiZ0aGlzLm9wdGlvbnMuc2hvd1VzZXJMb2NhdGlvbiYmdGhpcy5fZG90RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtdXNlci1sb2NhdGlvbi1kb3Qtc3RhbGVcIiksdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwiZXJyb3JcIix0KSksdGhpcy5fZmluaXNoKCk7fX1fZmluaXNoKCl7dGhpcy5fdGltZW91dElkJiZjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dElkKSx0aGlzLl90aW1lb3V0SWQ9dm9pZCAwO31fc2V0dXBVSSh0KXtpZih2b2lkIDAhPT10aGlzLl9tYXApe2lmKHRoaXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwoZT0+ZS5wcmV2ZW50RGVmYXVsdCgpKSksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uPW4oXCJidXR0b25cIixcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlXCIsdGhpcy5fY29udGFpbmVyKSxuKFwic3BhblwiLFwibWFwYm94Z2wtY3RybC1pY29uXCIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uKS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLFwidHJ1ZVwiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24udHlwZT1cImJ1dHRvblwiLCExPT09dCl7ZS53YXJuT25jZShcIkdlb2xvY2F0aW9uIHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZSBzbyB0aGUgR2VvbG9jYXRlQ29udHJvbCB3aWxsIGJlIGRpc2FibGVkLlwiKTtjb25zdCB0PXRoaXMuX21hcC5fZ2V0VUlTdHJpbmcoXCJHZW9sb2NhdGVDb250cm9sLkxvY2F0aW9uTm90QXZhaWxhYmxlXCIpO3RoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5kaXNhYmxlZD0hMCx0aGlzLl9nZW9sb2NhdGVCdXR0b24uc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLHQpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5maXJzdEVsZW1lbnRDaGlsZCYmdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmZpcnN0RWxlbWVudENoaWxkLnNldEF0dHJpYnV0ZShcInRpdGxlXCIsdCk7fWVsc2Uge2NvbnN0IGU9dGhpcy5fbWFwLl9nZXRVSVN0cmluZyhcIkdlb2xvY2F0ZUNvbnRyb2wuRmluZE15TG9jYXRpb25cIik7dGhpcy5fZ2VvbG9jYXRlQnV0dG9uLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIixlKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uZmlyc3RFbGVtZW50Q2hpbGQmJnRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5maXJzdEVsZW1lbnRDaGlsZC5zZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiLGUpO310aGlzLm9wdGlvbnMudHJhY2tVc2VyTG9jYXRpb24mJih0aGlzLl9nZW9sb2NhdGVCdXR0b24uc2V0QXR0cmlidXRlKFwiYXJpYS1wcmVzc2VkXCIsXCJmYWxzZVwiKSx0aGlzLl93YXRjaFN0YXRlPVwiT0ZGXCIpLHRoaXMub3B0aW9ucy5zaG93VXNlckxvY2F0aW9uJiYodGhpcy5fZG90RWxlbWVudD1uKFwiZGl2XCIsXCJtYXBib3hnbC11c2VyLWxvY2F0aW9uXCIpLHRoaXMuX2RvdEVsZW1lbnQuYXBwZW5kQ2hpbGQobihcImRpdlwiLFwibWFwYm94Z2wtdXNlci1sb2NhdGlvbi1kb3RcIikpLHRoaXMuX2RvdEVsZW1lbnQuYXBwZW5kQ2hpbGQobihcImRpdlwiLFwibWFwYm94Z2wtdXNlci1sb2NhdGlvbi1oZWFkaW5nXCIpKSx0aGlzLl91c2VyTG9jYXRpb25Eb3RNYXJrZXI9bmV3IGVuKHtlbGVtZW50OnRoaXMuX2RvdEVsZW1lbnQscm90YXRpb25BbGlnbm1lbnQ6XCJtYXBcIixwaXRjaEFsaWdubWVudDpcIm1hcFwifSksdGhpcy5fY2lyY2xlRWxlbWVudD1uKFwiZGl2XCIsXCJtYXBib3hnbC11c2VyLWxvY2F0aW9uLWFjY3VyYWN5LWNpcmNsZVwiKSx0aGlzLl9hY2N1cmFjeUNpcmNsZU1hcmtlcj1uZXcgZW4oe2VsZW1lbnQ6dGhpcy5fY2lyY2xlRWxlbWVudCxwaXRjaEFsaWdubWVudDpcIm1hcFwifSksdGhpcy5vcHRpb25zLnRyYWNrVXNlckxvY2F0aW9uJiYodGhpcy5fd2F0Y2hTdGF0ZT1cIk9GRlwiKSx0aGlzLl9tYXAub24oXCJ6b29tXCIsdGhpcy5fb25ab29tKSksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudHJpZ2dlci5iaW5kKHRoaXMpKSx0aGlzLl9zZXR1cD0hMCx0aGlzLm9wdGlvbnMudHJhY2tVc2VyTG9jYXRpb24mJnRoaXMuX21hcC5vbihcIm1vdmVzdGFydFwiLCh0PT57dC5nZW9sb2NhdGVTb3VyY2V8fFwiQUNUSVZFX0xPQ0tcIiE9PXRoaXMuX3dhdGNoU3RhdGV8fHQub3JpZ2luYWxFdmVudCYmXCJyZXNpemVcIj09PXQub3JpZ2luYWxFdmVudC50eXBlfHwodGhpcy5fd2F0Y2hTdGF0ZT1cIkJBQ0tHUk9VTkRcIix0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmRcIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmVcIiksdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwidHJhY2t1c2VybG9jYXRpb25lbmRcIikpKTt9KSk7fX1fb25EZXZpY2VPcmllbnRhdGlvbihlKXt0aGlzLl91c2VyTG9jYXRpb25Eb3RNYXJrZXImJihlLndlYmtpdENvbXBhc3NIZWFkaW5nP3RoaXMuX2hlYWRpbmc9ZS53ZWJraXRDb21wYXNzSGVhZGluZzohMD09PWUuYWJzb2x1dGUmJih0aGlzLl9oZWFkaW5nPS0xKmUuYWxwaGEpLHRoaXMuX3VwZGF0ZU1hcmtlclJvdGF0aW9uVGhyb3R0bGVkKCkpO310cmlnZ2VyKCl7aWYoIXRoaXMuX3NldHVwKXJldHVybiBlLndhcm5PbmNlKFwiR2VvbG9jYXRlIGNvbnRyb2wgdHJpZ2dlcmVkIGJlZm9yZSBhZGRlZCB0byBhIG1hcFwiKSwhMTtpZih0aGlzLm9wdGlvbnMudHJhY2tVc2VyTG9jYXRpb24pe3N3aXRjaCh0aGlzLl93YXRjaFN0YXRlKXtjYXNlXCJPRkZcIjp0aGlzLl93YXRjaFN0YXRlPVwiV0FJVElOR19BQ1RJVkVcIix0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJ0cmFja3VzZXJsb2NhdGlvbnN0YXJ0XCIpKTticmVhaztjYXNlXCJXQUlUSU5HX0FDVElWRVwiOmNhc2VcIkFDVElWRV9MT0NLXCI6Y2FzZVwiQUNUSVZFX0VSUk9SXCI6Y2FzZVwiQkFDS0dST1VORF9FUlJPUlwiOnRoaXMuX251bWJlck9mV2F0Y2hlcy0tLHRoaXMuX25vVGltZW91dD0hMSx0aGlzLl93YXRjaFN0YXRlPVwiT0ZGXCIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS13YWl0aW5nXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYmFja2dyb3VuZFwiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQtZXJyb3JcIiksdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwidHJhY2t1c2VybG9jYXRpb25lbmRcIikpO2JyZWFrO2Nhc2VcIkJBQ0tHUk9VTkRcIjp0aGlzLl93YXRjaFN0YXRlPVwiQUNUSVZFX0xPQ0tcIix0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmRcIiksdGhpcy5fbGFzdEtub3duUG9zaXRpb24mJnRoaXMuX3VwZGF0ZUNhbWVyYSh0aGlzLl9sYXN0S25vd25Qb3NpdGlvbiksdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwidHJhY2t1c2VybG9jYXRpb25zdGFydFwiKSk7fXN3aXRjaCh0aGlzLl93YXRjaFN0YXRlKXtjYXNlXCJXQUlUSU5HX0FDVElWRVwiOnRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZVwiKTticmVhaztjYXNlXCJBQ1RJVkVfTE9DS1wiOnRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlXCIpO2JyZWFrO2Nhc2VcIkFDVElWRV9FUlJPUlwiOnRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZ1wiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvclwiKTticmVhaztjYXNlXCJCQUNLR1JPVU5EXCI6dGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kXCIpO2JyZWFrO2Nhc2VcIkJBQ0tHUk9VTkRfRVJST1JcIjp0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmdcIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kLWVycm9yXCIpO31pZihcIk9GRlwiPT09dGhpcy5fd2F0Y2hTdGF0ZSYmdm9pZCAwIT09dGhpcy5fZ2VvbG9jYXRpb25XYXRjaElEKXRoaXMuX2NsZWFyV2F0Y2goKTtlbHNlIGlmKHZvaWQgMD09PXRoaXMuX2dlb2xvY2F0aW9uV2F0Y2hJRCl7bGV0IGU7dGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS13YWl0aW5nXCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoXCJhcmlhLXByZXNzZWRcIixcInRydWVcIiksdGhpcy5fbnVtYmVyT2ZXYXRjaGVzKyssdGhpcy5fbnVtYmVyT2ZXYXRjaGVzPjE/KGU9e21heGltdW1BZ2U6NmU1LHRpbWVvdXQ6MH0sdGhpcy5fbm9UaW1lb3V0PSEwKTooZT10aGlzLm9wdGlvbnMucG9zaXRpb25PcHRpb25zLHRoaXMuX25vVGltZW91dD0hMSksdGhpcy5fZ2VvbG9jYXRpb25XYXRjaElEPXRoaXMub3B0aW9ucy5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKHRoaXMuX29uU3VjY2Vzcyx0aGlzLl9vbkVycm9yLGUpLHRoaXMub3B0aW9ucy5zaG93VXNlckhlYWRpbmcmJnRoaXMuX2FkZERldmljZU9yaWVudGF0aW9uTGlzdGVuZXIoKTt9fWVsc2UgdGhpcy5vcHRpb25zLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbih0aGlzLl9vblN1Y2Nlc3MsdGhpcy5fb25FcnJvcix0aGlzLm9wdGlvbnMucG9zaXRpb25PcHRpb25zKSx0aGlzLl90aW1lb3V0SWQ9c2V0VGltZW91dCh0aGlzLl9maW5pc2gsMWU0KTtyZXR1cm4gITB9X2FkZERldmljZU9yaWVudGF0aW9uTGlzdGVuZXIoKXtjb25zdCB0PSgpPT57ZS53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm9uZGV2aWNlb3JpZW50YXRpb25hYnNvbHV0ZVwiaW4gZS53aW5kb3c/XCJkZXZpY2VvcmllbnRhdGlvbmFic29sdXRlXCI6XCJkZXZpY2VvcmllbnRhdGlvblwiLHRoaXMuX29uRGV2aWNlT3JpZW50YXRpb24pO307dm9pZCAwIT09ZS53aW5kb3cuRGV2aWNlTW90aW9uRXZlbnQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUud2luZG93LkRldmljZU1vdGlvbkV2ZW50LnJlcXVlc3RQZXJtaXNzaW9uP0RldmljZU9yaWVudGF0aW9uRXZlbnQucmVxdWVzdFBlcm1pc3Npb24oKS50aGVuKChlPT57XCJncmFudGVkXCI9PT1lJiZ0KCk7fSkpLmNhdGNoKGNvbnNvbGUuZXJyb3IpOnQoKTt9X2NsZWFyV2F0Y2goKXt0aGlzLm9wdGlvbnMuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCh0aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQpLGUud2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJkZXZpY2VvcmllbnRhdGlvblwiLHRoaXMuX29uRGV2aWNlT3JpZW50YXRpb24pLGUud2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJkZXZpY2VvcmllbnRhdGlvbmFic29sdXRlXCIsdGhpcy5fb25EZXZpY2VPcmllbnRhdGlvbiksdGhpcy5fZ2VvbG9jYXRpb25XYXRjaElEPXZvaWQgMCx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZShcIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLXdhaXRpbmdcIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLnNldEF0dHJpYnV0ZShcImFyaWEtcHJlc3NlZFwiLFwiZmFsc2VcIiksdGhpcy5vcHRpb25zLnNob3dVc2VyTG9jYXRpb24mJnRoaXMuX3VwZGF0ZU1hcmtlcihudWxsKTt9fSxBdHRyaWJ1dGlvbkNvbnRyb2w6SHIsU2NhbGVDb250cm9sOmNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMub3B0aW9ucz1lLmV4dGVuZCh7fSx1bix0KSx0aGlzLl9pc051bWJlckZvcm1hdFN1cHBvcnRlZD1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KFwiZW5cIix7c3R5bGU6XCJ1bml0XCIsdW5pdERpc3BsYXk6XCJzaG9ydFwiLHVuaXQ6XCJtZXRlclwifSksITB9Y2F0Y2goZSl7cmV0dXJuICExfX0oKSxlLmJpbmRBbGwoW1wiX3VwZGF0ZVwiLFwiX3NldFNjYWxlXCIsXCJzZXRVbml0XCJdLHRoaXMpO31nZXREZWZhdWx0UG9zaXRpb24oKXtyZXR1cm4gXCJib3R0b20tbGVmdFwifV91cGRhdGUoKXtjb25zdCBlPXRoaXMub3B0aW9ucy5tYXhXaWR0aHx8MTAwLHQ9dGhpcy5fbWFwLGk9dC5fY29udGFpbmVySGVpZ2h0LzIsbz10Ll9jb250YWluZXJXaWR0aC8yLWUvMixyPXQudW5wcm9qZWN0KFtvLGldKSxuPXQudW5wcm9qZWN0KFtvK2UsaV0pLHM9ci5kaXN0YW5jZVRvKG4pO2lmKFwiaW1wZXJpYWxcIj09PXRoaXMub3B0aW9ucy51bml0KXtjb25zdCB0PTMuMjgwOCpzO3Q+NTI4MD90aGlzLl9zZXRTY2FsZShlLHQvNTI4MCxcIm1pbGVcIik6dGhpcy5fc2V0U2NhbGUoZSx0LFwiZm9vdFwiKTt9ZWxzZSBcIm5hdXRpY2FsXCI9PT10aGlzLm9wdGlvbnMudW5pdD90aGlzLl9zZXRTY2FsZShlLHMvMTg1MixcIm5hdXRpY2FsLW1pbGVcIik6cz49MWUzP3RoaXMuX3NldFNjYWxlKGUscy8xZTMsXCJraWxvbWV0ZXJcIik6dGhpcy5fc2V0U2NhbGUoZSxzLFwibWV0ZXJcIik7fV9zZXRTY2FsZShlLHQsaSl7dGhpcy5fbWFwLl9yZXF1ZXN0RG9tVGFzaygoKCk9Pntjb25zdCBvPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9TWF0aC5wb3coMTAsYCR7TWF0aC5mbG9vcihlKX1gLmxlbmd0aC0xKTtsZXQgaT1lL3Q7cmV0dXJuIGk9aT49MTA/MTA6aT49NT81Omk+PTM/MzppPj0yPzI6aT49MT8xOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9TWF0aC5wb3coMTAsTWF0aC5jZWlsKC1NYXRoLmxvZyhlKS9NYXRoLkxOMTApKTtyZXR1cm4gTWF0aC5yb3VuZChlKnQpL3R9KGkpLHQqaX0odCkscj1vL3Q7dGhpcy5fY29udGFpbmVyLmlubmVySFRNTD10aGlzLl9pc051bWJlckZvcm1hdFN1cHBvcnRlZCYmXCJuYXV0aWNhbC1taWxlXCIhPT1pP25ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLl9sYW5ndWFnZSx7c3R5bGU6XCJ1bml0XCIsdW5pdERpc3BsYXk6XCJzaG9ydFwiLHVuaXQ6aX0pLmZvcm1hdChvKTpgJHtvfSZuYnNwOyR7X25baV19YCx0aGlzLl9jb250YWluZXIuc3R5bGUud2lkdGg9ZSpyK1wicHhcIjt9KSk7fW9uQWRkKGUpe3JldHVybiB0aGlzLl9tYXA9ZSx0aGlzLl9sYW5ndWFnZT1lLmdldExhbmd1YWdlKCksdGhpcy5fY29udGFpbmVyPW4oXCJkaXZcIixcIm1hcGJveGdsLWN0cmwgbWFwYm94Z2wtY3RybC1zY2FsZVwiLGUuZ2V0Q29udGFpbmVyKCkpLHRoaXMuX2NvbnRhaW5lci5kaXI9XCJhdXRvXCIsdGhpcy5fbWFwLm9uKFwibW92ZVwiLHRoaXMuX3VwZGF0ZSksdGhpcy5fdXBkYXRlKCksdGhpcy5fY29udGFpbmVyfW9uUmVtb3ZlKCl7dGhpcy5fY29udGFpbmVyLnJlbW92ZSgpLHRoaXMuX21hcC5vZmYoXCJtb3ZlXCIsdGhpcy5fdXBkYXRlKSx0aGlzLl9tYXA9dm9pZCAwO31fc2V0TGFuZ3VhZ2UoZSl7dGhpcy5fbGFuZ3VhZ2U9ZSx0aGlzLl91cGRhdGUoKTt9c2V0VW5pdChlKXt0aGlzLm9wdGlvbnMudW5pdD1lLHRoaXMuX3VwZGF0ZSgpO319LEZ1bGxzY3JlZW5Db250cm9sOmNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2Z1bGxzY3JlZW49ITEsdCYmdC5jb250YWluZXImJih0LmNvbnRhaW5lciBpbnN0YW5jZW9mIGUud2luZG93LkhUTUxFbGVtZW50P3RoaXMuX2NvbnRhaW5lcj10LmNvbnRhaW5lcjplLndhcm5PbmNlKFwiRnVsbCBzY3JlZW4gY29udHJvbCAnY29udGFpbmVyJyBtdXN0IGJlIGEgRE9NIGVsZW1lbnQuXCIpKSxlLmJpbmRBbGwoW1wiX29uQ2xpY2tGdWxsc2NyZWVuXCIsXCJfY2hhbmdlSWNvblwiXSx0aGlzKSxcIm9uZnVsbHNjcmVlbmNoYW5nZVwiaW4gZS53aW5kb3cuZG9jdW1lbnQ/dGhpcy5fZnVsbHNjcmVlbmNoYW5nZT1cImZ1bGxzY3JlZW5jaGFuZ2VcIjpcIm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZVwiaW4gZS53aW5kb3cuZG9jdW1lbnQmJih0aGlzLl9mdWxsc2NyZWVuY2hhbmdlPVwid2Via2l0ZnVsbHNjcmVlbmNoYW5nZVwiKTt9b25BZGQodCl7cmV0dXJuIHRoaXMuX21hcD10LHRoaXMuX2NvbnRhaW5lcnx8KHRoaXMuX2NvbnRhaW5lcj10aGlzLl9tYXAuZ2V0Q29udGFpbmVyKCkpLHRoaXMuX2NvbnRyb2xDb250YWluZXI9bihcImRpdlwiLFwibWFwYm94Z2wtY3RybCBtYXBib3hnbC1jdHJsLWdyb3VwXCIpLHRoaXMuX2NoZWNrRnVsbHNjcmVlblN1cHBvcnQoKT90aGlzLl9zZXR1cFVJKCk6KHRoaXMuX2NvbnRyb2xDb250YWluZXIuc3R5bGUuZGlzcGxheT1cIm5vbmVcIixlLndhcm5PbmNlKFwiVGhpcyBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBmdWxsc2NyZWVuIG1vZGUuXCIpKSx0aGlzLl9jb250cm9sQ29udGFpbmVyfW9uUmVtb3ZlKCl7dGhpcy5fY29udHJvbENvbnRhaW5lci5yZW1vdmUoKSx0aGlzLl9tYXA9bnVsbCxlLndpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuX2Z1bGxzY3JlZW5jaGFuZ2UsdGhpcy5fY2hhbmdlSWNvbik7fV9jaGVja0Z1bGxzY3JlZW5TdXBwb3J0KCl7cmV0dXJuICEoIWUud2luZG93LmRvY3VtZW50LmZ1bGxzY3JlZW5FbmFibGVkJiYhZS53aW5kb3cuZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJsZWQpfV9zZXR1cFVJKCl7Y29uc3QgdD10aGlzLl9mdWxsc2NyZWVuQnV0dG9uPW4oXCJidXR0b25cIixcIm1hcGJveGdsLWN0cmwtZnVsbHNjcmVlblwiLHRoaXMuX2NvbnRyb2xDb250YWluZXIpO24oXCJzcGFuXCIsXCJtYXBib3hnbC1jdHJsLWljb25cIix0KS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLFwidHJ1ZVwiKSx0LnR5cGU9XCJidXR0b25cIix0aGlzLl91cGRhdGVUaXRsZSgpLHRoaXMuX2Z1bGxzY3JlZW5CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5fb25DbGlja0Z1bGxzY3JlZW4pLGUud2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fZnVsbHNjcmVlbmNoYW5nZSx0aGlzLl9jaGFuZ2VJY29uKTt9X3VwZGF0ZVRpdGxlKCl7Y29uc3QgZT10aGlzLl9nZXRUaXRsZSgpO3RoaXMuX2Z1bGxzY3JlZW5CdXR0b24uc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLGUpLHRoaXMuX2Z1bGxzY3JlZW5CdXR0b24uZmlyc3RFbGVtZW50Q2hpbGQmJnRoaXMuX2Z1bGxzY3JlZW5CdXR0b24uZmlyc3RFbGVtZW50Q2hpbGQuc2V0QXR0cmlidXRlKFwidGl0bGVcIixlKTt9X2dldFRpdGxlKCl7cmV0dXJuIHRoaXMuX21hcC5fZ2V0VUlTdHJpbmcodGhpcy5faXNGdWxsc2NyZWVuKCk/XCJGdWxsc2NyZWVuQ29udHJvbC5FeGl0XCI6XCJGdWxsc2NyZWVuQ29udHJvbC5FbnRlclwiKX1faXNGdWxsc2NyZWVuKCl7cmV0dXJuIHRoaXMuX2Z1bGxzY3JlZW59X2NoYW5nZUljb24oKXsoZS53aW5kb3cuZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnR8fGUud2luZG93LmRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KT09PXRoaXMuX2NvbnRhaW5lciE9PXRoaXMuX2Z1bGxzY3JlZW4mJih0aGlzLl9mdWxsc2NyZWVuPSF0aGlzLl9mdWxsc2NyZWVuLHRoaXMuX2Z1bGxzY3JlZW5CdXR0b24uY2xhc3NMaXN0LnRvZ2dsZShcIm1hcGJveGdsLWN0cmwtc2hyaW5rXCIpLHRoaXMuX2Z1bGxzY3JlZW5CdXR0b24uY2xhc3NMaXN0LnRvZ2dsZShcIm1hcGJveGdsLWN0cmwtZnVsbHNjcmVlblwiKSx0aGlzLl91cGRhdGVUaXRsZSgpKTt9X29uQ2xpY2tGdWxsc2NyZWVuKCl7dGhpcy5faXNGdWxsc2NyZWVuKCk/ZS53aW5kb3cuZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4/ZS53aW5kb3cuZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTplLndpbmRvdy5kb2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVuJiZlLndpbmRvdy5kb2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk6dGhpcy5fY29udGFpbmVyLnJlcXVlc3RGdWxsc2NyZWVuP3RoaXMuX2NvbnRhaW5lci5yZXF1ZXN0RnVsbHNjcmVlbigpOnRoaXMuX2NvbnRhaW5lci53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbiYmdGhpcy5fY29udGFpbmVyLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7fX0sUG9wdXA6Y2xhc3MgZXh0ZW5kcyBlLkV2ZW50ZWR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLm9wdGlvbnM9ZS5leHRlbmQoT2JqZWN0LmNyZWF0ZSh0biksdCksZS5iaW5kQWxsKFtcIl91cGRhdGVcIixcIl9vbkNsb3NlXCIsXCJyZW1vdmVcIixcIl9vbk1vdXNlRXZlbnRcIl0sdGhpcyksdGhpcy5fY2xhc3NMaXN0PW5ldyBTZXQodCYmdC5jbGFzc05hbWU/dC5jbGFzc05hbWUudHJpbSgpLnNwbGl0KC9cXHMrLyk6W10pO31hZGRUbyh0KXtyZXR1cm4gdGhpcy5fbWFwJiZ0aGlzLnJlbW92ZSgpLHRoaXMuX21hcD10LHRoaXMub3B0aW9ucy5jbG9zZU9uQ2xpY2smJnQub24oXCJwcmVjbGlja1wiLHRoaXMuX29uQ2xvc2UpLHRoaXMub3B0aW9ucy5jbG9zZU9uTW92ZSYmdC5vbihcIm1vdmVcIix0aGlzLl9vbkNsb3NlKSx0Lm9uKFwicmVtb3ZlXCIsdGhpcy5yZW1vdmUpLHRoaXMuX3VwZGF0ZSgpLHQuX2FkZFBvcHVwKHRoaXMpLHRoaXMuX2ZvY3VzRmlyc3RFbGVtZW50KCksdGhpcy5fdHJhY2tQb2ludGVyPyh0Lm9uKFwibW91c2Vtb3ZlXCIsdGhpcy5fb25Nb3VzZUV2ZW50KSx0Lm9uKFwibW91c2V1cFwiLHRoaXMuX29uTW91c2VFdmVudCksdC5fY2FudmFzQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJtYXBib3hnbC10cmFjay1wb2ludGVyXCIpKTp0Lm9uKFwibW92ZVwiLHRoaXMuX3VwZGF0ZSksdGhpcy5maXJlKG5ldyBlLkV2ZW50KFwib3BlblwiKSksdGhpc31pc09wZW4oKXtyZXR1cm4gISF0aGlzLl9tYXB9cmVtb3ZlKCl7dGhpcy5fY29udGVudCYmdGhpcy5fY29udGVudC5yZW1vdmUoKSx0aGlzLl9jb250YWluZXImJih0aGlzLl9jb250YWluZXIucmVtb3ZlKCksdGhpcy5fY29udGFpbmVyPXZvaWQgMCk7Y29uc3QgdD10aGlzLl9tYXA7cmV0dXJuIHQmJih0Lm9mZihcIm1vdmVcIix0aGlzLl91cGRhdGUpLHQub2ZmKFwibW92ZVwiLHRoaXMuX29uQ2xvc2UpLHQub2ZmKFwicHJlY2xpY2tcIix0aGlzLl9vbkNsb3NlKSx0Lm9mZihcImNsaWNrXCIsdGhpcy5fb25DbG9zZSksdC5vZmYoXCJyZW1vdmVcIix0aGlzLnJlbW92ZSksdC5vZmYoXCJtb3VzZW1vdmVcIix0aGlzLl9vbk1vdXNlRXZlbnQpLHQub2ZmKFwibW91c2V1cFwiLHRoaXMuX29uTW91c2VFdmVudCksdC5vZmYoXCJkcmFnXCIsdGhpcy5fb25Nb3VzZUV2ZW50KSx0Ll9jYW52YXNDb250YWluZXImJnQuX2NhbnZhc0NvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtdHJhY2stcG9pbnRlclwiKSx0Ll9yZW1vdmVQb3B1cCh0aGlzKSx0aGlzLl9tYXA9dm9pZCAwKSx0aGlzLmZpcmUobmV3IGUuRXZlbnQoXCJjbG9zZVwiKSksdGhpc31nZXRMbmdMYXQoKXtyZXR1cm4gdGhpcy5fbG5nTGF0fXNldExuZ0xhdCh0KXt0aGlzLl9sbmdMYXQ9ZS5MbmdMYXQuY29udmVydCh0KSx0aGlzLl9wb3M9bnVsbCx0aGlzLl90cmFja1BvaW50ZXI9ITEsdGhpcy5fdXBkYXRlKCk7Y29uc3QgaT10aGlzLl9tYXA7cmV0dXJuIGkmJihpLm9uKFwibW92ZVwiLHRoaXMuX3VwZGF0ZSksaS5vZmYoXCJtb3VzZW1vdmVcIix0aGlzLl9vbk1vdXNlRXZlbnQpLGkuX2NhbnZhc0NvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwibWFwYm94Z2wtdHJhY2stcG9pbnRlclwiKSksdGhpc310cmFja1BvaW50ZXIoKXt0aGlzLl90cmFja1BvaW50ZXI9ITAsdGhpcy5fcG9zPW51bGwsdGhpcy5fdXBkYXRlKCk7Y29uc3QgZT10aGlzLl9tYXA7cmV0dXJuIGUmJihlLm9mZihcIm1vdmVcIix0aGlzLl91cGRhdGUpLGUub24oXCJtb3VzZW1vdmVcIix0aGlzLl9vbk1vdXNlRXZlbnQpLGUub24oXCJkcmFnXCIsdGhpcy5fb25Nb3VzZUV2ZW50KSxlLl9jYW52YXNDb250YWluZXIuY2xhc3NMaXN0LmFkZChcIm1hcGJveGdsLXRyYWNrLXBvaW50ZXJcIikpLHRoaXN9Z2V0RWxlbWVudCgpe3JldHVybiB0aGlzLl9jb250YWluZXJ9c2V0VGV4dCh0KXtyZXR1cm4gdGhpcy5zZXRET01Db250ZW50KGUud2luZG93LmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpKX1zZXRIVE1MKHQpe2NvbnN0IGk9ZS53aW5kb3cuZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLG89ZS53aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJvZHlcIik7bGV0IHI7Zm9yKG8uaW5uZXJIVE1MPXQ7cj1vLmZpcnN0Q2hpbGQscjspaS5hcHBlbmRDaGlsZChyKTtyZXR1cm4gdGhpcy5zZXRET01Db250ZW50KGkpfWdldE1heFdpZHRoKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lciYmdGhpcy5fY29udGFpbmVyLnN0eWxlLm1heFdpZHRofXNldE1heFdpZHRoKGUpe3JldHVybiB0aGlzLm9wdGlvbnMubWF4V2lkdGg9ZSx0aGlzLl91cGRhdGUoKSx0aGlzfXNldERPTUNvbnRlbnQoZSl7bGV0IHQ9dGhpcy5fY29udGVudDtpZih0KWZvcig7dC5oYXNDaGlsZE5vZGVzKCk7KXQuZmlyc3RDaGlsZCYmdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpO2Vsc2UgdD10aGlzLl9jb250ZW50PW4oXCJkaXZcIixcIm1hcGJveGdsLXBvcHVwLWNvbnRlbnRcIix0aGlzLl9jb250YWluZXJ8fHZvaWQgMCk7aWYodC5hcHBlbmRDaGlsZChlKSx0aGlzLm9wdGlvbnMuY2xvc2VCdXR0b24pe2NvbnN0IGU9dGhpcy5fY2xvc2VCdXR0b249bihcImJ1dHRvblwiLFwibWFwYm94Z2wtcG9wdXAtY2xvc2UtYnV0dG9uXCIsdCk7ZS50eXBlPVwiYnV0dG9uXCIsZS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsXCJDbG9zZSBwb3B1cFwiKSxlLnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsXCJ0cnVlXCIpLGUuaW5uZXJIVE1MPVwiJiMyMTU7XCIsZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLl9vbkNsb3NlKTt9cmV0dXJuIHRoaXMuX3VwZGF0ZSgpLHRoaXMuX2ZvY3VzRmlyc3RFbGVtZW50KCksdGhpc31hZGRDbGFzc05hbWUoZSl7cmV0dXJuIHRoaXMuX2NsYXNzTGlzdC5hZGQoZSksdGhpcy5fdXBkYXRlQ2xhc3NMaXN0KCksdGhpc31yZW1vdmVDbGFzc05hbWUoZSl7cmV0dXJuIHRoaXMuX2NsYXNzTGlzdC5kZWxldGUoZSksdGhpcy5fdXBkYXRlQ2xhc3NMaXN0KCksdGhpc31zZXRPZmZzZXQoZSl7cmV0dXJuIHRoaXMub3B0aW9ucy5vZmZzZXQ9ZSx0aGlzLl91cGRhdGUoKSx0aGlzfXRvZ2dsZUNsYXNzTmFtZShlKXtsZXQgdDtyZXR1cm4gdGhpcy5fY2xhc3NMaXN0LmRlbGV0ZShlKT90PSExOih0aGlzLl9jbGFzc0xpc3QuYWRkKGUpLHQ9ITApLHRoaXMuX3VwZGF0ZUNsYXNzTGlzdCgpLHR9X29uTW91c2VFdmVudChlKXt0aGlzLl91cGRhdGUoZS5wb2ludCk7fV9nZXRBbmNob3IoZSl7aWYodGhpcy5vcHRpb25zLmFuY2hvcilyZXR1cm4gdGhpcy5vcHRpb25zLmFuY2hvcjtjb25zdCB0PXRoaXMuX21hcCxpPXRoaXMuX2NvbnRhaW5lcixvPXRoaXMuX3BvcztpZighdHx8IWl8fCFvKXJldHVybiBcImJvdHRvbVwiO2NvbnN0IHI9aS5vZmZzZXRXaWR0aCxuPWkub2Zmc2V0SGVpZ2h0LHM9by54PHIvMixhPW8ueD50LnRyYW5zZm9ybS53aWR0aC1yLzI7aWYoby55K2U8bilyZXR1cm4gcz9cInRvcC1sZWZ0XCI6YT9cInRvcC1yaWdodFwiOlwidG9wXCI7aWYoby55PnQudHJhbnNmb3JtLmhlaWdodC1uKXtpZihzKXJldHVybiBcImJvdHRvbS1sZWZ0XCI7aWYoYSlyZXR1cm4gXCJib3R0b20tcmlnaHRcIn1yZXR1cm4gcz9cImxlZnRcIjphP1wicmlnaHRcIjpcImJvdHRvbVwifV91cGRhdGVDbGFzc0xpc3QoKXtjb25zdCBlPXRoaXMuX2NvbnRhaW5lcjtpZighZSlyZXR1cm47Y29uc3QgdD1bLi4udGhpcy5fY2xhc3NMaXN0XTt0LnB1c2goXCJtYXBib3hnbC1wb3B1cFwiKSx0aGlzLl9hbmNob3ImJnQucHVzaChgbWFwYm94Z2wtcG9wdXAtYW5jaG9yLSR7dGhpcy5fYW5jaG9yfWApLHRoaXMuX3RyYWNrUG9pbnRlciYmdC5wdXNoKFwibWFwYm94Z2wtcG9wdXAtdHJhY2stcG9pbnRlclwiKSxlLmNsYXNzTmFtZT10LmpvaW4oXCIgXCIpO31fdXBkYXRlKHQpe2NvbnN0IGk9dGhpcy5fbWFwLG89dGhpcy5fY29udGVudDtpZighaXx8IXRoaXMuX2xuZ0xhdCYmIXRoaXMuX3RyYWNrUG9pbnRlcnx8IW8pcmV0dXJuO2xldCByPXRoaXMuX2NvbnRhaW5lcjtpZihyfHwocj10aGlzLl9jb250YWluZXI9bihcImRpdlwiLFwibWFwYm94Z2wtcG9wdXBcIixpLmdldENvbnRhaW5lcigpKSx0aGlzLl90aXA9bihcImRpdlwiLFwibWFwYm94Z2wtcG9wdXAtdGlwXCIsciksci5hcHBlbmRDaGlsZChvKSksdGhpcy5vcHRpb25zLm1heFdpZHRoJiZyLnN0eWxlLm1heFdpZHRoIT09dGhpcy5vcHRpb25zLm1heFdpZHRoJiYoci5zdHlsZS5tYXhXaWR0aD10aGlzLm9wdGlvbnMubWF4V2lkdGgpLGkudHJhbnNmb3JtLnJlbmRlcldvcmxkQ29waWVzJiYhdGhpcy5fdHJhY2tQb2ludGVyJiYodGhpcy5fbG5nTGF0PUpyKHRoaXMuX2xuZ0xhdCx0aGlzLl9wb3MsaS50cmFuc2Zvcm0pKSwhdGhpcy5fdHJhY2tQb2ludGVyfHx0KXtjb25zdCBlPXRoaXMuX3Bvcz10aGlzLl90cmFja1BvaW50ZXImJnQ/dDppLnByb2plY3QodGhpcy5fbG5nTGF0KSxvPXJuKHRoaXMub3B0aW9ucy5vZmZzZXQpLHI9dGhpcy5fYW5jaG9yPXRoaXMuX2dldEFuY2hvcihvLnkpLG49cm4odGhpcy5vcHRpb25zLm9mZnNldCxyKSxzPWUuYWRkKG4pLnJvdW5kKCk7aS5fcmVxdWVzdERvbVRhc2soKCgpPT57dGhpcy5fY29udGFpbmVyJiZyJiYodGhpcy5fY29udGFpbmVyLnN0eWxlLnRyYW5zZm9ybT1gJHtRcltyXX0gdHJhbnNsYXRlKCR7cy54fXB4LCR7cy55fXB4KWApO30pKTt9aWYoIXRoaXMuX21hcmtlciYmaS5fc2hvd2luZ0dsb2JlKCkpe2NvbnN0IHQ9ZS5pc0xuZ0xhdEJlaGluZEdsb2JlKGkudHJhbnNmb3JtLHRoaXMuX2xuZ0xhdCk/MDoxO3RoaXMuX3NldE9wYWNpdHkodCk7fXRoaXMuX3VwZGF0ZUNsYXNzTGlzdCgpO31fZm9jdXNGaXJzdEVsZW1lbnQoKXtpZighdGhpcy5vcHRpb25zLmZvY3VzQWZ0ZXJPcGVufHwhdGhpcy5fY29udGFpbmVyKXJldHVybjtjb25zdCBlPXRoaXMuX2NvbnRhaW5lci5xdWVyeVNlbGVjdG9yKG9uKTtlJiZlLmZvY3VzKCk7fV9vbkNsb3NlKCl7dGhpcy5yZW1vdmUoKTt9X3NldE9wYWNpdHkoZSl7dGhpcy5fY29udGFpbmVyJiYodGhpcy5fY29udGFpbmVyLnN0eWxlLm9wYWNpdHk9YCR7ZX1gKSx0aGlzLl9jb250ZW50JiYodGhpcy5fY29udGVudC5zdHlsZS5wb2ludGVyRXZlbnRzPWU/XCJhdXRvXCI6XCJub25lXCIpO319LE1hcmtlcjplbixTdHlsZTpLdCxMbmdMYXQ6ZS5MbmdMYXQsTG5nTGF0Qm91bmRzOmUuTG5nTGF0Qm91bmRzLFBvaW50OmUuUG9pbnQsTWVyY2F0b3JDb29yZGluYXRlOmUuTWVyY2F0b3JDb29yZGluYXRlLEZyZWVDYW1lcmFPcHRpb25zOmpvLEV2ZW50ZWQ6ZS5FdmVudGVkLGNvbmZpZzplLmNvbmZpZyxwcmV3YXJtOmZ1bmN0aW9uKCl7VWUoKS5hY3F1aXJlKEJlKTt9LGNsZWFyUHJld2FybWVkUmVzb3VyY2VzOmZ1bmN0aW9uKCl7Y29uc3QgZT1GZTtlJiYoZS5pc1ByZWxvYWRlZCgpJiYxPT09ZS5udW1BY3RpdmUoKT8oZS5yZWxlYXNlKEJlKSxGZT1udWxsKTpjb25zb2xlLndhcm4oXCJDb3VsZCBub3QgY2xlYXIgV2ViV29ya2VycyBzaW5jZSB0aGVyZSBhcmUgYWN0aXZlIE1hcCBpbnN0YW5jZXMgdGhhdCBzdGlsbCByZWZlcmVuY2UgaXQuIFRoZSBwcmUtd2FybWVkIFdlYldvcmtlciBwb29sIGNhbiBvbmx5IGJlIGNsZWFyZWQgd2hlbiBhbGwgbWFwIGluc3RhbmNlcyBoYXZlIGJlZW4gcmVtb3ZlZCB3aXRoIG1hcC5yZW1vdmUoKVwiKSk7fSxnZXQgYWNjZXNzVG9rZW4oKXtyZXR1cm4gZS5jb25maWcuQUNDRVNTX1RPS0VOfSxzZXQgYWNjZXNzVG9rZW4odCl7ZS5jb25maWcuQUNDRVNTX1RPS0VOPXQ7fSxnZXQgYmFzZUFwaVVybCgpe3JldHVybiBlLmNvbmZpZy5BUElfVVJMfSxzZXQgYmFzZUFwaVVybCh0KXtlLmNvbmZpZy5BUElfVVJMPXQ7fSxnZXQgd29ya2VyQ291bnQoKXtyZXR1cm4ga2Uud29ya2VyQ291bnR9LHNldCB3b3JrZXJDb3VudChlKXtrZS53b3JrZXJDb3VudD1lO30sZ2V0IG1heFBhcmFsbGVsSW1hZ2VSZXF1ZXN0cygpe3JldHVybiBlLmNvbmZpZy5NQVhfUEFSQUxMRUxfSU1BR0VfUkVRVUVTVFN9LHNldCBtYXhQYXJhbGxlbEltYWdlUmVxdWVzdHModCl7ZS5jb25maWcuTUFYX1BBUkFMTEVMX0lNQUdFX1JFUVVFU1RTPXQ7fSxjbGVhclN0b3JhZ2UodCl7ZS5jbGVhclRpbGVDYWNoZSh0KTt9LHdvcmtlclVybDpcIlwiLHdvcmtlckNsYXNzOm51bGwsc2V0Tm93OmUuZXhwb3J0ZWQuc2V0Tm93LHJlc3RvcmVOb3c6ZS5leHBvcnRlZC5yZXN0b3JlTm93fTtyZXR1cm4gZG59KSk7XG5cbi8vXG4vLyBPdXIgY3VzdG9tIGludHJvIHByb3ZpZGVzIGEgc3BlY2lhbGl6ZWQgXCJkZWZpbmUoKVwiIGZ1bmN0aW9uLCBjYWxsZWQgYnkgdGhlXG4vLyBBTUQgbW9kdWxlcyBiZWxvdywgdGhhdCBzZXRzIHVwIHRoZSB3b3JrZXIgYmxvYiBVUkwgYW5kIHRoZW4gZXhlY3V0ZXMgdGhlXG4vLyBtYWluIG1vZHVsZSwgc3RvcmluZyBpdHMgZXhwb3J0ZWQgdmFsdWUgYXMgJ21hcGJveGdsJ1xuXG5cbnZhciBtYXBib3hnbCQxID0gbWFwYm94Z2w7XG5cbnJldHVybiBtYXBib3hnbCQxO1xuXG59KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tYXBib3gtZ2wuanMubWFwXG4iXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInNoYXJlZCIsIndvcmtlciIsIm1hcGJveGdsIiwiZGVmaW5lIiwiXyIsImNodW5rIiwid29ya2VyQnVuZGxlU3RyaW5nIiwic2hhcmVkQ2h1bmsiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJ3b3JrZXJVcmwiLCJCbG9iIiwidHlwZSIsInQiLCJlIiwic2VsZiIsInIiLCJuIiwiaSIsIkFQSV9VUkwiLCJBUElfVVJMX1JFR0VYIiwicHJvY2VzcyIsImVudiIsIlJlZ0V4cCIsIkFQSV9USUxFSlNPTl9SRUdFWCIsIkFQSV9TUFJJVEVfUkVHRVgiLCJBUElfRk9OVFNfUkVHRVgiLCJBUElfU1RZTEVfUkVHRVgiLCJBUElfQ0ROX1VSTF9SRUdFWCIsIkVWRU5UU19VUkwiLCJob3N0bmFtZSIsIlNFU1NJT05fUEFUSCIsIkZFRURCQUNLX1VSTCIsIlRJTEVfVVJMX1ZFUlNJT04iLCJSQVNURVJfVVJMX1BSRUZJWCIsIlJFUVVJUkVfQUNDRVNTX1RPS0VOIiwiQUNDRVNTX1RPS0VOIiwiTUFYX1BBUkFMTEVMX0lNQUdFX1JFUVVFU1RTIiwicyIsInN1cHBvcnRlZCIsInRlc3RTdXBwb3J0IiwibCIsIm8iLCJ1IiwiYyIsImEiLCJjcmVhdGVUZXh0dXJlIiwiYmluZFRleHR1cmUiLCJURVhUVVJFXzJEIiwidGV4SW1hZ2UyRCIsIlJHQkEiLCJVTlNJR05FRF9CWVRFIiwiaXNDb250ZXh0TG9zdCIsImRlbGV0ZVRleHR1cmUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJvbmxvYWQiLCJvbmVycm9yIiwic3JjIiwiaCIsInAiLCJfX2VzTW9kdWxlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVmYXVsdCIsImQiLCJmIiwidGhpcyIsImN4IiwiYngiLCJheCIsImN5IiwiYnkiLCJheSIsInAxeCIsInAxeSIsInAyeCIsInAyeSIsInNhbXBsZUN1cnZlWCIsInNhbXBsZUN1cnZlWSIsInNhbXBsZUN1cnZlRGVyaXZhdGl2ZVgiLCJzb2x2ZUN1cnZlWCIsIk1hdGgiLCJhYnMiLCJzb2x2ZSIsInkiLCJtIiwiZyIsIngiLCJjbG9uZSIsImFkZCIsIl9hZGQiLCJzdWIiLCJfc3ViIiwibXVsdEJ5UG9pbnQiLCJfbXVsdEJ5UG9pbnQiLCJkaXZCeVBvaW50IiwiX2RpdkJ5UG9pbnQiLCJtdWx0IiwiX211bHQiLCJkaXYiLCJfZGl2Iiwicm90YXRlIiwiX3JvdGF0ZSIsInJvdGF0ZUFyb3VuZCIsIl9yb3RhdGVBcm91bmQiLCJtYXRNdWx0IiwiX21hdE11bHQiLCJ1bml0IiwiX3VuaXQiLCJwZXJwIiwiX3BlcnAiLCJyb3VuZCIsIl9yb3VuZCIsIm1hZyIsInNxcnQiLCJlcXVhbHMiLCJkaXN0IiwiZGlzdFNxciIsImFuZ2xlIiwiYXRhbjIiLCJhbmdsZVRvIiwiYW5nbGVXaXRoIiwiYW5nbGVXaXRoU2VwIiwiY29zIiwic2luIiwiY29udmVydCIsIkFycmF5IiwiaXNBcnJheSIsInYiLCJQSSIsImIiLCJ3IiwiQSIsIlMiLCJrIiwiSSIsIk0iLCJtaW4iLCJtYXgiLCJUIiwieiIsIkIiLCJsZW5ndGgiLCJmb3JFYWNoIiwiRSIsInB1c2giLCJDIiwiUCIsIkQiLCJWIiwicmFuZG9tIiwidG9TdHJpbmciLCJyZXBsYWNlIiwiTCIsInBvdyIsImNlaWwiLCJsb2ciLCJMTjIiLCJGIiwidGVzdCIsIlIiLCJiaW5kIiwiVSIsImluZGV4T2YiLCIkIiwiaiIsIk8iLCJtYXAiLCJxIiwiTiIsImNvbnNvbGUiLCJ3YXJuIiwiRyIsIloiLCJLIiwiV29ya2VyR2xvYmFsU2NvcGUiLCJYIiwidG9Mb3dlckNhc2UiLCJwYXJzZUludCIsImlzTmFOIiwiSiIsIkgiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJzYWZhcmkiLCJtYXRjaCIsIlkiLCJzZXRJdGVtIiwicmVtb3ZlSXRlbSIsIlciLCJRIiwicnQiLCJudCIsInR0IiwiZXQiLCJpdCIsImNhY2hlcyIsInN0Iiwib3BlbiIsImF0Iiwic2xpY2UiLCJzcGxpdCIsImZpbHRlciIsImpvaW4iLCJvdCIsImx0IiwiVW5rbm93biIsIlN0eWxlIiwiU291cmNlIiwiVGlsZSIsIkdseXBocyIsIlNwcml0ZUltYWdlIiwiU3ByaXRlSlNPTiIsIkltYWdlIiwiZnJlZXplIiwidXQiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwiYnQiLCJzdXBlciIsInN0YXR1cyIsInVybCIsIm5hbWUiLCJtZXNzYWdlIiwiY3QiLCJyZWZlcnJlciIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJwYXJlbnQiLCJocmVmIiwiaHQiLCJmZXRjaCIsIlJlcXVlc3QiLCJBYm9ydENvbnRyb2xsZXIiLCJtZXRob2QiLCJib2R5IiwiY3JlZGVudGlhbHMiLCJoZWFkZXJzIiwicmVmZXJyZXJQb2xpY3kiLCJzaWduYWwiLCJzZXQiLCJEYXRlIiwibm93IiwidGhlbiIsIm9rIiwic3RhdHVzVGV4dCIsImNhdGNoIiwiYXJyYXlCdWZmZXIiLCJqc29uIiwidGV4dCIsIkhlYWRlcnMiLCJnZXQiLCJ0b1VUQ1N0cmluZyIsImdldFRpbWUiLCJSZXNwb25zZSIsIlJlYWRhYmxlU3RyZWFtIiwiYmxvYiIsInB1dCIsImRlbGV0ZSIsImNhbmNlbCIsImFib3J0IiwiYWN0b3IiLCJzZW5kIiwiWE1MSHR0cFJlcXVlc3QiLCJyZXNwb25zZVR5cGUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwid2l0aENyZWRlbnRpYWxzIiwicmVzcG9uc2UiLCJKU09OIiwicGFyc2UiLCJnZXRSZXNwb25zZUhlYWRlciIsInB0IiwiZHQiLCJob3N0IiwiZnQiLCJ5dCIsIm10IiwiZ3QiLCJhY2NlcHQiLCJyZXF1ZXN0UGFyYW1ldGVycyIsImNhbGxiYWNrIiwiY2FuY2VsbGVkIiwic2hpZnQiLCJjcmVhdGVJbWFnZUJpdG1hcCIsIlVpbnQ4QXJyYXkiLCJyZXZva2VPYmplY3RVUkwiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJieXRlTGVuZ3RoIiwieHQiLCJ2dCIsInd0IiwiX3QiLCJBdCIsIlN0Iiwia3QiLCJhdXRob3JpdHkiLCJwYXRoIiwicGFyYW1zIiwiSXQiLCJNdCIsIlR0IiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiYXRvYiIsImNoYXJDb2RlQXQiLCJ6dCIsImFub25JZCIsImV2ZW50RGF0YSIsInF1ZXVlIiwicGVuZGluZ1JlcXVlc3QiLCJnZXRTdG9yYWdlS2V5IiwiYnRvYSIsImVuY29kZVVSSUNvbXBvbmVudCIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsIk51bWJlciIsImZldGNoRXZlbnREYXRhIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInNhdmVFdmVudERhdGEiLCJrZXlzIiwic3RyaW5naWZ5IiwicHJvY2Vzc1JlcXVlc3RzIiwicG9zdEV2ZW50IiwiZXZlbnQiLCJjcmVhdGVkIiwidG9JU09TdHJpbmciLCJxdWV1ZVJlcXVlc3QiLCJCdCIsIl9jdXN0b21BY2Nlc3NUb2tlbiIsInBvc3RUdXJuc3RpbGVFdmVudCIsInNvbWUiLCJsYXN0U3VjY2VzcyIsInRva2VuVSIsImdldERhdGUiLCJzZGtJZGVudGlmaWVyIiwic2RrVmVyc2lvbiIsInNrdUlkIiwidXNlcklkIiwiRXQiLCJDdCIsInN1Y2Nlc3MiLCJza3VUb2tlbiIsInBvc3RNYXBMb2FkRXZlbnQiLCJlcnJvckNiIiwiaWQiLCJ0aW1lc3RhbXAiLCJQdCIsIkR0IiwicG9zdFBlcmZvcm1hbmNlRXZlbnQiLCJwZXJmb3JtYW5jZURhdGEiLCJwZXJmb3JtYW5jZSIsImdldEVudHJpZXNCeVR5cGUiLCJzdGFydFRpbWUiLCJyZXNwb25zZUVuZCIsInRyYW5zZmVyU2l6ZSIsImp0IiwiZGV2aWNlUGl4ZWxSYXRpbyIsImNvbm5lY3Rpb24iLCJtb3pDb25uZWN0aW9uIiwid2Via2l0Q29ubmVjdGlvbiIsImNvdW50ZXJzIiwibWV0YWRhdGEiLCJhdHRyaWJ1dGVzIiwidmFsdWUiLCJpbnRlcmFjdGlvblJhbmdlIiwiVXQiLCJmaW5kIiwidmlzaWJpbGl0eUhpZGRlbiIsInRlcnJhaW5FbmFibGVkIiwiZm9nRW5hYmxlZCIsInByb2plY3Rpb24iLCJ6b29tIiwiZWZmZWN0aXZlVHlwZSIsInNjcmVlbiIsIndpZHRoIiwiaGVpZ2h0IiwiaW5uZXJXaWR0aCIsImlubmVySGVpZ2h0IiwicmVuZGVyZXIiLCJ2ZW5kb3IiLCJWdCIsIkx0IiwiZ2V0U2Vzc2lvbiIsImdldFNlc3Npb25BUEkiLCJGdCIsIlJ0IiwiU2V0IiwiY3JlYXRlIiwibG9hZCIsImZ1bGxMb2FkIiwiJHQiLCJtYXJrIiwibWVhc3VyZSIsImluY2x1ZGVzIiwiT3QiLCJxdCIsImdldEVudHJpZXNCeU5hbWUiLCJOdCIsIkd0IiwiWnQiLCJLdCIsIlh0Iiwic2V0Tm93IiwicmVzdG9yZU5vdyIsImZyYW1lIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJnZXRJbWFnZURhdGEiLCJnZXRDb250ZXh0Iiwid2lsbFJlYWRGcmVxdWVudGx5IiwiY2xlYXJSZWN0IiwiZHJhd0ltYWdlIiwicmVzb2x2ZVVSTCIsInByZWZlcnNSZWR1Y2VkTW90aW9uIiwibWF0Y2hNZWRpYSIsIm1hdGNoZXMiLCJKdCIsIkh0Iiwic3BsaWNlIiwiWXQiLCJXdCIsImVycm9yIiwiUXQiLCJvbiIsIl9saXN0ZW5lcnMiLCJvZmYiLCJfb25lVGltZUxpc3RlbmVycyIsIm9uY2UiLCJQcm9taXNlIiwiZmlyZSIsImxpc3RlbnMiLCJ0YXJnZXQiLCJfZXZlbnRlZFBhcmVudCIsIl9ldmVudGVkUGFyZW50RGF0YSIsInNldEV2ZW50ZWRQYXJlbnQiLCJ0ZSIsImVlIiwicmUiLCJCb29sZWFuIiwidmFsdWVPZiIsIm5lIiwiaWUiLCJrZXkiLCJzZSIsImFlIiwiYmluZGluZ3MiLCJjb25jYXQiLCJoYXMiLCJvZSIsImxlIiwia2luZCIsInVlIiwiY2UiLCJoZSIsInBlIiwiZGUiLCJmZSIsInllIiwibWUiLCJnZSIsInhlIiwiaXRlbVR5cGUiLCJ2ZSIsImJlIiwid2UiLCJfZSIsIkFlIiwiU2UiLCJrZSIsInRyYW5zcGFyZW50IiwiYWxpY2VibHVlIiwiYW50aXF1ZXdoaXRlIiwiYXF1YSIsImFxdWFtYXJpbmUiLCJhenVyZSIsImJlaWdlIiwiYmlzcXVlIiwiYmxhY2siLCJibGFuY2hlZGFsbW9uZCIsImJsdWUiLCJibHVldmlvbGV0IiwiYnJvd24iLCJidXJseXdvb2QiLCJjYWRldGJsdWUiLCJjaGFydHJldXNlIiwiY2hvY29sYXRlIiwiY29yYWwiLCJjb3JuZmxvd2VyYmx1ZSIsImNvcm5zaWxrIiwiY3JpbXNvbiIsImN5YW4iLCJkYXJrYmx1ZSIsImRhcmtjeWFuIiwiZGFya2dvbGRlbnJvZCIsImRhcmtncmF5IiwiZGFya2dyZWVuIiwiZGFya2dyZXkiLCJkYXJra2hha2kiLCJkYXJrbWFnZW50YSIsImRhcmtvbGl2ZWdyZWVuIiwiZGFya29yYW5nZSIsImRhcmtvcmNoaWQiLCJkYXJrcmVkIiwiZGFya3NhbG1vbiIsImRhcmtzZWFncmVlbiIsImRhcmtzbGF0ZWJsdWUiLCJkYXJrc2xhdGVncmF5IiwiZGFya3NsYXRlZ3JleSIsImRhcmt0dXJxdW9pc2UiLCJkYXJrdmlvbGV0IiwiZGVlcHBpbmsiLCJkZWVwc2t5Ymx1ZSIsImRpbWdyYXkiLCJkaW1ncmV5IiwiZG9kZ2VyYmx1ZSIsImZpcmVicmljayIsImZsb3JhbHdoaXRlIiwiZm9yZXN0Z3JlZW4iLCJmdWNoc2lhIiwiZ2FpbnNib3JvIiwiZ2hvc3R3aGl0ZSIsImdvbGQiLCJnb2xkZW5yb2QiLCJncmF5IiwiZ3JlZW4iLCJncmVlbnllbGxvdyIsImdyZXkiLCJob25leWRldyIsImhvdHBpbmsiLCJpbmRpYW5yZWQiLCJpbmRpZ28iLCJpdm9yeSIsImtoYWtpIiwibGF2ZW5kZXIiLCJsYXZlbmRlcmJsdXNoIiwibGF3bmdyZWVuIiwibGVtb25jaGlmZm9uIiwibGlnaHRibHVlIiwibGlnaHRjb3JhbCIsImxpZ2h0Y3lhbiIsImxpZ2h0Z29sZGVucm9keWVsbG93IiwibGlnaHRncmF5IiwibGlnaHRncmVlbiIsImxpZ2h0Z3JleSIsImxpZ2h0cGluayIsImxpZ2h0c2FsbW9uIiwibGlnaHRzZWFncmVlbiIsImxpZ2h0c2t5Ymx1ZSIsImxpZ2h0c2xhdGVncmF5IiwibGlnaHRzbGF0ZWdyZXkiLCJsaWdodHN0ZWVsYmx1ZSIsImxpZ2h0eWVsbG93IiwibGltZSIsImxpbWVncmVlbiIsImxpbmVuIiwibWFnZW50YSIsIm1hcm9vbiIsIm1lZGl1bWFxdWFtYXJpbmUiLCJtZWRpdW1ibHVlIiwibWVkaXVtb3JjaGlkIiwibWVkaXVtcHVycGxlIiwibWVkaXVtc2VhZ3JlZW4iLCJtZWRpdW1zbGF0ZWJsdWUiLCJtZWRpdW1zcHJpbmdncmVlbiIsIm1lZGl1bXR1cnF1b2lzZSIsIm1lZGl1bXZpb2xldHJlZCIsIm1pZG5pZ2h0Ymx1ZSIsIm1pbnRjcmVhbSIsIm1pc3R5cm9zZSIsIm1vY2Nhc2luIiwibmF2YWpvd2hpdGUiLCJuYXZ5Iiwib2xkbGFjZSIsIm9saXZlIiwib2xpdmVkcmFiIiwib3JhbmdlIiwib3JhbmdlcmVkIiwib3JjaGlkIiwicGFsZWdvbGRlbnJvZCIsInBhbGVncmVlbiIsInBhbGV0dXJxdW9pc2UiLCJwYWxldmlvbGV0cmVkIiwicGFwYXlhd2hpcCIsInBlYWNocHVmZiIsInBlcnUiLCJwaW5rIiwicGx1bSIsInBvd2RlcmJsdWUiLCJwdXJwbGUiLCJyZWJlY2NhcHVycGxlIiwicmVkIiwicm9zeWJyb3duIiwicm95YWxibHVlIiwic2FkZGxlYnJvd24iLCJzYWxtb24iLCJzYW5keWJyb3duIiwic2VhZ3JlZW4iLCJzZWFzaGVsbCIsInNpZW5uYSIsInNpbHZlciIsInNreWJsdWUiLCJzbGF0ZWJsdWUiLCJzbGF0ZWdyYXkiLCJzbGF0ZWdyZXkiLCJzbm93Iiwic3ByaW5nZ3JlZW4iLCJzdGVlbGJsdWUiLCJ0YW4iLCJ0ZWFsIiwidGhpc3RsZSIsInRvbWF0byIsInR1cnF1b2lzZSIsInZpb2xldCIsIndoZWF0Iiwid2hpdGUiLCJ3aGl0ZXNtb2tlIiwieWVsbG93IiwieWVsbG93Z3JlZW4iLCJJZSIsIk1lIiwicGFyc2VGbG9hdCIsIlRlIiwiemUiLCJwYXJzZUNTU0NvbG9yIiwic3Vic3RyIiwicG9wIiwiQmUiLCJ0b0FycmF5IiwidG9BcnJheTAxIiwidG9BcnJheTAxUHJlbXVsdGlwbGllZEFscGhhIiwiRWUiLCJDZSIsInNlbnNpdGl2aXR5IiwibG9jYWxlIiwiY29sbGF0b3IiLCJJbnRsIiwiQ29sbGF0b3IiLCJ1c2FnZSIsImNvbXBhcmUiLCJyZXNvbHZlZExvY2FsZSIsInJlc29sdmVkT3B0aW9ucyIsIlBlIiwibm9ybWFsaXplIiwiaW1hZ2UiLCJzY2FsZSIsImZvbnRTdGFjayIsInRleHRDb2xvciIsIkRlIiwic2VjdGlvbnMiLCJmcm9tU3RyaW5nIiwiaXNFbXB0eSIsImZhY3RvcnkiLCJzZXJpYWxpemUiLCJWZSIsImF2YWlsYWJsZSIsIkxlIiwiRmUiLCJSZSIsIlVlIiwiJGUiLCJleHBlY3RlZFR5cGUiLCJldmFsdWF0ZSIsImVhY2hDaGlsZCIsIm91dHB1dERlZmluZWQiLCJqZSIsIk9lIiwidG9KU09OIiwicWUiLCJzdHJpbmciLCJudW1iZXIiLCJib29sZWFuIiwib2JqZWN0IiwiTmUiLCJhcmdzIiwiZmxvb3IiLCJldmVyeSIsIkdlIiwiWmUiLCJmb250IiwiY29udGVudCIsIktlIiwiaW5wdXQiLCJhdmFpbGFibGVJbWFnZXMiLCJYZSIsIkplIiwicGFyc2VDb2xvciIsIkhlIiwiWWUiLCJXZSIsImdsb2JhbHMiLCJmZWF0dXJlIiwiZmVhdHVyZVN0YXRlIiwiZm9ybWF0dGVkU2VjdGlvbiIsIl9wYXJzZUNvbG9yQ2FjaGUiLCJjYW5vbmljYWwiLCJmZWF0dXJlVGlsZUNvb3JkIiwiZmVhdHVyZURpc3RhbmNlRGF0YSIsImdlb21ldHJ5VHlwZSIsImdlb21ldHJ5IiwiY2Fub25pY2FsSUQiLCJwcm9wZXJ0aWVzIiwiZGlzdGFuY2VGcm9tQ2VudGVyIiwiY2VudGVyIiwiYmVhcmluZyIsIlFlIiwiX2V2YWx1YXRlIiwiZGVmaW5pdGlvbnMiLCJvdmVybG9hZHMiLCJJciIsInJlZ2lzdHJ5Iiwic2NvcGUiLCJjaGVja1N1YnR5cGUiLCJlcnJvcnMiLCJyZWdpc3RlciIsInRyIiwiZXIiLCJjYXNlU2Vuc2l0aXZlIiwiZGlhY3JpdGljU2Vuc2l0aXZlIiwicnIiLCJuciIsImlyIiwic3IiLCJhciIsIm9yIiwibHIiLCJ1ciIsImNyIiwiaHIiLCJwciIsImRyIiwiZnIiLCJ5ciIsIm1yIiwiZ3IiLCJ4ciIsImdlb2pzb24iLCJnZW9tZXRyaWVzIiwiZmVhdHVyZXMiLCJjb29yZGluYXRlcyIsInZyIiwiYnIiLCJ3ciIsIl9yIiwiQXIiLCJib3VuZEV4cHJlc3Npb24iLCJTciIsImtyIiwiX3BhcnNlIiwidHlwZUFubm90YXRpb24iLCJNciIsIlRyIiwienIiLCJsYWJlbHMiLCJvdXRwdXRzIiwiQnIiLCJFciIsIkNyIiwiX19wcm90b19fIiwiYXJyYXkiLCJjb2xvciIsIlByIiwiRHIiLCJWciIsIkxyIiwiRnIiLCJSciIsIlVyIiwiJHIiLCJqciIsIk9yIiwicXIiLCJOciIsIkdyIiwiYWxwaGEiLCJaciIsIktyIiwiWHIiLCJmb3J3YXJkIiwicmV2ZXJzZSIsImludGVycG9sYXRlIiwiSnIiLCJIciIsImhjbCIsImxhYiIsIllyIiwib3BlcmF0b3IiLCJpbnRlcnBvbGF0aW9uIiwiaW50ZXJwb2xhdGlvbkZhY3RvciIsIldyIiwiYmFzZSIsImNvbnRyb2xQb2ludHMiLCJRciIsInRuIiwiZW4iLCJybiIsInJlc3VsdCIsIm5uIiwic24iLCJpbmRleCIsImFuIiwibmVlZGxlIiwiaGF5c3RhY2siLCJsbiIsInVuIiwiZnJvbUluZGV4IiwiY24iLCJobiIsImlucHV0VHlwZSIsImNhc2VzIiwib3RoZXJ3aXNlIiwiTUFYX1NBRkVfSU5URUdFUiIsInNvcnQiLCJwbiIsImRuIiwiYnJhbmNoZXMiLCJmbiIsInluIiwiYmVnaW5JbmRleCIsImVuZEluZGV4IiwibW4iLCJnbiIsInhuIiwidm4iLCJsaHMiLCJyaHMiLCJoYXNVbnR5cGVkQXJndW1lbnQiLCJibiIsInduIiwiX24iLCJBbiIsIlNuIiwia24iLCJJbiIsImN1cnJlbmN5IiwibWluRnJhY3Rpb25EaWdpdHMiLCJtYXhGcmFjdGlvbkRpZ2l0cyIsIk51bWJlckZvcm1hdCIsInN0eWxlIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0IiwiTW4iLCJUbiIsImNhc2UiLCJjb2FsZXNjZSIsImluIiwibGV0IiwibGl0ZXJhbCIsInN0ZXAiLCJ2YXIiLCJ3aXRoaW4iLCJ6biIsIkJuIiwiRW4iLCJDbiIsInR5cGVvZiIsInJnYiIsInJnYmEiLCJwaXRjaCIsImhlYXRtYXBEZW5zaXR5IiwibGluZVByb2dyZXNzIiwic2t5UmFkaWFsUHJvZ3Jlc3MiLCJhY2N1bXVsYXRlZCIsImxuMiIsInBpIiwibG9nMTAiLCJMTjEwIiwibG9nMiIsImFzaW4iLCJhY29zIiwiYXRhbiIsImFsbCIsImFueSIsImlzU3VwcG9ydGVkU2NyaXB0IiwidXBjYXNlIiwidG9VcHBlckNhc2UiLCJkb3duY2FzZSIsIlBuIiwiRG4iLCJWbiIsIkxuIiwiRm4iLCJleHByZXNzaW9uIiwicGFyYW1ldGVycyIsIlJuIiwiaW50ZXJwb2xhdGVkIiwiVW4iLCIkbiIsImpuIiwiT24iLCJzdG9wcyIsInByb3BlcnR5IiwiY29sb3JTcGFjZSIsIlpuIiwiR24iLCJObiIsIktuIiwiaW50ZXJwb2xhdGlvblR5cGUiLCJ6b29tU3RvcHMiLCJxbiIsImFwcGx5IiwidmFsdWVzIiwiWG4iLCJfd2FybmluZ0hpc3RvcnkiLCJfZXZhbHVhdG9yIiwiX2RlZmF1bHRWYWx1ZSIsIl9lbnVtVmFsdWVzIiwiZXZhbHVhdGVXaXRob3V0RXJyb3JIYW5kbGluZyIsIkpuIiwiSG4iLCJlbnVtIiwiZm9ybWF0dGVkIiwicmVzb2x2ZWRJbWFnZSIsIlluIiwiX3N0eWxlRXhwcmVzc2lvbiIsImlzU3RhdGVEZXBlbmRlbnQiLCJXbiIsIlFuIiwiZWkiLCJ0aSIsIl9wYXJhbWV0ZXJzIiwiX3NwZWNpZmljYXRpb24iLCJkZXNlcmlhbGl6ZSIsInJpIiwiaWRlbnRpZmllciIsIl9fbGluZV9fIiwibGluZSIsIm5pIiwidmFsdWVTcGVjIiwib2JqZWN0RWxlbWVudFZhbGlkYXRvcnMiLCJzdHlsZVNwZWMiLCJGaSIsIm9iamVjdEtleSIsInJlcXVpcmVkIiwiaWkiLCJhcnJheUVsZW1lbnRWYWxpZGF0b3IiLCJtaW5pbXVtIiwibWF4aW11bSIsImZ1bmN0aW9uIiwiJHZlcnNpb24iLCJhcnJheUluZGV4Iiwic2kiLCJhaSIsImlzRmluaXRlIiwib2kiLCJleHByZXNzaW9uQ29udGV4dCIsInByb3BlcnR5S2V5IiwicHJvcGVydHlUeXBlIiwibGkiLCJzaXplIiwidWkiLCJjaSIsImhpIiwibmVlZEdlb21ldHJ5IiwibmVlZEZlYXR1cmUiLCJ4aSIsImZpIiwiZGkiLCJkeW5hbWljRmlsdGVyIiwiZ2kiLCJ5aSIsIm1pIiwidmkiLCJfaSIsImJpIiwid2kiLCJBaSIsImxheWVyVHlwZSIsIlNpIiwiZmlsdGVyX29wZXJhdG9yIiwiZ2VvbWV0cnlfdHlwZSIsImtpIiwidHJhbnNpdGlvbiIsInRva2VucyIsImV4ZWMiLCJnbHlwaHMiLCJJaSIsIk1pIiwiVGkiLCJyZWYiLCJsYXllcnMiLCJzb3VyY2UiLCJzb3VyY2VzIiwicGFpbnQiLCJsaW5lTWV0cmljcyIsImxheWVyIiwibGF5b3V0IiwiemkiLCJCaSIsInByb21vdGVJZCIsIkVpIiwic291cmNlX2dlb2pzb24iLCJjbHVzdGVyIiwiY2x1c3RlclByb3BlcnRpZXMiLCJzb3VyY2VfdmlkZW8iLCJzb3VyY2VfaW1hZ2UiLCJDaSIsInJlZHVjZSIsIlBpIiwibGlnaHQiLCJEaSIsInRlcnJhaW4iLCJWaSIsImZvZyIsIkxpIiwiUmkiLCJVaSIsIk9pIiwiJHJvb3QiLCIkaSIsImppIiwicWkiLCJOaSIsIlppIiwiR2kiLCJjZWxscyIsIkFycmF5QnVmZmVyIiwiSW50MzJBcnJheSIsInN1YmFycmF5IiwiYmJveGVzIiwiaW5zZXJ0IiwiX2luc2VydFJlYWRvbmx5IiwiZXh0ZW50IiwicGFkZGluZyIsInVpZCIsIl9mb3JFYWNoQ2VsbCIsIl9pbnNlcnRDZWxsIiwicXVlcnkiLCJfcXVlcnlDZWxsIiwiX2NvbnZlcnRUb0NlbGxDb29yZCIsIl9jb252ZXJ0RnJvbUNlbGxDb29yZCIsInRvQXJyYXlCdWZmZXIiLCJidWZmZXIiLCJLaSIsIlhpIiwiSmkiLCJkZWZpbmVQcm9wZXJ0eSIsIndyaXRlYWJsZSIsImtsYXNzIiwib21pdCIsIl9jbGFzc1JlZ2lzdHJ5S2V5IiwiSGkiLCJZaSIsIkltYWdlQml0bWFwIiwiV2kiLCJpc1ZpZXciLCJJbWFnZURhdGEiLCJkYXRhIiwiJG5hbWUiLCJRaSIsInRzIiwiQXJhYmljIiwiS2htZXIiLCJIaXJhZ2FuYSIsIkthdGFrYW5hIiwiQm9wb21vZm8iLCJLYW5idW4iLCJlcyIsImlzIiwicnMiLCJucyIsInNzIiwiYXMiLCJvcyIsImxzIiwidXMiLCJjcyIsImhzIiwicHMiLCJkcyIsImZzIiwieXMiLCJtcyIsImdzIiwicGx1Z2luU3RhdHVzIiwicGx1Z2luVVJMIiwieHMiLCJ2cyIsImJzIiwiYXBwbHlBcmFiaWNTaGFwaW5nIiwicHJvY2Vzc0JpZGlyZWN0aW9uYWxUZXh0IiwicHJvY2Vzc1N0eWxlZEJpZGlyZWN0aW9uYWxUZXh0IiwiaXNMb2FkZWQiLCJpc0xvYWRpbmciLCJzZXRTdGF0ZSIsImlzUGFyc2VkIiwiZ2V0UGx1Z2luVVJMIiwid3MiLCJmYWRlRHVyYXRpb24iLCJfcyIsInNwZWNpZmljYXRpb24iLCJpc0RhdGFEcml2ZW4iLCJwb3NzaWJseUV2YWx1YXRlIiwiQXMiLCJ0cmFuc2l0aW9uZWQiLCJrcyIsInVudHJhbnNpdGlvbmVkIiwiU3MiLCJfcHJvcGVydGllcyIsIl92YWx1ZXMiLCJkZWZhdWx0VHJhbnNpdGlvbmFibGVQcm9wZXJ0eVZhbHVlcyIsImdldFZhbHVlIiwic2V0VmFsdWUiLCJnZXRUcmFuc2l0aW9uIiwic2V0VHJhbnNpdGlvbiIsIklzIiwiZGVsYXkiLCJkdXJhdGlvbiIsImJlZ2luIiwiZW5kIiwicHJpb3IiLCJkZWZhdWx0VHJhbnNpdGlvbmluZ1Byb3BlcnR5VmFsdWVzIiwienMiLCJoYXNUcmFuc2l0aW9uIiwiTXMiLCJkZWZhdWx0UHJvcGVydHlWYWx1ZXMiLCJUcyIsImlzQ29uc3RhbnQiLCJjb25zdGFudE9yIiwiZGVmYXVsdFBvc3NpYmx5RXZhbHVhdGVkVmFsdWVzIiwiQnMiLCJFcyIsIm92ZXJyaWRlcyIsIkNzIiwiUHMiLCJvdmVycmlkYWJsZVByb3BlcnRpZXMiLCJvdmVycmlkYWJsZSIsIkRzIiwiVnMiLCJJbnQ4IiwiSW50OEFycmF5IiwiVWludDgiLCJJbnQxNiIsIkludDE2QXJyYXkiLCJVaW50MTYiLCJVaW50MTZBcnJheSIsIkludDMyIiwiVWludDMyIiwiVWludDMyQXJyYXkiLCJGbG9hdDMyIiwiRmxvYXQzMkFycmF5IiwiTHMiLCJfc3RydWN0QXJyYXkiLCJfcG9zMSIsIl9wb3MyIiwiX3BvczQiLCJfcG9zOCIsIkZzIiwiaXNUcmFuc2ZlcnJlZCIsImNhcGFjaXR5IiwicmVzaXplIiwiX3RyaW0iLCJieXRlc1BlckVsZW1lbnQiLCJfcmVmcmVzaFZpZXdzIiwiY2xlYXIiLCJyZXNlcnZlIiwidWludDgiLCJkZXN0cm95IiwiaW50OCIsImludDE2IiwidWludDE2IiwiaW50MzIiLCJ1aW50MzIiLCJmbG9hdDMyIiwiUnMiLCJtZW1iZXJzIiwiQllURVNfUEVSX0VMRU1FTlQiLCJVcyIsImNvbXBvbmVudHMiLCJvZmZzZXQiLCJhbGlnbm1lbnQiLCIkcyIsImVtcGxhY2VCYWNrIiwiZW1wbGFjZSIsImpzIiwiT3MiLCJxcyIsIk5zIiwiR3MiLCJacyIsIktzIiwiWHMiLCJKcyIsIkhzIiwiWXMiLCJXcyIsIlFzIiwidGEiLCJlYSIsInJhIiwibmEiLCJpYSIsInNhIiwiYWEiLCJvYSIsImxhIiwidWEiLCJjYSIsImhhIiwicHJvamVjdGVkQW5jaG9yWCIsInByb2plY3RlZEFuY2hvclkiLCJwcm9qZWN0ZWRBbmNob3JaIiwidGlsZUFuY2hvclgiLCJ0aWxlQW5jaG9yWSIsIngxIiwieTEiLCJ4MiIsInkyIiwiZmVhdHVyZUluZGV4Iiwic291cmNlTGF5ZXJJbmRleCIsImJ1Y2tldEluZGV4IiwicGEiLCJkYSIsImdseXBoU3RhcnRJbmRleCIsIm51bUdseXBocyIsInZlcnRleFN0YXJ0SW5kZXgiLCJsaW5lU3RhcnRJbmRleCIsImxpbmVMZW5ndGgiLCJzZWdtZW50IiwibG93ZXJTaXplIiwidXBwZXJTaXplIiwibGluZU9mZnNldFgiLCJsaW5lT2Zmc2V0WSIsIndyaXRpbmdNb2RlIiwicGxhY2VkT3JpZW50YXRpb24iLCJoaWRkZW4iLCJjcm9zc1RpbGVJRCIsImFzc29jaWF0ZWRJY29uSW5kZXgiLCJmbGlwU3RhdGUiLCJmYSIsInlhIiwicmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgiLCJjZW50ZXJKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgiLCJsZWZ0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4IiwidmVydGljYWxQbGFjZWRUZXh0U3ltYm9sSW5kZXgiLCJwbGFjZWRJY29uU3ltYm9sSW5kZXgiLCJ2ZXJ0aWNhbFBsYWNlZEljb25TeW1ib2xJbmRleCIsInRleHRCb3hTdGFydEluZGV4IiwidGV4dEJveEVuZEluZGV4IiwidmVydGljYWxUZXh0Qm94U3RhcnRJbmRleCIsInZlcnRpY2FsVGV4dEJveEVuZEluZGV4IiwiaWNvbkJveFN0YXJ0SW5kZXgiLCJpY29uQm94RW5kSW5kZXgiLCJ2ZXJ0aWNhbEljb25Cb3hTdGFydEluZGV4IiwidmVydGljYWxJY29uQm94RW5kSW5kZXgiLCJudW1Ib3Jpem9udGFsR2x5cGhWZXJ0aWNlcyIsIm51bVZlcnRpY2FsR2x5cGhWZXJ0aWNlcyIsIm51bUljb25WZXJ0aWNlcyIsIm51bVZlcnRpY2FsSWNvblZlcnRpY2VzIiwidXNlUnVudGltZUNvbGxpc2lvbkNpcmNsZXMiLCJ0ZXh0T2Zmc2V0MCIsInRleHRPZmZzZXQxIiwiY29sbGlzaW9uQ2lyY2xlRGlhbWV0ZXIiLCJtYSIsImdhIiwiZ2V0b2Zmc2V0WCIsInhhIiwiZ2V0eCIsImdldHkiLCJ2YSIsImxheW91dFZlcnRleEFycmF5T2Zmc2V0IiwiYmEiLCJ3YSIsImdldGFfY2VudHJvaWRfcG9zMCIsImdldGFfY2VudHJvaWRfcG9zMSIsIl9hIiwiQWEiLCJTYSIsIlRhIiwiemEiLCJtdXJtdXIzIiwibXVybXVyMiIsIkJhIiwiRWEiLCJpZHMiLCJwb3NpdGlvbnMiLCJpbmRleGVkIiwiQ2EiLCJnZXRQb3NpdGlvbnMiLCJzdGFydCIsIkZsb2F0NjRBcnJheSIsIlBhIiwiTUlOX1NBRkVfSU5URUdFUiIsIkRhIiwiVmEiLCJnbCIsImluaXRpYWxpemVkIiwiZmV0Y2hVbmlmb3JtTG9jYXRpb24iLCJnZXRVbmlmb3JtTG9jYXRpb24iLCJMYSIsImN1cnJlbnQiLCJ1bmlmb3JtMWYiLCJGYSIsInVuaWZvcm00ZiIsIlJhIiwiVWEiLCIkYSIsImphIiwiT2EiLCJxYSIsInVuaWZvcm1OYW1lcyIsInNldFVuaWZvcm0iLCJnZXRCaW5kaW5nIiwiTmEiLCJwYXR0ZXJuIiwicGl4ZWxSYXRpbyIsInNldENvbnN0YW50UGF0dGVyblBvc2l0aW9ucyIsInRsIiwiR2EiLCJtYXhWYWx1ZSIsInBhaW50VmVydGV4QXR0cmlidXRlcyIsInBhaW50VmVydGV4QXJyYXkiLCJwb3B1bGF0ZVBhaW50QXJyYXkiLCJfc2V0UGFpbnRWYWx1ZSIsInVwZGF0ZVBhaW50QXJyYXkiLCJ1cGxvYWQiLCJwYWludFZlcnRleEJ1ZmZlciIsInVwZGF0ZURhdGEiLCJjcmVhdGVWZXJ0ZXhCdWZmZXIiLCJaYSIsInVzZUludGVnZXJab29tIiwiS2EiLCJsYXllcklkIiwiX3NldFBhaW50VmFsdWVzIiwicGF0dGVybnMiLCJYYSIsImJpbmRlcnMiLCJfYnVmZmVycyIsIllhIiwiZW5kc1dpdGgiLCJ0byIsImNhY2hlS2V5IiwiZ2V0TWF4VmFsdWUiLCJwb3B1bGF0ZVBhaW50QXJyYXlzIiwidXBkYXRlUGFpbnRBcnJheXMiLCJkZWZpbmVzIiwiZ2V0QmluZGVyQXR0cmlidXRlcyIsImdldEJpbmRlclVuaWZvcm1zIiwiZ2V0UGFpbnRWZXJ0ZXhCdWZmZXJzIiwiZ2V0VW5pZm9ybXMiLCJiaW5kaW5nIiwic2V0VW5pZm9ybXMiLCJ1cGRhdGVQYWludEJ1ZmZlcnMiLCJKYSIsInByb2dyYW1Db25maWd1cmF0aW9ucyIsIm5lZWRzVXBsb2FkIiwiX2ZlYXR1cmVNYXAiLCJfYnVmZmVyT2Zmc2V0IiwiSGEiLCJXYSIsImNvbXBvc2l0ZSIsIlFhIiwiZW8iLCJybyIsIl9mZWF0dXJlRmlsdGVyIiwiX2ZpbHRlckNvbXBpbGVkIiwibWluem9vbSIsIm1heHpvb20iLCJzb3VyY2VMYXllciIsIl91bmV2YWx1YXRlZExheW91dCIsIl90cmFuc2l0aW9uYWJsZVBhaW50Iiwic2V0UGFpbnRQcm9wZXJ0eSIsInZhbGlkYXRlIiwic2V0TGF5b3V0UHJvcGVydHkiLCJfdHJhbnNpdGlvbmluZ1BhaW50IiwiZ2V0TGF5b3V0UHJvcGVydHkiLCJ2aXNpYmlsaXR5IiwiX3ZhbGlkYXRlIiwiZ2V0UGFpbnRQcm9wZXJ0eSIsIl9oYW5kbGVTcGVjaWFsUGFpbnRQcm9wZXJ0eVVwZGF0ZSIsIl9oYW5kbGVPdmVycmlkYWJsZVBhaW50UHJvcGVydHlVcGRhdGUiLCJnZXRQcm9ncmFtSWRzIiwiZ2V0UHJvZ3JhbUNvbmZpZ3VyYXRpb24iLCJpc0hpZGRlbiIsInVwZGF0ZVRyYW5zaXRpb25zIiwicmVjYWxjdWxhdGUiLCJzcHJpdGUiLCJpczNEIiwiaXNTa3kiLCJpc1RpbGVDbGlwcGVkIiwiaGFzT2Zmc2NyZWVuUGFzcyIsImNvbXBpbGVGaWx0ZXIiLCJpbnZhbGlkYXRlQ29tcGlsZWRGaWx0ZXIiLCJkeW5hbWljRmlsdGVyTmVlZHNGZWF0dXJlIiwibm8iLCJpbyIsInNvIiwic2VnbWVudHMiLCJwcmVwYXJlU2VnbWVudCIsIk1BWF9WRVJURVhfQVJSQVlfTEVOR1RIIiwidmVydGV4TGVuZ3RoIiwic29ydEtleSIsInZlcnRleE9mZnNldCIsInByaW1pdGl2ZU9mZnNldCIsInByaW1pdGl2ZUxlbmd0aCIsInZhb3MiLCJzaW1wbGVTZWdtZW50IiwiYW8iLCJvbyIsInNldFNvdXRoV2VzdCIsInNldE5vcnRoRWFzdCIsIl9uZSIsIk9sIiwibG5nIiwibGF0IiwiX3N3IiwiZXh0ZW5kIiwiZ2V0Q2VudGVyIiwiZ2V0U291dGhXZXN0IiwiZ2V0Tm9ydGhFYXN0IiwiZ2V0Tm9ydGhXZXN0IiwiZ2V0V2VzdCIsImdldE5vcnRoIiwiZ2V0U291dGhFYXN0IiwiZ2V0RWFzdCIsImdldFNvdXRoIiwiY29udGFpbnMiLCJsbyIsInVvIiwiY28iLCJobyIsInBvIiwiZm8iLCJ5byIsIm1vIiwiZ28iLCJ4byIsInZvIiwiYm8iLCJ3byIsImh5cG90IiwiYXJndW1lbnRzIiwiX28iLCJBbyIsIlNvIiwia28iLCJJbyIsIk1vIiwiVG8iLCJ6byIsIkJvIiwiRW8iLCJDbyIsIlBvIiwiRG8iLCJWbyIsIkxvIiwiRm8iLCJSbyIsIlVvIiwiJG8iLCJqbyIsIk9vIiwicW8iLCJObyIsIkdvIiwiWm8iLCJLbyIsIlhvIiwiSm8iLCJIbyIsIllvIiwiV28iLCJRbyIsImVsIiwicG9zIiwiZGlyIiwiaW50ZXJzZWN0c1BsYW5lIiwiY2xvc2VzdFBvaW50T25TcGhlcmUiLCJybCIsIlRMIiwiVFIiLCJCUiIsIkJMIiwiaG9yaXpvbiIsImZyb21JbnZQcm9qZWN0aW9uTWF0cml4IiwibmwiLCJwb2ludHMiLCJwbGFuZXMiLCJpbCIsImZyb21Qb2ludHMiLCJhcHBseVRyYW5zZm9ybSIsImdldENvcm5lcnMiLCJxdWFkcmFudCIsImRpc3RhbmNlWCIsImRpc3RhbmNlWSIsImRpc3RhbmNlWiIsImludGVyc2VjdHMiLCJNQVhfVkFMVUUiLCJzbCIsImFsIiwib2wiLCJsbCIsInVsIiwiY2wiLCJobCIsInBsIiwiZGwiLCJmbCIsIlVsIiwieWwiLCJfY2FtZXJhIiwicG9zaXRpb24iLCJ3b3JsZFNpemUiLCJwaXhlbE1hdHJpeEludmVyc2UiLCJnbG9iZU1hdHJpeCIsIk5sIiwiR2wiLCJXbCIsIm1sIiwieGwiLCJTbCIsIkFsIiwidmwiLCJibCIsIlBsIiwid2wiLCJLbCIsIlhsIiwia2wiLCJJbCIsIk1sIiwiVGwiLCJ6bCIsIkJsIiwiRWwiLCJDbCIsIkRsIiwiX2NlbnRlciIsIl9waXRjaCIsImNhbWVyYVRvQ2VudGVyRGlzdGFuY2UiLCJwaXhlbHNQZXJNZXRlciIsIlZsIiwiTGwiLCJGbCIsIlJsIiwiJGwiLCJqbCIsIndyYXAiLCJkaXN0YW5jZVRvIiwidG9Cb3VuZHMiLCJ0b0VjZWYiLCJsb24iLCJxbCIsIlpsIiwiZXhwIiwiSmwiLCJIbCIsIllsIiwiZnJvbUxuZ0xhdCIsInRvTG5nTGF0IiwidG9BbHRpdHVkZSIsIm1ldGVySW5NZXJjYXRvckNvb3JkaW5hdGVVbml0cyIsIlFsIiwidHUiLCJldSIsInJ1IiwibnUiLCJpdSIsInN1IiwiYXUiLCJsb2FkR2VvbWV0cnkiLCJpc1JlcHJvamVjdGVkSW5UaWxlU3BhY2UiLCJwcm9qZWN0Iiwib3UiLCJsdSIsInV1IiwiY3UiLCJvdmVyc2NhbGluZyIsImxheWVySWRzIiwiaGFzUGF0dGVybiIsImxheW91dFZlcnRleEFycmF5IiwiaW5kZXhBcnJheSIsInN0YXRlRGVwZW5kZW50TGF5ZXJJZHMiLCJwb3B1bGF0ZSIsImdsb2JlRXh0VmVydGV4QXJyYXkiLCJhZGRGZWF0dXJlIiwidXBkYXRlIiwic3RhdGVEZXBlbmRlbnRMYXllcnMiLCJ1cGxvYWRQZW5kaW5nIiwidXBsb2FkZWQiLCJsYXlvdXRWZXJ0ZXhCdWZmZXIiLCJpbmRleEJ1ZmZlciIsImNyZWF0ZUluZGV4QnVmZmVyIiwiZ2xvYmVFeHRWZXJ0ZXhCdWZmZXIiLCJwcm9qZWN0VGlsZVBvaW50IiwidXBWZWN0b3IiLCJodSIsImJ1IiwieXUiLCJwdSIsImd1IiwiZHUiLCJ2dSIsImZ1IiwibXUiLCJ4dSIsInd1IiwiX3UiLCJBdSIsIlN1Iiwia3UiLCJJdSIsIk11IiwibGF5b3V0X2NpcmNsZSIsIlR1IiwicGFpbnRfY2lyY2xlIiwienUiLCJxdWVyeUdlb21ldHJ5IiwiaXNBYm92ZUhvcml6b24iLCJwaXhlbFRvVGlsZVVuaXRzRmFjdG9yIiwidGlsZUlEIiwidXBWZWN0b3JTY2FsZSIsIm1ldGVyc1RvVGlsZSIsImVsZXZhdGlvbiIsImV4YWdnZXJhdGlvbiIsImdldEVsZXZhdGlvbkF0IiwiQnUiLCJ0aWxlc3BhY2VSYXlzIiwiUHUiLCJzY3JlZW5HZW9tZXRyeSIsIkV1IiwiQ3UiLCJEdSIsIlZ1IiwiVWludDhDbGFtcGVkQXJyYXkiLCJSYW5nZUVycm9yIiwiTHUiLCJGdSIsIlJ1IiwiY29weSIsIlV1IiwiJHUiLCJwYWludF9oZWF0bWFwIiwianUiLCJyZXNvbHV0aW9uIiwiY2xpcHMiLCJldmFsdWF0aW9uS2V5IiwiT3UiLCJwYWludF9oaWxsc2hhZGUiLCJxdSIsIk51IiwiR3UiLCJadSIsIkt1IiwibmV4dCIsInByZXYiLCJzdGVpbmVyIiwiaWMiLCJ0YyIsImVjIiwiSnUiLCJnYyIsImZjIiwibGMiLCJ5YyIsIlh1Iiwib2MiLCJuYyIsInByZXZaIiwibmV4dFoiLCJZdSIsIkh1IiwiV3UiLCJRdSIsInNjIiwidWMiLCJwYyIsImFjIiwiZGMiLCJyYyIsImhjIiwiY2MiLCJtYyIsImRldmlhdGlvbiIsImZsYXR0ZW4iLCJ2ZXJ0aWNlcyIsImhvbGVzIiwiZGltZW5zaW9ucyIsInhjIiwidmMiLCJiYyIsIl9jIiwid2MiLCJBYyIsImFyZWEiLCJTYyIsImtjIiwicGF0dGVybkRlcGVuZGVuY2llcyIsIkljIiwiTWMiLCJwYXR0ZXJuRmVhdHVyZXMiLCJpbmRleEFycmF5MiIsInNlZ21lbnRzMiIsImFkZEZlYXR1cmVzIiwiaW5kZXhCdWZmZXIyIiwiVGMiLCJsYXlvdXRfZmlsbCIsInpjIiwicGFpbnRfZmlsbCIsIkJjIiwiRWMiLCJDYyIsIlBjIiwiRGMiLCJWYyIsIkxjIiwiRmMiLCJfcGJmIiwiX2dlb21ldHJ5IiwiX2tleXMiLCJyZWFkRmllbGRzIiwiUmMiLCJyZWFkVmFyaW50IiwiVWMiLCJ0eXBlcyIsInJlYWRTVmFyaW50IiwiYmJveCIsInRvR2VvSlNPTiIsIiRjIiwiamMiLCJPYyIsInZlcnNpb24iLCJfZmVhdHVyZXMiLCJxYyIsInJlYWRTdHJpbmciLCJyZWFkRmxvYXQiLCJyZWFkRG91YmxlIiwicmVhZFZhcmludDY0IiwicmVhZEJvb2xlYW4iLCJOYyIsIkdjIiwiWmMiLCJWZWN0b3JUaWxlIiwiS2MiLCJWZWN0b3JUaWxlRmVhdHVyZSIsIlhjIiwiVmVjdG9yVGlsZUxheWVyIiwiSmMiLCJIYyIsIlljIiwiV2MiLCJRYyIsImFjYyIsInBvbHlDb3VudCIsInN0YXJ0UmluZyIsImN1cnJlbnRQb2x5Q291bnQiLCJlZGdlcyIsInRvcCIsImFwcGVuZCIsInByb2Nlc3NCb3JkZXJPdmVybGFwIiwiYWRkQm9yZGVySW50ZXJzZWN0aW9uIiwiYm9yZGVycyIsImNlbnRyb2lkIiwic3BhbiIsImludGVyc2VjdHNDb3VudCIsInRoIiwiZWRnZVJhZGl1cyIsImNlbnRyb2lkVmVydGV4QXJyYXkiLCJlbmFibGVUZXJyYWluIiwiZmVhdHVyZXNPbkJvcmRlciIsImJvcmRlckRvbmVXaXRoTmVpZ2hib3JaIiwidGlsZVRvTWV0ZXIiLCJzb3J0Qm9yZGVycyIsImxheW91dFZlcnRleEV4dEFycmF5IiwibGF5b3V0VmVydGV4RXh0QnVmZmVyIiwidXBsb2FkQ2VudHJvaWQiLCJjZW50cm9pZFZlcnRleEJ1ZmZlciIsIm5lZWRzQ2VudHJvaWRVcGRhdGUiLCJsaCIsInBvbHlnb24iLCJib3VuZHMiLCJzaCIsInJoIiwiaWgiLCJuaCIsImVoIiwiYWgiLCJ2ZXJ0ZXhBcnJheU9mZnNldCIsImVuY29kZUNlbnRyb2lkIiwib2giLCJwb2x5Z29ucyIsImRlcHRoIiwidWgiLCJjaCIsImhoIiwicGgiLCJ5aCIsImRoIiwiZmgiLCJvdmVyc2NhbGVkWiIsInNjYWxlZFRvIiwiY2FsY3VsYXRlU2NhbGVkS2V5IiwiaXNDaGlsZE9mIiwiY2hpbGRyZW4iLCJpc0xlc3NUaGFuIiwid3JhcHBlZCIsInVud3JhcFRvIiwib3ZlcnNjYWxlRmFjdG9yIiwidG9VbndyYXBwZWQiLCJtaCIsImdoIiwieGgiLCJ2aCIsImdldE1ldGVyVG9ERU0iLCJ0aWxlQ29vcmRUb1BpeGVsIiwiZ2V0RWxldmF0aW9uQXRQaXhlbCIsImJoIiwid2giLCJfaCIsIkFoIiwiU2giLCJraCIsIkloIiwibGluZUNsaXBzQXJyYXkiLCJncmFkaWVudHMiLCJsYXlvdXRWZXJ0ZXhBcnJheTIiLCJtYXhMaW5lTGVuZ3RoIiwibGluZUF0bGFzIiwiYWRkQ29uc3RhbnREYXNoZXMiLCJhZGRGZWF0dXJlRGFzaGVzIiwiYWRkRGFzaCIsImdldEtleSIsImxheW91dFZlcnRleEJ1ZmZlcjIiLCJsaW5lRmVhdHVyZUNsaXBzIiwibWFwYm94X2NsaXBfc3RhcnQiLCJtYXBib3hfY2xpcF9lbmQiLCJsaW5lQ2xpcHMiLCJhZGRMaW5lIiwiZGlzdGFuY2UiLCJzY2FsZWREaXN0YW5jZSIsInRvdGFsRGlzdGFuY2UiLCJsaW5lU29GYXIiLCJ1cGRhdGVTY2FsZWREaXN0YW5jZSIsImUxIiwiZTIiLCJ1cGRhdGVEaXN0YW5jZSIsImFkZEN1cnJlbnRWZXJ0ZXgiLCJhZGRIYWxmVmVydGV4IiwiTWgiLCJsYXlvdXRfbGluZSIsIlRoIiwicGFpbnRfbGluZSIsInpoIiwiQmgiLCJFaCIsIkNoIiwiUGgiLCJEaCIsIlZoIiwiTGgiLCJGaCIsIlJoIiwiVWgiLCIkaCIsImxheW91dFNpemUiLCJtaW5ab29tIiwibWF4Wm9vbSIsIm1pblNpemUiLCJtYXhTaXplIiwiamgiLCJ1U2l6ZSIsInVTaXplVCIsIk9oIiwicWgiLCJTSVpFX1BBQ0tfRkFDVE9SIiwiZXZhbHVhdGVTaXplRm9yRmVhdHVyZSIsImV2YWx1YXRlU2l6ZUZvclpvb20iLCJnZXRTaXplRGF0YSIsIk5oIiwidG9Mb2NhbGVVcHBlckNhc2UiLCJ0b0xvY2FsZUxvd2VyQ2FzZSIsIkdoIiwiWmgiLCJLaCIsIlhoIiwiWWgiLCJKaCIsIk5hTiIsIkhoIiwiYnVmIiwiVmFyaW50IiwiRml4ZWQ2NCIsIkJ5dGVzIiwiRml4ZWQzMiIsIldoIiwiUWgiLCJ0cCIsIlRleHREZWNvZGVyIiwiZXAiLCJycCIsIm5wIiwicmVhbGxvYyIsImlwIiwid3JpdGVWYXJpbnQiLCJzcCIsIndyaXRlU1ZhcmludCIsImFwIiwid3JpdGVGbG9hdCIsIm9wIiwid3JpdGVEb3VibGUiLCJscCIsIndyaXRlQm9vbGVhbiIsInVwIiwid3JpdGVGaXhlZDMyIiwiY3AiLCJ3cml0ZVNGaXhlZDMyIiwiaHAiLCJ3cml0ZUZpeGVkNjQiLCJwcCIsIndyaXRlU0ZpeGVkNjQiLCJkcCIsImZwIiwieXAiLCJza2lwIiwicmVhZE1lc3NhZ2UiLCJyZWFkRml4ZWQzMiIsInJlYWRTRml4ZWQzMiIsInJlYWRGaXhlZDY0IiwicmVhZFNGaXhlZDY0IiwiZGVjb2RlIiwicmVhZEJ5dGVzIiwicmVhZFBhY2tlZFZhcmludCIsInJlYWRQYWNrZWRTVmFyaW50IiwicmVhZFBhY2tlZEJvb2xlYW4iLCJyZWFkUGFja2VkRmxvYXQiLCJyZWFkUGFja2VkRG91YmxlIiwicmVhZFBhY2tlZEZpeGVkMzIiLCJyZWFkUGFja2VkU0ZpeGVkMzIiLCJyZWFkUGFja2VkRml4ZWQ2NCIsInJlYWRQYWNrZWRTRml4ZWQ2NCIsIndyaXRlVGFnIiwiZmluaXNoIiwid3JpdGVTdHJpbmciLCJ3cml0ZUJ5dGVzIiwid3JpdGVSYXdNZXNzYWdlIiwid3JpdGVNZXNzYWdlIiwid3JpdGVQYWNrZWRWYXJpbnQiLCJ3cml0ZVBhY2tlZFNWYXJpbnQiLCJ3cml0ZVBhY2tlZEJvb2xlYW4iLCJ3cml0ZVBhY2tlZEZsb2F0Iiwid3JpdGVQYWNrZWREb3VibGUiLCJ3cml0ZVBhY2tlZEZpeGVkMzIiLCJ3cml0ZVBhY2tlZFNGaXhlZDMyIiwid3JpdGVQYWNrZWRGaXhlZDY0Iiwid3JpdGVQYWNrZWRTRml4ZWQ2NCIsIndyaXRlQnl0ZXNGaWVsZCIsIndyaXRlRml4ZWQzMkZpZWxkIiwid3JpdGVTRml4ZWQzMkZpZWxkIiwid3JpdGVGaXhlZDY0RmllbGQiLCJ3cml0ZVNGaXhlZDY0RmllbGQiLCJ3cml0ZVZhcmludEZpZWxkIiwid3JpdGVTVmFyaW50RmllbGQiLCJ3cml0ZVN0cmluZ0ZpZWxkIiwid3JpdGVGbG9hdEZpZWxkIiwid3JpdGVEb3VibGVGaWVsZCIsIndyaXRlQm9vbGVhbkZpZWxkIiwibXAiLCJncCIsInhwIiwidnAiLCJiaXRtYXAiLCJsZWZ0IiwiYWR2YW5jZSIsImJwIiwibWV0cmljcyIsImFzY2VuZGVyIiwiZGVzY2VuZGVyIiwid3AiLCJfcCIsImZpbGwiLCJBcCIsIlNwIiwic3RyZXRjaFgiLCJzdHJldGNoWSIsInBhZGRlZFJlY3QiLCJkaXNwbGF5U2l6ZSIsImtwIiwiaGF2ZVJlbmRlckNhbGxiYWNrcyIsImFkZEltYWdlcyIsImljb25Qb3NpdGlvbnMiLCJwYXR0ZXJuUG9zaXRpb25zIiwiaGFzUmVuZGVyQ2FsbGJhY2siLCJwYXRjaFVwZGF0ZWRJbWFnZXMiLCJoYXNJbWFnZSIsImRpc3BhdGNoUmVuZGVyQ2FsbGJhY2tzIiwidXBkYXRlZEltYWdlcyIsInBhdGNoVXBkYXRlZEltYWdlIiwiZ2V0SW1hZ2UiLCJJcCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsImhvcml6b250YWxPbmx5IiwiTXAiLCJUcCIsImltYWdlTmFtZSIsImZvclRleHQiLCJmb3JJbWFnZSIsInpwIiwic2VjdGlvbkluZGV4IiwiaW1hZ2VTZWN0aW9uSUQiLCJmcm9tRmVhdHVyZSIsImFkZEltYWdlU2VjdGlvbiIsImFkZFRleHRTZWN0aW9uIiwiZ2V0U2VjdGlvbiIsImdldFNlY3Rpb25zIiwiZ2V0U2VjdGlvbkluZGV4IiwiZ2V0Q2hhckNvZGUiLCJ2ZXJ0aWNhbGl6ZVB1bmN0dWF0aW9uIiwidHJpbSIsIkVwIiwic3Vic3RyaW5nIiwiZ2V0TWF4U2NhbGUiLCJnZXROZXh0SW1hZ2VTZWN0aW9uQ2hhckNvZGUiLCJCcCIsIlBwIiwiQ3AiLCJMcCIsIlZwIiwiRnAiLCJwb3NpdGlvbmVkTGluZXMiLCJib3R0b20iLCJyaWdodCIsImljb25zSW5UZXh0IiwidmVydGljYWxpemFibGUiLCJoYXNCYXNlbGluZSIsInBvc2l0aW9uZWRHbHlwaHMiLCJsaW5lT2Zmc2V0IiwibG9jYWxHbHlwaCIsImdseXBoIiwicmVjdCIsIlVwIiwiaG9yaXpvbnRhbEFsaWduIiwidmVydGljYWxBbGlnbiIsIlJwIiwiRHAiLCJiYWRuZXNzIiwicHJpb3JCcmVhayIsIiRwIiwianAiLCJjb2xsaXNpb25QYWRkaW5nIiwiT3AiLCJxcCIsImFuZ2xlRGVsdGEiLCJOcCIsIkdwIiwiWnAiLCJLcCIsIlhwIiwiSnAiLCJIcCIsIllwIiwiV3AiLCJRcCIsInRkIiwiZWQiLCJub25lIiwiaWRlb2dyYXBocyIsInJkIiwicmVxdWVzdE1hbmFnZXIiLCJsb2NhbEdseXBoTW9kZSIsImxvY2FsRm9udEZhbWlseSIsImVudHJpZXMiLCJsb2NhbEdseXBocyIsInNldFVSTCIsImdldEdseXBocyIsInN0YWNrIiwicmVxdWVzdHMiLCJyYW5nZXMiLCJfdGlueVNERiIsImxvYWRHbHlwaFJhbmdlIiwiX2RvZXNDaGFyU3VwcG9ydExvY2FsR2x5cGgiLCJ0aW55U0RGIiwiVGlueVNERiIsImZvbnRGYW1pbHkiLCJmb250V2VpZ2h0IiwiZm9udFNpemUiLCJyYWRpdXMiLCJnbHlwaFdpZHRoIiwiZ2x5cGhIZWlnaHQiLCJnbHlwaExlZnQiLCJnbHlwaFRvcCIsImdseXBoQWR2YW5jZSIsImRyYXciLCJ0cmFuc2Zvcm1SZXF1ZXN0Iiwibm9ybWFsaXplR2x5cGhzVVJMIiwiY3V0b2ZmIiwiZm9udFN0eWxlIiwiX2NyZWF0ZUNhbnZhcyIsImN0eCIsInRleHRCYXNlbGluZSIsInRleHRBbGlnbiIsImZpbGxTdHlsZSIsImdyaWRPdXRlciIsImdyaWRJbm5lciIsImFjdHVhbEJvdW5kaW5nQm94QXNjZW50IiwiYWN0dWFsQm91bmRpbmdCb3hEZXNjZW50IiwiYWN0dWFsQm91bmRpbmdCb3hMZWZ0IiwiYWN0dWFsQm91bmRpbmdCb3hSaWdodCIsIm1lYXN1cmVUZXh0IiwiZmlsbFRleHQiLCJuZCIsInNkIiwib2QiLCJzdHJldGNoIiwibGQiLCJmaXhlZCIsInRleCIsImdseXBoT2Zmc2V0IiwicGl4ZWxPZmZzZXRUTCIsInBpeGVsT2Zmc2V0QlIiLCJtaW5Gb250U2NhbGVYIiwibWluRm9udFNjYWxlWSIsImlzU0RGIiwiYWQiLCJ1ZCIsImNkIiwiaGQiLCJfZG93biIsIl91cCIsInBlZWsiLCJwZCIsImRkIiwiZmQiLCJTUVJUMiIsInlkIiwibWQiLCJQT1NJVElWRV9JTkZJTklUWSIsImdkIiwieGQiLCJ2ZCIsImNyZWF0ZUFycmF5cyIsInRpbGVQaXhlbFJhdGlvIiwiY29tcGFyZVRleHQiLCJpY29uc05lZWRMaW5lYXIiLCJ0ZXh0U2l6ZURhdGEiLCJjb21wb3NpdGVUZXh0U2l6ZXMiLCJpY29uU2l6ZURhdGEiLCJjb21wb3NpdGVJY29uU2l6ZXMiLCJsYXlvdXRUZXh0U2l6ZSIsImxheW91dEljb25TaXplIiwidGV4dE1heFNpemUiLCJhbGxvd1ZlcnRpY2FsUGxhY2VtZW50IiwiYmQiLCJpY29uIiwic2RmIiwic2RmSWNvbnMiLCJrZCIsIndkIiwiZ2VuZXJhdGVDb2xsaXNpb25EZWJ1Z0J1ZmZlcnMiLCJjb2xsaXNpb25Cb3hBcnJheSIsImFuY2hvciIsImFkZFRvTGluZVZlcnRleEFycmF5IiwiTWQiLCJJZCIsIkFkIiwiX2QiLCJhZGRTeW1ib2xzIiwicGxhY2VkU3ltYm9sQXJyYXkiLCJTZCIsImdseXBoT2Zmc2V0QXJyYXkiLCJvZiIsIk1BWF9HTFlQSFMiLCJhZGRUb1NvcnRLZXlSYW5nZXMiLCJzeW1ib2xJbnN0YW5jZXMiLCJUZCIsInpkIiwiZm92QWJvdmVDZW50ZXIiLCJnZXRNaW5FbGV2YXRpb25CZWxvd01TTCIsIl9ob3Jpem9uU2hpZnQiLCJCZCIsIkVkIiwiQ2QiLCJzcGVjIiwicmVxdWlyZXNEcmFwaW5nIiwic3VwcG9ydHNXb3JsZENvcGllcyIsInN1cHBvcnRzVGVycmFpbiIsInN1cHBvcnRzRm9nIiwic3VwcG9ydHNGcmVlQ2FtZXJhIiwiekF4aXNVbml0IiwidW5zdXBwb3J0ZWRMYXllcnMiLCJyYW5nZSIsInVucHJvamVjdCIsImxvY2F0aW9uUG9pbnQiLCJfY29vcmRpbmF0ZVBvaW50IiwibG9jYXRpb25Db29yZGluYXRlIiwicGl4ZWxTcGFjZUNvbnZlcnNpb24iLCJmYXJ0aGVzdFBpeGVsRGlzdGFuY2UiLCJwb2ludENvb3JkaW5hdGUiLCJob3Jpem9uTGluZUZyb21Ub3AiLCJyYXlJbnRlcnNlY3Rpb25Db29yZGluYXRlIiwicG9pbnRSYXlJbnRlcnNlY3Rpb24iLCJwb2ludENvb3JkaW5hdGUzRCIsImlzUG9pbnRBYm92ZUhvcml6b24iLCJjcmVhdGVJbnZlcnNpb25NYXRyaXgiLCJjcmVhdGVUaWxlTWF0cml4Iiwiem9vbVNjYWxlIiwiUGQiLCJwYXJhbGxlbHMiLCJyMCIsInNpZ24iLCJEZCIsIlZkIiwiTGQiLCJGZCIsIlJkIiwiVWQiLCIkZCIsImpkIiwiT2QiLCJxZCIsInNvdXRoZXJuQ2VudGVyIiwiTmQiLCJHZCIsIlpkIiwiS2QiLCJYZCIsIkpkIiwiY29zUGhpIiwiSGQiLCJnZXRBdFBvaW50T3JaZXJvIiwiX2NlbnRlckFsdGl0dWRlIiwicGl4ZWxNYXRyaXgiLCJfcGl4ZWxzUGVyTWVyY2F0b3JQaXhlbCIsImZyb20iLCJZZCIsIldkIiwiUWQiLCJ0ZiIsImVmIiwicmYiLCJuZiIsInNmIiwiZHluYW1pY0xheW91dFZlcnRleEFycmF5Iiwib3BhY2l0eVZlcnRleEFycmF5IiwiZHluYW1pY0xheW91dFZlcnRleEJ1ZmZlciIsIm9wYWNpdHlWZXJ0ZXhCdWZmZXIiLCJpdGVtU2l6ZSIsImFmIiwibGF5b3V0QXR0cmlidXRlcyIsImNvbGxpc2lvblZlcnRleEFycmF5IiwiY29sbGlzaW9uVmVydGV4QXJyYXlFeHQiLCJjb2xsaXNpb25WZXJ0ZXhCdWZmZXIiLCJjb2xsaXNpb25WZXJ0ZXhCdWZmZXJFeHQiLCJoYXNSVExUZXh0IiwiZnVsbHlDbGlwcGVkIiwic29ydEtleVJhbmdlcyIsImNvbGxpc2lvbkNpcmNsZUFycmF5IiwicGxhY2VtZW50SW52UHJvak1hdHJpeCIsInBsYWNlbWVudFZpZXdwb3J0TWF0cml4IiwiY2FuT3ZlcmxhcCIsInNvcnRGZWF0dXJlc0J5S2V5Iiwic29ydEZlYXR1cmVzQnlZIiwid3JpdGluZ01vZGVzIiwic291cmNlSUQiLCJsaW5lVmVydGV4QXJyYXkiLCJjYWxjdWxhdGVHbHlwaERlcGVuZGVuY2llcyIsImNoYXJBdCIsImljb25EZXBlbmRlbmNpZXMiLCJnbHlwaERlcGVuZGVuY2llcyIsImdldFZhbHVlQW5kUmVzb2x2ZVRva2VucyIsImhhc0RlYnVnRGF0YSIsInRleHRDb2xsaXNpb25Cb3giLCJpY29uQ29sbGlzaW9uQm94IiwiZGVzdHJveURlYnVnRGF0YSIsImdldFByb2plY3Rpb24iLCJwcm9qZWN0aW9uSW5zdGFuY2UiLCJfY29tbWl0TGF5b3V0VmVydGV4IiwiX2FkZENvbGxpc2lvbkRlYnVnVmVydGljZXMiLCJfYWRkVGV4dERlYnVnQ29sbGlzaW9uQm94ZXMiLCJnZXRTeW1ib2xJbnN0YW5jZVRleHRTaXplIiwiX2FkZEljb25EZWJ1Z0NvbGxpc2lvbkJveGVzIiwiZ2V0U3ltYm9sSW5zdGFuY2VJY29uU2l6ZSIsIl9jb21taXREZWJ1Z0NvbGxpc2lvblZlcnRleFVwZGF0ZSIsIl91cGRhdGVUZXh0RGVidWdDb2xsaXNpb25Cb3hlcyIsIl91cGRhdGVJY29uRGVidWdDb2xsaXNpb25Cb3hlcyIsInVwZGF0ZUNvbGxpc2lvbkRlYnVnQnVmZmVycyIsImhhc1RleHRDb2xsaXNpb25Cb3hEYXRhIiwiaGFzSWNvbkNvbGxpc2lvbkJveERhdGEiLCJfZGVzZXJpYWxpemVDb2xsaXNpb25Cb3hlc0ZvclN5bWJvbCIsInRleHRCb3giLCJ0ZXh0RmVhdHVyZUluZGV4IiwidmVydGljYWxUZXh0Qm94IiwidmVydGljYWxUZXh0RmVhdHVyZUluZGV4IiwiaWNvbkJveCIsImljb25GZWF0dXJlSW5kZXgiLCJ2ZXJ0aWNhbEljb25Cb3giLCJ2ZXJ0aWNhbEljb25GZWF0dXJlSW5kZXgiLCJkZXNlcmlhbGl6ZUNvbGxpc2lvbkJveGVzIiwiY29sbGlzaW9uQXJyYXlzIiwiaGFzVGV4dERhdGEiLCJoYXNJY29uRGF0YSIsImFkZEluZGljZXNGb3JQbGFjZWRTeW1ib2wiLCJnZXRTb3J0ZWRTeW1ib2xJbmRleGVzIiwic29ydGVkQW5nbGUiLCJzeW1ib2xJbnN0YW5jZUluZGV4ZXMiLCJzeW1ib2xJbnN0YW5jZUVuZCIsInN5bWJvbEluc3RhbmNlU3RhcnQiLCJzb3J0RmVhdHVyZXMiLCJmZWF0dXJlU29ydE9yZGVyIiwiYWRkRHluYW1pY0F0dHJpYnV0ZXMiLCJsZiIsImxheW91dF9zeW1ib2wiLCJ1ZiIsInBhaW50X3N5bWJvbCIsInJ1bnRpbWVUeXBlIiwiZ2V0T3ZlcnJpZGUiLCJoYXNPdmVycmlkZSIsImNmIiwiZGVmYXVsdFZhbHVlIiwiaGYiLCJfc2V0UGFpbnRPdmVycmlkZXMiLCJjcmVhdGVCdWNrZXQiLCJxdWVyeVJhZGl1cyIsInF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmUiLCJoYXNQYWludE92ZXJyaWRlIiwiX2ludGVycG9sYXRpb25UeXBlIiwicGYiLCJwYWludF9iYWNrZ3JvdW5kIiwiZGYiLCJwYWludF9yYXN0ZXIiLCJmZiIsImltcGxlbWVudGF0aW9uIiwicmVuZGVyaW5nTW9kZSIsInByZXJlbmRlciIsImlzTGF5ZXJEcmFwZWQiLCJyZW5kZXJUb1RpbGUiLCJzaG91bGRSZWRyYXBlIiwic2hvdWxkUmVyZW5kZXJUaWxlcyIsIm9uQWRkIiwicGFpbnRlciIsImNvbnRleHQiLCJvblJlbW92ZSIsInlmIiwicGFpbnRfc2t5IiwibWYiLCJnZiIsImNpcmNsZSIsImhlYXRtYXAiLCJfdXBkYXRlQ29sb3JSYW1wIiwiY29sb3JSYW1wIiwiY29sb3JSYW1wVGV4dHVyZSIsImhlYXRtYXBGYm8iLCJoaWxsc2hhZGUiLCJ0aWxlc3BhY2VHZW9tZXRyeSIsInRpbGUiLCJnZXRCdWNrZXQiLCJmbGF0IiwiaXNQb2ludFF1ZXJ5Iiwic2NyZWVuQm91bmRzIiwiZ3JhZGllbnRWZXJzaW9uIiwic3RlcEludGVycG9sYW50IiwiZ3JhZGllbnRFeHByZXNzaW9uIiwid2lkdGhFeHByZXNzaW9uIiwic3ltYm9sIiwiYmFja2dyb3VuZCIsInJhc3RlciIsInNreSIsIl9za3lib3hJbnZhbGlkYXRlZCIsIm5lZWRzU2t5Ym94Q2FwdHVyZSIsInNreWJveFRleHR1cmUiLCJza3lib3hHZW9tZXRyeSIsIl9saWdodFBvc2l0aW9uIiwiYXppbXV0aGFsIiwicG9sYXIiLCJtYXJrU2t5Ym94VmFsaWQiLCJ4ZiIsInRleHR1cmUiLCJIVE1MSW1hZ2VFbGVtZW50IiwiSFRNTENhbnZhc0VsZW1lbnQiLCJIVE1MVmlkZW9FbGVtZW50IiwicGl4ZWxTdG9yZVVucGFja0ZsaXBZIiwicGl4ZWxTdG9yZVVucGFjayIsInBpeGVsU3RvcmVVbnBhY2tQcmVtdWx0aXBseUFscGhhIiwicHJlbXVsdGlwbHkiLCJ0ZXhTdWJJbWFnZTJEIiwidXNlTWlwbWFwIiwiaXNTaXplUG93ZXJPZlR3byIsImdlbmVyYXRlTWlwbWFwIiwidGV4UGFyYW1ldGVyaSIsIlRFWFRVUkVfTUFHX0ZJTFRFUiIsIlRFWFRVUkVfTUlOX0ZJTFRFUiIsIk5FQVJFU1QiLCJORUFSRVNUX01JUE1BUF9ORUFSRVNUIiwiTElORUFSX01JUE1BUF9ORUFSRVNUIiwiVEVYVFVSRV9XUkFQX1MiLCJURVhUVVJFX1dSQVBfVCIsInZmIiwiX2NhbGxiYWNrIiwiX3RyaWdnZXJlZCIsIk1lc3NhZ2VDaGFubmVsIiwiX2NoYW5uZWwiLCJwb3J0MiIsIm9ubWVzc2FnZSIsInRyaWdnZXIiLCJwb3J0MSIsInBvc3RNZXNzYWdlIiwic2V0VGltZW91dCIsInJlbW92ZSIsImJmIiwidGFza3MiLCJ0YXNrUXVldWUiLCJpbnZva2VyIiwibmV4dElkIiwiaXNTeW1ib2xUaWxlIiwicHJpb3JpdHkiLCJwaWNrIiwid2YiLCJfc3RyaW5nVG9OdW1iZXIiLCJfbnVtYmVyVG9TdHJpbmciLCJlbmNvZGUiLCJfZiIsIkFmIiwiX3ZlY3RvclRpbGVGZWF0dXJlIiwiX3oiLCJfeCIsIl95Iiwic3RhdGUiLCJTZiIsImtmIiwiSWYiLCJNZiIsIlRmIiwiemYiLCJCZiIsIkVmIiwiQ2YiLCJQZiIsInVzZXMiLCJ0aWxlU2l6ZSIsInRpbGVab29tIiwiYnVja2V0cyIsImV4cGlyYXRpb25UaW1lIiwicXVlcnlQYWRkaW5nIiwiaGFzU3ltYm9sQnVja2V0cyIsImRlcGVuZGVuY2llcyIsImlzUmFzdGVyIiwiZXhwaXJlZFJlcXVlc3RDb3VudCIsInRyYW5zZm9ybSIsInJlZ2lzdGVyRmFkZUR1cmF0aW9uIiwidGltZUFkZGVkIiwiZmFkZUVuZFRpbWUiLCJ3YXNSZXF1ZXN0ZWQiLCJ0aWxlVHJhbnNmb3JtIiwiX3RpbGVUcmFuc2Zvcm0iLCJsb2FkVmVjdG9yRGF0YSIsInVubG9hZFZlY3RvckRhdGEiLCJsYXRlc3RGZWF0dXJlSW5kZXgiLCJyYXdUaWxlRGF0YSIsImxhdGVzdFJhd1RpbGVEYXRhIiwiZ2V0TGF5ZXIiLCJqdXN0UmVsb2FkZWQiLCJpbWFnZUF0bGFzIiwiZ2x5cGhBdGxhc0ltYWdlIiwiaGFzRGF0YSIsImltYWdlQXRsYXNUZXh0dXJlIiwiZ2x5cGhBdGxhc1RleHR1cmUiLCJsaW5lQXRsYXNUZXh0dXJlIiwiX3RpbGVCb3VuZHNCdWZmZXIiLCJfdGlsZUJvdW5kc0luZGV4QnVmZmVyIiwiX3RpbGVCb3VuZHNTZWdtZW50cyIsIl90aWxlRGVidWdCdWZmZXIiLCJfdGlsZURlYnVnU2VnbWVudHMiLCJfdGlsZURlYnVnSW5kZXhCdWZmZXIiLCJfZ2xvYmVUaWxlRGVidWdCb3JkZXJCdWZmZXIiLCJfdGlsZURlYnVnVGV4dEJ1ZmZlciIsIl90aWxlRGVidWdUZXh0U2VnbWVudHMiLCJfdGlsZURlYnVnVGV4dEluZGV4QnVmZmVyIiwiX2dsb2JlVGlsZURlYnVnVGV4dEJ1ZmZlciIsIkFMUEhBIiwicHJlcGFyZSIsInF1ZXJ5UmVuZGVyZWRGZWF0dXJlcyIsInRpbGVSZXN1bHQiLCJwaXhlbFBvc01hdHJpeCIsInF1ZXJ5U291cmNlRmVhdHVyZXMiLCJsb2FkVlRMYXllcnMiLCJfZ2VvanNvblRpbGVMYXllciIsImdldElkIiwicGF0dGVybnNMb2FkZWQiLCJzZXRFeHBpcnlEYXRhIiwiY2FjaGVDb250cm9sIiwiZXhwaXJlcyIsImdldEV4cGlyeVRpbWVvdXQiLCJzZXRGZWF0dXJlU3RhdGUiLCJsaXN0SW1hZ2VzIiwiaGFzTGF5ZXIiLCJfZ2V0U291cmNlQ2FjaGUiLCJfdGVycmFpbiIsImVuYWJsZWQiLCJfY2xlYXJSZW5kZXJDYWNoZUZvclRpbGUiLCJob2xkaW5nRm9yRmFkZSIsInN5bWJvbEZhZGVIb2xkVW50aWwiLCJzeW1ib2xGYWRlRmluaXNoZWQiLCJjbGVhckZhZGVIb2xkIiwic2V0SG9sZER1cmF0aW9uIiwic2V0VGV4dHVyZSIsImdldFRpbGVUZXh0dXJlIiwiTElORUFSIiwiQ0xBTVBfVE9fRURHRSIsInNldERlcGVuZGVuY2llcyIsImhhc0RlcGVuZGVuY3kiLCJjbGVhclF1ZXJ5RGVidWdWaXoiLCJfbWFrZURlYnVnVGlsZUJvdW5kc0J1ZmZlcnMiLCJfbWFrZVRpbGVCb3VuZHNCdWZmZXJzIiwiaW5kaWNlcyIsIl9tYWtlR2xvYmVUaWxlRGVidWdCdWZmZXJzIiwiZnJlZXplVGlsZUNvdmVyYWdlIiwiX21ha2VHbG9iZVRpbGVEZWJ1Z0JvcmRlckJ1ZmZlciIsIl9tYWtlR2xvYmVUaWxlRGVidWdUZXh0QnVmZmVyIiwiX2dsb2JlUG9pbnQiLCJEZiIsInN0YXRlQ2hhbmdlcyIsImRlbGV0ZWRTdGF0ZXMiLCJ1cGRhdGVTdGF0ZSIsInJlbW92ZUZlYXR1cmVTdGF0ZSIsImdldFN0YXRlIiwiaW5pdGlhbGl6ZVRpbGVTdGF0ZSIsImNvYWxlc2NlQ2hhbmdlcyIsIlZmIiwibWluaW11bXMiLCJtYXhpbXVtcyIsImxlYXZlcyIsImdldEVsZXZhdGlvbiIsInRvSWR4IiwiaXNMZWFmIiwiTGYiLCJGZiIsIlJmIiwiVWYiLCIkZiIsImNoaWxkT2Zmc2V0cyIsIm5vZGVDb3VudCIsImRlbSIsIl9zaWJsaW5nT2Zmc2V0IiwiZGltIiwiT2YiLCJfYWRkTm9kZSIsIl9jb25zdHJ1Y3QiLCJyYXljYXN0Um9vdCIsInJheWNhc3QiLCJpZHgiLCJub2RleCIsIm5vZGV5IiwiamYiLCJxZiIsIm1hcGJveCIsInRlcnJhcml1bSIsIk5mIiwiR2YiLCJaZiIsInRyZWUiLCJfdHJlZSIsIl9idWlsZFF1YWRUcmVlIiwic3RyaWRlIiwicGl4ZWxzIiwiZW5jb2RpbmciLCJib3JkZXJSZWFkeSIsIl9pZHgiLCJnZXRVbnBhY2tWZWN0b3IiLCJ1bnBhY2tWZWN0b3IiLCJwYWNrIiwiZ2V0UGl4ZWxzIiwiYmFja2ZpbGxCb3JkZXIiLCJvbkRlc2VyaWFsaXplIiwiS2YiLCJyZXNldCIsInRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJvcmRlciIsIl9nZXRBbmRSZW1vdmVCeUtleSIsImdldEFuZFJlbW92ZSIsImdldEJ5S2V5Iiwic2V0TWF4U2l6ZSIsIlhmIiwiZnVuYyIsIm1hc2siLCJSZWFkT25seSIsIlJlYWRXcml0ZSIsImRpc2FibGVkIiwiSmYiLCJIZiIsImZhaWwiLCJkZXB0aEZhaWwiLCJwYXNzIiwiWWYiLCJibGVuZEZ1bmN0aW9uIiwiYmxlbmRDb2xvciIsIlJlcGxhY2UiLCJ1bmJsZW5kZWQiLCJhbHBoYUJsZW5kZWQiLCJXZiIsIlFmIiwidHkiLCJlbmFibGUiLCJtb2RlIiwiZnJvbnRGYWNlIiwiYmFja0NDVyIsImJhY2tDVyIsImZyb250Q1ciLCJmcm9udENDVyIsImV5IiwiX29ubHlTeW1ib2xzIiwiZGF0YVR5cGUiLCJzb3VyY2VEYXRhVHlwZSIsIl9zb3VyY2VMb2FkZWQiLCJfcGF1c2VkIiwicmVsb2FkIiwiX3NvdXJjZUVycm9yZWQiLCJfc291cmNlIiwiX3RpbGVzIiwiX2NhY2hlIiwiX3VubG9hZFRpbGUiLCJfdGltZXJzIiwiX2NhY2hlVGltZXJzIiwiX21pblRpbGVDYWNoZVNpemUiLCJtaW5UaWxlQ2FjaGVTaXplIiwiX21heFRpbGVDYWNoZVNpemUiLCJtYXhUaWxlQ2FjaGVTaXplIiwiX2xvYWRlZFBhcmVudFRpbGVzIiwiX2NvdmVyZWRUaWxlcyIsIl9zdGF0ZSIsIl9pc1Jhc3RlciIsIl9kYXRhVHlwZSIsImxvYWRlZCIsImdldFNvdXJjZSIsInBhdXNlIiwicmVzdW1lIiwiX3Nob3VsZFJlbG9hZE9uUmVzdW1lIiwiX2xvYWRUaWxlIiwibG9hZFRpbGUiLCJ1bmxvYWRUaWxlIiwiX2Fib3J0VGlsZSIsImFib3J0VGlsZSIsImltYWdlTWFuYWdlciIsImdldElkcyIsInJ5IiwiZ2V0UmVuZGVyYWJsZUlkcyIsIl9pc0lkUmVuZGVyYWJsZSIsImhhc1JlbmRlcmFibGVQYXJlbnQiLCJmaW5kTG9hZGVkUGFyZW50IiwiX3JlbG9hZFRpbGUiLCJfdGlsZUxvYWRlZCIsInVzZWRGb3JUZXJyYWluIiwiZ2V0U2NhbGVkRGVtVGlsZVNpemUiLCJyZXNldFRpbGVMb29rdXBDYWNoZSIsInJlZnJlc2hlZFVwb25FeHBpcmF0aW9uIiwiX3NldFRpbGVSZWxvYWRUaW1lciIsIl9iYWNrZmlsbERFTSIsImNvb3JkIiwic291cmNlQ2FjaGVJZCIsIm5laWdoYm9yaW5nVGlsZXMiLCJnZXRUaWxlQnlJRCIsIm5lZWRzSGlsbHNoYWRlUHJlcGFyZSIsIm5lZWRzREVNVGV4dHVyZVVwbG9hZCIsImJhY2tmaWxsZWQiLCJnZXRUaWxlIiwiX3JldGFpbkxvYWRlZENoaWxkcmVuIiwiX2dldExvYWRlZFRpbGUiLCJyZXBhcnNlT3ZlcnNjYWxlZCIsInVwZGF0ZUNhY2hlU2l6ZSIsImhhbmRsZVdyYXBKdW1wIiwiX3ByZXZMbmciLCJ1c2VkIiwiZ2V0VmlzaWJsZVVud3JhcHBlZENvb3JkaW5hdGVzIiwiY292ZXJpbmdUaWxlcyIsInJvdW5kWm9vbSIsImlzVGVycmFpbkRFTSIsImhhc1RpbGUiLCJfdXBkYXRlUmV0YWluZWRUaWxlcyIsIm55IiwibWF4T3Zlcnpvb21pbmciLCJfYWRkVGlsZSIsIl9mYWRlRHVyYXRpb24iLCJfcmVtb3ZlVGlsZSIsIl91cGRhdGVMb2FkZWRQYXJlbnRUaWxlQ2FjaGUiLCJhZnRlclVwZGF0ZSIsInJlbGVhc2VTeW1ib2xGYWRlVGlsZXMiLCJtYXhVbmRlcnpvb21pbmciLCJhYm9ydGVkIiwiY2xlYXJUaWxlcyIsIl9jbGVhciIsInRpbGVzSW4iLCJpeSIsImNvbnRhaW5zVGlsZSIsImdldFZpc2libGVDb29yZGluYXRlcyIsInByb2pNYXRyaXgiLCJjYWxjdWxhdGVQcm9qTWF0cml4IiwiZ2V0RmVhdHVyZVN0YXRlIiwicmVsb2FkVGlsZXNGb3JEZXBlbmRlbmNpZXMiLCJfcHJlbG9hZFRpbGVzIiwiTWFwIiwidXBkYXRlRWxldmF0aW9uIiwic3kiLCJfZGVtVGlsZSIsIl9kZW0iLCJfc2NhbGUiLCJfb2Zmc2V0IiwiZmluZERFTVRpbGVGb3IiLCJncmlkIiwiZmVhdHVyZUluZGV4QXJyYXkiLCJ2dExheWVycyIsInNvdXJjZUxheWVyQ29kZXIiLCJ2dEZlYXR1cmVzIiwiYnVmZmVyZWRUaWxlc3BhY2VCb3VuZHMiLCJidWZmZXJlZFRpbGVzcGFjZUdlb21ldHJ5IiwibHkiLCJsb2FkTWF0Y2hpbmdGZWF0dXJlIiwiYnVja2V0TGF5ZXJJRHMiLCJveSIsImludGVyc2VjdGlvbloiLCJsb29rdXBTeW1ib2xGZWF0dXJlcyIsImxvYWRGZWF0dXJlIiwidXkiLCJuZXh0Um93IiwiZ2V0RGFzaCIsImdldERhc2hSYW5nZXMiLCJpc0Rhc2giLCJ6ZXJvTGVuZ3RoIiwiYWRkUm91bmREYXNoIiwiYWRkUmVndWxhckRhc2giLCJoeSIsInB5Iiwic2hvd0NvbGxpc2lvbkJveGVzIiwiY29sbGVjdFJlc291cmNlVGltaW5nIiwicmV0dXJuRGVwZW5kZW5jaWVzIiwiZmFtaWxpZXNCeVNvdXJjZSIsImR5IiwiZ2x5cGhNYXAiLCJpY29uTWFwIiwiZ2x5cGhQb3NpdGlvbnMiLCJzdGFja3MiLCJpY29ucyIsImZ5Iiwic2NoZWR1bGVyIiwicmVxdWVzdCIsImNhbGxiYWNrcyIsInl5IiwiZGVkdXBlZCIsInZlY3RvclRpbGUiLCJyYXdEYXRhIiwibXkiLCJneSIsIm51bUl0ZW1zIiwibm9kZVNpemUiLCJBcnJheVR5cGUiLCJJbmRleEFycmF5VHlwZSIsImNvb3JkcyIsIl9wb3MiLCJfZmluaXNoZWQiLCJ4eSIsInZ5Iiwid3kiLCJBUlJBWV9UWVBFIiwiQVVUSF9FUlJfTVNHIiwiQWFiYiIsIkFjdG9yIiwibWFwSWQiLCJjYW5jZWxDYWxsYmFja3MiLCJhZGRFdmVudExpc3RlbmVyIiwicmVjZWl2ZSIsImdsb2JhbFNjb3BlIiwiaGFzQ2FsbGJhY2siLCJ0YXJnZXRNYXBJZCIsIm11c3RRdWV1ZSIsInNvdXJjZU1hcElkIiwicHJvY2Vzc1Rhc2siLCJnZXRXb3JrZXJTb3VyY2UiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiQ2Fub25pY2FsVGlsZUlEIiwiQ29sb3IiLCJDb2xvck1vZGUiLCJDdWxsRmFjZU1vZGUiLCJERU1EYXRhIiwiRGF0YUNvbnN0YW50UHJvcGVydHkiLCJEZWR1cGVkUmVxdWVzdCIsIkRlcHRoTW9kZSIsIkVYVEVOVCIsIkVsZXZhdGlvbiIsImlzRGF0YUF2YWlsYWJsZUF0UG9pbnQiLCJpc1VzaW5nTW9ja1NvdXJjZSIsImdldEF0UG9pbnQiLCJnZXRBdFRpbGVPZmZzZXQiLCJnZXRBdFRpbGVPZmZzZXRGdW5jIiwiZ2V0Rm9yVGlsZVBvaW50cyIsImdldE1pbk1heEZvclRpbGUiLCJ2aXNpYmxlRGVtVGlsZXMiLCJFcnJvckV2ZW50IiwiRXZhbHVhdGlvblBhcmFtZXRlcnMiLCJFdmVudCIsIkV2ZW50ZWQiLCJGaWxsRXh0cnVzaW9uQnVja2V0IiwiRnJ1c3R1bSIsIkZydXN0dW1Db3JuZXJzIiwiR0xPQkVfUkFESVVTIiwiR0xPQkVfU0NBTEVfTUFUQ0hfTEFUSVRVREUiLCJHTE9CRV9aT09NX1RIUkVTSE9MRF9NQVgiLCJHTE9CRV9aT09NX1RIUkVTSE9MRF9NSU4iLCJHbG9iZVNoYXJlZEJ1ZmZlcnMiLCJfY3JlYXRlR3JpZCIsIl9jcmVhdGVQb2xlcyIsIl9wb2xlSW5kZXhCdWZmZXIiLCJfZ3JpZEJ1ZmZlciIsIl9ncmlkSW5kZXhCdWZmZXIiLCJfcG9sZU5vcnRoVmVydGV4QnVmZmVyIiwiX3BvbGVTb3V0aFZlcnRleEJ1ZmZlciIsIl9wb2xlU2VnbWVudHMiLCJfZ3JpZFNlZ21lbnRzIiwid2l0aFNraXJ0cyIsIndpdGhvdXRTa2lydHMiLCJfd2lyZWZyYW1lSW5kZXhCdWZmZXIiLCJfd2lyZWZyYW1lU2VnbWVudHMiLCJfZmlsbEdyaWRNZXNoV2l0aExvZHMiLCJnZXRHcmlkQnVmZmVycyIsImdldFBvbGVCdWZmZXJzIiwiZ2V0V2lyZWZhbWVCdWZmZXJzIiwiR2x5cGhNYW5hZ2VyIiwiSW1hZ2VQb3NpdGlvbiIsIktEQnVzaCIsIkxpdmVQZXJmb3JtYW5jZVV0aWxzIiwiTG5nTGF0IiwiTG5nTGF0Qm91bmRzIiwiTG9jYWxHbHlwaE1vZGUiLCJNQVhfTUVSQ0FUT1JfTEFUSVRVREUiLCJNZXJjYXRvckNvb3JkaW5hdGUiLCJPTkVfRU0iLCJPdmVyc2NhbGVkVGlsZUlEIiwiUGVyZm9ybWFuY2VNYXJrZXJzIiwiUG9pbnQiLCJQcm9wZXJ0aWVzIiwiUkdCQUltYWdlIiwiUmF5IiwiUmVxdWVzdE1hbmFnZXIiLCJfdHJhbnNmb3JtUmVxdWVzdEZuIiwiX3NpbGVuY2VBdXRoRXJyb3JzIiwiX2NyZWF0ZVNrdVRva2VuIiwidG9rZW4iLCJ0b2tlbkV4cGlyZXNBdCIsIl9za3VUb2tlbiIsIl9za3VUb2tlbkV4cGlyZXNBdCIsIl9pc1NrdVRva2VuRXhwaXJlZCIsIm5vcm1hbGl6ZVN0eWxlVVJMIiwiX21ha2VBUElVUkwiLCJub3JtYWxpemVTb3VyY2VVUkwiLCJub3JtYWxpemVTcHJpdGVVUkwiLCJub3JtYWxpemVUaWxlVVJMIiwiY2Fub25pY2FsaXplVGlsZVVSTCIsImNhbm9uaWNhbGl6ZVRpbGVzZXQiLCJ0aWxlcyIsIlJlc291cmNlVHlwZSIsIlNlZ21lbnRWZWN0b3IiLCJTb3VyY2VDYWNoZSIsIlN0ZW5jaWxNb2RlIiwiU3RydWN0QXJyYXlMYXlvdXQxdWkyIiwiU3RydWN0QXJyYXlMYXlvdXQyZjFmMmkxNiIsIlN0cnVjdEFycmF5TGF5b3V0Mmk0IiwiU3RydWN0QXJyYXlMYXlvdXQydWk0IiwiU3RydWN0QXJyYXlMYXlvdXQzZjEyIiwiU3RydWN0QXJyYXlMYXlvdXQzdWk2IiwiU3RydWN0QXJyYXlMYXlvdXQ0aTgiLCJTdHJ1Y3RBcnJheUxheW91dDVmMjAiLCJUZXh0dXJlIiwiVHJhbnNpdGlvbmFibGUiLCJVbmlmb3JtMWYiLCJVbmlmb3JtMWkiLCJ1bmlmb3JtMWkiLCJVbmlmb3JtMmYiLCJ1bmlmb3JtMmYiLCJVbmlmb3JtM2YiLCJ1bmlmb3JtM2YiLCJVbmlmb3JtNGYiLCJVbmlmb3JtQ29sb3IiLCJVbmlmb3JtTWF0cml4MmYiLCJ1bmlmb3JtTWF0cml4MmZ2IiwiVW5pZm9ybU1hdHJpeDNmIiwidW5pZm9ybU1hdHJpeDNmdiIsIlVuaWZvcm1NYXRyaXg0ZiIsInVuaWZvcm1NYXRyaXg0ZnYiLCJVbndyYXBwZWRUaWxlSUQiLCJWYWxpZGF0aW9uRXJyb3IiLCJWZWN0b3JUaWxlV29ya2VyU291cmNlIiwibGF5ZXJJbmRleCIsImxvYWRpbmciLCJpc1Nwcml0ZUxvYWRlZCIsInJlc291cmNlVGltaW5nIiwicmVsb2FkVGlsZSIsInJlbG9hZENhbGxiYWNrIiwicmVtb3ZlVGlsZSIsIldyaXRpbmdNb2RlIiwiWm9vbURlcGVuZGVudEV4cHJlc3Npb24iLCJhZGpvaW50IiwiYXN5bmNBbGwiLCJiZXppZXIiLCJiaW5kQWxsIiwiYm91bmRzQXR0cmlidXRlcyIsImJ1ZmZlckNvbnZleFBvbHlnb24iLCJjYWNoZUVudHJ5UG9zc2libHlBZGRlZCIsImdldEFjdG9yIiwiY2FsY3VsYXRlR2xvYmVMYWJlbE1hdHJpeCIsInBvaW50IiwiY2FsY3VsYXRlR2xvYmVNYXRyaXgiLCJjYWxjdWxhdGVHbG9iZU1lcmNhdG9yTWF0cml4IiwiY2lyY3VtZmVyZW5jZUF0TGF0aXR1ZGUiLCJjbGFtcCIsImNsZWFyVGlsZUNhY2hlIiwiY2xpcExpbmUiLCJjbG9uZSQxIiwiY29sbGlzaW9uQ2lyY2xlTGF5b3V0IiwiY29uZmlnIiwiY29uanVnYXRlIiwiY3JlYXRlJDEiLCJjcmVhdGVFeHByZXNzaW9uIiwiY3JlYXRlTGF5b3V0IiwiY3JlYXRlU3R5bGVMYXllciIsImNyb3NzIiwiZGVnVG9SYWQiLCJkb3QiLCJlYXJ0aFJhZGl1cyIsImVhc2UiLCJlYXNlQ3ViaWNJbk91dCIsImVjZWZUb0xhdExuZyIsImVtaXRWYWxpZGF0aW9uRXJyb3JzIiwiZW5mb3JjZUNhY2hlU2l6ZUxpbWl0IiwiZXZhbHVhdGVWYXJpYWJsZU9mZnNldCIsImV2ZW50ZWQiLCJleGFjdEVxdWFscyIsImV4YWN0RXF1YWxzJDEiLCJleHBvcnRlZCIsImV4cG9ydGVkJDEiLCJleHRlbmQkMSIsImZpbGxFeHRydXNpb25IZWlnaHRMaWZ0IiwiZmlsdGVyT2JqZWN0IiwiZnJvbU1hdDQiLCJmcm9tUXVhdCIsImZyb21Sb3RhdGlvbiIsImZyb21TY2FsaW5nIiwiZnVydGhlc3RUaWxlQ29ybmVyIiwiZ2V0QUFCQlBvaW50U3F1YXJlRGlzdCIsImdldEFuY2hvckFsaWdubWVudCIsImdldEFuY2hvckp1c3RpZmljYXRpb24iLCJnZXRCb3VuZHMiLCJnZXRDb2x1bW4iLCJnZXREZWZhdWx0RXhwb3J0RnJvbUNqcyIsImdldEdyaWRNYXRyaXgiLCJnZXRKU09OIiwiZ2V0TGF0aXR1ZGluYWxMb2QiLCJnZXRNYXBTZXNzaW9uQVBJIiwiZ2V0UGVyZm9ybWFuY2VNZWFzdXJlbWVudCIsImdldFJUTFRleHRQbHVnaW5TdGF0dXMiLCJnZXRSZWZlcnJlciIsImdldFRpbGVQb2ludCIsImdldFRpbGVWZWMzIiwiZ2V0VmlkZW8iLCJtdXRlZCIsIm9ubG9hZHN0YXJ0IiwiY3Jvc3NPcmlnaW4iLCJhcHBlbmRDaGlsZCIsImdsb2JlQ2VudGVyVG9TY3JlZW5Qb2ludCIsImdsb2JlRGVub3JtYWxpemVFQ0VGIiwiZ2xvYmVFQ0VGT3JpZ2luIiwiZ2xvYmVNZXRlcnNUb0VjZWYiLCJnbG9iZU5vcm1hbGl6ZUVDRUYiLCJnbG9iZVBpeGVsc1RvVGlsZVVuaXRzIiwiZ2xvYmVQb2xlTWF0cml4Rm9yVGlsZSIsImdsb2JlVGlsZUJvdW5kcyIsImdsb2JlVGlsdEF0TG5nTGF0IiwiZ2xvYmVUb01lcmNhdG9yVHJhbnNpdGlvbiIsImdsb2JlVXNlQ3VzdG9tQW50aUFsaWFzaW5nIiwiX2FudGlhbGlhcyIsImV4dFN0YW5kYXJkRGVyaXZhdGl2ZXMiLCJleHRTdGFuZGFyZERlcml2YXRpdmVzRm9yY2VPZmYiLCJpZGVudGl0eSIsImlkZW50aXR5JDEiLCJpbnZlcnQiLCJpc0Z1bGxzY3JlZW4iLCJmdWxsc2NyZWVuRWxlbWVudCIsIndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50IiwiaXNMbmdMYXRCZWhpbmRHbG9iZSIsImlzTWFwQXV0aGVudGljYXRlZCIsImlzTWFwYm94VVJMIiwiaXNTYWZhcmlXaXRoQW50aWFsaWFzaW5nQnVnIiwibGF0RnJvbU1lcmNhdG9yWSIsImxhdExuZ1RvRUNFRiIsImxlbiIsImxlbmd0aCQxIiwibG5nRnJvbU1lcmNhdG9yWCIsImxvYWRWZWN0b3JUaWxlIiwibWFrZVJlcXVlc3QiLCJtYXBWYWx1ZSIsIm1lcmNhdG9yU2NhbGUiLCJtZXJjYXRvclhmcm9tTG5nIiwibWVyY2F0b3JZZnJvbUxhdCIsIm1lcmNhdG9yWmZyb21BbHRpdHVkZSIsIm11bCIsIm11bCQxIiwibXVsdGlwbHkiLCJtdWx0aXBseSQxIiwibXVsdGlwbHkkMiIsIm5leHRQb3dlck9mVHdvIiwibm9ybWFsaXplJDEiLCJub3JtYWxpemUkMiIsIm9ydGhvIiwicGJmIiwicGVyc3BlY3RpdmUiLCJwbHVnaW4iLCJwb2ludEdlb21ldHJ5IiwicG9sZXNJblZpZXdwb3J0IiwicG9seWdvbkNvbnRhaW5zUG9pbnQiLCJwb2x5Z29uSW50ZXJzZWN0c0JveCIsInBvbHlnb25JbnRlcnNlY3RzUG9seWdvbiIsInBvbHlnb25pemVCb3VuZHMiLCJwb3NBdHRyaWJ1dGVzIiwicG90cGFjayIsInByZXZQb3dlck9mVHdvIiwicmFkVG9EZWciLCJyZWZQcm9wZXJ0aWVzIiwicmVnaXN0ZXJGb3JQbHVnaW5TdGF0ZUNoYW5nZSIsInJlbW92ZUF1dGhTdGF0ZSIsInJlbmRlckNvbG9yUmFtcCIsInJlc2FtcGxlIiwicm90YXRlWCIsInJvdGF0ZVgkMSIsInJvdGF0ZVkiLCJyb3RhdGVZJDEiLCJyb3RhdGVaIiwicm90YXRlWiQxIiwic2NhbGUkMSIsInNjYWxlJDIiLCJzY2FsZUFuZEFkZCIsInNldENhY2hlTGltaXRzIiwic2V0Q29sdW1uIiwic2V0UlRMVGV4dFBsdWdpbiIsInNtb290aHN0ZXAiLCJzcXVhcmVkTGVuZ3RoIiwic3RvcmVBdXRoU3RhdGUiLCJzdWJ0cmFjdCIsInN5bWJvbFNpemUiLCJ0aWxlQUFCQiIsIl9sIiwidGlsZUNvcm5lcnNUb0JvdW5kcyIsInRyYW5zZm9ybU1hdDMiLCJ0cmFuc2Zvcm1NYXQ0IiwidHJhbnNmb3JtTWF0NCQxIiwidHJhbnNmb3JtUXVhdCIsInRyYW5zaXRpb25UaWxlQUFCQmluRUNFRiIsInRyYW5zbGF0ZSIsInRyYW5zcG9zZSIsInRyaWdnZXJQbHVnaW5Db21wbGV0aW9uRXZlbnQiLCJ1bmlxdWVJZCIsInVwZGF0ZUdsb2JlVmVydGV4Tm9ybWFsIiwidmFsaWRhdGVDdXN0b21TdHlsZUxheWVyIiwicmVuZGVyIiwidmFsaWRhdGVGaWx0ZXIiLCJ2YWxpZGF0ZUZvZyIsInZhbGlkYXRlTGF5ZXIiLCJ2YWxpZGF0ZUxpZ2h0IiwidmFsaWRhdGVTb3VyY2UiLCJ2YWxpZGF0ZVN0eWxlIiwidmFsaWRhdGVUZXJyYWluIiwid2Fybk9uY2UiLCJrZXlDYWNoZSIsIl9sYXllckNvbmZpZ3MiLCJfbGF5ZXJzIiwicmF3SW1hZ2VEYXRhIiwiYnVpbGRRdWFkVHJlZSIsIm9mZnNjcmVlbkNhbnZhcyIsIm9mZnNjcmVlbkNhbnZhc0NvbnRleHQiLCJPZmZzY3JlZW5DYW52YXMiLCJvcHRpb25zIiwicmF3R2VvbWV0cnkiLCJ0YWdzIiwia2V5Y2FjaGUiLCJ2YWx1ZWNhY2hlIiwiZnJvbVZlY3RvclRpbGVKcyIsImZyb21HZW9qc29uVnQiLCJHZW9KU09OV3JhcHBlciIsIm1pblBvaW50cyIsImdlbmVyYXRlSWQiLCJmcm91bmQiLCJhc3NpZ24iLCJ0cmVlcyIsImNsdXN0ZXJQcm9wcyIsInRpbWUiLCJfY3JlYXRlVHJlZSIsInRpbWVFbmQiLCJfY2x1c3RlciIsImdldENsdXN0ZXJzIiwiX2xpbWl0Wm9vbSIsImdldENoaWxkcmVuIiwiX2dldE9yaWdpbklkIiwiX2dldE9yaWdpblpvb20iLCJnZXRMZWF2ZXMiLCJfYXBwZW5kTGVhdmVzIiwiX2FkZFRpbGVGZWF0dXJlcyIsImdldENsdXN0ZXJFeHBhbnNpb25ab29tIiwiY2x1c3Rlcl9pZCIsInBvaW50X2NvdW50IiwiX21hcCIsInBvaW50X2NvdW50X2FiYnJldmlhdGVkIiwibWluWCIsIm1pblkiLCJtYXhYIiwibWF4WSIsInRvbGVyYW5jZSIsInRyYW5zZm9ybWVkIiwibnVtUG9pbnRzIiwibnVtU2ltcGxpZmllZCIsIm51bUZlYXR1cmVzIiwiZGVidWciLCJ0aWxlQ29vcmRzIiwiaW5kZXhNYXhab29tIiwiaW5kZXhNYXhQb2ludHMiLCJzdGF0cyIsInRvdGFsIiwic3BsaXRUaWxlIiwiX2dlb0pTT05JbmRleCIsIl9mZWF0dXJlIiwiYnl0ZU9mZnNldCIsImxvYWRHZW9KU09OIiwibG9hZERhdGEiLCJzdXBlcmNsdXN0ZXJPcHRpb25zIiwiZ2VvanNvblZ0T3B0aW9ucyIsImNsdXN0ZXJJZCIsImdldENsdXN0ZXJDaGlsZHJlbiIsImdldENsdXN0ZXJMZWF2ZXMiLCJsaW1pdCIsImxheWVySW5kZXhlcyIsInByb2plY3Rpb25zIiwiZGVmYXVsdFByb2plY3Rpb24iLCJ3b3JrZXJTb3VyY2VUeXBlcyIsInZlY3RvciIsIndvcmtlclNvdXJjZXMiLCJkZW1Xb3JrZXJTb3VyY2VzIiwicmVnaXN0ZXJXb3JrZXJTb3VyY2UiLCJyZWdpc3RlclJUTFRleHRQbHVnaW4iLCJjbGVhckNhY2hlcyIsImNoZWNrSWZSZWFkeSIsInNldFJlZmVycmVyIiwic3ByaXRlTG9hZGVkIiwic2V0SW1hZ2VzIiwic2V0UHJvamVjdGlvbiIsInNldExheWVycyIsImdldExheWVySW5kZXgiLCJ1cGRhdGVMYXllcnMiLCJyZW1vdmVkSWRzIiwibG9hZERFTVRpbGUiLCJnZXRERU1Xb3JrZXJTb3VyY2UiLCJyZW1vdmVTb3VyY2UiLCJsb2FkV29ya2VyU291cmNlIiwiaW1wb3J0U2NyaXB0cyIsInN5bmNSVExQbHVnaW5TdGF0ZSIsImdldEF2YWlsYWJsZUltYWdlcyIsImdldFdvcmtlclBlcmZvcm1hbmNlTWV0cmljcyIsImxhc3RJbmRleE9mIiwicmVkdWNlUmlnaHQiLCJGdW5jdGlvbiIsImdldFByb3RvdHlwZU9mIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImlzU2VhbGVkIiwiaXNGcm96ZW4iLCJpc0V4dGVuc2libGUiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJkZWZpbmVQcm9wZXJ0aWVzIiwic2VhbCIsInByZXZlbnRFeHRlbnNpb25zIiwiV29ya2VyIiwidGVybWluYXRlIiwiZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCIsIndlYkdMQ29udGV4dEF0dHJpYnV0ZXMiLCJjcmVhdGVTaGFkZXIiLCJWRVJURVhfU0hBREVSIiwic2hhZGVyU291cmNlIiwiY29tcGlsZVNoYWRlciIsImdldFNoYWRlclBhcmFtZXRlciIsIkNPTVBJTEVfU1RBVFVTIiwiZG9jdW1lbnRNb2RlIiwiY2xhc3NOYW1lIiwiY3JlYXRlRWxlbWVudE5TIiwic2V0QXR0cmlidXRlTlMiLCJhbnRpYWxpYXMiLCJzdGVuY2lsIiwiZG9jdW1lbnRFbGVtZW50IiwidXNlclNlbGVjdCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiSW5zdGFsbFRyaWdnZXIiLCJidXR0b24iLCJjdHJsS2V5IiwicGxhdGZvcm0iLCJvZmZzZXRXaWR0aCIsImNsaWVudFgiLCJjbGllbnRZIiwidXNlckltYWdlIiwiaW1hZ2VzIiwiY2FsbGJhY2tEaXNwYXRjaGVkVGhpc0ZyYW1lIiwicmVxdWVzdG9ycyIsImF0bGFzSW1hZ2UiLCJkaXJ0eSIsInNldExvYWRlZCIsIl9ub3RpZnkiLCJhZGRJbWFnZSIsIl92YWxpZGF0ZVN0cmV0Y2giLCJfdmFsaWRhdGVDb250ZW50IiwidXBkYXRlSW1hZ2UiLCJyZW1vdmVJbWFnZSIsImdldEltYWdlcyIsImdldFBpeGVsU2l6ZSIsImdldFBhdHRlcm4iLCJiaW4iLCJfdXBkYXRlUGF0dGVybkF0bGFzIiwiYXRsYXNUZXh0dXJlIiwiYmVnaW5GcmFtZSIsImludGVuc2l0eSIsIl90cmFuc2l0aW9uYWJsZSIsInNldExpZ2h0IiwiX3RyYW5zaXRpb25pbmciLCJnZXRMaWdodCIsImRyYXBlUmVuZGVyTW9kZSIsIl90cmFuc2Zvcm0iLCJob3Jpem9uQmxlbmQiLCJnZXRPcGFjaXR5IiwiZ2V0T3BhY2l0eUF0TGF0TG5nIiwibWVyY2F0b3JGb2dNYXRyaXgiLCJfZm92IiwiZ2V0Rm92QWRqdXN0ZWRSYW5nZSIsIndvcmtlclBvb2wiLCJhY3RvcnMiLCJjdXJyZW50QWN0b3IiLCJhY3F1aXJlIiwicmVhZHkiLCJicm9hZGNhc3QiLCJyZWxlYXNlIiwiY2FtZXJhUG9pbnQiLCJfc2NyZWVuUmF5Y2FzdENhY2hlIiwiX2NhbWVyYVJheWNhc3RDYWNoZSIsImJ1ZmZlcmVkU2NyZWVuR2VvbWV0cnkiLCJzY3JlZW5HZW9tZXRyeU1lcmNhdG9yIiwiX2J1ZmZlcmVkU2NyZWVuTWVyY2F0b3IiLCJjcmVhdGVGcm9tU2NyZWVuUG9pbnRzIiwiZ2V0Q2FtZXJhUG9pbnQiLCJidWZmZXJlZENhbWVyYUdlb21ldHJ5IiwiYnVmZmVyZWRDYW1lcmFHZW9tZXRyeUdsb2JlIiwiX2J1ZmZlcmVkQ2FtZXJhTWVyY2F0b3IiLCJ1bndyYXBwZWQiLCJnZXRGcmVlQ2FtZXJhT3B0aW9ucyIsIl9wcm9qZWN0QW5kUmVzYW1wbGUiLCJ2ZWN0b3JfbGF5ZXJzIiwidmVjdG9yTGF5ZXJzIiwidmVjdG9yTGF5ZXJJZHMiLCJ2YWxpZGF0ZUJvdW5kcyIsImNyZWF0ZUJ1ZmZlciIsImR5bmFtaWNEcmF3IiwidW5iaW5kVkFPIiwiYmluZEVsZW1lbnRCdWZmZXIiLCJidWZmZXJEYXRhIiwiRUxFTUVOVF9BUlJBWV9CVUZGRVIiLCJEWU5BTUlDX0RSQVciLCJTVEFUSUNfRFJBVyIsImJ1ZmZlclN1YkRhdGEiLCJkZWxldGVCdWZmZXIiLCJiaW5kVmVydGV4QnVmZmVyIiwiQVJSQVlfQlVGRkVSIiwiZW5hYmxlQXR0cmlidXRlcyIsImVuYWJsZVZlcnRleEF0dHJpYkFycmF5Iiwic2V0VmVydGV4QXR0cmliUG9pbnRlcnMiLCJ2ZXJ0ZXhBdHRyaWJQb2ludGVyIiwiZ2V0RGVmYXVsdCIsInNldERlZmF1bHQiLCJjbGVhckNvbG9yIiwiY2xlYXJEZXB0aCIsImNsZWFyU3RlbmNpbCIsImNvbG9yTWFzayIsImRlcHRoTWFzayIsInN0ZW5jaWxNYXNrIiwiQUxXQVlTIiwic3RlbmNpbEZ1bmMiLCJLRUVQIiwic3RlbmNpbE9wIiwiU1RFTkNJTF9URVNUIiwiZGlzYWJsZSIsImRlcHRoUmFuZ2UiLCJERVBUSF9URVNUIiwiTEVTUyIsImRlcHRoRnVuYyIsIkJMRU5EIiwiT05FIiwiWkVSTyIsImJsZW5kRnVuYyIsIkZVTkNfQUREIiwiYmxlbmRFcXVhdGlvbiIsIkNVTExfRkFDRSIsIkJBQ0siLCJjdWxsRmFjZSIsIkNDVyIsInVzZVByb2dyYW0iLCJURVhUVVJFMCIsImFjdGl2ZVRleHR1cmUiLCJkcmF3aW5nQnVmZmVyV2lkdGgiLCJkcmF3aW5nQnVmZmVySGVpZ2h0Iiwidmlld3BvcnQiLCJiaW5kRnJhbWVidWZmZXIiLCJGUkFNRUJVRkZFUiIsImJpbmRSZW5kZXJidWZmZXIiLCJSRU5ERVJCVUZGRVIiLCJiaW5kQnVmZmVyIiwidmFvIiwiZXh0VmVydGV4QXJyYXlPYmplY3QiLCJiaW5kVmVydGV4QXJyYXlPRVMiLCJwaXhlbFN0b3JlaSIsIlVOUEFDS19BTElHTk1FTlQiLCJVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wiLCJVTlBBQ0tfRkxJUF9ZX1dFQkdMIiwic2V0RGlydHkiLCJmcmFtZWJ1ZmZlclRleHR1cmUyRCIsIkNPTE9SX0FUVEFDSE1FTlQwIiwiYXR0YWNobWVudCIsIkRFUFRIX0FUVEFDSE1FTlQiLCJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIsIkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCIsImZyYW1lYnVmZmVyIiwiY3JlYXRlRnJhbWVidWZmZXIiLCJjb2xvckF0dGFjaG1lbnQiLCJkZXB0aEF0dGFjaG1lbnQiLCJkZWxldGVSZW5kZXJidWZmZXIiLCJkZWxldGVGcmFtZWJ1ZmZlciIsImlzV2ViR0wyIiwiZ2V0RXh0ZW5zaW9uIiwiY3JlYXRlVmVydGV4QXJyYXlPRVMiLCJjcmVhdGVWZXJ0ZXhBcnJheSIsImRlbGV0ZVZlcnRleEFycmF5T0VTIiwiZGVsZXRlVmVydGV4QXJyYXkiLCJiaW5kVmVydGV4QXJyYXkiLCJzdGVuY2lsVGVzdCIsImRlcHRoVGVzdCIsImJsZW5kIiwiY3VsbEZhY2VTaWRlIiwicHJvZ3JhbSIsImV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyIsImV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpY01heCIsImdldFBhcmFtZXRlciIsIk1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCIsImV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpY0ZvcmNlT2ZmIiwiZXh0RGVidWdSZW5kZXJlckluZm8iLCJVTk1BU0tFRF9SRU5ERVJFUl9XRUJHTCIsIlVOTUFTS0VEX1ZFTkRPUl9XRUJHTCIsImV4dFRleHR1cmVIYWxmRmxvYXQiLCJleHRSZW5kZXJUb1RleHR1cmVIYWxmRmxvYXQiLCJleHRUaW1lclF1ZXJ5IiwibWF4VGV4dHVyZVNpemUiLCJNQVhfVEVYVFVSRV9TSVpFIiwiY3JlYXRlUmVuZGVyYnVmZmVyIiwicmVuZGVyYnVmZmVyU3RvcmFnZSIsIkNPTE9SX0JVRkZFUl9CSVQiLCJERVBUSF9CVUZGRVJfQklUIiwiU1RFTkNJTF9CVUZGRVJfQklUIiwic2V0Q3VsbEZhY2UiLCJzZXREZXB0aE1vZGUiLCJzZXRTdGVuY2lsTW9kZSIsInNldENvbG9yTW9kZSIsImRpc3BhdGNoZXIiLCJzY2hlbWUiLCJfbG9hZGVkIiwiX29wdGlvbnMiLCJfY29sbGVjdFJlc291cmNlVGltaW5nIiwiX3RpbGVXb3JrZXJzIiwiX2RlZHVwZWQiLCJfbGFuZ3VhZ2UiLCJfd29ybGR2aWV3IiwiX3RpbGVKU09OUmVxdWVzdCIsIl9yZXF1ZXN0TWFuYWdlciIsInRpbGVCb3VuZHMiLCJjYW5jZWxUaWxlSlNPTlJlcXVlc3QiLCJfY2xlYXJTb3VyY2UiLCJzZXRUaWxlcyIsInNldFVybCIsIl9yZWZyZXNoRXhwaXJlZFRpbGVzIiwibG9hZFRpbGVEYXRhIiwidW5sb2FkVGlsZURhdGEiLCJzYXZlVGlsZVRleHR1cmUiLCJfZGlydHkiLCJfaW1hZ2VSZXF1ZXN0IiwiX2ZpbmlzaExvYWRpbmciLCJzZXRDb29yZGluYXRlcyIsIl9ib3VuZHNBcnJheSIsIl9wcmVwYXJlRGF0YSIsInBlcnNwZWN0aXZlVHJhbnNmb3JtIiwiYm91bmRzQnVmZmVyIiwiYm91bmRzU2VnbWVudHMiLCJfZ2V0TmVpZ2hib3JpbmdUaWxlcyIsImRlbVRleHR1cmUiLCJmYm8iLCJfZGF0YSIsImF0dHJpYnV0aW9uIiwid29ya2VyT3B0aW9ucyIsImNsdXN0ZXJNYXhab29tIiwiY2x1c3Rlck1pblBvaW50cyIsImNsdXN0ZXJSYWRpdXMiLCJzZXREYXRhIiwiX3VwZGF0ZVdvcmtlckRhdGEiLCJfcGVuZGluZ0xvYWQiLCJfY29hbGVzY2UiLCJfbWV0YWRhdGFGaXJlZCIsInZpZGVvIiwidXJscyIsImxvb3AiLCJzZXRBdHRyaWJ1dGUiLCJ0cmlnZ2VyUmVwYWludCIsInBsYXkiLCJzZWVrIiwic2Vla2FibGUiLCJjdXJyZW50VGltZSIsInJlYWR5U3RhdGUiLCJwYXVzZWQiLCJ2aWRlb1dpZHRoIiwidmlkZW9IZWlnaHQiLCJjYW52YXMiLCJhbmltYXRlIiwiZ2V0RWxlbWVudEJ5SWQiLCJfaGFzSW52YWxpZERpbWVuc2lvbnMiLCJfcGxheWluZyIsImdldENhbnZhcyIsImN1c3RvbSIsIl9kaXNwYXRjaGVyIiwiX2ltcGxlbWVudGF0aW9uIiwiX3VwZGF0ZSIsIl9jbGVhclRpbGVzIiwiX2NvdmVyaW5nVGlsZXMiLCJyZXNvbHZlIiwiY29kZSIsIndyYXBwZWRUaWxlSUQiLCJxdWVyeVJlc3VsdHMiLCJ3b3JrZXJDbGFzcyIsImFjdGl2ZSIsIndvcmtlcnMiLCJ3b3JrZXJDb3VudCIsIm51bUFjdGl2ZSIsImlzUHJlbG9hZGVkIiwic2V0U3R5bGUiLCJhZGRMYXllciIsInJlbW92ZUxheWVyIiwic2V0RmlsdGVyIiwiYWRkU291cmNlIiwic2V0R2VvSlNPTlNvdXJjZURhdGEiLCJzZXRMYXllclpvb21SYW5nZSIsInNldExheWVyUHJvcGVydHkiLCJzZXRDZW50ZXIiLCJzZXRab29tIiwic2V0QmVhcmluZyIsInNldFBpdGNoIiwic2V0U3ByaXRlIiwic2V0R2x5cGhzIiwic2V0VGVycmFpbiIsInNldEZvZyIsImNvbW1hbmQiLCJfZGlzdGFuY2VzIiwicGFkZGVkTGVuZ3RoIiwibGVycCIsImJveENlbGxzIiwiY2lyY2xlQ2VsbHMiLCJ4Q2VsbENvdW50IiwieUNlbGxDb3VudCIsImNpcmNsZUtleXMiLCJib3hLZXlzIiwiY2lyY2xlcyIsInhTY2FsZSIsInlTY2FsZSIsImJveFVpZCIsImNpcmNsZVVpZCIsImtleXNMZW5ndGgiLCJfaW5zZXJ0Qm94Q2VsbCIsImluc2VydENpcmNsZSIsIl9pbnNlcnRDaXJjbGVDZWxsIiwiX3F1ZXJ5IiwiaGl0VGVzdCIsInNlZW5VaWRzIiwiYm94IiwiX3F1ZXJ5Q2lyY2xlIiwiX3F1ZXJ5Q2VsbENpcmNsZSIsImhpdFRlc3RDaXJjbGUiLCJfY2lyY2xlQW5kUmVjdENvbGxpZGUiLCJfY2lyY2xlc0NvbGxpZGUiLCJfY29udmVydFRvWENlbGxDb29yZCIsIl9jb252ZXJ0VG9ZQ2VsbENvb3JkIiwidW5rbm93biIsImZsaXBSZXF1aXJlZCIsImZsaXBOb3RSZXF1aXJlZCIsImxhYmVsUGxhbmVNYXRyaXgiLCJnbENvb3JkTWF0cml4IiwidXNlVmVydGljYWwiLCJuZWVkc0ZsaXBwaW5nIiwibm90RW5vdWdoUm9vbSIsImZpcnN0IiwibGFzdCIsInRpbGVQYXRoIiwiaWdub3JlZEdyaWQiLCJwaXRjaGZhY3RvciIsInNjcmVlblJpZ2h0Qm91bmRhcnkiLCJzY3JlZW5Cb3R0b21Cb3VuZGFyeSIsImdyaWRSaWdodEJvdW5kYXJ5IiwiZ3JpZEJvdHRvbUJvdW5kYXJ5IiwiZm9nU3RhdGUiLCJwbGFjZUNvbGxpc2lvbkJveCIsInByb2plY3RBbmRHZXRQZXJzcGVjdGl2ZVJhdGlvIiwicGVyc3BlY3RpdmVSYXRpbyIsIm9jY2x1ZGVkIiwiaXNJbnNpZGVHcmlkIiwib2Zmc2NyZWVuIiwiaXNPZmZzY3JlZW4iLCJwbGFjZUNvbGxpc2lvbkNpcmNsZXMiLCJzaWduZWREaXN0YW5jZUZyb21DYW1lcmEiLCJjb2xsaXNpb25EZXRlY3RlZCIsInF1ZXJ5UmVuZGVyZWRTeW1ib2xzIiwiYnVja2V0SW5zdGFuY2VJZCIsImluc2VydENvbGxpc2lvbkJveCIsImNvbGxpc2lvbkdyb3VwSUQiLCJpbnNlcnRDb2xsaXNpb25DaXJjbGVzIiwiY2FsY3VsYXRlRm9nVGlsZU1hdHJpeCIsImdldENhbWVyYVRvQ2VudGVyRGlzdGFuY2UiLCJnZXRWaWV3cG9ydE1hdHJpeCIsIm9wYWNpdHkiLCJwbGFjZWQiLCJjbGlwcGVkIiwic2tpcEZhZGUiLCJpbnZQcm9qTWF0cml4Iiwidmlld3BvcnRNYXRyaXgiLCJjcm9zc1NvdXJjZUNvbGxpc2lvbnMiLCJtYXhHcm91cElEIiwiY29sbGlzaW9uR3JvdXBzIiwiSUQiLCJwcmVkaWNhdGUiLCJjb2xsaXNpb25JbmRleCIsInBsYWNlbWVudHMiLCJvcGFjaXRpZXMiLCJ2YXJpYWJsZU9mZnNldHMiLCJzdGFsZSIsImNvbW1pdFRpbWUiLCJyZXRhaW5lZFF1ZXJ5RGF0YSIsImNvbGxpc2lvbkNpcmNsZUFycmF5cyIsInByZXZQbGFjZW1lbnQiLCJwbGFjZWRPcmllbnRhdGlvbnMiLCJnZXRCdWNrZXRQYXJ0cyIsImNhbGN1bGF0ZVBpeGVsc1RvVGlsZVVuaXRzTWF0cml4IiwidW53cmFwcGVkVGlsZUlEIiwiYnVja2V0IiwicG9zTWF0cml4IiwidGV4dExhYmVsUGxhbmVNYXRyaXgiLCJsYWJlbFRvU2NyZWVuTWF0cml4IiwiY2xpcHBpbmdEYXRhIiwidGV4dFBpeGVsUmF0aW8iLCJwYXJ0aWFsbHlFdmFsdWF0ZWRUZXh0U2l6ZSIsInBhcnRpYWxseUV2YWx1YXRlZEljb25TaXplIiwiY29sbGlzaW9uR3JvdXAiLCJhdHRlbXB0QW5jaG9yUGxhY2VtZW50IiwidGV4dE9mZnNldCIsInRleHRTY2FsZSIsInByZXZBbmNob3IiLCJtYXJrVXNlZEp1c3RpZmljYXRpb24iLCJtYXJrVXNlZE9yaWVudGF0aW9uIiwicGxhY2VkR2x5cGhCb3hlcyIsInBsYWNlTGF5ZXJCdWNrZXRQYXJ0IiwiY2FsY3VsYXRlRGlzdGFuY2VUaWxlRGF0YSIsInVuc2hpZnQiLCJjb21taXQiLCJ6b29tQXRMYXN0UmVjZW5jeUNoZWNrIiwicHJldlpvb21BZGp1c3RtZW50Iiwiem9vbUFkanVzdG1lbnQiLCJzeW1ib2xGYWRlQ2hhbmdlIiwibGFzdFBsYWNlbWVudENoYW5nZVRpbWUiLCJ1cGRhdGVMYXllck9wYWNpdGllcyIsInVwZGF0ZUJ1Y2tldE9wYWNpdGllcyIsImhhc1RyYW5zaXRpb25zIiwic3RpbGxSZWNlbnQiLCJzZXRTdGFsZSIsIl9zb3J0QWNyb3NzVGlsZXMiLCJfY3VycmVudFRpbGVJbmRleCIsIl9jdXJyZW50UGFydEluZGV4IiwiX3NlZW5Dcm9zc1RpbGVJRHMiLCJfYnVja2V0UGFydHMiLCJjb250aW51ZVBsYWNlbWVudCIsInBsYWNlbWVudCIsIl9jdXJyZW50UGxhY2VtZW50SW5kZXgiLCJfZm9yY2VGdWxsUGxhY2VtZW50IiwiX3Nob3dDb2xsaXNpb25Cb3hlcyIsIl9kb25lIiwiaXNEb25lIiwiX2luUHJvZ3Jlc3NMYXllciIsImNyb3NzVGlsZUlEcyIsImZpbmRNYXRjaGVzIiwibWF4Q3Jvc3NUaWxlSUQiLCJnZW5lcmF0ZSIsImluZGV4ZXMiLCJ1c2VkQ3Jvc3NUaWxlSURzIiwiYWRkQnVja2V0IiwicmVtb3ZlQnVja2V0Q3Jvc3NUaWxlSURzIiwicmVtb3ZlU3RhbGVCdWNrZXRzIiwibWF4QnVja2V0SW5zdGFuY2VJZCIsImJ1Y2tldHNJbkN1cnJlbnRQbGFjZW1lbnQiLCJwcnVuZVVudXNlZExheWVycyIsImdseXBoTWFuYWdlciIsImxvY2FsSWRlb2dyYXBoRm9udEZhbWlseSIsImNyb3NzVGlsZVN5bWJvbEluZGV4IiwiX251bTNETGF5ZXJzIiwiX251bVN5bWJvbExheWVycyIsIl9udW1DaXJjbGVMYXllcnMiLCJfc2VyaWFsaXplZExheWVycyIsIl9zb3VyY2VDYWNoZXMiLCJfb3RoZXJTb3VyY2VDYWNoZXMiLCJfc3ltYm9sU291cmNlQ2FjaGVzIiwiX2F2YWlsYWJsZUltYWdlcyIsIl9vcmRlciIsIl9kcmFwZWRGaXJzdE9yZGVyIiwiX21hcmtlcnNOZWVkVXBkYXRlIiwiX3Jlc2V0VXBkYXRlcyIsIl9ydGxUZXh0UGx1Z2luQ2FsbGJhY2siLCJzb3VyY2VJZCIsIl92YWxpZGF0ZUxheWVyIiwibG9hZFVSTCIsImFjY2Vzc1Rva2VuIiwiX3JlcXVlc3QiLCJfbG9hZCIsImxvYWRKU09OIiwibG9hZEVtcHR5IiwiX3VwZGF0ZUxheWVyQ291bnQiLCJzdHlsZXNoZWV0IiwiX3VwZGF0ZU1hcFByb2plY3Rpb24iLCJfY2hhbmdlZCIsIl9sb2FkU3ByaXRlIiwiX3NlcmlhbGl6ZUxheWVycyIsInRlcnJhaW5TZXRGb3JEcmFwaW5nT25seSIsIl9jcmVhdGVUZXJyYWluIiwiX2NyZWF0ZUZvZyIsIl91cGRhdGVEcmFwZUZpcnN0TGF5ZXJzIiwiYXBwbHlQcm9qZWN0aW9uVXBkYXRlIiwicHJvamVjdGlvbk9wdGlvbnMiLCJnZXRUZXJyYWluIiwic2V0VGVycmFpbkZvckRyYXBpbmciLCJfdXNlRXhwbGljaXRQcm9qZWN0aW9uIiwiX3ByaW9yaXRpemVBbmRVcGRhdGVQcm9qZWN0aW9uIiwiX3Nwcml0ZVJlcXVlc3QiLCJfdXBkYXRlZFNvdXJjZXMiLCJfb3B0aW1pemVGb3JUZXJyYWluIiwiX2NoZWNrTG9hZGVkIiwiX3VwZGF0ZWRMYXllcnMiLCJfcmVtb3ZlZExheWVycyIsIl91cGRhdGVXb3JrZXJMYXllcnMiLCJfcmVsb2FkU291cmNlIiwiX3VwZGF0ZVRpbGVzRm9yQ2hhbmdlZEltYWdlcyIsIl91cGRhdGVkUGFpbnRQcm9wcyIsIl9nZXRMYXllclNvdXJjZUNhY2hlIiwiX3VwZGF0ZU1hcmtlcnNPcGFjaXR5IiwiX2NoYW5nZWRJbWFnZXMiLCJfYWZ0ZXJJbWFnZVVwZGF0ZWQiLCJpc1NvdXJjZUxvYWRlZCIsIl9pc1NvdXJjZUNhY2hlTG9hZGVkIiwiX2dldFNvdXJjZUNhY2hlcyIsIl9nZXRTb3VyY2VzIiwiX2xheWVyT3JkZXJDaGFuZ2VkIiwiX3VwZGF0ZUxheWVyIiwibW92ZUxheWVyIiwiaGFzTGF5ZXJUeXBlIiwiZ2V0RmlsdGVyIiwiX2ZsYXR0ZW5BbmRTb3J0UmVuZGVyZWRGZWF0dXJlcyIsImhhczNETGF5ZXJzIiwiX3Nob3dRdWVyeUdlb21ldHJ5IiwiYWRkU291cmNlVHlwZSIsImdldFNvdXJjZVR5cGUiLCJzZXRTb3VyY2VUeXBlIiwid29ya2VyU291cmNlVVJMIiwiX3NldFRyYW5zaXRpb25QYXJhbWV0ZXJzIiwiX2ZvcmNlM0RMYXllclVwZGF0ZSIsIl9tYXJrZXJzIiwiX3JlcXVlc3REb21UYXNrIiwiX2V2YWx1YXRlT3BhY2l0eSIsImdldEZvZyIsIl9mb3JjZVN5bWJvbExheWVyVXBkYXRlIiwiX3JlbW92ZSIsIl9yZWxvYWRTb3VyY2VzIiwiX3VwZGF0ZVNvdXJjZXMiLCJfZ2VuZXJhdGVDb2xsaXNpb25Cb3hlcyIsIl91cGRhdGVQbGFjZW1lbnQiLCJwYXVzZWFibGVQbGFjZW1lbnQiLCJfcmVsZWFzZVN5bWJvbEZhZGVUaWxlcyIsImdldFJlc291cmNlIiwiaGFzU3ltYm9sTGF5ZXJzIiwiaGFzQ2lyY2xlTGF5ZXJzIiwiX2NsZWFyV29ya2VyQ2FjaGVzIiwiYmFja2dyb3VuZFBhdHRlcm4iLCJjbGlwcGluZ01hc2siLCJoZWF0bWFwVGV4dHVyZSIsImNvbGxpc2lvbkJveCIsImNvbGxpc2lvbkNpcmNsZSIsImZpbGxPdXRsaW5lIiwiZmlsbE91dGxpbmVQYXR0ZXJuIiwiZmlsbFBhdHRlcm4iLCJmaWxsRXh0cnVzaW9uIiwiZmlsbEV4dHJ1c2lvblBhdHRlcm4iLCJoaWxsc2hhZGVQcmVwYXJlIiwibGluZVBhdHRlcm4iLCJzeW1ib2xJY29uIiwic3ltYm9sU0RGIiwic3ltYm9sVGV4dEFuZEljb24iLCJ0ZXJyYWluUmFzdGVyIiwidGVycmFpbkRlcHRoIiwic2t5Ym94Iiwic2t5Ym94R3JhZGllbnQiLCJza3lib3hDYXB0dXJlIiwiZ2xvYmVSYXN0ZXIiLCJnbG9iZUF0bW9zcGhlcmUiLCJmcmFnbWVudFNvdXJjZSIsInZlcnRleFNvdXJjZSIsInN0YXRpY0F0dHJpYnV0ZXMiLCJ1c2VkRGVmaW5lcyIsImJvdW5kUHJvZ3JhbSIsImJvdW5kTGF5b3V0VmVydGV4QnVmZmVyIiwiYm91bmRQYWludFZlcnRleEJ1ZmZlcnMiLCJib3VuZEluZGV4QnVmZmVyIiwiYm91bmRWZXJ0ZXhPZmZzZXQiLCJib3VuZER5bmFtaWNWZXJ0ZXhCdWZmZXJzIiwiZnJlc2hCaW5kIiwibnVtQXR0cmlidXRlcyIsImN1cnJlbnROdW1BdHRyaWJ1dGVzIiwiZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IiwicHJlcGFyZURyYXdUaWxlIiwibW92aW5nIiwidV9tYXRyaXgiLCJ1X2ltYWdlIiwidV9sYXRyYW5nZSIsInVfbGlnaHQiLCJ1X3NoYWRvdyIsInVfaGlnaGxpZ2h0IiwidV9hY2NlbnQiLCJwcmVwYXJlRHJhd1Byb2dyYW0iLCJ0aWxlQm91bmRzQnVmZmVyIiwidGlsZUJvdW5kc0luZGV4QnVmZmVyIiwidGlsZUJvdW5kc1NlZ21lbnRzIiwiZ2V0VGlsZUJvdW5kc0J1ZmZlcnMiLCJUUklBTkdMRVMiLCJURVhUVVJFMSIsImdldE1lcmNhdG9yVGlsZUJvdW5kc0J1ZmZlcnMiLCJ1X2RpbWVuc2lvbiIsInVfem9vbSIsInVfdW5wYWNrIiwidV9pbWFnZTAiLCJ1X3NraXJ0X2hlaWdodCIsInVfcHJval9tYXRyaXgiLCJ1X2dsb2JlX21hdHJpeCIsInVfbm9ybWFsaXplX21hdHJpeCIsInVfbWVyY19tYXRyaXgiLCJ1X3pvb21fdHJhbnNpdGlvbiIsInVfbWVyY19jZW50ZXIiLCJ1X2ZydXN0dW1fdGwiLCJ1X2ZydXN0dW1fdHIiLCJ1X2ZydXN0dW1fYnIiLCJ1X2ZydXN0dW1fYmwiLCJ1X2dsb2JlX3BvcyIsInVfZ2xvYmVfcmFkaXVzIiwidV92aWV3cG9ydCIsInVfZ3JpZF9tYXRyaXgiLCJvcGVyYXRpb25zIiwibmV3TW9ycGhpbmciLCJxdWV1ZWQiLCJwaGFzZSIsImdldE1vcnBoVmFsdWVzRm9yUHJveHkiLCJfdmFsaWRPcCIsIl9uZXh0T3AiLCJjb3ZlcmluZ1pvb21MZXZlbCIsIm1peCIsInJlbmRlckNhY2hlIiwicmVuZGVyQ2FjaGVQb29sIiwicHJveHlDYWNoZWRGQk8iLCJmcmVlRkJPIiwiZGVhbGxvY1JlbmRlckNhY2hlIiwiZmIiLCJwcm94eVRpbGVLZXkiLCJ0ZXJyYWluVGlsZUZvclRpbGUiLCJwcmV2VGVycmFpblRpbGVGb3JUaWxlIiwiZ3JpZEJ1ZmZlciIsImdyaWRJbmRleEJ1ZmZlciIsImdyaWRTZWdtZW50cyIsImdyaWROb1NraXJ0U2VnbWVudHMiLCJwcm94eUNvb3JkcyIsInByb3hpZWRDb29yZHMiLCJfdmlzaWJsZURlbVRpbGVzIiwiX2RyYXBlZFJlbmRlckJhdGNoZXMiLCJfc291cmNlVGlsZXNPdmVybGFwIiwicHJveHlTb3VyY2VDYWNoZSIsIm9ydGhvTWF0cml4IiwiX292ZXJsYXBTdGVuY2lsTW9kZSIsIkdFUVVBTCIsIlJFUExBQ0UiLCJfcHJldmlvdXNab29tIiwicG9vbCIsIl9maW5kQ292ZXJpbmdUaWxlQ2FjaGUiLCJfdGlsZXNEaXJ0eSIsIl91c2VWZXJ0ZXhNb3JwaGluZyIsIl9leGFnZ2VyYXRpb24iLCJfbW9ja1NvdXJjZUNhY2hlIiwiX29uU3R5bGVEYXRhRXZlbnQiLCJfY2hlY2tSZW5kZXJDYWNoZUVmZmljaWVuY3kiLCJfc3R5bGUiLCJfY2xlYXJMaW5lTGF5ZXJzRnJvbVJlbmRlckNhY2hlIiwic291cmNlQ2FjaGUiLCJfaW5pdGlhbGl6aW5nIiwiX2VtcHR5REVNVGV4dHVyZURpcnR5IiwiX2Rpc2FibGUiLCJyZW5kZXJDYWNoZUVmZmljaWVuY3kiLCJlZmZpY2llbmN5IiwiZmlyc3RVbmRyYXBlZExheWVyIiwiX2ludmFsaWRhdGVSZW5kZXJDYWNoZSIsIl9zaGFyZWREZXB0aFN0ZW5jaWwiLCJfZW1wdHlERU1UZXh0dXJlIiwiX2VtcHR5RGVwdGhCdWZmZXJUZXh0dXJlIiwiX2RlcHRoRkJPIiwiX2RlcHRoVGV4dHVyZSIsImRyYXBlQnVmZmVyU2l6ZSIsInVzZVZlcnRleE1vcnBoaW5nIiwidXBkYXRlVGlsZUJpbmRpbmciLCJwcm94eVRvU291cmNlIiwiX3NldHVwUHJveGllZENvb3Jkc0Zvck9ydGhvIiwiX2Fzc2lnblRlcnJhaW5UaWxlcyIsIl9wcmVwYXJlREVNVGV4dHVyZXMiLCJfc2V0dXBEcmFwZWRSZW5kZXJCYXRjaGVzIiwiX2luaXRGQk9Qb29sIiwiX3NldHVwUmVuZGVyQ2FjaGUiLCJyZW5kZXJpbmdUb1RleHR1cmUiLCJfdXBkYXRlVGltZXN0YW1wIiwiX2ZpbmRUaWxlQ292ZXJpbmdUaWxlSUQiLCJfcHJlcGFyZURlbVRpbGVVbmlmb3JtcyIsImVtcHR5REVNVGV4dHVyZSIsIl91cGRhdGVFbXB0eURFTVRleHR1cmUiLCJlbXB0eURlcHRoQnVmZmVyVGV4dHVyZSIsIl9nZXRMb2FkZWRBcmVhTWluaW11bSIsIlRFWFRVUkUyIiwic2V0dXBFbGV2YXRpb25EcmF3IiwidV9kZW0iLCJ1X2RlbV9wcmV2IiwidV9kZW1fdW5wYWNrIiwidV9kZW1fdGwiLCJ1X2RlbV90bF9wcmV2IiwidV9kZW1fc2NhbGUiLCJ1X2RlbV9zY2FsZV9wcmV2IiwidV9kZW1fc2l6ZSIsInVfZGVtX2xlcnAiLCJ1X2RlcHRoIiwidV9kZXB0aF9zaXplX2ludiIsInVfZXhhZ2dlcmF0aW9uIiwibW9ycGhpbmciLCJzcmNEZW1UaWxlIiwiZHN0RGVtVGlsZSIsIlRFWFRVUkU0IiwiVEVYVFVSRTMiLCJ1c2VEZXB0aEZvck9jY2x1c2lvbiIsInVzZU1ldGVyVG9EZW0iLCJ1X21ldGVyX3RvX2RlbSIsImxhYmVsUGxhbmVNYXRyaXhJbnYiLCJ1X2xhYmVsX3BsYW5lX21hdHJpeF9pbnYiLCJzZXRUZXJyYWluVW5pZm9ybVZhbHVlcyIsImdsb2JlVW5pZm9ybVZhbHVlcyIsInVzZURlbm9ybWFsaXplZFVwVmVjdG9yU2NhbGUiLCJzZXRHbG9iZVVuaWZvcm1WYWx1ZXMiLCJ1X3RpbGVfdGxfdXAiLCJ1X3RpbGVfdHJfdXAiLCJ1X3RpbGVfYnJfdXAiLCJ1X3RpbGVfYmxfdXAiLCJ1X3RpbGVfdXBfc2NhbGUiLCJyZW5kZXJUb0JhY2tCdWZmZXIiLCJncHVUaW1pbmdEZWZlcnJlZFJlbmRlclN0YXJ0Iiwic2hvd1RlcnJhaW5XaXJlZnJhbWUiLCJjb2xvck1vZGVGb3JSZW5kZXJQYXNzIiwiTEVRVUFMIiwiZGVwdGhSYW5nZUZvcjNEIiwiZ2xvYmVTaGFyZWRCdWZmZXJzIiwiTElORVMiLCJmcnVzdHVtQ29ybmVycyIsImdsb2JlQ2VudGVySW5WaWV3U3BhY2UiLCJnbG9iZVJhZGl1cyIsImdldFdpcmVmYW1lQnVmZmVyIiwicmVuZGVyV29ybGRDb3BpZXMiLCJncHVUaW1pbmdEZWZlcnJlZFJlbmRlckVuZCIsInJlbmRlckJhdGNoIiwicmVuZGVyZWRUb1RpbGUiLCJfc2V0dXBTdGVuY2lsIiwicmVuZGVyTGF5ZXIiLCJwb3N0UmVuZGVyIiwibWlueCIsIm1pbnkiLCJtYXh4IiwibWF4eSIsIl9jcmVhdGVGQk8iLCJERVBUSF9TVEVOQ0lMIiwiX3N0ZW5jaWxSZWYiLCJ0ZXhQYXJhbWV0ZXJmIiwiVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQiLCJfc2hvdWxkRGlzYWJsZVJlbmRlckNhY2hlIiwiX2NsZWFyUmFzdGVyTGF5ZXJzRnJvbVJlbmRlckNhY2hlIiwiX292ZXJsYXBTdGVuY2lsVHlwZSIsIkVRVUFMIiwiR1JFQVRFUiIsIl9yZW5kZXJUaWxlQ2xpcHBpbmdNYXNrcyIsImNsaXBPck1hc2tPdmVybGFwU3RlbmNpbFR5cGUiLCJzdGVuY2lsTW9kZUZvclJUVE92ZXJsYXAiLCJfdGlsZUNsaXBwaW5nTWFza0lEcyIsInRpbGVFeHRlbnRCdWZmZXIiLCJxdWFkVHJpYW5nbGVJbmRleEJ1ZmZlciIsInRpbGVFeHRlbnRTZWdtZW50cyIsImRyYXdEZXB0aCIsIkRFUFRIX0NPTVBPTkVOVDE2IiwiX3NldHVwUHJveGllZENvb3Jkc0ZvckltYWdlU291cmNlIiwiX2NyZWF0ZVByb3hpZWRJZCIsIndpcmVmcmFtZVNlZ21lbnRzIiwid2lyZWZyYW1lSW5kZXhCdWZmZXIiLCJjcmVhdGVQcm9ncmFtIiwiRlJBR01FTlRfU0hBREVSIiwiZmFpbGVkVG9DcmVhdGUiLCJhdHRhY2hTaGFkZXIiLCJiaW5kQXR0cmliTG9jYXRpb24iLCJsaW5rUHJvZ3JhbSIsImRlbGV0ZVNoYWRlciIsImZpeGVkVW5pZm9ybXMiLCJiaW5kZXJVbmlmb3JtcyIsInRlcnJhaW5Vbmlmb3JtcyIsImdsb2JlVW5pZm9ybXMiLCJmb2dVbmlmb3JtcyIsInVfZm9nX21hdHJpeCIsInVfZm9nX3JhbmdlIiwidV9mb2dfY29sb3IiLCJ1X2ZvZ19ob3Jpem9uX2JsZW5kIiwidV9mb2dfdGVtcG9yYWxfb2Zmc2V0IiwidV9nbG9iZV90cmFuc2l0aW9uIiwidV9pc19nbG9iZSIsInNldEZvZ1VuaWZvcm1WYWx1ZXMiLCJMSU5FX1NUUklQIiwiZHJhd0VsZW1lbnRzIiwiVU5TSUdORURfU0hPUlQiLCJ1X3RleHNpemUiLCJ1X3RpbGVfdW5pdHNfdG9fcGl4ZWxzIiwidV9waXhlbF9jb29yZF91cHBlciIsInVfcGl4ZWxfY29vcmRfbG93ZXIiLCJ1X2xpZ2h0cG9zIiwidV9saWdodGludGVuc2l0eSIsInVfbGlnaHRjb2xvciIsInVfdmVydGljYWxfZ3JhZGllbnQiLCJ1X29wYWNpdHkiLCJ1X3RpbGVfaWQiLCJ1X2ludl9yb3RfbWF0cml4IiwidV91cF9kaXIiLCJ1X2hlaWdodF9saWZ0IiwidV9hbyIsInVfZWRnZV9yYWRpdXMiLCJ1X2hlaWdodF9mYWN0b3IiLCJ1X3dvcmxkIiwicGl4ZWxzVG9HTFVuaXRzIiwidV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlIiwidHJhbnNsYXRlUG9zTWF0cml4IiwidV9kZXZpY2VfcGl4ZWxfcmF0aW8iLCJ1X2V4dHJ1ZGVfc2NhbGUiLCJ1X2NvbG9yIiwidV9vdmVybGF5IiwidV9vdmVybGF5X3NjYWxlIiwidV9pbnRlbnNpdHkiLCJ1X3BpeGVsc190b190aWxlX3VuaXRzIiwidV91bml0c190b19waXhlbHMiLCJ1X2Rhc2hfaW1hZ2UiLCJ1X2dyYWRpZW50X2ltYWdlIiwidV9pbWFnZV9oZWlnaHQiLCJ1X2FscGhhX2Rpc2NhcmRfdGhyZXNob2xkIiwidV90cmltX29mZnNldCIsInVfdGxfcGFyZW50IiwidV9zY2FsZV9wYXJlbnQiLCJ1X2ZhZGVfdCIsInVfaW1hZ2UxIiwidV9icmlnaHRuZXNzX2xvdyIsInVfYnJpZ2h0bmVzc19oaWdoIiwidV9zYXR1cmF0aW9uX2ZhY3RvciIsInVfY29udHJhc3RfZmFjdG9yIiwidV9zcGluX3dlaWdodHMiLCJ1X3BlcnNwZWN0aXZlX3RyYW5zZm9ybSIsInVfaXNfc2l6ZV96b29tX2NvbnN0YW50IiwidV9pc19zaXplX2ZlYXR1cmVfY29uc3RhbnQiLCJ1X3NpemVfdCIsInVfc2l6ZSIsInVfcm90YXRlX3N5bWJvbCIsInVfYXNwZWN0X3JhdGlvIiwidV9mYWRlX2NoYW5nZSIsInVfbGFiZWxfcGxhbmVfbWF0cml4IiwidV9jb29yZF9tYXRyaXgiLCJ1X2lzX3RleHQiLCJ1X3BpdGNoX3dpdGhfbWFwIiwidV90ZXh0dXJlIiwidV9jYW1lcmFfZm9yd2FyZCIsInVfZWNlZl9vcmlnaW4iLCJ1X3RpbGVfbWF0cml4IiwidV91cF92ZWN0b3IiLCJ1X2dhbW1hX3NjYWxlIiwidV9pc19oYWxvIiwidV90ZXhzaXplX2ljb24iLCJ1X3RleHR1cmVfaWNvbiIsInVfcGF0dGVybl90bCIsInVfcGF0dGVybl9iciIsInVfcGF0dGVybl9zaXplIiwidV9pbnZfbWF0cml4IiwidV92aWV3cG9ydF9zaXplIiwidV9jb2xvcl9yYW1wIiwidV9zdW5fZGlyZWN0aW9uIiwidV9jdWJlbWFwIiwidV90ZW1wb3JhbF9vZmZzZXQiLCJ1X2NlbnRlcl9kaXJlY3Rpb24iLCJ1X3JhZGl1cyIsInVfbWF0cml4XzNmIiwidV9zdW5faW50ZW5zaXR5IiwidV9jb2xvcl90aW50X3IiLCJ1X2NvbG9yX3RpbnRfbSIsInVfbHVtaW5hbmNlIiwidV9ob3Jpem9uIiwidV90cmFuc2l0aW9uIiwidV9mYWRlb3V0X3JhbmdlIiwidV9oaWdoX2NvbG9yIiwidV9zcGFjZV9jb2xvciIsInVfc3Rhcl9pbnRlbnNpdHkiLCJ1X3N0YXJfZGVuc2l0eSIsInVfc3Rhcl9zaXplIiwidV9ob3Jpem9uX2FuZ2xlIiwidV9yb3RhdGlvbl9tYXRyaXgiLCJjaXJjbGVBcnJheSIsImNpcmNsZU9mZnNldCIsImludlRyYW5zZm9ybSIsImRlcHRoTW9kZUZvclN1YmxheWVyIiwibWVyY2F0b3JGcm9tVHJhbnNpdGlvbiIsImdldFdvcmxkVG9DYW1lcmEiLCJyb3RhdGluZyIsInpvb21pbmciLCJ0ZXJyYWluUmVuZGVyTW9kZUVsZXZhdGVkIiwiYnVmZmVycyIsInVuaWZvcm1WYWx1ZXMiLCJhdGxhc1RleHR1cmVJY29uIiwiYXRsYXNJbnRlcnBvbGF0aW9uIiwiYXRsYXNJbnRlcnBvbGF0aW9uSWNvbiIsImhhc0hhbG8iLCJzdGVuY2lsTW9kZUZvckNsaXBwaW5nIiwiYV9jZW50cm9pZF9wb3MiLCJ2ZXJ0ZXhBdHRyaWIyZiIsImVtcHR5VGV4dHVyZSIsImRlYnVnQnVmZmVyIiwiZGVidWdJbmRleEJ1ZmZlciIsImRlYnVnU2VnbWVudHMiLCJpbml0RGVidWdPdmVybGF5Q2FudmFzIiwiZGVidWdPdmVybGF5Q2FudmFzIiwic2hhZG93Q29sb3IiLCJzaGFkb3dCbHVyIiwibGluZVdpZHRoIiwic3Ryb2tlU3R5bGUiLCJzdHJva2VUZXh0IiwiZGVidWdPdmVybGF5VGV4dHVyZSIsIlNDSVNTT1JfVEVTVCIsInNjaXNzb3IiLCJ2ZXJ0ZXhBcnJheSIsInZlcnRleEJ1ZmZlciIsIlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCIsInJlbmRlclBhc3MiLCJwcm9ncmFtQ29uZmlndXJhdGlvbiIsIlJHQkExNkYiLCJIQUxGX0ZMT0FUIiwiSEFMRl9GTE9BVF9PRVMiLCJ2aWV3cG9ydEJ1ZmZlciIsInZpZXdwb3J0U2VnbWVudHMiLCJncmFkaWVudCIsIlJFUEVBVCIsIklOVkVSVCIsInJlc2V0U3RlbmNpbENsaXBwaW5nTWFza3MiLCJvcGFxdWVQYXNzRW5hYmxlZEZvckxheWVyIiwic3RlbmNpbE1vZGVGb3IzRCIsInN0ZW5jaWxDb25maWdGb3JPdmVybGFwIiwiaXNQYXR0ZXJuTWlzc2luZyIsImdldEJhY2tncm91bmRUaWxlcyIsImZyYW1lQ291bnRlciIsInNreWJveEZibyIsIlRFWFRVUkVfQ1VCRV9NQVAiLCJza3lib3hNYXRyaXgiLCJzZXRDdXN0b21MYXllckRlZmF1bHRzIiwicG9pbnRNZXJjIiwiY3VzdG9tTGF5ZXJNYXRyaXgiLCJnbG9iZVRvTWVyY2F0b3JNYXRyaXgiLCJwaXhlbHNQZXJNZXRlclJhdGlvIiwic2V0QmFzZVN0YXRlIiwiX3RpbGVUZXh0dXJlcyIsImZyYW1lQ29waWVzIiwibG9hZFRpbWVTdGFtcHMiLCJzZXR1cCIsIm51bVN1YmxheWVycyIsImRlcHRoRXBzaWxvbiIsImRlZmVycmVkUmVuZGVyR3B1VGltZVF1ZXJpZXMiLCJncHVUaW1lcnMiLCJfYmFja2dyb3VuZFRpbGVzIiwidXBkYXRlVGVycmFpbiIsIl91cGRhdGVGb2ciLCJmb2dDdWxsRGlzdFNxIiwiX3RlcnJhaW5FbmFibGVkIiwibWVyY2F0b3JCb3VuZHNCdWZmZXIiLCJtZXJjYXRvckJvdW5kc1NlZ21lbnRzIiwiaWRlbnRpdHlNYXQiLCJzdGVuY2lsQ2xlYXJNb2RlIiwiYXRtb3NwaGVyZUJ1ZmZlciIsIm5leHRTdGVuY2lsSUQiLCJjdXJyZW50U3RlbmNpbFNvdXJjZSIsIk5PVEVRVUFMIiwiX3Nob3dPdmVyZHJhd0luc3BlY3RvciIsIkNPTlNUQU5UX0NPTE9SIiwiY3VycmVudExheWVyIiwib3BhcXVlUGFzc0N1dG9mZiIsInNob3dPdmVyZHJhd0luc3BlY3RvciIsImlzSG9yaXpvblZpc2libGUiLCJzaG93VGlsZUJvdW5kYXJpZXMiLCJzaG93UXVlcnlHZW9tZXRyeSIsInNob3dUaWxlQUFCQnMiLCJzaG93UGFkZGluZyIsImNlbnRlclBvaW50IiwidGlsZUxvYWRlZCIsInNwZWVkSW5kZXhUaW1pbmciLCJzYXZlQ2FudmFzQ29weSIsImdwdVRpbWluZ1N0YXJ0IiwiaXNJbml0aWFsTG9hZCIsImdwdVRpbWluZ0VuZCIsImdwdVRpbWluZyIsImNhbGxzIiwiY3B1VGltZSIsImNyZWF0ZVF1ZXJ5RVhUIiwiYmVnaW5RdWVyeUVYVCIsIlRJTUVfRUxBUFNFRF9FWFQiLCJncHVUaW1pbmdEZWZlcnJlZFJlbmRlciIsImVuZFF1ZXJ5RVhUIiwiY29sbGVjdEdwdVRpbWVycyIsImNvbGxlY3REZWZlcnJlZFJlbmRlckdwdVF1ZXJpZXMiLCJxdWVyeUdwdVRpbWVycyIsImdldFF1ZXJ5T2JqZWN0RVhUIiwiUVVFUllfUkVTVUxUX0VYVCIsImRlbGV0ZVF1ZXJ5RVhUIiwicXVlcnlHcHVUaW1lRGVmZXJyZWRSZW5kZXIiLCJjdXJyZW50R2xvYmFsRGVmaW5lcyIsImNhY2hlIiwic2V0VGlsZUxvYWRlZEZsYWciLCJjYW52YXNDb3B5IiwiY29weVRleEltYWdlMkQiLCJnZXRDYW52YXNDb3BpZXNBbmRUaW1lc3RhbXBzIiwiY2FudmFzQ29waWVzIiwidGltZVN0YW1wcyIsImF2ZXJhZ2VFbGV2YXRpb25OZWVkc0Vhc2luZyIsIl9lbGV2YXRpb24iLCJjbGVhckJhY2tncm91bmRUaWxlcyIsIm9yaWVudGF0aW9uIiwiX3Bvc2l0aW9uIiwiX3JlbmRlcldvcmxkQ29waWVzIiwibG9va0F0UG9pbnQiLCJzZXRQaXRjaEJlYXJpbmciLCJtZXJjYXRvclBvc2l0aW9uIiwiX29yaWVudGF0aW9uIiwiZ2V0UGl0Y2hCZWFyaW5nIiwiZ2V0Q2FtZXJhVG9Xb3JsZCIsImdldFdvcmxkVG9DYW1lcmFQb3NpdGlvbiIsImdldENhbWVyYVRvQ2xpcFBlcnNwZWN0aXZlIiwiZ2V0RGlzdGFuY2VUb0VsZXZhdGlvbiIsIl9taW5ab29tIiwiX21heFpvb20iLCJfbWluUGl0Y2giLCJfbWF4UGl0Y2giLCJzZXRNYXhCb3VuZHMiLCJfbmVhcloiLCJfZmFyWiIsIl91bm1vZGlmaWVkIiwiX2VkZ2VJbnNldHMiLCJfcHJvak1hdHJpeENhY2hlIiwiX2FsaWduZWRQcm9qTWF0cml4Q2FjaGUiLCJfZm9nVGlsZU1hdHJpeENhY2hlIiwiX2Rpc3RhbmNlVGlsZURhdGFDYWNoZSIsIl9hdmVyYWdlRWxldmF0aW9uIiwiY2FtZXJhRWxldmF0aW9uUmVmZXJlbmNlIiwibWF4UGl0Y2giLCJfY2VudGVyQWx0aXR1ZGVWYWxpZEZvckV4YWdnZXJhdGlvbiIsIl9zZXRab29tIiwiX3NlYUxldmVsWm9vbSIsIl9jYWxjTWF0cmljZXMiLCJfdXBkYXRlQ2FtZXJhT25UZXJyYWluIiwiX2NvbnN0cmFpbkNhbWVyYSIsInNldE1lcmNhdG9yRnJvbVRyYW5zaXRpb24iLCJtaW5QaXRjaCIsImNhbWVyYVdvcmxkU2l6ZUZvckZvZyIsIkVQU0lMT04iLCJfd29ybGRTaXplRnJvbVpvb20iLCJfem9vbUZyb21NZXJjYXRvcloiLCJjYW1lcmFXb3JsZFNpemUiLCJjYW1lcmFQaXhlbHNQZXJNZXRlciIsImNlbnRlck9mZnNldCIsInJvdGF0aW9uIiwicm90YXRpb25NYXRyaXgiLCJhc3BlY3QiLCJmb3YiLCJmb3ZYIiwiZm92WSIsImF2ZXJhZ2VFbGV2YXRpb24iLCJfY2FsY0ZvZ01hdHJpY2VzIiwiX3pvb20iLCJfdXBkYXRlU2VhTGV2ZWxab29tIiwiX2NvbnN0cmFpbiIsInpvb21GcmFjdGlvbiIsInNhbXBsZUF2ZXJhZ2VFbGV2YXRpb24iLCJfdXBkYXRlWm9vbUZyb21FbGV2YXRpb24iLCJfbWVyY2F0b3JaZnJvbVpvb20iLCJjb21wdXRlWm9vbVJlbGF0aXZlVG8iLCJzZXRGcmVlQ2FtZXJhT3B0aW9ucyIsIl91cGRhdGVDYW1lcmFTdGF0ZSIsIl9zZXRDYW1lcmFPcmllbnRhdGlvbiIsIl9zZXRDYW1lcmFQb3NpdGlvbiIsIl91cGRhdGVTdGF0ZUZyb21DYW1lcmEiLCJyZWNlbnRlck9uVGVycmFpbiIsImlzUGFkZGluZ0VxdWFsIiwiaW50ZXJwb2xhdGVQYWRkaW5nIiwic2NhbGVab29tIiwiYWFiYiIsIm1pbloiLCJtYXhaIiwiZnVsbHlWaXNpYmxlIiwic2hvdWxkU3BsaXQiLCJfbWVyY2F0b3JTY2FsZVJhdGlvIiwiZGlzdGFuY2VTcSIsInVubW9kaWZpZWQiLCJzZXRMb2NhdGlvbkF0UG9pbnQiLCJzZXRMb2NhdGlvbiIsImNvb3JkaW5hdGVMb2NhdGlvbiIsImxvY2F0aW9uUG9pbnQzRCIsInBvaW50TG9jYXRpb24iLCJwb2ludExvY2F0aW9uM0QiLCJwMCIsInAxIiwic2NyZWVuUG9pbnRUb01lcmNhdG9yUmF5IiwiaXNQb2ludE9uU3VyZmFjZSIsIl9nZXRCb3VuZHNOb25SZWN0YW5ndWxhciIsIl9nZXRCb3VuZHNSZWN0YW5ndWxhciIsIl9nZXRCb3VuZHNSZWN0YW5ndWxhclRlcnJhaW4iLCJnZXRNYXhCb3VuZHMiLCJtYXhCb3VuZHMiLCJtaW5MYXQiLCJtYXhMYXQiLCJtaW5MbmciLCJtYXhMbmciLCJ3b3JsZE1pblgiLCJ3b3JsZE1heFgiLCJ3b3JsZE1pblkiLCJ3b3JsZE1heFkiLCJjYWxjdWxhdGVQb3NNYXRyaXgiLCJ3b3JsZFRvRm9nTWF0cml4IiwibWVyY2F0b3JNYXRyaXgiLCJhbGlnbmVkUHJvak1hdHJpeCIsIl9waXhlbHNUb1RpbGVVbml0c0NhY2hlIiwiaW52ZXJzZUFkanVzdG1lbnRNYXRyaXgiLCJfY29tcHV0ZUNhbWVyYVBvc2l0aW9uIiwiX21pbmltdW1IZWlnaHRPdmVyVGVycmFpbiIsIl9pc0NhbWVyYUNvbnN0cmFpbmVkIiwiX2NvbnN0cmFpbmluZyIsIl9taW5ab29tRm9yQm91bmRzIiwiX21heENhbWVyYUJvdW5kc0Rpc3RhbmNlIiwiX3RyYW5zbGF0ZUNhbWVyYUNvbnN0cmFpbmVkIiwiem9vbUZyb21NZXJjYXRvclpBZGp1c3RlZCIsImFueUNvcm5lck9mZkVkZ2UiLCJ6b29tRGVsdGFUb01vdmVtZW50IiwiZ2V0V29ybGRUb0NhbWVyYU1hdHJpeCIsIl9oYXNoTmFtZSIsIl91cGRhdGVIYXNoIiwiX3VwZGF0ZUhhc2hVbnRocm90dGxlZCIsImFkZFRvIiwiX29uSGFzaENoYW5nZSIsImdldEhhc2hTdHJpbmciLCJoYXNoIiwiX2dldEN1cnJlbnRIYXNoIiwiZHJhZ1JvdGF0ZSIsImlzRW5hYmxlZCIsInRvdWNoWm9vbVJvdGF0ZSIsImdldEJlYXJpbmciLCJqdW1wVG8iLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwiZ2V0Wm9vbSIsImdldFBpdGNoIiwibGluZWFyaXR5IiwiZWFzaW5nIiwiZGVjZWxlcmF0aW9uIiwibWF4U3BlZWQiLCJfaW5lcnRpYUJ1ZmZlciIsInJlY29yZCIsIl9kcmFpbkluZXJ0aWFCdWZmZXIiLCJzZXR0aW5ncyIsIl9vbk1vdmVFbmQiLCJfcHJlZmVyc1JlZHVjZWRNb3Rpb24iLCJwYW4iLCJwaW5jaEFyb3VuZCIsImFyb3VuZCIsInpvb21EZWx0YSIsImJlYXJpbmdEZWx0YSIsInBpdGNoRGVsdGEiLCJwYW5EZWx0YSIsImFtb3VudCIsIm5vTW92ZVN0YXJ0IiwiX2RlZmF1bHRQcmV2ZW50ZWQiLCJkZWZhdWx0UHJldmVudGVkIiwiZ2V0Q2FudmFzQ29udGFpbmVyIiwibG5nTGF0Iiwib3JpZ2luYWxFdmVudCIsImNoYW5nZWRUb3VjaGVzIiwidG91Y2hlcyIsImxuZ0xhdHMiLCJfY2xpY2tUb2xlcmFuY2UiLCJjbGlja1RvbGVyYW5jZSIsIl9tb3VzZWRvd25Qb3MiLCJ3aGVlbCIsIl9maXJlUHJldmVudGFibGUiLCJtb3VzZWRvd24iLCJtb3VzZXVwIiwicHJlY2xpY2siLCJjbGljayIsImRibGNsaWNrIiwibW91c2VvdmVyIiwibW91c2VvdXQiLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCIsImlzQWN0aXZlIiwiX2RlbGF5Q29udGV4dE1lbnUiLCJfY29udGV4dE1lbnVFdmVudCIsIm1vdXNlbW92ZSIsImNvbnRleHRtZW51IiwiX2VsIiwiX2NvbnRhaW5lciIsImdldENvbnRhaW5lciIsIl9lbmFibGVkIiwiX2FjdGl2ZSIsInNoaWZ0S2V5IiwiX3N0YXJ0UG9zIiwiX2xhc3RQb3MiLCJtb3VzZW1vdmVXaW5kb3ciLCJfYm94IiwiY2xhc3NMaXN0IiwiX2ZpcmVFdmVudCIsIm1vdXNldXBXaW5kb3ciLCJjYW1lcmFBbmltYXRpb24iLCJmaXRTY3JlZW5Db29yZGluYXRlcyIsImxpbmVhciIsImtleWRvd24iLCJrZXlDb2RlIiwiYmx1ciIsIm51bVRvdWNoZXMiLCJ0aW1lU3RhbXAiLCJzaW5nbGVUYXAiLCJudW1UYXBzIiwibGFzdFRpbWUiLCJsYXN0VGFwIiwiY291bnQiLCJfem9vbUluIiwiX3pvb21PdXQiLCJlYXNlVG8iLCJfbW92ZWQiLCJfbGFzdFBvaW50IiwiX2V2ZW50QnV0dG9uIiwiX2NvcnJlY3RCdXR0b24iLCJfbW92ZSIsImJ1dHRvbnMiLCJfbWluVG91Y2hlcyIsIl90b3VjaGVzIiwiX3N1bSIsIl9jYWxjdWxhdGVUcmFuc2Zvcm0iLCJfY29vcGVyYXRpdmVHZXN0dXJlcyIsImlzTW92aW5nIiwiX3Nob3dUb3VjaFBhbkJsb2NrZXJBbGVydCIsIl9hbGVydENvbnRhaW5lciIsIl9hbGVydFRpbWVyIiwiY2FuY2VsYWJsZSIsIl9hZGRUb3VjaFBhbkJsb2NrZXIiLCJ0ZXh0Q29udGVudCIsIl9nZXRVSVN0cmluZyIsImNsaWVudFdpZHRoIiwiX2ZpcnN0VHdvVG91Y2hlcyIsIl9zdGFydCIsIl9hcm91bmRDZW50ZXIiLCJfZGlzdGFuY2UiLCJfc3RhcnREaXN0YW5jZSIsIl9taW5EaWFtZXRlciIsIl9zdGFydFZlY3RvciIsIl92ZWN0b3IiLCJfaXNCZWxvd1RocmVzaG9sZCIsIl92YWxpZCIsIl9maXJzdE1vdmUiLCJfbGFzdFBvaW50cyIsImdlc3R1cmVCZWdpbnNWZXJ0aWNhbGx5IiwicGFuU3RlcCIsImJlYXJpbmdTdGVwIiwicGl0Y2hTdGVwIiwiX3BhblN0ZXAiLCJfYmVhcmluZ1N0ZXAiLCJfcGl0Y2hTdGVwIiwiX3JvdGF0aW9uRGlzYWJsZWQiLCJhbHRLZXkiLCJtZXRhS2V5IiwiZWFzZUlkIiwiZGlzYWJsZVJvdGF0aW9uIiwiZW5hYmxlUm90YXRpb24iLCJfaGFuZGxlciIsIl9kZWx0YSIsIl9kZWZhdWx0Wm9vbVJhdGUiLCJfd2hlZWxab29tUmF0ZSIsInNldFpvb21SYXRlIiwic2V0V2hlZWxab29tUmF0ZSIsIl9maW5pc2hUaW1lb3V0IiwiaXNab29taW5nIiwiX3pvb21pbmciLCJfYWRkU2Nyb2xsWm9vbUJsb2NrZXIiLCJfc2hvd0Jsb2NrZXJBbGVydCIsImRlbHRhTW9kZSIsIldoZWVsRXZlbnQiLCJET01fREVMVEFfTElORSIsImRlbHRhWSIsIl9sYXN0V2hlZWxFdmVudFRpbWUiLCJfdHlwZSIsIl9sYXN0VmFsdWUiLCJfdGltZW91dCIsIl9vblRpbWVvdXQiLCJfbGFzdFdoZWVsRXZlbnQiLCJfZnJhbWVJZCIsIl9hcm91bmRQb2ludCIsIl9hcm91bmRDb29yZCIsIl90YXJnZXRab29tIiwiX3RyaWdnZXJSZW5kZXJGcmFtZSIsInJlbmRlckZyYW1lIiwiX3ByZXZFYXNlIiwiX2Vhc2luZyIsIl9zdGFydFpvb20iLCJfc21vb3RoT3V0RWFzaW5nIiwibm9JbmVydGlhIiwibmVlZHNSZW5kZXJGcmFtZSIsImFyb3VuZENvb3JkIiwiX2NsaWNrWm9vbSIsIl90YXBab29tIiwiX3RhcCIsIl9zd2lwZVBvaW50IiwiX3N3aXBlVG91Y2giLCJfdGFwVGltZSIsIl9tb3VzZVBhbiIsIl90b3VjaFBhbiIsIl9pbmVydGlhT3B0aW9ucyIsIl9waXRjaFdpdGhSb3RhdGUiLCJwaXRjaFdpdGhSb3RhdGUiLCJfbW91c2VSb3RhdGUiLCJfbW91c2VQaXRjaCIsIl90b3VjaFpvb20iLCJfdG91Y2hSb3RhdGUiLCJfdGFwRHJhZ1pvb20iLCJkcmFnIiwiY29uc3RhbnRzIiwicHJvamVjdFJheSIsIl9oYW5kbGVycyIsIl9oYW5kbGVyc0J5SWQiLCJfY2hhbmdlcyIsIl9pbmVydGlhIiwiX2JlYXJpbmdTbmFwIiwiYmVhcmluZ1NuYXAiLCJfcHJldmlvdXNBY3RpdmVIYW5kbGVycyIsIl90cmFja2luZ0VsbGlwc29pZCIsIl9kcmFnT3JpZ2luIiwiX2V2ZW50c0luUHJvZ3Jlc3MiLCJfYWRkRGVmYXVsdEhhbmRsZXJzIiwicGFzc2l2ZSIsImNhcHR1cmUiLCJoYW5kbGVXaW5kb3dFdmVudCIsImhhbmRsZUV2ZW50IiwiYm94Wm9vbSIsImRvdWJsZUNsaWNrWm9vbSIsInRvdWNoUGl0Y2giLCJkcmFnUGFuIiwic2Nyb2xsWm9vbSIsImtleWJvYXJkIiwiaW50ZXJhY3RpdmUiLCJoYW5kbGVyTmFtZSIsImhhbmRsZXIiLCJhbGxvd2VkIiwic3RvcCIsIl91cGRhdGluZ0NhbWVyYSIsIl9maXJlRXZlbnRzIiwiaXNSb3RhdGluZyIsIl9pc0RyYWdnaW5nIiwiX2Jsb2NrZWRCeUFjdGl2ZSIsIl9nZXRNYXBUb3VjaGVzIiwibWVyZ2VIYW5kbGVyUmVzdWx0IiwiX3N0b3AiLCJfYXBwbHlDaGFuZ2VzIiwiX3VwZGF0ZU1hcFRyYW5zZm9ybSIsInJlc2V0Tm9ydGgiLCJfcmVxdWVzdEZyYW1lIiwiX3JlbmRlclRhc2tRdWV1ZSIsIl9tb3ZpbmciLCJfcmVzcGVjdFByZWZlcnNSZWR1Y2VkTW90aW9uIiwicmVzcGVjdFByZWZlcnNSZWR1Y2VkTW90aW9uIiwicGFuQnkiLCJwYW5UbyIsInpvb21UbyIsInpvb21JbiIsInpvb21PdXQiLCJnZXRQYWRkaW5nIiwic2V0UGFkZGluZyIsInJvdGF0ZVRvIiwicmVzZXROb3J0aFBpdGNoIiwic25hcFRvTm9ydGgiLCJjYW1lcmFGb3JCb3VuZHMiLCJfY2FtZXJhRm9yQm91bmRzIiwiX2V4dGVuZENhbWVyYU9wdGlvbnMiLCJfbWluaW11bUFBQkJGcnVzdHVtRGlzdGFuY2UiLCJfY2FtZXJhRm9yQm91bmRzT25HbG9iZSIsInF1ZXJ5VGVycmFpbkVsZXZhdGlvbiIsImV4YWdnZXJhdGVkIiwiZml0Qm91bmRzIiwiX2ZpdEludGVybmFsIiwiZmx5VG8iLCJwcmVsb2FkT25seSIsIl9ub3JtYWxpemVCZWFyaW5nIiwiX25vcm1hbGl6ZUNlbnRlciIsIl9yb3RhdGluZyIsIl9waXRjaGluZyIsIl9maXJlTW92ZUV2ZW50cyIsIl9lbXVsYXRlIiwicGl0Y2hpbmciLCJfcGFkZGluZyIsIl9lYXNlSWQiLCJfcHJlcGFyZUVhc2UiLCJfZWFzZSIsIl9hZnRlckVhc2UiLCJzcGVlZCIsImN1cnZlIiwic2NyZWVuU3BlZWQiLCJtYXhEdXJhdGlvbiIsImlzRWFzaW5nIiwiX2Vhc2VGcmFtZUlkIiwiX2NhbmNlbFJlbmRlckZyYW1lIiwiX29uRWFzZUZyYW1lIiwiX29uRWFzZUVuZCIsImhhbmRsZXJzIiwiX2Vhc2VTdGFydCIsIl9lYXNlT3B0aW9ucyIsIl9yZXF1ZXN0UmVuZGVyRnJhbWUiLCJfcmVuZGVyRnJhbWVDYWxsYmFjayIsImVzc2VudGlhbCIsImdldERlZmF1bHRQb3NpdGlvbiIsImNvbXBhY3QiLCJfY29tcGFjdEJ1dHRvbiIsIl90b2dnbGVBdHRyaWJ1dGlvbiIsIl9zZXRFbGVtZW50VGl0bGUiLCJfaW5uZXJDb250YWluZXIiLCJfdXBkYXRlQXR0cmlidXRpb25zIiwiX3VwZGF0ZUVkaXRMaW5rIiwiX3VwZGF0ZURhdGEiLCJfdXBkYXRlQ29tcGFjdCIsIl9hdHRyaWJIVE1MIiwicmVtb3ZlQXR0cmlidXRlIiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJfZWRpdExpbmsiLCJxdWVyeVNlbGVjdG9yIiwic3R5bGVPd25lciIsInN0eWxlSWQiLCJyZWwiLCJvd25lciIsImN1c3RvbUF0dHJpYnV0aW9uIiwiaW5uZXJIVE1MIiwiZGlzcGxheSIsIl91cGRhdGVMb2dvIiwiX2xvZ29SZXF1aXJlZCIsIm1hcGJveF9sb2dvIiwiX3F1ZXVlIiwiX2lkIiwiX2NsZWFyZWQiLCJfY3VycmVudGx5UnVubmluZyIsInJ1biIsIkhUTUxFbGVtZW50IiwiZWxlbWVudCIsIl9hbmNob3IiLCJfY29sb3IiLCJfZHJhZ2dhYmxlIiwiZHJhZ2dhYmxlIiwiX3JvdGF0aW9uIiwiX3JvdGF0aW9uQWxpZ25tZW50Iiwicm90YXRpb25BbGlnbm1lbnQiLCJfcGl0Y2hBbGlnbm1lbnQiLCJwaXRjaEFsaWdubWVudCIsIl91cGRhdGVNb3ZpbmciLCJfb2NjbHVkZWRPcGFjaXR5Iiwib2NjbHVkZWRPcGFjaXR5IiwiX2VsZW1lbnQiLCJfZGVmYXVsdE1hcmtlciIsInZpZXdCb3giLCJyeCIsImhhc0F0dHJpYnV0ZSIsIl9wb3B1cCIsIl9jbGVhckZhZGVUaW1lciIsIl9hZGRNYXJrZXIiLCJzZXREcmFnZ2FibGUiLCJfb25NYXBDbGljayIsIl9hZGREcmFnSGFuZGxlciIsIl9vblVwIiwiX29uTW92ZSIsIl9yZW1vdmVNYXJrZXIiLCJnZXRMbmdMYXQiLCJfbG5nTGF0Iiwic2V0TG5nTGF0IiwiZ2V0RWxlbWVudCIsInNldFBvcHVwIiwiX29uS2V5UHJlc3MiLCJfb3JpZ2luYWxUYWJJbmRleCIsIl9tYXJrZXIiLCJnZXRBdHRyaWJ1dGUiLCJjaGFyQ29kZSIsInRvZ2dsZVBvcHVwIiwiZ2V0UG9wdXAiLCJpc09wZW4iLCJfYmVoaW5kVGVycmFpbiIsIl9zaG93aW5nR2xvYmUiLCJfcXVlcnlGb2dPcGFjaXR5IiwicG9pbnRlckV2ZW50cyIsIl9zZXRPcGFjaXR5IiwiX2ZhZGVUaW1lciIsIl91cGRhdGVET00iLCJfY2FsY3VsYXRlWFlUcmFuc2Zvcm0iLCJfY2FsY3VsYXRlWlRyYW5zZm9ybSIsImdldFBpdGNoQWxpZ25tZW50IiwiZ2V0Um90YXRpb25BbGlnbm1lbnQiLCJfdXBkYXRlRnJhbWVJZCIsImdldE9mZnNldCIsInNldE9mZnNldCIsIl9wb2ludGVyZG93blBvcyIsIl9wb3NpdGlvbkRlbHRhIiwiaXNEcmFnZ2FibGUiLCJzZXRSb3RhdGlvbiIsImdldFJvdGF0aW9uIiwic2V0Um90YXRpb25BbGlnbm1lbnQiLCJzZXRQaXRjaEFsaWdubWVudCIsInNldE9jY2x1ZGVkT3BhY2l0eSIsImdldE9jY2x1ZGVkT3BhY2l0eSIsImNsb3NlQnV0dG9uIiwiY2xvc2VPbkNsaWNrIiwiZm9jdXNBZnRlck9wZW4iLCJtYXhXaWR0aCIsIl9zdGFydFRpbWUiLCJfZW5kVGltZSIsIl9lbmQiLCJjb29wZXJhdGl2ZUdlc3R1cmVzIiwicGVyZm9ybWFuY2VNZXRyaWNzQ29sbGVjdGlvbiIsImF0dHJpYnV0aW9uQ29udHJvbCIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsInRyYWNrUmVzaXplIiwib3B0aW1pemVGb3JUZXJyYWluIiwicmVmcmVzaEV4cGlyZWRUaWxlcyIsInNob3dDb21wYXNzIiwic2hvd1pvb20iLCJ2aXN1YWxpemVQaXRjaCIsIm1vdXNlUm90YXRlIiwibW91c2VQaXRjaCIsImRvd24iLCJtb3ZlIiwib2ZmVGVtcCIsInRhcmdldFRvdWNoZXMiLCJwb3NpdGlvbk9wdGlvbnMiLCJlbmFibGVIaWdoQWNjdXJhY3kiLCJtYXhpbXVtQWdlIiwiZml0Qm91bmRzT3B0aW9ucyIsInRyYWNrVXNlckxvY2F0aW9uIiwic2hvd0FjY3VyYWN5Q2lyY2xlIiwic2hvd1VzZXJMb2NhdGlvbiIsInNob3dVc2VySGVhZGluZyIsImtpbG9tZXRlciIsIm1ldGVyIiwibWlsZSIsImZvb3QiLCJfaW50ZXJhY3RpdmUiLCJfZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCIsIl9wcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJfdXNlV2ViR0wyIiwidXNlV2ViR0wyIiwiX3RyYWNrUmVzaXplIiwiX2lzSW5pdGlhbExvYWQiLCJfY3Jvc3NTb3VyY2VDb2xsaXNpb25zIiwiX3BhcnNlTGFuZ3VhZ2UiLCJsYW5ndWFnZSIsIndvcmxkdmlldyIsIl9kb21SZW5kZXJUYXNrUXVldWUiLCJfY29udHJvbHMiLCJfcG9wdXBzIiwiX21hcElkIiwiX2xvY2FsZSIsIl9wZXJmb3JtYW5jZU1ldHJpY3NDb2xsZWN0aW9uIiwiX2NvbnRhaW5lcldpZHRoIiwiX2NvbnRhaW5lckhlaWdodCIsIl9hdmVyYWdlRWxldmF0aW9uTGFzdFNhbXBsZWRBdCIsIl9hdmVyYWdlRWxldmF0aW9uRXhhZ2dlcmF0aW9uIiwiX2ludGVyYWN0aW9uUmFuZ2UiLCJfdmlzaWJpbGl0eUhpZGRlbiIsInRlc3RNb2RlIiwiY29udGFpbmVyIiwiY2hpbGROb2RlcyIsIl9zZXR1cENvbnRhaW5lciIsIl9zZXR1cFBhaW50ZXIiLCJfb25XaW5kb3dPbmxpbmUiLCJfb25XaW5kb3dSZXNpemUiLCJfb25WaXNpYmlsaXR5Q2hhbmdlIiwiX2xvY2FsRm9udEZhbWlseSIsIl9sb2NhbElkZW9ncmFwaEZvbnRGYW1pbHkiLCJfaGFzaCIsImFkZENvbnRyb2wiLCJfbG9nb0NvbnRyb2wiLCJsb2dvUG9zaXRpb24iLCJfZ2V0TWFwSWQiLCJfY29udHJvbFBvc2l0aW9ucyIsImluc2VydEJlZm9yZSIsImZpcnN0Q2hpbGQiLCJyZW1vdmVDb250cm9sIiwiaGFzQ29udHJvbCIsIl9jYW52YXNDb250YWluZXIiLCJfY2FudmFzIiwiX3VwZGF0ZUNvbnRhaW5lckRpbWVuc2lvbnMiLCJfcmVzaXplQ2FudmFzIiwic2V0TWluWm9vbSIsImdldE1pblpvb20iLCJzZXRNYXhab29tIiwiZ2V0TWF4Wm9vbSIsInNldE1pblBpdGNoIiwiZ2V0TWluUGl0Y2giLCJzZXRNYXhQaXRjaCIsImdldE1heFBpdGNoIiwiZ2V0UmVuZGVyV29ybGRDb3BpZXMiLCJzZXRSZW5kZXJXb3JsZENvcGllcyIsIl9mb3JjZU1hcmtlckFuZFBvcHVwVXBkYXRlIiwiZ2V0TGFuZ3VhZ2UiLCJzZXRMYW5ndWFnZSIsIl9zZXRMYW5ndWFnZSIsImdldFdvcmxkdmlldyIsInNldFdvcmxkdmlldyIsIl9sYXp5SW5pdEVtcHR5U3R5bGUiLCJfdXBkYXRlUHJvamVjdGlvblRyYW5zaXRpb24iLCJfdXBkYXRlUHJvamVjdGlvbiIsIl9jcmVhdGVEZWxlZ2F0ZWRMaXN0ZW5lciIsImxpc3RlbmVyIiwiZGVsZWdhdGVzIiwiX2RlbGVnYXRlZExpc3RlbmVycyIsImRpZmYiLCJfZGlmZlN0eWxlIiwiX3VwZGF0ZVN0eWxlIiwiX3VwZGF0ZVRlcnJhaW4iLCJfdXBkYXRlRGlmZiIsImdldFN0eWxlIiwiaXNTdHlsZUxvYWRlZCIsImFyZVRpbGVzTG9hZGVkIiwibG9hZEltYWdlIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsInBhcmVudEVsZW1lbnQiLCJfZGV0ZWN0TWlzc2luZ0NTUyIsIl9taXNzaW5nQ1NTQ2FuYXJ5IiwiZ2V0UHJvcGVydHlWYWx1ZSIsIl9jb250ZXh0TG9zdCIsIl9jb250ZXh0UmVzdG9yZWQiLCJfY29udHJvbENvbnRhaW5lciIsIl9vbk1hcFNjcm9sbCIsIl9hZGRQb3B1cCIsIl9yZW1vdmVQb3B1cCIsIl9mcmFtZSIsInNjcm9sbFRvcCIsInNjcm9sbExlZnQiLCJfc3R5bGVEaXJ0eSIsIl9zb3VyY2VzRGlydHkiLCJfcmVuZGVyIiwiX3JlbW92ZWQiLCJfdXBkYXRlQXZlcmFnZUVsZXZhdGlvbiIsIl9wbGFjZW1lbnREaXJ0eSIsImdwdVRpbWUiLCJkZXRhaWwiLCJsYXllclRpbWVzIiwiX3JlcGFpbnQiLCJfdHJpZ2dlckZyYW1lIiwiX2NhbGN1bGF0ZVNwZWVkSW5kZXgiLCJzcGVlZEluZGV4IiwiX2Z1bGx5TG9hZGVkIiwiX2F1dGhlbnRpY2F0ZSIsIl90cmFja1BvaW50ZXIiLCJyZWFkUGl4ZWxzIiwiX2NhbnZhc1BpeGVsQ29tcGFyaXNvbiIsImxvc2VDb250ZXh0IiwiX3JlbmRlck5leHRGcmFtZSIsInZpc2liaWxpdHlTdGF0ZSIsIl9zaG93VGlsZUJvdW5kYXJpZXMiLCJfc2hvd1RlcnJhaW5XaXJlZnJhbWUiLCJfc3BlZWRJbmRleFRpbWluZyIsIl9zaG93UGFkZGluZyIsInJlcGFpbnQiLCJfdmVydGljZXMiLCJfc2hvd1RpbGVBQUJCcyIsIl9zZXRDYWNoZUxpbWl0cyIsIk5hdmlnYXRpb25Db250cm9sIiwiX3pvb21JbkJ1dHRvbiIsIl9jcmVhdGVCdXR0b24iLCJfem9vbU91dEJ1dHRvbiIsIl9jb21wYXNzIiwiX2NvbXBhc3NJY29uIiwiX3VwZGF0ZVpvb21CdXR0b25zIiwiX3JvdGF0ZUNvbXBhc3NBcnJvdyIsIl9zZXRCdXR0b25UaXRsZSIsIkdlb2xvY2F0ZUNvbnRyb2wiLCJnZW9sb2NhdGlvbiIsIl91cGRhdGVNYXJrZXJSb3RhdGlvblRocm90dGxlZCIsIl91cGRhdGVNYXJrZXJSb3RhdGlvbiIsIl9udW1iZXJPZldhdGNoZXMiLCJfY2hlY2tHZW9sb2NhdGlvblN1cHBvcnQiLCJfc2V0dXBVSSIsIl9nZW9sb2NhdGlvbldhdGNoSUQiLCJjbGVhcldhdGNoIiwiX3VzZXJMb2NhdGlvbkRvdE1hcmtlciIsIl9hY2N1cmFjeUNpcmNsZU1hcmtlciIsIl9vblpvb20iLCJfbm9UaW1lb3V0IiwiX3N1cHBvcnRzR2VvbG9jYXRpb24iLCJwZXJtaXNzaW9ucyIsIl9pc091dE9mTWFwTWF4Qm91bmRzIiwibG9uZ2l0dWRlIiwibGF0aXR1ZGUiLCJfc2V0RXJyb3JTdGF0ZSIsIl93YXRjaFN0YXRlIiwiX2dlb2xvY2F0ZUJ1dHRvbiIsIl9vblN1Y2Nlc3MiLCJfdXBkYXRlTWFya2VyIiwiX2ZpbmlzaCIsIl9sYXN0S25vd25Qb3NpdGlvbiIsIl91cGRhdGVDYW1lcmEiLCJfZG90RWxlbWVudCIsImFjY3VyYWN5IiwiZ2VvbG9jYXRlU291cmNlIiwiX2FjY3VyYWN5IiwiX3VwZGF0ZUNpcmNsZVJhZGl1cyIsIl9jaXJjbGVFbGVtZW50IiwiX2hlYWRpbmciLCJfb25FcnJvciIsIl9jbGVhcldhdGNoIiwiX3RpbWVvdXRJZCIsIl9zZXR1cCIsIl9vbkRldmljZU9yaWVudGF0aW9uIiwid2Via2l0Q29tcGFzc0hlYWRpbmciLCJhYnNvbHV0ZSIsIndhdGNoUG9zaXRpb24iLCJfYWRkRGV2aWNlT3JpZW50YXRpb25MaXN0ZW5lciIsImdldEN1cnJlbnRQb3NpdGlvbiIsIkRldmljZU1vdGlvbkV2ZW50IiwicmVxdWVzdFBlcm1pc3Npb24iLCJEZXZpY2VPcmllbnRhdGlvbkV2ZW50IiwiQXR0cmlidXRpb25Db250cm9sIiwiU2NhbGVDb250cm9sIiwiX2lzTnVtYmVyRm9ybWF0U3VwcG9ydGVkIiwidW5pdERpc3BsYXkiLCJfc2V0U2NhbGUiLCJzZXRVbml0IiwiRnVsbHNjcmVlbkNvbnRyb2wiLCJfZnVsbHNjcmVlbiIsIl9mdWxsc2NyZWVuY2hhbmdlIiwiX2NoZWNrRnVsbHNjcmVlblN1cHBvcnQiLCJfY2hhbmdlSWNvbiIsImZ1bGxzY3JlZW5FbmFibGVkIiwid2Via2l0RnVsbHNjcmVlbkVuYWJsZWQiLCJfZnVsbHNjcmVlbkJ1dHRvbiIsIl91cGRhdGVUaXRsZSIsIl9vbkNsaWNrRnVsbHNjcmVlbiIsIl9nZXRUaXRsZSIsIl9pc0Z1bGxzY3JlZW4iLCJ0b2dnbGUiLCJleGl0RnVsbHNjcmVlbiIsIndlYmtpdENhbmNlbEZ1bGxTY3JlZW4iLCJyZXF1ZXN0RnVsbHNjcmVlbiIsIndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuIiwiUG9wdXAiLCJfY2xhc3NMaXN0IiwiX29uQ2xvc2UiLCJjbG9zZU9uTW92ZSIsIl9mb2N1c0ZpcnN0RWxlbWVudCIsIl9vbk1vdXNlRXZlbnQiLCJfY29udGVudCIsInRyYWNrUG9pbnRlciIsInNldFRleHQiLCJzZXRET01Db250ZW50IiwiY3JlYXRlVGV4dE5vZGUiLCJzZXRIVE1MIiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsImdldE1heFdpZHRoIiwic2V0TWF4V2lkdGgiLCJoYXNDaGlsZE5vZGVzIiwicmVtb3ZlQ2hpbGQiLCJfY2xvc2VCdXR0b24iLCJhZGRDbGFzc05hbWUiLCJfdXBkYXRlQ2xhc3NMaXN0IiwicmVtb3ZlQ2xhc3NOYW1lIiwidG9nZ2xlQ2xhc3NOYW1lIiwiX2dldEFuY2hvciIsIm9mZnNldEhlaWdodCIsIl90aXAiLCJmb2N1cyIsIk1hcmtlciIsIkZyZWVDYW1lcmFPcHRpb25zIiwicHJld2FybSIsImNsZWFyUHJld2FybWVkUmVzb3VyY2VzIiwiYmFzZUFwaVVybCIsIm1heFBhcmFsbGVsSW1hZ2VSZXF1ZXN0cyIsImNsZWFyU3RvcmFnZSJdLCJzb3VyY2VSb290IjoiIn0=