"),super.end(e);let t=this._hub.getClient();if(t&&t.emit&&t.emit("finishTransaction",this),!0!==this._sampled){n.DEBUG_BUILD&&(0,i.logger).log("[Tracing] Discarding transaction because its trace was not chosen to be sampled."),t&&t.recordDroppedEvent("sample_rate","transaction");return}let o=this.spanRecorder?this.spanRecorder.spans.filter(e=>e!==this&&(0,p.spanToJSON)(e).timestamp):[];if(this._trimEnd&&o.length>0){let e=o.map(e=>(0,p.spanToJSON)(e).timestamp).filter(Boolean);this._endTime=e.reduce((e,t)=>e>t?e:t)}let{scope:r,isolationScope:d}=(0,c.getCapturedScopesOnSpan)(this),{metadata:u}=this,{source:m}=u,g={contexts:{...this._contexts,trace:(0,p.spanToTraceContext)(this)},spans:o,start_timestamp:this._startTime,tags:this.tags,timestamp:this._endTime,transaction:this._name,type:"transaction",sdkProcessingMetadata:{...u,capturedSpanScope:r,capturedSpanIsolationScope:d,...(0,a.dropUndefinedKeys)({dynamicSamplingContext:(0,l.getDynamicSamplingContextFromSpan)(this)})},_metrics_summary:(0,s.getMetricSummaryJsonForSpan)(this),...m&&{transaction_info:{source:m}}};return Object.keys(this._measurements).length>0&&(n.DEBUG_BUILD&&(0,i.logger).log("[Measurements] Adding measurements to transaction",JSON.stringify(this._measurements,void 0,2)),g.measurements=this._measurements),n.DEBUG_BUILD&&(0,i.logger).log(`[Tracing] Finishing ${this.op} transaction: ${this._name}.`),g}}}),E("ibVDy",function(e,t){_(e.exports,"sampleTransaction",()=>p),_(e.exports,"isValidSampleRate",()=>l);var a=T("jVURz"),i=T("k2ErF"),n=T("2Mb7l"),o=T("9GA7E"),s=T("7z6ft"),r=T("iD1up");function p(e,t,a){let p;return(0,s.hasTracingEnabled)(t)?void 0!==e.sampled?e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,Number(e.sampled)):("function"==typeof t.tracesSampler?(p=t.tracesSampler(a),e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,Number(p))):void 0!==a.parentSampled?p=a.parentSampled:void 0!==t.tracesSampleRate?(p=t.tracesSampleRate,e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,Number(p))):(p=1,e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,p)),l(p))?p?(e.sampled=Math.random()1)||(n.DEBUG_BUILD&&(0,i.logger).warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${e}.`),!1)}}),E("fziSu",function(e,t){_(e.exports,"setMeasurement",()=>i);var a=T("050Gq");function i(e,t,i){let n=(0,a.getActiveTransaction)();n&&n.setMeasurement(e,t,i)}}),E("9TgzM",function(e,t){_(e.exports,"ServerRuntimeClient",()=>f);var a=T("51Ehf"),i=T("k2ErF"),n=T("kcLAY"),o=T("1gT0D"),s=T("5nomz"),r=T("gegwf"),p=T("2Mb7l"),l=T("deYUe"),d=T("iLRyb"),c=T("j1tEK"),u=T("jfDa9"),m=T("iD1up"),g=T("dwLFO"),h=T("cCmfn");class f extends s.BaseClient{constructor(e){(0,u.addTracingExtensions)(),super(e),e._experiments&&e._experiments.metricsAggregator&&(this.metricsAggregator=new d.MetricsAggregator(this))}eventFromException(e,t){return(0,n.resolvedSyncPromise)((0,a.eventFromUnknownInput)((0,l.getClient)(),this._options.stackParser,e,t))}eventFromMessage(e,t="info",i){return(0,n.resolvedSyncPromise)((0,a.eventFromMessage)(this._options.stackParser,e,t,i,this._options.attachStacktrace))}captureException(e,t,a){if(this._options.autoSessionTracking&&this._sessionFlusher&&a){let e=a.getRequestSession();e&&"ok"===e.status&&(e.status="errored")}return super.captureException(e,t,a)}captureEvent(e,t,a){if(this._options.autoSessionTracking&&this._sessionFlusher&&a&&"exception"===(e.type||"exception")&&e.exception&&e.exception.values&&e.exception.values.length>0){let e=a.getRequestSession();e&&"ok"===e.status&&(e.status="errored")}return super.captureEvent(e,t,a)}close(e){return this._sessionFlusher&&this._sessionFlusher.close(),super.close(e)}initSessionFlusher(){let{release:e,environment:t}=this._options;e?this._sessionFlusher=new c.SessionFlusher(this,{release:e,environment:t}):p.DEBUG_BUILD&&(0,i.logger).warn("Cannot initialise an instance of SessionFlusher if no release is provided!")}captureCheckIn(e,t,a){let n="checkInId"in e&&e.checkInId?e.checkInId:(0,o.uuid4)();if(!this._isEnabled())return p.DEBUG_BUILD&&(0,i.logger).warn("SDK not enabled, will not capture checkin."),n;let{release:s,environment:l,tunnel:d}=this.getOptions(),c={check_in_id:n,monitor_slug:e.monitorSlug,status:e.status,release:s,environment:l};"duration"in e&&(c.duration=e.duration),t&&(c.monitor_config={schedule:t.schedule,checkin_margin:t.checkinMargin,max_runtime:t.maxRuntime,timezone:t.timezone});let[u,m]=this._getTraceInfoFromScope(a);m&&(c.contexts={trace:m});let g=(0,r.createCheckInEnvelope)(c,u,this.getSdkMetadata(),d,this.getDsn());return p.DEBUG_BUILD&&(0,i.logger).info("Sending checkin:",e.monitorSlug,e.status),this._sendEnvelope(g),n}_captureRequestSession(){this._sessionFlusher?this._sessionFlusher.incrementSessionStatusCount():p.DEBUG_BUILD&&(0,i.logger).warn("Discarded request mode session because autoSessionTracking option was disabled")}_prepareEvent(e,t,a,i){return this._options.platform&&(e.platform=e.platform||this._options.platform),this._options.runtime&&(e.contexts={...e.contexts,runtime:(e.contexts||{}).runtime||this._options.runtime}),this._options.serverName&&(e.server_name=e.server_name||this._options.serverName),super._prepareEvent(e,t,a,i)}_getTraceInfoFromScope(e){if(!e)return[void 0,void 0];let t=e.getSpan();if(t)return[(0,g.getRootSpan)(t)?(0,h.getDynamicSamplingContextFromSpan)(t):void 0,(0,m.spanToTraceContext)(t)];let{traceId:a,spanId:i,parentSpanId:n,dsc:o}=e.getPropagationContext(),s={trace_id:a,span_id:i,parent_span_id:n};return o?[o,s]:[(0,h.getDynamicSamplingContextFromClient)(a,this,e),s]}}}),E("51Ehf",function(e,t){_(e.exports,"exceptionFromError",()=>r),_(e.exports,"eventFromUnknownInput",()=>p),_(e.exports,"eventFromMessage",()=>l);var a=T("jVURz"),i=T("1gT0D"),n=T("jD1jC"),o=T("e4IUz");function s(e,t){return e(t.stack||"",1)}function r(e,t){let a={type:t.name||t.constructor.name,value:t.message},i=s(e,t);return i.length&&(a.stacktrace={frames:i}),a}function p(e,t,s,p){let l;let d="function"==typeof e?e().getClient():e,c=s,u=p&&p.data&&p.data.mechanism||{handled:!0,type:"generic"};if(!(0,a.isError)(s)){if((0,a.isPlainObject)(s)){let e=d&&d.getOptions().normalizeDepth;l={__serialized__:(0,n.normalizeToSize)(s,e)};let t=function(e){if("name"in e&&"string"==typeof e.name){let t=`'${e.name}' captured as exception`;return"message"in e&&"string"==typeof e.message&&(t+=` with message '${e.message}'`),t}return"message"in e&&"string"==typeof e.message?e.message:`Object captured as exception with keys: ${(0,o.extractExceptionKeysForMessage)(e)}`}(s);(c=p&&p.syntheticException||Error(t)).message=t}else(c=p&&p.syntheticException||Error(s)).message=s;u.synthetic=!0}let m={exception:{values:[r(t,c)]}};return l&&(m.extra=l),(0,i.addExceptionTypeValue)(m,void 0,void 0),(0,i.addExceptionMechanism)(m,u),{...m,event_id:p&&p.event_id}}function l(e,t,i="info",n,o){let r={event_id:n&&n.event_id,level:i};if(o&&n&&n.syntheticException){let a=s(e,n.syntheticException);a.length&&(r.exception={values:[{value:t,stacktrace:{frames:a}}]})}if((0,a.isParameterizedString)(t)){let{__sentry_template_string__:e,__sentry_template_values__:a}=t;return r.logentry={message:e,params:a},r}return r.message=t,r}}),E("gegwf",function(e,t){_(e.exports,"createCheckInEnvelope",()=>o);var a=T("agl5x"),i=T("e4IUz"),n=T("8zTrc");function o(e,t,o,s,r){let p={sent_at:new Date().toISOString()};return o&&o.sdk&&(p.sdk={name:o.sdk.name,version:o.sdk.version}),s&&r&&(p.dsn=(0,n.dsnToString)(r)),t&&(p.trace=(0,i.dropUndefinedKeys)(t)),(0,a.createEnvelope)(p,[[{type:"check_in"},e]])}}),E("iLRyb",function(e,t){_(e.exports,"MetricsAggregator",()=>r);var a=T("iYy7D"),i=T("3SIMf"),n=T("6DYvy"),o=T("6CIba"),s=T("duvvp");class r{constructor(e){this._client=e,this._buckets=new Map,this._bucketsTotalWeight=0,this._interval=setInterval(()=>this._flush(),i.DEFAULT_FLUSH_INTERVAL),this._flushShift=Math.floor(Math.random()*i.DEFAULT_FLUSH_INTERVAL/1e3),this._forceFlush=!1}add(e,t,r,p="none",l={},d=(0,a.timestampInSeconds)()){let c=Math.floor(d),u=t.replace(i.NAME_AND_TAG_KEY_NORMALIZATION_REGEX,"_"),m=(0,s.sanitizeTags)(l),g=(0,s.getBucketKey)(e,u,p,m),h=this._buckets.get(g),f=h&&e===i.SET_METRIC_TYPE?h.metric.weight:0;h?(h.metric.add(r),h.timestamp=i.MAX_WEIGHT&&this.flush()}flush(){this._forceFlush=!0,this._flush()}close(){this._forceFlush=!0,clearInterval(this._interval),this._flush()}_flush(){if(this._forceFlush){this._forceFlush=!1,this._bucketsTotalWeight=0,this._captureMetrics(this._buckets),this._buckets.clear();return}let e=Math.floor((0,a.timestampInSeconds)())-i.DEFAULT_FLUSH_INTERVAL/1e3-this._flushShift,t=new Map;for(let[a,i]of this._buckets)i.timestamp<=e&&(t.set(a,i),this._bucketsTotalWeight-=i.metric.weight);for(let[e]of t)this._buckets.delete(e);this._captureMetrics(t)}_captureMetrics(e){if(e.size>0&&this._client.captureAggregateMetrics){let t=Array.from(e).map(([,e])=>e);this._client.captureAggregateMetrics(t)}}}}),E("6DYvy",function(e,t){_(e.exports,"METRIC_MAP",()=>n);var a=T("3SIMf"),i=T("duvvp");let n={[a.COUNTER_METRIC_TYPE]:class{constructor(e){this._value=e}get weight(){return 1}add(e){this._value+=e}toString(){return`${this._value}`}},[a.GAUGE_METRIC_TYPE]:class{constructor(e){this._last=e,this._min=e,this._max=e,this._sum=e,this._count=1}get weight(){return 5}add(e){this._last=e,ethis._max&&(this._max=e),this._sum+=e,this._count++}toString(){return`${this._last}:${this._min}:${this._max}:${this._sum}:${this._count}`}},[a.DISTRIBUTION_METRIC_TYPE]:class{constructor(e){this._value=[e]}get weight(){return this._value.length}add(e){this._value.push(e)}toString(){return this._value.join(":")}},[a.SET_METRIC_TYPE]:class{constructor(e){this.first=e,this._value=new Set([e])}get weight(){return this._value.size}add(e){this._value.add(e)}toString(){return Array.from(this._value).map(e=>"string"==typeof e?(0,i.simpleHash)(e):e).join(":")}}}}),E("j1tEK",function(e,t){_(e.exports,"SessionFlusher",()=>n);var a=T("e4IUz"),i=T("deYUe");class n{constructor(e,t){this._client=e,this.flushTimeout=60,this._pendingAggregates={},this._isEnabled=!0,this._intervalId=setInterval(()=>this.flush(),1e3*this.flushTimeout),this._sessionAttrs=t}flush(){let e=this.getSessionAggregates();0!==e.aggregates.length&&(this._pendingAggregates={},this._client.sendSession(e))}getSessionAggregates(){let e=Object.keys(this._pendingAggregates).map(e=>this._pendingAggregates[parseInt(e)]),t={attrs:this._sessionAttrs,aggregates:e};return(0,a.dropUndefinedKeys)(t)}close(){clearInterval(this._intervalId),this._isEnabled=!1,this.flush()}incrementSessionStatusCount(){if(!this._isEnabled)return;let e=(0,i.getCurrentScope)(),t=e.getRequestSession();t&&t.status&&(this._incrementSessionStatusCount(t.status,new Date),e.setRequestSession(void 0))}_incrementSessionStatusCount(e,t){let a=new Date(t).setSeconds(0,0);this._pendingAggregates[a]=this._pendingAggregates[a]||{};let i=this._pendingAggregates[a];switch(i.started||(i.started=new Date(a).toISOString()),e){case"errored":return i.errored=(i.errored||0)+1,i.errored;case"ok":return i.exited=(i.exited||0)+1,i.exited;default:return i.crashed=(i.crashed||0)+1,i.crashed}}}}),E("c2wyx",function(e,t){_(e.exports,"initAndBind",()=>s),_(e.exports,"setCurrentClient",()=>r);var a=T("k2ErF"),i=T("2Mb7l"),n=T("deYUe"),o=T("eCOpK");function s(e,t){!0===t.debug&&(i.DEBUG_BUILD?(0,a.logger).enable():(0,a.consoleSandbox)(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),(0,n.getCurrentScope)().update(t.initialScope);let o=new e(t);r(o),o.init?o.init():o.setupIntegrations&&o.setupIntegrations()}function r(e){let t=(0,o.getCurrentHub)().getStackTop();t.client=e,t.scope.setClient(e)}}),E("4i5AO",function(e,t){_(e.exports,"createSpanEnvelope",()=>n);var a=T("agl5x"),i=T("8zTrc");function n(e,t){let n={sent_at:new Date().toISOString()};t&&(n.dsn=(0,i.dsnToString)(t));let s=e.map(o);return(0,a.createEnvelope)(n,s)}function o(e){return[{type:"span"},e]}}),E("ehWym",function(e,t){function a(e,t){let a=t&&void 0!==t.getClient?t.getClient():t,n=a&&a.getDsn(),o=a&&a.getOptions().tunnel;return!!n&&e.includes(n.host)||!!o&&i(e)===i(o)}function i(e){return"/"===e[e.length-1]?e.slice(0,-1):e}_(e.exports,"isSentryRequestUrl",()=>a)}),E("3dN9k",function(e,t){_(e.exports,"parameterize",()=>a);function a(e,...t){let i=new String(String.raw(e,...t));return i.__sentry_template_string__=e.join("\0").replace(/%/g,"%%").replace(/\0/g,"%s"),i.__sentry_template_values__=t,i}}),E("7NWiQ",function(e,t){_(e.exports,"applySdkMetadata",()=>i);var a=T("039qT");function i(e,t,i=[t],n="npm"){let o=e._metadata||{};o.sdk||(o.sdk={name:`sentry.javascript.${t}`,packages:i.map(e=>({name:`${n}:@sentry/${e}`,version:a.SDK_VERSION})),version:a.SDK_VERSION}),e._metadata=o}}),E("l9Z6v",function(e,t){_(e.exports,"requestDataIntegration",()=>r),_(e.exports,"RequestData",()=>p);var a=T("jpnao"),i=T("hVqbS"),n=T("iD1up");let o={include:{cookies:!0,data:!0,headers:!0,ip:!1,query_string:!0,url:!0,user:{id:!0,username:!0,email:!0}},transactionNamingScheme:"methodPath"},s="RequestData",r=(0,i.defineIntegration)((e={})=>{let t=a.addRequestDataToEvent,i={...o,...e,include:{method:!0,...o.include,...e.include,user:e.include&&"boolean"==typeof e.include.user?e.include.user:{...o.include.user,...(e.include||{}).user}}};return{name:s,setupOnce(){},processEvent(e,o,s){let{transactionNamingScheme:r}=i,{sdkProcessingMetadata:p={}}=e,l=p.request;if(!l)return e;let d=t(e,l,p.requestDataOptionsFromExpressHandler||p.requestDataOptionsFromGCPWrapper||function(e){let t;let{transactionNamingScheme:a,include:{ip:i,user:n,...o}}=e,s=[];for(let[e,t]of Object.entries(o))t&&s.push(e);if(void 0===n)t=!0;else if("boolean"==typeof n)t=n;else{let e=[];for(let[t,a]of Object.entries(n))a&&e.push(t);t=e}return{include:{ip:i,user:t,request:0!==s.length?s:void 0,transaction:a}}}(i));if("transaction"===e.type||"handler"===r)return d;let c=l._sentryTransaction;if(c){let e=(0,n.spanToJSON)(c).description||"",t="sentry.javascript.nextjs"===function(e){try{return e.getOptions()._metadata.sdk.name}catch(e){return}}(s)?e.startsWith("/api"):"path"!==r,[i]=(0,a.extractPathForTransaction)(l,{path:!0,method:t,customRoute:e});d.transaction=i}return d}}}),p=(0,i.convertIntegrationFnToClass)(s,r)}),E("jpnao",function(e,t){_(e.exports,"DEFAULT_USER_INCLUDES",()=>p),_(e.exports,"addRequestDataToTransaction",()=>l),_(e.exports,"extractPathForTransaction",()=>d),_(e.exports,"extractRequestData",()=>c),_(e.exports,"addRequestDataToEvent",()=>u);var a=T("eBTPg");T("aoHsm");var i=T("jVURz");T("k2ErF");var n=T("jD1jC"),o=T("6szME");let s={ip:!1,request:!0,transaction:!0,user:!0},r=["cookies","data","headers","method","query_string","url"],p=["id","username","email"];function l(e,t,a){if(e){if(!e.metadata.source||"url"===e.metadata.source){let[a,i]=d(t,{path:!0,method:!0});e.updateName(a),e.setMetadata({source:i})}e.setAttribute("url",t.originalUrl||t.url),t.baseUrl&&e.setAttribute("baseUrl",t.baseUrl),e.setData("query",m(t,a))}}function d(e,t={}){let a=e.method&&e.method.toUpperCase(),i="",n="url";t.customRoute||e.route?(i=t.customRoute||`${e.baseUrl||""}${e.route&&e.route.path}`,n="route"):(e.originalUrl||e.url)&&(i=(0,o.stripUrlQueryAndFragment)(e.originalUrl||e.url||""));let s="";return t.method&&a&&(s+=a),t.method&&t.path&&(s+=" "),t.path&&i&&(s+=i),[s,n]}function c(e,t){let{include:o=r,deps:s}=t||{},p={},l=e.headers||{},d=e.method,c=l.host||e.hostname||e.host||"",u="https"===e.protocol||e.socket&&e.socket.encrypted?"https":"http",g=e.originalUrl||e.url||"",h=g.startsWith(u)?g:`${u}://${c}${g}`;return o.forEach(t=>{switch(t){case"headers":p.headers=l,o.includes("cookies")||delete p.headers.cookie;break;case"method":p.method=d;break;case"url":p.url=h;break;case"cookies":p.cookies=e.cookies||l.cookie&&(0,a.parseCookie)(l.cookie)||{};break;case"query_string":p.query_string=m(e,s);break;case"data":if("GET"===d||"HEAD"===d)break;void 0!==e.body&&(p.data=(0,i.isString)(e.body)?e.body:JSON.stringify((0,n.normalize)(e.body)));break;default:({}).hasOwnProperty.call(e,t)&&(p[t]=e[t])}}),p}function u(e,t,a){let n={...s,...a&&a.include};if(n.request){let i=Array.isArray(n.request)?c(t,{include:n.request,deps:a&&a.deps}):c(t,{deps:a&&a.deps});e.request={...e.request,...i}}if(n.user){let a=t.user&&(0,i.isPlainObject)(t.user)?function(e,t){let a={};return(Array.isArray(t)?t:p).forEach(t=>{e&&t in e&&(a[t]=e[t])}),a}(t.user,n.user):{};Object.keys(a).length&&(e.user={...e.user,...a})}if(n.ip){let a=t.ip||t.socket&&t.socket.remoteAddress;a&&(e.user={...e.user,ip_address:a})}return n.transaction&&!e.transaction&&(e.transaction=function(e,t){switch(t){case"path":return d(e,{path:!0})[0];case"handler":return e.route&&e.route.stack&&e.route.stack[0]&&e.route.stack[0].name||"";default:{let t=e._reconstructedRoute?e._reconstructedRoute:void 0;return d(e,{path:!0,method:!0,customRoute:t})[0]}}}(t,n.transaction)),e}function m(e,t){let a=e.originalUrl||e.url||"";if(a){a.startsWith("/")&&(a=`http://dogs.are.great${a}`);try{return e.query||"undefined"!=typeof URL&&new URL(a).search.slice(1)||t&&t.url&&t.url.parse(a).query||void 0}catch(e){return}}}}),E("eBTPg",function(e,t){_(e.exports,"parseCookie",()=>a);function a(e){let t={},a=0;for(;ae.length>0&&","!==e).length}function o(e){let{protocol:t,host:a,path:i}=e,n=a&&a.replace(/^.*@/,"[filtered]:[filtered]@").replace(/(:80)$/,"").replace(/(:443)$/,"")||"";return`${t?`${t}://`:""}${n}${i}`}_(e.exports,"parseUrl",()=>a),_(e.exports,"stripUrlQueryAndFragment",()=>i),_(e.exports,"getNumberOfUrlSegments",()=>n),_(e.exports,"getSanitizedUrlString",()=>o)}),E("gi3Kq",function(e,t){_(e.exports,"linkedErrorsIntegration",()=>s),_(e.exports,"LinkedErrors",()=>r);var a=T("5q3Fq"),i=T("51Ehf"),n=T("hVqbS");let o="LinkedErrors",s=(0,n.defineIntegration)((e={})=>{let t=e.limit||5,n=e.key||"cause";return{name:o,setupOnce(){},preprocessEvent(e,o,s){let r=s.getOptions();(0,a.applyAggregateErrorsToEvent)(i.exceptionFromError,r.stackParser,r.maxValueLength,n,t,e,o)}}}),r=(0,n.convertIntegrationFnToClass)(o,s)}),E("5q3Fq",function(e,t){_(e.exports,"applyAggregateErrorsToEvent",()=>n);var a=T("jVURz"),i=T("c6AFW");function n(e,t,n=250,r,p,l,d){if(!l.exception||!l.exception.values||!d||!(0,a.isInstanceOf)(d.originalException,Error))return;let c=l.exception.values.length>0?l.exception.values[l.exception.values.length-1]:void 0;c&&(l.exception.values=(function e(t,i,n,r,p,l,d,c){if(l.length>=n+1)return l;let u=[...l];if((0,a.isInstanceOf)(r[p],Error)){o(d,c);let a=t(i,r[p]),l=u.length;s(a,p,l,c),u=e(t,i,n,r[p],p,[a,...u],a,l)}return Array.isArray(r.errors)&&r.errors.forEach((r,l)=>{if((0,a.isInstanceOf)(r,Error)){o(d,c);let a=t(i,r),m=u.length;s(a,`errors[${l}]`,m,c),u=e(t,i,n,r,p,[a,...u],a,m)}}),u})(e,t,p,d.originalException,r,l.exception.values,c,0).map(e=>(e.value&&(e.value=(0,i.truncate)(e.value,n)),e)))}function o(e,t){e.mechanism=e.mechanism||{type:"generic",handled:!0},e.mechanism={...e.mechanism,..."AggregateError"===e.type&&{is_exception_group:!0},exception_id:t}}function s(e,t,a,i){e.mechanism=e.mechanism||{type:"generic",handled:!0},e.mechanism={...e.mechanism,type:"chained",source:t,exception_id:a,parent_id:i}}}),E("3pHvJ",function(e,t){_(e.exports,"FunctionToString",()=>T("7B5Oi").FunctionToString),_(e.exports,"InboundFilters",()=>T("aT332").InboundFilters),_(e.exports,"LinkedErrors",()=>T("gi3Kq").LinkedErrors),T("7B5Oi"),T("aT332"),T("gi3Kq")}),E("kpMy9",function(e,t){_(e.exports,"metrics",()=>l);var a=T("k2ErF"),i=T("2Mb7l"),n=T("deYUe"),o=T("iD1up"),s=T("3SIMf"),r=T("384sO");function p(e,t,s,r={}){let p=(0,n.getClient)(),l=(0,n.getCurrentScope)();if(p){if(!p.metricsAggregator){i.DEBUG_BUILD&&(0,a.logger).warn("No metrics aggregator enabled. Please add the MetricsAggregator integration to use metrics APIs");return}let{unit:n,tags:d,timestamp:c}=r,{release:u,environment:m}=p.getOptions(),g=l.getTransaction(),h={};u&&(h.release=u),m&&(h.environment=m),g&&(h.transaction=(0,o.spanToJSON)(g).description||""),i.DEBUG_BUILD&&(0,a.logger).log(`Adding value of ${s} to ${e} metric ${t}`),p.metricsAggregator.add(e,t,s,n,{...h,...d},c)}}let l={increment:function(e,t=1,a){p(s.COUNTER_METRIC_TYPE,e,t,a)},distribution:function(e,t,a){p(s.DISTRIBUTION_METRIC_TYPE,e,t,a)},set:function(e,t,a){p(s.SET_METRIC_TYPE,e,t,a)},gauge:function(e,t,a){p(s.GAUGE_METRIC_TYPE,e,t,a)},MetricsAggregator:r.MetricsAggregator,metricsAggregatorIntegration:r.metricsAggregatorIntegration}}),E("384sO",function(e,t){_(e.exports,"metricsAggregatorIntegration",()=>o),_(e.exports,"MetricsAggregator",()=>s);var a=T("hVqbS"),i=T("eY0oP");let n="MetricsAggregator",o=(0,a.defineIntegration)(()=>({name:n,setupOnce(){},setup(e){e.metricsAggregator=new i.BrowserMetricsAggregator(e)}})),s=(0,a.convertIntegrationFnToClass)(n,o)}),E("eY0oP",function(e,t){_(e.exports,"BrowserMetricsAggregator",()=>r);var a=T("iYy7D"),i=T("3SIMf"),n=T("6DYvy"),o=T("6CIba"),s=T("duvvp");class r{constructor(e){this._client=e,this._buckets=new Map,this._interval=setInterval(()=>this.flush(),i.DEFAULT_BROWSER_FLUSH_INTERVAL)}add(e,t,r,p="none",l={},d=(0,a.timestampInSeconds)()){let c=Math.floor(d),u=t.replace(i.NAME_AND_TAG_KEY_NORMALIZATION_REGEX,"_"),m=(0,s.sanitizeTags)(l),g=(0,s.getBucketKey)(e,u,p,m),h=this._buckets.get(g),f=h&&e===i.SET_METRIC_TYPE?h.metric.weight:0;h?(h.metric.add(r),h.timestampe);this._client.captureAggregateMetrics(e)}this._buckets.clear()}}close(){clearInterval(this._interval),this.flush()}}}),E("ce8iF",function(e,t){_(e.exports,"autoDiscoverNodePerformanceMonitoringIntegrations",()=>n);var a=T("aSKCX"),i=T("k2ErF");function n(){let e=(0,a.lazyLoadedNodePerformanceMonitoringIntegrations).map(e=>{try{return e()}catch(e){return}}).filter(e=>!!e);return 0===e.length&&(0,i.logger).warn("Performance monitoring integrations could not be automatically loaded."),e.filter(e=>!!e.loadDependency())}}),E("aSKCX",function(e,t){_(e.exports,"lazyLoadedNodePerformanceMonitoringIntegrations",()=>i);var a=T("fArVl");let i=[()=>new((0,a.dynamicRequire)(e,"./apollo")).Apollo,()=>new((0,a.dynamicRequire)(e,"./apollo")).Apollo({useNestjs:!0}),()=>new((0,a.dynamicRequire)(e,"./graphql")).GraphQL,()=>new((0,a.dynamicRequire)(e,"./mongo")).Mongo,()=>new((0,a.dynamicRequire)(e,"./mongo")).Mongo({mongoose:!0}),()=>new((0,a.dynamicRequire)(e,"./mysql")).Mysql,()=>new((0,a.dynamicRequire)(e,"./postgres")).Postgres]}),E("fArVl",function(e,t){_(e.exports,"isNodeEnv",()=>i),_(e.exports,"dynamicRequire",()=>n),_(e.exports,"loadModule",()=>o);var a=T("fuWNm");function i(){return!(0,a.isBrowserBundle)()&&"[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0)}function n(e,t){return e.require(t)}function o(t){let a;try{a=n(e,t)}catch(e){}try{let{cwd:i}=n(e,"process");a=n(e,`${i()}/node_modules/${t}`)}catch(e){}return a}}),E("fuWNm",function(e,t){_(e.exports,"isBrowserBundle",()=>a);function a(){return"undefined"!=typeof __SENTRY_BROWSER_BUNDLE__&&!!__SENTRY_BROWSER_BUNDLE__}}),E("2QOEJ",function(e,t){_(e.exports,"NodeClient",()=>o);var i=T("7NWiQ"),n=T("9TgzM");class o extends n.ServerRuntimeClient{constructor(e){(0,i.applySdkMetadata)(e,"node"),e.transportOptions={textEncoder:new u.TextEncoder,...e.transportOptions},super({...e,platform:"node",runtime:{name:"node",version:G.process.version},serverName:e.serverName||G.process.env.SENTRY_NAME||a.hostname()})}}}),E("ejtry",function(e,t){_(e.exports,"makeNodeTransport",()=>p);var a=T("g4u0U"),i=T("k2ErF"),n=T("9hHOU"),o=T("kCv8V");function p(e){let t;try{t=new g.URL(e.url)}catch(t){return(0,i.consoleSandbox)(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),(0,n.createTransport)(e,()=>Promise.resolve({}))}let p="https:"===t.protocol,l=function(e,t){let{no_proxy:a}=process.env;if(!(a&&a.split(",").some(t=>e.host.endsWith(t)||e.hostname.endsWith(t))))return t}(t,e.proxy||(p?process.env.https_proxy:void 0)||process.env.http_proxy),d=p?r:s,c=void 0!==e.keepAlive&&e.keepAlive,u=l?new o.HttpsProxyAgent(l):new d.Agent({keepAlive:c,maxSockets:30,timeout:2e3}),f=function(e,t,i){let{hostname:n,pathname:o,port:s,protocol:r,search:p}=new g.URL(e.url);return function(l){return new Promise((d,c)=>{var u;let g=(u=l.body,new m.Readable({read(){this.push(u),this.push(null)}})),f={...e.headers};l.body.length>32768&&(f["content-encoding"]="gzip",g=g.pipe((0,h.createGzip)()));let b=t.request({method:"POST",agent:i,headers:f,hostname:n,path:`${o}${p}`,port:s,protocol:r,ca:e.caCerts},e=>{e.on("data",()=>{}),e.on("end",()=>{}),e.setEncoding("utf8");let t=(0,a._nullishCoalesce)(e.headers["retry-after"],()=>null),i=(0,a._nullishCoalesce)(e.headers["x-sentry-rate-limits"],()=>null);d({statusCode:e.statusCode,headers:{"retry-after":t,"x-sentry-rate-limits":Array.isArray(i)?i[0]:i}})});b.on("error",c),g.pipe(b)})}}(e,(0,a._nullishCoalesce)(e.httpModule,()=>d),u);return(0,n.createTransport)(e,f)}}),E("g4u0U",function(e,t){_(e.exports,"_nullishCoalesce",()=>a);function a(e,t){return null!=e?e:t()}}),E("kCv8V",function(e,t){_(e.exports,"HttpsProxyAgent",()=>d);var a=T("g4u0U"),i=T("bsjXU"),n=T("k2ErF"),o=T("iUFHX"),s=T("xmdp1");function r(...e){(0,n.logger).log("[https-proxy-agent]",...e)}class d extends o.Agent{static __initStatic(){this.protocols=["http","https"]}constructor(e,t){super(t),this.options={},this.proxy="string"==typeof e?new g.URL(e):e,this.proxyHeaders=(0,a._nullishCoalesce)((0,i._optionalChain)([t,"optionalAccess",e=>e.headers]),()=>({})),r("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),o=this.proxy.port?parseInt(this.proxy.port,10):"https:"===this.proxy.protocol?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...t?u(t,"headers"):null,host:n,port:o}}async connect(e,t){let a;let{proxy:i}=this;if(!t.host)throw TypeError('No "host" provided');if("https:"===i.protocol){r("Creating `tls.Socket`: %o",this.connectOpts);let e=this.connectOpts.servername||this.connectOpts.host;a=l.connect({...this.connectOpts,servername:e&&p.isIP(e)?void 0:e})}else r("Creating `net.Socket`: %o",this.connectOpts),a=p.connect(this.connectOpts);let n="function"==typeof this.proxyHeaders?this.proxyHeaders():{...this.proxyHeaders},o=p.isIPv6(t.host)?`[${t.host}]`:t.host,d=`CONNECT ${o}:${t.port} HTTP/1.1\r
-`;if(i.username||i.password){let e=`${decodeURIComponent(i.username)}:${decodeURIComponent(i.password)}`;n["Proxy-Authorization"]=`Basic ${Buffer.from(e).toString("base64")}`}for(let e of(n.Host=`${o}:${t.port}`,n["Proxy-Connection"]||(n["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close"),Object.keys(n)))d+=`${e}: ${n[e]}\r
-`;let m=(0,s.parseProxyResponse)(a);a.write(`${d}\r
-`);let{connect:g,buffered:h}=await m;if(e.emit("proxyConnect",g),this.emit("proxyConnect",g,e),200===g.statusCode){if(e.once("socket",c),t.secureEndpoint){r("Upgrading socket connection to TLS");let e=t.servername||t.host;return l.connect({...u(t,"host","path","port"),socket:a,servername:p.isIP(e)?void 0:e})}return a}a.destroy();let f=new p.Socket({writable:!1});return f.readable=!0,e.once("socket",e=>{r("Replaying proxy buffer for failed request"),e.push(h),e.push(null)}),f}}function c(e){e.resume()}function u(e,...t){let a;let i={};for(a in e)t.includes(a)||(i[a]=e[a]);return i}d.__initStatic()}),E("bsjXU",function(e,t){_(e.exports,"_optionalChain",()=>a);function a(e){let t;let a=e[0],i=1;for(;ia.call(t,...e)),t=void 0)}return a}}),E("iUFHX",function(e,t){_(e.exports,"Agent",()=>n);var a=T("g4u0U");let i=Symbol("AgentBaseInternalState");class n extends s.Agent{constructor(e){super(e),this[i]={}}isSecureEndpoint(e){if(e){if("boolean"==typeof e.secureEndpoint)return e.secureEndpoint;if("string"==typeof e.protocol)return"https:"===e.protocol}let{stack:t}=Error();return"string"==typeof t&&t.split("\n").some(e=>-1!==e.indexOf("(https.js:")||-1!==e.indexOf("node:https:"))}createSocket(e,t,a){let n={...t,secureEndpoint:this.isSecureEndpoint(t)};Promise.resolve().then(()=>this.connect(e,n)).then(o=>{if(o instanceof s.Agent)return o.addRequest(e,n);this[i].currentSocket=o,super.createSocket(e,t,a)},a)}createConnection(){let e=this[i].currentSocket;if(this[i].currentSocket=void 0,!e)throw Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return(0,a._nullishCoalesce)(this[i].defaultPort,()=>"https:"===this.protocol?443:80)}set defaultPort(e){this[i]&&(this[i].defaultPort=e)}get protocol(){return(0,a._nullishCoalesce)(this[i].protocol,()=>this.isSecureEndpoint()?"https:":"http:")}set protocol(e){this[i]&&(this[i].protocol=e)}}}),E("xmdp1",function(e,t){_(e.exports,"parseProxyResponse",()=>n);var a=T("k2ErF");function i(...e){(0,a.logger).log("[https-proxy-agent:parse-proxy-response]",...e)}function n(e){return new Promise((t,a)=>{let n=0,o=[];function s(){let p=e.read();p?function(p){o.push(p),n+=p.length;let l=Buffer.concat(o,n),d=l.indexOf("\r\n\r\n");if(-1===d){i("have not received end of HTTP headers yet..."),s();return}let c=l.slice(0,d).toString("ascii").split("\r\n"),u=c.shift();if(!u)return e.destroy(),a(Error("No header received from proxy CONNECT response"));let m=u.split(" "),g=+m[1],h=m.slice(2).join(" "),f={};for(let t of c){if(!t)continue;let i=t.indexOf(":");if(-1===i)return e.destroy(),a(Error(`Invalid header from proxy CONNECT response: "${t}"`));let n=t.slice(0,i).toLowerCase(),o=t.slice(i+1).trimStart(),s=f[n];"string"==typeof s?f[n]=[s,o]:Array.isArray(s)?s.push(o):f[n]=o}i("got proxy server response: %o %o",u,f),r(),t({connect:{statusCode:g,statusText:h,headers:f},buffered:l})}(p):e.once("readable",s)}function r(){e.removeListener("end",p),e.removeListener("error",l),e.removeListener("readable",s)}function p(){r(),i("onend"),a(Error("Proxy connection ended before receiving CONNECT response"))}function l(e){r(),i("onerror %o",e),a(e)}e.on("error",l),e.on("end",p),s()})}}),E("1iHXL",function(e,t){_(e.exports,"defaultIntegrations",()=>Z),_(e.exports,"getDefaultIntegrations",()=>E),_(e.exports,"init",()=>R),_(e.exports,"getSentryRelease",()=>N),_(e.exports,"defaultStackParser",()=>W),_(e.exports,"isAutoSessionTrackingEnabled",()=>V);var a=T("bsjXU"),i=T("goIvU"),n=T("gd055"),o=T("2gq4F"),s=T("deYUe"),r=T("7B5Oi"),p=T("hVqbS"),l=T("eCOpK"),d=T("aT332"),c=T("c2wyx"),u=T("gi3Kq"),m=T("l9Z6v"),g=T("djgx3"),h=T("2QOEJ"),f=T("bCDzK"),b=T("ezym9"),v=T("koeOU"),I=T("8G0FT"),C=T("lVZId"),y=T("esVyk"),x=T("dDWKn"),w=T("kpGGI"),A=T("7wvFM"),G=T("aCFro"),S=T("jUJ2l"),B=T("ejtry");let Z=[(0,d.inboundFiltersIntegration)(),(0,r.functionToStringIntegration)(),(0,u.linkedErrorsIntegration)(),(0,m.requestDataIntegration)(),(0,f.consoleIntegration)(),(0,I.httpIntegration)(),(0,G.nativeNodeFetchintegration)(),(0,x.onUncaughtExceptionIntegration)(),(0,w.onUnhandledRejectionIntegration)(),(0,v.contextLinesIntegration)(),(0,C.localVariablesIntegration)(),(0,b.nodeContextIntegration)(),(0,y.modulesIntegration)()];function E(e){let t=(0,l.getMainCarrier)();return[...Z,...(0,a._optionalChain)([t,"access",e=>e.__SENTRY__,"optionalAccess",e=>e.integrations])||[]]}function R(e={}){(0,g.setNodeAsyncContextStrategy)(),void 0===e.defaultIntegrations&&(e.defaultIntegrations=E()),void 0===e.dsn&&process.env.SENTRY_DSN&&(e.dsn=process.env.SENTRY_DSN);let t=process.env.SENTRY_TRACES_SAMPLE_RATE;if(void 0===e.tracesSampleRate&&t){let a=parseFloat(t);isFinite(a)&&(e.tracesSampleRate=a)}if(void 0===e.release){let t=N();void 0!==t?e.release=t:e.autoSessionTracking=!1}void 0===e.environment&&process.env.SENTRY_ENVIRONMENT&&(e.environment=process.env.SENTRY_ENVIRONMENT),void 0===e.autoSessionTracking&&void 0!==e.dsn&&(e.autoSessionTracking=!0),void 0===e.instrumenter&&(e.instrumenter="sentry");let a={...e,stackParser:(0,i.stackParserFromStackParserOptions)(e.stackParser||W),integrations:(0,p.getIntegrationsToSetup)(e),transport:e.transport||B.makeNodeTransport};if((0,c.initAndBind)(e.clientClass||h.NodeClient,a),e.autoSessionTracking&&((0,s.startSession)(),process.on("beforeExit",()=>{let e=(0,l.getIsolationScope)().getSession();e&&!["exited","crashed"].includes(e.status)&&(0,s.endSession)()})),function(){if(!["false","n","no","off","0"].includes((process.env.SENTRY_USE_ENVIRONMENT||"").toLowerCase())){let e=process.env.SENTRY_TRACE,t=process.env.SENTRY_BAGGAGE,a=(0,o.propagationContextFromHeaders)(e,t);(0,s.getCurrentScope)().setPropagationContext(a)}}(),e.spotlight){let t=(0,s.getClient)();if(t&&t.addIntegration){for(let e of t.getOptions().integrations)t.addIntegration(e);t.addIntegration((0,A.spotlightIntegration)({sidecarUrl:"string"==typeof e.spotlight?e.spotlight:void 0}))}}}function V(e){if(void 0===e)return!1;let t=e&&e.getOptions();return!!t&&void 0!==t.autoSessionTracking&&t.autoSessionTracking}function N(e){return process.env.SENTRY_RELEASE?process.env.SENTRY_RELEASE:n.GLOBAL_OBJ.SENTRY_RELEASE&&n.GLOBAL_OBJ.SENTRY_RELEASE.id?n.GLOBAL_OBJ.SENTRY_RELEASE.id:process.env.GITHUB_SHA||process.env.COMMIT_REF||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA||process.env.CF_PAGES_COMMIT_SHA||e}let W=(0,i.createStackParser)((0,i.nodeStackLineParser)((0,S.createGetModuleFromFilename)()))}),E("djgx3",function(e,t){_(e.exports,"setNodeAsyncContextStrategy",()=>o);var a=T("04aWn"),i=T("4hMJG"),n=T("aFGyw");function o(){a.NODE_VERSION.major>=14?(0,n.setHooksAsyncContextStrategy)():(0,i.setDomainAsyncContextStrategy)()}}),E("04aWn",function(e,t){_(e.exports,"NODE_VERSION",()=>a);let a=(0,T("1gT0D").parseSemver)(process.versions.node)}),E("4hMJG",function(e,t){_(e.exports,"setDomainAsyncContextStrategy",()=>s);var a=T("bsjXU"),i=T("eCOpK");function n(){let e=C.active;if(e)return(0,i.ensureHubOnCarrier)(e),(0,i.getHubFromCarrier)(e)}function o(e,t){let n=C.active;if(n&&(0,a._optionalChain)([t,"optionalAccess",e=>e.reuseExisting]))return e();let o=C.create(),s=function(e){let t={};return(0,i.ensureHubOnCarrier)(t,e),(0,i.getHubFromCarrier)(t)}(n?(0,i.getHubFromCarrier)(n):void 0);return(0,i.setHubOnCarrier)(o,s),o.bind(()=>e())()}function s(){(0,i.setAsyncContextStrategy)({getCurrentHub:n,runWithAsyncContext:o})}}),E("aFGyw",function(e,t){let a;_(e.exports,"setHooksAsyncContextStrategy",()=>o);var i=T("bsjXU"),n=T("eCOpK");function o(){function e(){return a.getStore()}a||(a=new y.AsyncLocalStorage),(0,n.setAsyncContextStrategy)({getCurrentHub:e,runWithAsyncContext:function(t,o){let s=e();if(s&&(0,i._optionalChain)([o,"optionalAccess",e=>e.reuseExisting]))return t();let r=function(e){let t={};return(0,n.ensureHubOnCarrier)(t,e),(0,n.getHubFromCarrier)(t)}(s);return a.run(r,()=>t())}})}}),E("bCDzK",function(e,t){_(e.exports,"consoleIntegration",()=>r),_(e.exports,"Console",()=>p);var a=T("deYUe"),i=T("hVqbS"),n=T("kMFvf"),o=T("gZn4V");let s="Console",r=(0,i.defineIntegration)(()=>({name:s,setupOnce(){},setup(e){(0,n.addConsoleInstrumentationHandler)(({args:t,level:i})=>{(0,a.getClient)()===e&&(0,a.addBreadcrumb)({category:"console",level:(0,o.severityLevelFromString)(i),message:u.format.apply(void 0,t)},{input:[...t],level:i})})}})),p=(0,i.convertIntegrationFnToClass)(s,r)}),E("kMFvf",function(e,t){_(e.exports,"addConsoleInstrumentationHandler",()=>s);var a=T("k2ErF"),i=T("e4IUz"),n=T("gd055"),o=T("hxO1L");function s(e){let t="console";(0,o.addHandler)(t,e),(0,o.maybeInstrument)(t,r)}function r(){"console"in n.GLOBAL_OBJ&&(0,a.CONSOLE_LEVELS).forEach(function(e){e in n.GLOBAL_OBJ.console&&(0,i.fill)(n.GLOBAL_OBJ.console,e,function(t){return a.originalConsoleMethods[e]=t,function(...t){(0,o.triggerHandlers)("console",{args:t,level:e});let i=a.originalConsoleMethods[e];i&&i.apply(n.GLOBAL_OBJ.console,t)}})})}}),E("gZn4V",function(e,t){_(e.exports,"severityLevelFromString",()=>i);let a=["fatal","error","warning","log","info","debug"];function i(e){return"warn"===e?"warning":a.includes(e)?e:"log"}}),E("ezym9",function(e,t){_(e.exports,"nodeContextIntegration",()=>d),_(e.exports,"Context",()=>c);var o=T("bsjXU"),s=T("hVqbS");let r=(0,u.promisify)(n.readFile),p=(0,u.promisify)(n.readdir),l="Context",d=(0,s.defineIntegration)((e={})=>{let t;let i={app:!0,os:!0,device:!0,culture:!0,cloudResource:!0,...e};async function n(e){var i;void 0===t&&(t=s());let n=(i=await t,(0,o._optionalChain)([i,"optionalAccess",e=>e.app,"optionalAccess",e=>e.app_memory])&&(i.app.app_memory=process.memoryUsage().rss),(0,o._optionalChain)([i,"optionalAccess",e=>e.device,"optionalAccess",e=>e.free_memory])&&(i.device.free_memory=a.freemem()),i);return e.contexts={...e.contexts,app:{...n.app,...(0,o._optionalChain)([e,"access",e=>e.contexts,"optionalAccess",e=>e.app])},os:{...n.os,...(0,o._optionalChain)([e,"access",e=>e.contexts,"optionalAccess",e=>e.os])},device:{...n.device,...(0,o._optionalChain)([e,"access",e=>e.contexts,"optionalAccess",e=>e.device])},culture:{...n.culture,...(0,o._optionalChain)([e,"access",e=>e.contexts,"optionalAccess",e=>e.culture])},cloud_resource:{...n.cloud_resource,...(0,o._optionalChain)([e,"access",e=>e.contexts,"optionalAccess",e=>e.cloud_resource])}},e}async function s(){let e={};if(i.os&&(e.os=await m()),i.app&&(e.app=function(){let e=process.memoryUsage().rss;return{app_start_time:new Date(Date.now()-1e3*process.uptime()).toISOString(),app_memory:e}}()),i.device&&(e.device=function(e){let t;let i={};try{t=a.uptime&&a.uptime()}catch(e){}if("number"==typeof t&&(i.boot_time=new Date(Date.now()-1e3*t).toISOString()),i.arch=a.arch(),(!0===e||e.memory)&&(i.memory_size=a.totalmem(),i.free_memory=a.freemem()),!0===e||e.cpu){let e=a.cpus();if(e&&e.length){let t=e[0];i.processor_count=e.length,i.cpu_description=t.model,i.processor_frequency=t.speed}}return i}(i.device)),i.culture){let t=function(){try{if("string"!=typeof process.versions.icu)return;let e=new Date(9e8),t=new Intl.DateTimeFormat("es",{month:"long"});if("enero"===t.format(e)){let e=Intl.DateTimeFormat().resolvedOptions();return{locale:e.locale,timezone:e.timeZone}}}catch(e){}}();t&&(e.culture=t)}return i.cloudResource&&(e.cloud_resource=function(){if(process.env.VERCEL)return{"cloud.provider":"vercel","cloud.region":process.env.VERCEL_REGION};if(process.env.AWS_REGION)return{"cloud.provider":"aws","cloud.region":process.env.AWS_REGION,"cloud.platform":process.env.AWS_EXECUTION_ENV};if(process.env.GCP_PROJECT)return{"cloud.provider":"gcp"};if(process.env.ALIYUN_REGION_ID)return{"cloud.provider":"alibaba_cloud","cloud.region":process.env.ALIYUN_REGION_ID};if(process.env.WEBSITE_SITE_NAME&&process.env.REGION_NAME)return{"cloud.provider":"azure","cloud.region":process.env.REGION_NAME};if(process.env.IBM_CLOUD_REGION)return{"cloud.provider":"ibm_cloud","cloud.region":process.env.IBM_CLOUD_REGION};if(process.env.TENCENTCLOUD_REGION)return{"cloud.provider":"tencent_cloud","cloud.region":process.env.TENCENTCLOUD_REGION,"cloud.account.id":process.env.TENCENTCLOUD_APPID,"cloud.availability_zone":process.env.TENCENTCLOUD_ZONE};else if(process.env.NETLIFY)return{"cloud.provider":"netlify"};else if(process.env.FLY_REGION)return{"cloud.provider":"fly.io","cloud.region":process.env.FLY_REGION};else if(process.env.DYNO)return{"cloud.provider":"heroku"};else return}()),e}return{name:l,setupOnce(){},processEvent:e=>n(e)}}),c=(0,s.convertIntegrationFnToClass)(l,d);async function m(){let e=a.platform();switch(e){case"darwin":return I();case"linux":return y();default:return{name:g[e]||e,version:a.release()}}}let g={aix:"IBM AIX",freebsd:"FreeBSD",openbsd:"OpenBSD",sunos:"SunOS",win32:"Windows"},h=[{name:"fedora-release",distros:["Fedora"]},{name:"redhat-release",distros:["Red Hat Linux","Centos"]},{name:"redhat_version",distros:["Red Hat Linux"]},{name:"SuSE-release",distros:["SUSE Linux"]},{name:"lsb-release",distros:["Ubuntu Linux","Arch Linux"]},{name:"debian_version",distros:["Debian"]},{name:"debian_release",distros:["Debian"]},{name:"arch-release",distros:["Arch Linux"]},{name:"gentoo-release",distros:["Gentoo Linux"]},{name:"novell-release",distros:["SUSE Linux"]},{name:"alpine-release",distros:["Alpine Linux"]}],f={alpine:e=>e,arch:e=>b(/distrib_release=(.*)/,e),centos:e=>b(/release ([^ ]+)/,e),debian:e=>e,fedora:e=>b(/release (..)/,e),mint:e=>b(/distrib_release=(.*)/,e),red:e=>b(/release ([^ ]+)/,e),suse:e=>b(/VERSION = (.*)\n/,e),ubuntu:e=>b(/distrib_release=(.*)/,e)};function b(e,t){let a=e.exec(t);return a?a[1]:void 0}async function I(){let e={kernel_version:a.release(),name:"Mac OS X",version:`10.${Number(a.release().split(".")[0])-4}`};try{let t=await new Promise((e,t)=>{(0,v.execFile)("/usr/bin/sw_vers",(a,i)=>{if(a){t(a);return}e(i)})});e.name=b(/^ProductName:\s+(.*)$/m,t),e.version=b(/^ProductVersion:\s+(.*)$/m,t),e.build=b(/^BuildVersion:\s+(.*)$/m,t)}catch(e){}return e}function C(e){return e.split(" ")[0].toLowerCase()}async function y(){let e={kernel_version:a.release(),name:"Linux"};try{let t=await p("/etc"),a=h.find(e=>t.includes(e.name));if(!a)return e;let n=(0,i.join)("/etc",a.name),o=(await r(n,{encoding:"utf-8"})).toLowerCase(),{distros:s}=a;e.name=s.find(e=>o.indexOf(C(e))>=0)||s[0];let l=C(e.name);e.version=f[l](o)}catch(e){}return e}}),E("koeOU",function(e,t){_(e.exports,"contextLinesIntegration",()=>l),_(e.exports,"ContextLines",()=>d);var a=T("bsjXU"),i=T("1gT0D"),o=T("kTF8L"),s=T("hVqbS");let r=new o.LRUMap(100),p="ContextLines",l=(0,s.defineIntegration)((e={})=>{let t=void 0!==e.frameContextLines?e.frameContextLines:7;return{name:p,setupOnce(){},processEvent:e=>c(e,t)}}),d=(0,s.convertIntegrationFnToClass)(p,l);async function c(e,t){let n={},o=[];if(t>0&&(0,a._optionalChain)([e,"access",e=>e.exception,"optionalAccess",e=>e.values])){for(let t of e.exception.values)if((0,a._optionalChain)([t,"access",e=>e.stacktrace,"optionalAccess",e=>e.frames]))for(let e=t.stacktrace.frames.length-1;e>=0;e--){let a=t.stacktrace.frames[e];!a.filename||n[a.filename]||r.get(a.filename)||(o.push(u(a.filename)),n[a.filename]=1)}}if(o.length>0&&await Promise.all(o),t>0&&(0,a._optionalChain)([e,"access",e=>e.exception,"optionalAccess",e=>e.values]))for(let a of e.exception.values)a.stacktrace&&a.stacktrace.frames&&await function(e,t){for(let a of e)if(a.filename&&void 0===a.context_line){let e=r.get(a.filename);if(e)try{(0,i.addContextToFrame)(e,a,t)}catch(e){}}}(a.stacktrace.frames,t);return e}async function u(e){let t=r.get(e);if(null===t)return null;if(void 0!==t)return t;let a=null;try{a=(await new Promise((t,a)=>{(0,n.readFile)(e,"utf8",(e,i)=>{e?a(e):t(i)})})).split("\n")}catch(e){}return r.set(e,a),a}}),E("kTF8L",function(e,t){_(e.exports,"LRUMap",()=>a);class a{constructor(e){this._maxSize=e,this._cache=new Map}get size(){return this._cache.size}get(e){let t=this._cache.get(e);if(void 0!==t)return this._cache.delete(e),this._cache.set(e,t),t}set(e,t){this._cache.size>=this._maxSize&&this._cache.delete(this._cache.keys().next().value),this._cache.set(e,t)}remove(e){let t=this._cache.get(e);return t&&this._cache.delete(e),t}clear(){this._cache.clear()}keys(){return Array.from(this._cache.keys())}values(){let e=[];return this._cache.forEach(t=>e.push(t)),e}}}),E("8G0FT",function(e,t){_(e.exports,"Http",()=>A),_(e.exports,"httpIntegration",()=>w);var a=T("bsjXU"),i=T("e4IUz"),n=T("hSiIl"),o=T("2gq4F"),p=T("k2ErF"),l=T("kTF8L"),d=T("c6AFW"),c=T("deYUe"),u=T("hVqbS"),m=T("3hDCQ"),g=T("eCOpK"),h=T("cCmfn"),f=T("7z6ft"),b=T("ehWym"),v=T("b2ZPh"),I=T("iD1up"),C=T("2xRAP"),y=T("04aWn"),x=T("bmtY7");let w=(0,u.defineIntegration)((e={})=>{let{breadcrumbs:t,tracing:a,shouldCreateSpanForRequest:n}=e;return new A({breadcrumbs:t,tracing:!1!==a&&(0,i.dropUndefinedKeys)({enableIfHasTracingEnabled:!0!==a||void 0,shouldCreateSpanForRequest:n})})});class A{static __initStatic(){this.id="Http"}__init(){this.name=A.id}constructor(e={}){A.prototype.__init.call(this),this._breadcrumbs=void 0===e.breadcrumbs||e.breadcrumbs,this._tracing=e.tracing?!0===e.tracing?{}:e.tracing:void 0}setupOnce(e,t){var n,o;let l=(0,a._optionalChain)([t,"call",e=>e(),"access",e=>e.getClient,"call",e=>e(),"optionalAccess",e=>e.getOptions,"call",e=>e()]),d=void 0!==(n=this._tracing)&&(!n.enableIfHasTracingEnabled||(0,f.hasTracingEnabled)(l));if(!this._breadcrumbs&&!d)return;if(l&&"sentry"!==l.instrumenter){C.DEBUG_BUILD&&(0,p.logger).log("HTTP Integration is skipped because of instrumenter configuration.");return}let c=(o=this._tracing,d?(0,a._optionalChain)([o,"optionalAccess",e=>e.shouldCreateSpanForRequest])||(0,a._optionalChain)([l,"optionalAccess",e=>e.shouldCreateSpanForRequest]):()=>!1),u=(0,a._optionalChain)([l,"optionalAccess",e=>e.tracePropagationTargets])||(0,a._optionalChain)([this,"access",e=>e._tracing,"optionalAccess",e=>e.tracePropagationTargets]),m=G(s,this._breadcrumbs,c,u);if((0,i.fill)(s,"get",m),(0,i.fill)(s,"request",m),y.NODE_VERSION.major>8){let e=G(r,this._breadcrumbs,c,u);(0,i.fill)(r,"get",e),(0,i.fill)(r,"request",e)}}}function G(e,t,i,s){let r=new l.LRUMap(100),u=new l.LRUMap(100),f=e=>{if(void 0===i)return!0;let t=r.get(e);if(void 0!==t)return t;let a=i(e);return r.set(e,a),a},y=e=>{if(void 0===s)return!0;let t=u.get(e);if(void 0!==t)return t;let a=(0,d.stringMatchesSomePattern)(e,s);return u.set(e,a),a};function w(e,t,a,i){(0,g.getCurrentHub)().getIntegration(A)&&(0,c.addBreadcrumb)({category:"http",data:{status_code:i&&i.statusCode,...t},type:"http"},{event:e,request:a,response:i})}return function(i){return function(...s){let r=(0,x.normalizeRequestArgs)(e,s),l=r[0],d=(0,x.extractRawUrl)(l),u=(0,x.extractUrl)(l),_=(0,c.getClient)();if((0,b.isSentryRequestUrl)(u,_))return i.apply(e,r);let A=(0,c.getCurrentScope)(),G=(0,g.getIsolationScope)(),S=(0,m.getActiveSpan)(),B=function(e,t){let a={url:e,"http.method":t.method||"GET"};return t.hash&&(a["http.fragment"]=t.hash.substring(1)),t.search&&(a["http.query"]=t.search.substring(1)),a}(u,l),Z=f(d)?(0,a._optionalChain)([S,"optionalAccess",e=>e.startChild,"call",e=>e({op:"http.client",origin:"auto.http.node.http",description:`${B["http.method"]} ${B.url}`,data:B})]):void 0;if(_&&y(d)){var T;let{traceId:e,spanId:t,sampled:a,dsc:i}={...G.getPropagationContext(),...A.getPropagationContext()},s=Z?(0,I.spanToTraceHeader)(Z):(0,o.generateSentryTraceHeader)(e,t,a);T=(0,n.dynamicSamplingContextToSentryBaggageHeader)(i||(Z?(0,h.getDynamicSamplingContextFromSpan)(Z):(0,h.getDynamicSamplingContextFromClient)(e,_,A))),(l.headers||{})["sentry-trace"]||(C.DEBUG_BUILD&&(0,p.logger).log(`[Tracing] Adding sentry-trace header ${s} to outgoing request to "${u}": `),l.headers={...l.headers,"sentry-trace":s,...T&&T.length>0&&{baggage:l.headers&&l.headers.baggage?T?Array.isArray(l.headers.baggage)?[...l.headers.baggage,T]:[l.headers.baggage,T]:l.headers.baggage:T}})}else C.DEBUG_BUILD&&(0,p.logger).log(`[Tracing] Not adding sentry-trace header to outgoing request (${u}) due to mismatching tracePropagationTargets option.`);return i.apply(e,r).once("response",function(e){t&&w("response",B,this,e),Z&&(e.statusCode&&(0,v.setHttpStatus)(Z,e.statusCode),Z.updateName((0,x.cleanSpanDescription)((0,I.spanToJSON)(Z).description||"",l,this)||""),Z.end())}).once("error",function(){t&&w("error",B,this),Z&&((0,v.setHttpStatus)(Z,500),Z.updateName((0,x.cleanSpanDescription)((0,I.spanToJSON)(Z).description||"",l,this)||""),Z.end())})}}}A.__initStatic()}),E("2xRAP",function(e,t){_(e.exports,"DEBUG_BUILD",()=>a);let a="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__}),E("bmtY7",function(e,t){_(e.exports,"extractRawUrl",()=>n),_(e.exports,"extractUrl",()=>o),_(e.exports,"cleanSpanDescription",()=>s),_(e.exports,"normalizeRequestArgs",()=>p);var a=T("bsjXU"),i=T("04aWn");function n(e){let{protocol:t,hostname:a,port:i}=l(e),n=e.path?e.path:"/";return`${t}//${a}${i}${n}`}function o(e){let{protocol:t,hostname:a,port:i}=l(e),n=e.pathname||"/",o=e.auth?function(e){let[t,a]=e.split(":");return`${t?"[Filtered]":""}:${a?"[Filtered]":""}@`}(e.auth):"";return`${t}//${o}${a}${i}${n}`}function s(e,t,i){if(!e)return e;let[n,s]=e.split(" ");return t.host&&!t.protocol&&(t.protocol=(0,a._optionalChain)([i,"optionalAccess",e=>e.agent,"optionalAccess",e=>e.protocol]),s=o(t)),(0,a._optionalChain)([s,"optionalAccess",e=>e.startsWith,"call",e=>e("///")])&&(s=s.slice(2)),`${n} ${s}`}function r(e){let t={protocol:e.protocol,hostname:"string"==typeof e.hostname&&e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,hash:e.hash,search:e.search,pathname:e.pathname,path:`${e.pathname||""}${e.search||""}`,href:e.href};return""!==e.port&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username}:${e.password}`),t}function p(e,t){let n,o;if("function"==typeof t[t.length-1]&&(n=t.pop()),"string"==typeof t[0])o=r(new g.URL(t[0]));else if(t[0]instanceof g.URL)o=r(t[0]);else{o=t[0];try{let e=new g.URL(o.path||"",`${o.protocol||"http:"}//${o.hostname}`);o={pathname:e.pathname,search:e.search,hash:e.hash,...o}}catch(e){}}return(2===t.length&&(o={...o,...t[1]}),void 0===o.protocol&&(i.NODE_VERSION.major>8?o.protocol=(0,a._optionalChain)([(0,a._optionalChain)([e,"optionalAccess",e=>e.globalAgent]),"optionalAccess",e=>e.protocol])||(0,a._optionalChain)([o.agent,"optionalAccess",e=>e.protocol])||(0,a._optionalChain)([o._defaultAgent,"optionalAccess",e=>e.protocol]):o.protocol=(0,a._optionalChain)([o.agent,"optionalAccess",e=>e.protocol])||(0,a._optionalChain)([o._defaultAgent,"optionalAccess",e=>e.protocol])||(0,a._optionalChain)([(0,a._optionalChain)([e,"optionalAccess",e=>e.globalAgent]),"optionalAccess",e=>e.protocol])),n)?[o,n]:[o]}function l(e){let t=e.protocol||"",a=e.hostname||e.host||"",i=!e.port||80===e.port||443===e.port||/^(.*):(\d+)$/.test(a)?"":`:${e.port}`;return{protocol:t,hostname:a,port:i}}}),E("lVZId",function(e,t){_(e.exports,"LocalVariables",()=>i),_(e.exports,"localVariablesIntegration",()=>n);var a=T("oF3fg");let i=a.LocalVariablesSync,n=a.localVariablesSyncIntegration}),E("oF3fg",function(e,t){_(e.exports,"localVariablesSyncIntegration",()=>m),_(e.exports,"LocalVariablesSync",()=>g);var a=T("bsjXU"),i=T("k2ErF"),n=T("kTF8L"),o=T("hVqbS"),s=T("deYUe"),r=T("04aWn"),p=T("1KgWA");function l(e){let t=[],a=!1;function i(i){t=[],a||(a=!0,e(i))}return t.push(i),{add:function(e){t.push(e)},next:function(e){let a=t.pop()||i;try{a(e)}catch(t){i(e)}}}}class d{constructor(){let{Session:e}=x;this._session=new e}configureAndConnect(e,t){this._session.connect(),this._session.on("Debugger.paused",t=>{e(t,()=>{this._session.post("Debugger.resume")})}),this._session.post("Debugger.enable"),this._session.post("Debugger.setPauseOnExceptions",{state:t?"all":"uncaught"})}setPauseOnExceptions(e){this._session.post("Debugger.setPauseOnExceptions",{state:e?"all":"uncaught"})}getLocalVariables(e,t){this._getProperties(e,e=>{let{add:i,next:n}=l(t);for(let t of e)if((0,a._optionalChain)([t,"optionalAccess",e=>e.value,"optionalAccess",e=>e.objectId])&&"Array"===(0,a._optionalChain)([t,"optionalAccess",e=>e.value,"access",e=>e.className])){let e=t.value.objectId;i(a=>this._unrollArray(e,t.name,a,n))}else if((0,a._optionalChain)([t,"optionalAccess",e=>e.value,"optionalAccess",e=>e.objectId])&&"Object"===(0,a._optionalChain)([t,"optionalAccess",e=>e.value,"optionalAccess",e=>e.className])){let e=t.value.objectId;i(a=>this._unrollObject(e,t.name,a,n))}else((0,a._optionalChain)([t,"optionalAccess",e=>e.value,"optionalAccess",e=>e.value])||(0,a._optionalChain)([t,"optionalAccess",e=>e.value,"optionalAccess",e=>e.description]))&&i(e=>this._unrollOther(t,e,n));n({})})}_getProperties(e,t){this._session.post("Runtime.getProperties",{objectId:e,ownProperties:!0},(e,a)=>{e?t([]):t(a.result)})}_unrollArray(e,t,i,n){this._getProperties(e,e=>{i[t]=e.filter(e=>"length"!==e.name&&!isNaN(parseInt(e.name,10))).sort((e,t)=>parseInt(e.name,10)-parseInt(t.name,10)).map(e=>(0,a._optionalChain)([e,"optionalAccess",e=>e.value,"optionalAccess",e=>e.value])),n(i)})}_unrollObject(e,t,i,n){this._getProperties(e,e=>{i[t]=e.map(e=>[e.name,(0,a._optionalChain)([e,"optionalAccess",e=>e.value,"optionalAccess",e=>e.value])]).reduce((e,[t,a])=>(e[t]=a,e),{}),n(i)})}_unrollOther(e,t,i){(0,a._optionalChain)([e,"optionalAccess",e=>e.value,"optionalAccess",e=>e.value])?t[e.name]=e.value.value:(0,a._optionalChain)([e,"optionalAccess",e=>e.value,"optionalAccess",e=>e.description])&&"function"!==(0,a._optionalChain)([e,"optionalAccess",e=>e.value,"optionalAccess",e=>e.type])&&(t[e.name]=`<${e.value.description}>`),i(t)}}function c(){try{return new d}catch(e){return}}let u="LocalVariables",m=(0,o.defineIntegration)((e={},t=c())=>{let o;let d=new n.LRUMap(20),m=!1;return{name:u,setupOnce(){let n=(0,s.getClient)(),c=(0,a._optionalChain)([n,"optionalAccess",e=>e.getOptions,"call",e=>e()]);if(t&&(0,a._optionalChain)([c,"optionalAccess",e=>e.includeLocalVariables])){if(r.NODE_VERSION.major<18){(0,i.logger).log("The `LocalVariables` integration is only supported on Node >= v18.");return}let n=!1!==e.captureAllExceptions;if(t.configureAndConnect((e,i)=>(function(e,{params:{reason:i,data:n,callFrames:s}},r){if("exception"!==i&&"promiseRejection"!==i){r();return}(0,a._optionalChain)([o,"optionalCall",e=>e()]);let c=(0,p.hashFromStack)(e,(0,a._optionalChain)([n,"optionalAccess",e=>e.description]));if(void 0==c){r();return}let{add:u,next:m}=l(e=>{d.set(c,e),r()});for(let e=0;e"local"===e.type),p="global"!==o.className&&o.className?`${o.className}.${n}`:n;if(void 0===(0,a._optionalChain)([r,"optionalAccess",e=>e.object,"access",e=>e.objectId]))u(t=>{t[e]={function:p},m(t)});else{let i=r.object.objectId;u(n=>(0,a._optionalChain)([t,"optionalAccess",e=>e.getLocalVariables,"call",t=>t(i,t=>{n[e]={function:p,vars:t},m(n)})]))}}m([])})(c.stackParser,e,i),n),n){let n=e.maxExceptionsPerSecond||50;o=(0,p.createRateLimiter)(n,()=>{(0,i.logger).log("Local variables rate-limit lifted."),(0,a._optionalChain)([t,"optionalAccess",e=>e.setPauseOnExceptions,"call",e=>e(!0)])},e=>{(0,i.logger).log(`Local variables rate-limit exceeded. Disabling capturing of caught exceptions for ${e} seconds.`),(0,a._optionalChain)([t,"optionalAccess",e=>e.setPauseOnExceptions,"call",e=>e(!1)])})}m=!0}},processEvent:e=>m?function(e){for(let t of(0,a._optionalChain)([e,"optionalAccess",e=>e.exception,"optionalAccess",e=>e.values])||[])!function(e){let t=(0,p.hashFrames)((0,a._optionalChain)([e,"optionalAccess",e=>e.stacktrace,"optionalAccess",e=>e.frames]));if(void 0===t)return;let i=d.remove(t);if(void 0===i)return;let n=(0,a._optionalChain)([e,"access",e=>e.stacktrace,"optionalAccess",e=>e.frames,"optionalAccess",e=>e.length])||0;for(let t=0;te.stacktrace,"optionalAccess",e=>e.frames,"optionalAccess",e=>e[o]])||!i[t])break;void 0!==i[t].vars&&!1!==e.stacktrace.frames[o].in_app&&(0,p.functionNamesMatch)(e.stacktrace.frames[o].function,i[t].function)&&(e.stacktrace.frames[o].vars=i[t].vars)}}(t);return e}(e):e,_getCachedFramesCount:()=>d.size,_getFirstCachedFrame:()=>d.values()[0]}}),g=(0,o.convertIntegrationFnToClass)(u,m)}),E("1KgWA",function(e,t){function a(e,t,a){let i=0,n=5,o=0;return setInterval(()=>{0===o?i>e&&(a(n*=2),n>86400&&(n=86400),o=n):0==(o-=1)&&t(),i=0},1e3).unref(),()=>{i+=1}}function i(e){return void 0!==e&&(0===e.length||"?"===e||""===e)}function n(e,t){return e===t||i(e)&&i(t)}function o(e){if(void 0!==e)return e.slice(-10).reduce((e,t)=>`${e},${t.function},${t.lineno},${t.colno}`,"")}function s(e,t){if(void 0!==t)return o(e(t,1))}_(e.exports,"createRateLimiter",()=>a),_(e.exports,"functionNamesMatch",()=>n),_(e.exports,"hashFrames",()=>o),_(e.exports,"hashFromStack",()=>s)}),E("esVyk",function(e,t){let a;_(e.exports,"modulesIntegration",()=>r),_(e.exports,"Modules",()=>p);var o=T("hVqbS");let s="Modules",r=(0,o.defineIntegration)(()=>({name:s,setupOnce(){},processEvent:e=>(e.modules={...e.modules,...(a||(a=function(){let e=[],t=function(){try{return[]}catch(e){return[]}}(),a={},o={};return t.forEach(t=>{let s=t,r=()=>{let t=s;if(!(s=(0,i.dirname)(t))||t===s||o[t])return;if(0>e.indexOf(s))return r();let p=(0,i.join)(t,"package.json");if(o[t]=!0,!(0,n.existsSync)(p))return r();try{let e=JSON.parse((0,n.readFileSync)(p,"utf8"));a[e.name]=e.version}catch(e){}};r()}),a}()),a)},e)})),p=(0,o.convertIntegrationFnToClass)(s,r)}),E("dDWKn",function(e,t){_(e.exports,"onUncaughtExceptionIntegration",()=>p),_(e.exports,"OnUncaughtException",()=>l);var a=T("deYUe"),i=T("hVqbS"),n=T("k2ErF"),o=T("2xRAP"),s=T("7xJCG");let r="OnUncaughtException",p=(0,i.defineIntegration)((e={})=>{let t={exitEvenIfOtherHandlersAreRegistered:!0,...e};return{name:r,setupOnce(){},setup(e){G.process.on("uncaughtException",function(e,t){let i;let r=!1,p=!1,l=!1,d=e.getOptions();return Object.assign(c=>{let u=s.logAndExitProcess;t.onFatalError?u=t.onFatalError:d.onFatalError&&(u=d.onFatalError);let m=G.process.listeners("uncaughtException").reduce((e,t)=>"domainUncaughtExceptionClear"===t.name||t.tag&&"sentry_tracingErrorCallback"===t.tag||t._errorHandler?e:e+1,0),g=t.exitEvenIfOtherHandlersAreRegistered||0===m;r?g&&(l?(o.DEBUG_BUILD&&(0,n.logger).warn("uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown"),(0,s.logAndExitProcess)(c)):p||(p=!0,setTimeout(()=>{l||(l=!0,u(i,c))},2e3))):(i=c,r=!0,(0,a.getClient)()===e&&(0,a.captureException)(c,{originalException:c,captureContext:{level:"fatal"},mechanism:{handled:!1,type:"onuncaughtexception"}}),!l&&g&&(l=!0,u(c)))},{_errorHandler:!0})}(e,t))}}}),l=(0,i.convertIntegrationFnToClass)(r,p)}),E("7xJCG",function(e,t){_(e.exports,"logAndExitProcess",()=>o);var a=T("deYUe"),i=T("k2ErF"),n=T("2xRAP");function o(e){(0,i.consoleSandbox)(()=>{console.error(e)});let t=(0,a.getClient)();void 0===t&&(n.DEBUG_BUILD&&(0,i.logger).warn("No NodeClient was defined, we are exiting the process now."),G.process.exit(1));let o=t.getOptions(),s=o&&o.shutdownTimeout&&o.shutdownTimeout>0&&o.shutdownTimeout||2e3;t.close(s).then(e=>{!e&&n.DEBUG_BUILD&&(0,i.logger).warn("We reached the timeout for emptying the request buffer, still exiting now!"),G.process.exit(1)},e=>{n.DEBUG_BUILD&&(0,i.logger).error(e)})}}),E("kpGGI",function(e,t){_(e.exports,"onUnhandledRejectionIntegration",()=>r),_(e.exports,"OnUnhandledRejection",()=>p);var a=T("deYUe"),i=T("hVqbS"),n=T("k2ErF"),o=T("7xJCG");let s="OnUnhandledRejection",r=(0,i.defineIntegration)((e={})=>{let t=e.mode||"warn";return{name:s,setupOnce(){},setup(e){var i;G.process.on("unhandledRejection",(i={mode:t},function(t,s){(0,a.getClient)()===e&&((0,a.captureException)(t,{originalException:s,captureContext:{extra:{unhandledPromiseRejection:!0}},mechanism:{handled:!1,type:"onunhandledrejection"}}),function(e,t){let a="This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:";"warn"===t.mode?(0,n.consoleSandbox)(()=>{console.warn(a),console.error(e&&e.stack?e.stack:e)}):"strict"===t.mode&&((0,n.consoleSandbox)(()=>{console.warn(a)}),(0,o.logAndExitProcess)(e))}(t,i))}))}}}),p=(0,i.convertIntegrationFnToClass)(s,r)}),E("7wvFM",function(e,t){_(e.exports,"spotlightIntegration",()=>r),_(e.exports,"Spotlight",()=>p);var a=T("hVqbS"),i=T("k2ErF"),n=T("agl5x");let o="Spotlight",r=(0,a.defineIntegration)((e={})=>{let t={sidecarUrl:e.sidecarUrl||"http://localhost:8969/stream"};return{name:o,setupOnce(){},setup(e){"object"==typeof process&&process.env&&"development"!==process.env.NODE_ENV&&(0,i.logger).warn("[Spotlight] It seems you're not in dev mode. Do you really want to have Spotlight enabled?"),function(e,t){let a=function(e){try{return new g.URL(`${e}`)}catch(t){(0,i.logger).warn(`[Spotlight] Invalid sidecar URL: ${e}`);return}}(t.sidecarUrl);if(!a)return;let o=0;if("function"!=typeof e.on){(0,i.logger).warn("[Spotlight] Cannot connect to spotlight due to missing method on SDK client (`client.on`)");return}e.on("beforeEnvelope",e=>{if(o>3){(0,i.logger).warn("[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests");return}let t=(0,n.serializeEnvelope)(e),r=(function(){let{request:e}=s;return"__sentry_original__"in e?e.__sentry_original__:e})()({method:"POST",path:a.pathname,hostname:a.hostname,port:a.port,headers:{"Content-Type":"application/x-sentry-envelope"}},e=>{e.on("data",()=>{}),e.on("end",()=>{}),e.setEncoding("utf8")});r.on("error",()=>{o++,(0,i.logger).warn("[Spotlight] Failed to send envelope to Spotlight Sidecar")}),r.write(t),r.end()})}(e,t)}}}),p=(0,a.convertIntegrationFnToClass)(o,r)}),E("aCFro",function(e,t){_(e.exports,"Undici",()=>y),_(e.exports,"nativeNodeFetchintegration",()=>C);var a,i,n=T("bsjXU"),o=T("hSiIl"),s=T("2gq4F"),r=T("6szME"),p=T("kTF8L"),l=T("c6AFW"),d=T("deYUe"),c=T("hVqbS"),u=T("3hDCQ"),m=T("cCmfn"),g=T("eCOpK"),h=T("7z6ft"),f=T("ehWym"),b=T("b2ZPh"),v=T("iD1up"),I=T("04aWn");(a=i||(i={})).RequestCreate="undici:request:create",a.RequestEnd="undici:request:headers",a.RequestError="undici:request:error";let C=(0,c.defineIntegration)(e=>new y(e));class y{static __initStatic(){this.id="Undici"}__init(){this.name=y.id}__init2(){this._createSpanUrlMap=new p.LRUMap(100)}__init3(){this._headersUrlMap=new p.LRUMap(100)}constructor(e={}){y.prototype.__init.call(this),y.prototype.__init2.call(this),y.prototype.__init3.call(this),y.prototype.__init4.call(this),y.prototype.__init5.call(this),y.prototype.__init6.call(this),this._options={breadcrumbs:void 0===e.breadcrumbs||e.breadcrumbs,tracing:e.tracing,shouldCreateSpanForRequest:e.shouldCreateSpanForRequest}}setupOnce(e){let t;if(!(I.NODE_VERSION.major<16)){try{t=$7bbd994cd14cc33f$import$ea7cfbf0dcb32429}catch(e){}t&&t.subscribe&&(t.subscribe(i.RequestCreate,this._onRequestCreate),t.subscribe(i.RequestEnd,this._onRequestEnd),t.subscribe(i.RequestError,this._onRequestError))}}_shouldCreateSpan(e){if(!1===this._options.tracing||void 0===this._options.tracing&&!(0,h.hasTracingEnabled)())return!1;if(void 0===this._options.shouldCreateSpanForRequest)return!0;let t=this._createSpanUrlMap.get(e);if(void 0!==t)return t;let a=this._options.shouldCreateSpanForRequest(e);return this._createSpanUrlMap.set(e,a),a}__init4(){this._onRequestCreate=e=>{if(!(0,n._optionalChain)([d.getClient,"call",e=>e(),"optionalAccess",e=>e.getIntegration,"call",e=>e(y)]))return;let{request:t}=e,a=t.origin?t.origin.toString()+t.path:t.path,i=(0,d.getClient)();if(!i||(0,f.isSentryRequestUrl)(a,i)||void 0!==t.__sentry_span__)return;let p=i.getOptions(),c=(0,d.getCurrentScope)(),h=(0,g.getIsolationScope)(),b=(0,u.getActiveSpan)(),I=this._shouldCreateSpan(a)?function(e,t,a){let i=(0,r.parseUrl)(a),o=t.method||"GET",s={"http.method":o};return i.search&&(s["http.query"]=i.search),i.hash&&(s["http.fragment"]=i.hash),(0,n._optionalChain)([e,"optionalAccess",e=>e.startChild,"call",e=>e({op:"http.client",origin:"auto.http.node.undici",description:`${o} ${(0,r.getSanitizedUrlString)(i)}`,data:s})])}(b,t,a):void 0;if(I&&(t.__sentry_span__=I),(e=>{if(void 0===p.tracePropagationTargets)return!0;let t=this._headersUrlMap.get(e);if(void 0!==t)return t;let a=(0,l.stringMatchesSomePattern)(e,p.tracePropagationTargets);return this._headersUrlMap.set(e,a),a})(a)){var C;let{traceId:e,spanId:a,sampled:n,dsc:r}={...h.getPropagationContext(),...c.getPropagationContext()},p=I?(0,v.spanToTraceHeader)(I):(0,s.generateSentryTraceHeader)(e,a,n);C=(0,o.dynamicSamplingContextToSentryBaggageHeader)(r||(I?(0,m.getDynamicSamplingContextFromSpan)(I):(0,m.getDynamicSamplingContextFromClient)(e,i,c))),(Array.isArray(t.headers)?t.headers.some(e=>"sentry-trace"===e):t.headers.split("\r\n").some(e=>e.startsWith("sentry-trace:")))||(t.addHeader("sentry-trace",p),C&&t.addHeader("baggage",C))}}}__init5(){this._onRequestEnd=e=>{if(!(0,n._optionalChain)([d.getClient,"call",e=>e(),"optionalAccess",e=>e.getIntegration,"call",e=>e(y)]))return;let{request:t,response:a}=e,i=t.origin?t.origin.toString()+t.path:t.path;if((0,f.isSentryRequestUrl)(i,(0,d.getClient)()))return;let o=t.__sentry_span__;o&&((0,b.setHttpStatus)(o,a.statusCode),o.end()),this._options.breadcrumbs&&(0,d.addBreadcrumb)({category:"http",data:{method:t.method,status_code:a.statusCode,url:i},type:"http"},{event:"response",request:t,response:a})}}__init6(){this._onRequestError=e=>{if(!(0,n._optionalChain)([d.getClient,"call",e=>e(),"optionalAccess",e=>e.getIntegration,"call",e=>e(y)]))return;let{request:t}=e,a=t.origin?t.origin.toString()+t.path:t.path;if((0,f.isSentryRequestUrl)(a,(0,d.getClient)()))return;let i=t.__sentry_span__;i&&(i.setStatus("internal_error"),i.end()),this._options.breadcrumbs&&(0,d.addBreadcrumb)({category:"http",data:{method:t.method,url:a},level:"error",type:"http"},{event:"error",request:t})}}}y.__initStatic()}),E("jUJ2l",function(e,t){_(e.exports,"createGetModuleFromFilename",()=>o);var a=T("eANmd");function n(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}function o(e=process.argv[1]?(0,a.dirname)(process.argv[1]):process.cwd(),t="\\"===i.sep){let o=t?n(e):e;return e=>{if(!e)return;let a=t?n(e):e,{dir:s,base:r,ext:p}=(0,i.posix).parse(a);(".js"===p||".mjs"===p||".cjs"===p)&&(r=r.slice(0,-1*p.length)),s||(s=".");let l=s.lastIndexOf("/node_modules");if(l>-1)return`${s.slice(l+14).replace(/\//g,".")}:${r}`;if(s.startsWith(o)){let e=s.slice(o.length+1).replace(/\//g,".");return e&&(e+=":"),e+=r}return r}}}),E("eANmd",function(e,t){_(e.exports,"dirname",()=>i);let a=/^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/;function i(e){let t=function(e){let t=e.length>1024?`${e.slice(-1024)}`:e,i=a.exec(t);return i?i.slice(1):[]}(e),i=t[0],n=t[1];return i||n?(n&&(n=n.slice(0,n.length-1)),i+n):"."}}),E("aCqBu",function(e,t){_(e.exports,"deepReadDirSync",()=>a);function a(e){let t=i.resolve(e);if(!n.existsSync(t))throw Error(`Cannot read contents of ${t}. Directory does not exist.`);if(!n.statSync(t).isDirectory())throw Error(`Cannot read contents of ${t}, because it is not a directory.`);let a=e=>n.readdirSync(e).reduce((t,o)=>{let s=i.join(e,o);return n.statSync(s).isDirectory()?t.concat(a(s)):(t.push(s),t)},[]);return a(t).map(e=>i.relative(t,e))}}),E("eOLhk",function(e,t){_(e.exports,"enableAnrDetection",()=>n);var a=T("deYUe"),i=T("5x2pZ");function n(e){let t=(0,a.getClient)();return new i.Anr(e).setup(t),Promise.resolve()}}),E("5x2pZ",function(e,t){_(e.exports,"anrIntegration",()=>u),_(e.exports,"Anr",()=>m);var a=T("bsjXU"),i=T("bfWYX"),n=T("fArVl"),o=T("k2ErF"),s=T("hVqbS"),r=T("deYUe"),p=T("04aWn"),l=T("3yNTe");function d(e,...t){(0,o.logger).log(`[ANR] ${e}`,...t)}async function c(e){let t={message:"ANR"},i={};for(let a of e.getEventProcessors()){if(null===t)break;t=await a(t,i)}return(0,a._optionalChain)([t,"optionalAccess",e=>e.contexts])||{}}let u=(0,s.defineIntegration)((e={})=>({name:"Anr",setupOnce(){},setup(t){if(p.NODE_VERSION.major<16||16===p.NODE_VERSION.major&&p.NODE_VERSION.minor<17)throw Error("ANR detection requires Node 16.17.0 or later");setImmediate(()=>h(t,e))}})),m=(0,s.convertIntegrationFnToClass)("Anr",u);async function h(t,a){let s=await c(t),p=t.getDsn();if(!p)return;(0,i._optionalChainDelete)([s,"access",e=>e.app,"optionalAccess",e=>delete e.app_memory]),(0,i._optionalChainDelete)([s,"access",e=>e.device,"optionalAccess",e=>delete e.free_memory]);let u=t.getOptions(),m=t.getSdkMetadata()||{};m.sdk&&(m.sdk.integrations=u.integrations.map(e=>e.name));let h={debug:(0,o.logger).isEnabled(),dsn:p,environment:u.environment||"production",release:u.release,dist:u.dist,sdkMetadata:m,appRootPath:a.appRootPath,pollInterval:a.pollInterval||50,anrThreshold:a.anrThreshold||5e3,captureStackTrace:!!a.captureStackTrace,staticTags:a.staticTags||{},contexts:s};h.captureStackTrace&&!x.url()&&x.open(0);let{Worker:f}=(0,n.dynamicRequire)(e,"worker_threads"),b=new f(new g.URL(`data:application/javascript;base64,${l.base64WorkerScript}`),{workerData:h});process.on("exit",()=>{b.terminate()});let v=setInterval(()=>{try{let e=(0,r.getCurrentScope)().getSession(),t=e?{...e,toJSON:void 0}:void 0;b.postMessage({session:t})}catch(e){}},h.pollInterval);v.unref(),b.on("message",e=>{"session-ended"===e&&(d("ANR event sent from ANR worker. Clearing session in this thread."),(0,r.getCurrentScope)().setSession(void 0))}),b.once("error",e=>{clearInterval(v),d("ANR worker error",e)}),b.once("exit",e=>{clearInterval(v),d("ANR worker exit",e)}),b.unref()}}),E("bfWYX",function(e,t){_(e.exports,"_optionalChainDelete",()=>i);var a=T("bsjXU");function i(e){let t=(0,a._optionalChain)(e);return null==t||t}}),E("3yNTe",function(e,t){_(e.exports,"base64WorkerScript",()=>a);/*! @sentry/node 7.107.0 (48b8169) | https://github.com/getsentry/sentry-javascript */let a="aW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJ2luc3BlY3Rvcic7CmltcG9ydCB7IHdvcmtlckRhdGEsIHBhcmVudFBvcnQgfSBmcm9tICd3b3JrZXJfdGhyZWFkcyc7CmltcG9ydCB7IHBvc2l4LCBzZXAgfSBmcm9tICdwYXRoJzsKaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJzsKaW1wb3J0ICogYXMgaHR0cHMgZnJvbSAnaHR0cHMnOwppbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSc7CmltcG9ydCB7IFVSTCB9IGZyb20gJ3VybCc7CmltcG9ydCB7IGNyZWF0ZUd6aXAgfSBmcm9tICd6bGliJzsKaW1wb3J0ICogYXMgbmV0IGZyb20gJ25ldCc7CmltcG9ydCAqIGFzIHRscyBmcm9tICd0bHMnOwoKLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZApjb25zdCBvYmplY3RUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIG9uZSBvZiBhIGZldyBFcnJvciBvciBFcnJvci1saWtlCiAqIHtAbGluayBpc0Vycm9yfS4KICoKICogQHBhcmFtIHdhdCBBIHZhbHVlIHRvIGJlIGNoZWNrZWQuCiAqIEByZXR1cm5zIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgdGhlIHJlc3VsdC4KICovCmZ1bmN0aW9uIGlzRXJyb3Iod2F0KSB7CiAgc3dpdGNoIChvYmplY3RUb1N0cmluZy5jYWxsKHdhdCkpIHsKICAgIGNhc2UgJ1tvYmplY3QgRXJyb3JdJzoKICAgIGNhc2UgJ1tvYmplY3QgRXhjZXB0aW9uXSc6CiAgICBjYXNlICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nOgogICAgICByZXR1cm4gdHJ1ZTsKICAgIGRlZmF1bHQ6CiAgICAgIHJldHVybiBpc0luc3RhbmNlT2Yod2F0LCBFcnJvcik7CiAgfQp9Ci8qKgogKiBDaGVja3Mgd2hldGhlciBnaXZlbiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgZ2l2ZW4gYnVpbHQtaW4gY2xhc3MuCiAqCiAqIEBwYXJhbSB3YXQgVGhlIHZhbHVlIHRvIGJlIGNoZWNrZWQKICogQHBhcmFtIGNsYXNzTmFtZQogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc0J1aWx0aW4od2F0LCBjbGFzc05hbWUpIHsKICByZXR1cm4gb2JqZWN0VG9TdHJpbmcuY2FsbCh3YXQpID09PSBgW29iamVjdCAke2NsYXNzTmFtZX1dYDsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhIHN0cmluZwogKiB7QGxpbmsgaXNTdHJpbmd9LgogKgogKiBAcGFyYW0gd2F0IEEgdmFsdWUgdG8gYmUgY2hlY2tlZC4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNTdHJpbmcod2F0KSB7CiAgcmV0dXJuIGlzQnVpbHRpbih3YXQsICdTdHJpbmcnKTsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhbiBvYmplY3QgbGl0ZXJhbCwgb3IgYSBjbGFzcyBpbnN0YW5jZS4KICoge0BsaW5rIGlzUGxhaW5PYmplY3R9LgogKgogKiBAcGFyYW0gd2F0IEEgdmFsdWUgdG8gYmUgY2hlY2tlZC4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh3YXQpIHsKICByZXR1cm4gaXNCdWlsdGluKHdhdCwgJ09iamVjdCcpOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIGFuIEV2ZW50IGluc3RhbmNlCiAqIHtAbGluayBpc0V2ZW50fS4KICoKICogQHBhcmFtIHdhdCBBIHZhbHVlIHRvIGJlIGNoZWNrZWQuCiAqIEByZXR1cm5zIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgdGhlIHJlc3VsdC4KICovCmZ1bmN0aW9uIGlzRXZlbnQod2F0KSB7CiAgcmV0dXJuIHR5cGVvZiBFdmVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNJbnN0YW5jZU9mKHdhdCwgRXZlbnQpOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIGFuIEVsZW1lbnQgaW5zdGFuY2UKICoge0BsaW5rIGlzRWxlbWVudH0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc0VsZW1lbnQod2F0KSB7CiAgcmV0dXJuIHR5cGVvZiBFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBpc0luc3RhbmNlT2Yod2F0LCBFbGVtZW50KTsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlIGhhcyBhIHRoZW4gZnVuY3Rpb24uCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKi8KZnVuY3Rpb24gaXNUaGVuYWJsZSh3YXQpIHsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzCiAgcmV0dXJuIEJvb2xlYW4od2F0ICYmIHdhdC50aGVuICYmIHR5cGVvZiB3YXQudGhlbiA9PT0gJ2Z1bmN0aW9uJyk7Cn0KCi8qKgogKiBDaGVja3Mgd2hldGhlciBnaXZlbiB2YWx1ZSdzIHR5cGUgaXMgYSBTeW50aGV0aWNFdmVudAogKiB7QGxpbmsgaXNTeW50aGV0aWNFdmVudH0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc1N5bnRoZXRpY0V2ZW50KHdhdCkgewogIHJldHVybiBpc1BsYWluT2JqZWN0KHdhdCkgJiYgJ25hdGl2ZUV2ZW50JyBpbiB3YXQgJiYgJ3ByZXZlbnREZWZhdWx0JyBpbiB3YXQgJiYgJ3N0b3BQcm9wYWdhdGlvbicgaW4gd2F0Owp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUgaXMgTmFOCiAqIHtAbGluayBpc05hTn0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc05hTiQxKHdhdCkgewogIHJldHVybiB0eXBlb2Ygd2F0ID09PSAnbnVtYmVyJyAmJiB3YXQgIT09IHdhdDsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiBwcm92aWRlZCBjb25zdHJ1Y3Rvci4KICoge0BsaW5rIGlzSW5zdGFuY2VPZn0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcGFyYW0gYmFzZSBBIGNvbnN0cnVjdG9yIHRvIGJlIHVzZWQgaW4gYSBjaGVjay4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNJbnN0YW5jZU9mKHdhdCwgYmFzZSkgewogIHRyeSB7CiAgICByZXR1cm4gd2F0IGluc3RhbmNlb2YgYmFzZTsKICB9IGNhdGNoIChfZSkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhIFZ1ZSBWaWV3TW9kZWwuCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc1Z1ZVZpZXdNb2RlbCh3YXQpIHsKICAvLyBOb3QgdXNpbmcgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyBiZWNhdXNlIGluIFZ1ZSAzIGl0IHdvdWxkIHJlYWQgdGhlIGluc3RhbmNlJ3MgU3ltYm9sKFN5bWJvbC50b1N0cmluZ1RhZykgcHJvcGVydHkuCiAgcmV0dXJuICEhKHR5cGVvZiB3YXQgPT09ICdvYmplY3QnICYmIHdhdCAhPT0gbnVsbCAmJiAoKHdhdCApLl9faXNWdWUgfHwgKHdhdCApLl9pc1Z1ZSkpOwp9CgovKiogSW50ZXJuYWwgZ2xvYmFsIHdpdGggY29tbW9uIHByb3BlcnRpZXMgYW5kIFNlbnRyeSBleHRlbnNpb25zICAqLwoKLy8gVGhlIGNvZGUgYmVsb3cgZm9yICdpc0dsb2JhbE9iaicgYW5kICdHTE9CQUxfT0JKJyB3YXMgY29waWVkIGZyb20gY29yZS1qcyBiZWZvcmUgbW9kaWZpY2F0aW9uCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvMWI5NDRkZjU1MjgyY2RjOTljOTBkYjVmNDllYjBiNmVkYTJjYzBhMy9wYWNrYWdlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMKLy8gY29yZS1qcyBoYXMgdGhlIGZvbGxvd2luZyBsaWNlbmNlOgovLwovLyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYKLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQovLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAovLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgovLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgovLyBUSEUgU09GVFdBUkUuCgovKiogUmV0dXJucyAnb2JqJyBpZiBpdCdzIHRoZSBnbG9iYWwgb2JqZWN0LCBvdGhlcndpc2UgcmV0dXJucyB1bmRlZmluZWQgKi8KZnVuY3Rpb24gaXNHbG9iYWxPYmoob2JqKSB7CiAgcmV0dXJuIG9iaiAmJiBvYmouTWF0aCA9PSBNYXRoID8gb2JqIDogdW5kZWZpbmVkOwp9CgovKiogR2V0J3MgdGhlIGdsb2JhbCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IEphdmFTY3JpcHQgcnVudGltZSAqLwpjb25zdCBHTE9CQUxfT0JKID0KICAodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgaXNHbG9iYWxPYmooZ2xvYmFsVGhpcykpIHx8CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscwogICh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKHdpbmRvdykpIHx8CiAgKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKHNlbGYpKSB8fAogICh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKGdsb2JhbCkpIHx8CiAgKGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiB0aGlzOwogIH0pKCkgfHwKICB7fTsKCi8qKgogKiBAZGVwcmVjYXRlZCBVc2UgR0xPQkFMX09CSiBpbnN0ZWFkIG9yIFdJTkRPVyBmcm9tIEBzZW50cnkvYnJvd3Nlci4gVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjgKICovCmZ1bmN0aW9uIGdldEdsb2JhbE9iamVjdCgpIHsKICByZXR1cm4gR0xPQkFMX09CSiA7Cn0KCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpjb25zdCBXSU5ET1cgPSBnZXRHbG9iYWxPYmplY3QoKTsKCmNvbnN0IERFRkFVTFRfTUFYX1NUUklOR19MRU5HVEggPSA4MDsKCi8qKgogKiBHaXZlbiBhIGNoaWxkIERPTSBlbGVtZW50LCByZXR1cm5zIGEgcXVlcnktc2VsZWN0b3Igc3RhdGVtZW50IGRlc2NyaWJpbmcgdGhhdAogKiBhbmQgaXRzIGFuY2VzdG9ycwogKiBlLmcuIFtIVE1MRWxlbWVudF0gPT4gYm9keSA+IGRpdiA+IGlucHV0I2Zvby5idG5bbmFtZT1iYXpdCiAqIEByZXR1cm5zIGdlbmVyYXRlZCBET00gcGF0aAogKi8KZnVuY3Rpb24gaHRtbFRyZWVBc1N0cmluZygKICBlbGVtLAogIG9wdGlvbnMgPSB7fSwKKSB7CiAgaWYgKCFlbGVtKSB7CiAgICByZXR1cm4gJzx1bmtub3duPic7CiAgfQoKICAvLyB0cnkvY2F0Y2ggYm90aDoKICAvLyAtIGFjY2Vzc2luZyBldmVudC50YXJnZXQgKHNlZSBnZXRzZW50cnkvcmF2ZW4tanMjODM4LCAjNzY4KQogIC8vIC0gYGh0bWxUcmVlQXNTdHJpbmdgIGJlY2F1c2UgaXQncyBjb21wbGV4LCBhbmQganVzdCBhY2Nlc3NpbmcgdGhlIERPTSBpbmNvcnJlY3RseQogIC8vIC0gY2FuIHRocm93IGFuIGV4Y2VwdGlvbiBpbiBzb21lIGNpcmN1bXN0YW5jZXMuCiAgdHJ5IHsKICAgIGxldCBjdXJyZW50RWxlbSA9IGVsZW0gOwogICAgY29uc3QgTUFYX1RSQVZFUlNFX0hFSUdIVCA9IDU7CiAgICBjb25zdCBvdXQgPSBbXTsKICAgIGxldCBoZWlnaHQgPSAwOwogICAgbGV0IGxlbiA9IDA7CiAgICBjb25zdCBzZXBhcmF0b3IgPSAnID4gJzsKICAgIGNvbnN0IHNlcExlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGg7CiAgICBsZXQgbmV4dFN0cjsKICAgIGNvbnN0IGtleUF0dHJzID0gQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IG9wdGlvbnMgOiBvcHRpb25zLmtleUF0dHJzOwogICAgY29uc3QgbWF4U3RyaW5nTGVuZ3RoID0gKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpICYmIG9wdGlvbnMubWF4U3RyaW5nTGVuZ3RoKSB8fCBERUZBVUxUX01BWF9TVFJJTkdfTEVOR1RIOwoKICAgIHdoaWxlIChjdXJyZW50RWxlbSAmJiBoZWlnaHQrKyA8IE1BWF9UUkFWRVJTRV9IRUlHSFQpIHsKICAgICAgbmV4dFN0ciA9IF9odG1sRWxlbWVudEFzU3RyaW5nKGN1cnJlbnRFbGVtLCBrZXlBdHRycyk7CiAgICAgIC8vIGJhaWwgb3V0IGlmCiAgICAgIC8vIC0gbmV4dFN0ciBpcyB0aGUgJ2h0bWwnIGVsZW1lbnQKICAgICAgLy8gLSB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgdGhhdCB3b3VsZCBiZSBjcmVhdGVkIGV4Y2VlZHMgbWF4U3RyaW5nTGVuZ3RoCiAgICAgIC8vICAgKGlnbm9yZSB0aGlzIGxpbWl0IGlmIHdlIGFyZSBvbiB0aGUgZmlyc3QgaXRlcmF0aW9uKQogICAgICBpZiAobmV4dFN0ciA9PT0gJ2h0bWwnIHx8IChoZWlnaHQgPiAxICYmIGxlbiArIG91dC5sZW5ndGggKiBzZXBMZW5ndGggKyBuZXh0U3RyLmxlbmd0aCA+PSBtYXhTdHJpbmdMZW5ndGgpKSB7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICAgIG91dC5wdXNoKG5leHRTdHIpOwoKICAgICAgbGVuICs9IG5leHRTdHIubGVuZ3RoOwogICAgICBjdXJyZW50RWxlbSA9IGN1cnJlbnRFbGVtLnBhcmVudE5vZGU7CiAgICB9CgogICAgcmV0dXJuIG91dC5yZXZlcnNlKCkuam9pbihzZXBhcmF0b3IpOwogIH0gY2F0Y2ggKF9vTykgewogICAgcmV0dXJuICc8dW5rbm93bj4nOwogIH0KfQoKLyoqCiAqIFJldHVybnMgYSBzaW1wbGUsIHF1ZXJ5LXNlbGVjdG9yIHJlcHJlc2VudGF0aW9uIG9mIGEgRE9NIGVsZW1lbnQKICogZS5nLiBbSFRNTEVsZW1lbnRdID0+IGlucHV0I2Zvby5idG5bbmFtZT1iYXpdCiAqIEByZXR1cm5zIGdlbmVyYXRlZCBET00gcGF0aAogKi8KZnVuY3Rpb24gX2h0bWxFbGVtZW50QXNTdHJpbmcoZWwsIGtleUF0dHJzKSB7CiAgY29uc3QgZWxlbSA9IGVsCgo7CgogIGNvbnN0IG91dCA9IFtdOwogIGxldCBjbGFzc05hbWU7CiAgbGV0IGNsYXNzZXM7CiAgbGV0IGtleTsKICBsZXQgYXR0cjsKICBsZXQgaTsKCiAgaWYgKCFlbGVtIHx8ICFlbGVtLnRhZ05hbWUpIHsKICAgIHJldHVybiAnJzsKICB9CgogIC8vIEB0cy1leHBlY3QtZXJyb3IgV0lORE9XIGhhcyBIVE1MRWxlbWVudAogIGlmIChXSU5ET1cuSFRNTEVsZW1lbnQpIHsKICAgIC8vIElmIHVzaW5nIHRoZSBjb21wb25lbnQgbmFtZSBhbm5vdGF0aW9uIHBsdWdpbiwgdGhpcyB2YWx1ZSBtYXkgYmUgYXZhaWxhYmxlIG9uIHRoZSBET00gbm9kZQogICAgaWYgKGVsZW0gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBlbGVtLmRhdGFzZXQgJiYgZWxlbS5kYXRhc2V0WydzZW50cnlDb21wb25lbnQnXSkgewogICAgICByZXR1cm4gZWxlbS5kYXRhc2V0WydzZW50cnlDb21wb25lbnQnXTsKICAgIH0KICB9CgogIG91dC5wdXNoKGVsZW0udGFnTmFtZS50b0xvd2VyQ2FzZSgpKTsKCiAgLy8gUGFpcnMgb2YgYXR0cmlidXRlIGtleXMgZGVmaW5lZCBpbiBgc2VyaWFsaXplQXR0cmlidXRlYCBhbmQgdGhlaXIgdmFsdWVzIG9uIGVsZW1lbnQuCiAgY29uc3Qga2V5QXR0clBhaXJzID0KICAgIGtleUF0dHJzICYmIGtleUF0dHJzLmxlbmd0aAogICAgICA/IGtleUF0dHJzLmZpbHRlcihrZXlBdHRyID0+IGVsZW0uZ2V0QXR0cmlidXRlKGtleUF0dHIpKS5tYXAoa2V5QXR0ciA9PiBba2V5QXR0ciwgZWxlbS5nZXRBdHRyaWJ1dGUoa2V5QXR0cildKQogICAgICA6IG51bGw7CgogIGlmIChrZXlBdHRyUGFpcnMgJiYga2V5QXR0clBhaXJzLmxlbmd0aCkgewogICAga2V5QXR0clBhaXJzLmZvckVhY2goa2V5QXR0clBhaXIgPT4gewogICAgICBvdXQucHVzaChgWyR7a2V5QXR0clBhaXJbMF19PSIke2tleUF0dHJQYWlyWzFdfSJdYCk7CiAgICB9KTsKICB9IGVsc2UgewogICAgaWYgKGVsZW0uaWQpIHsKICAgICAgb3V0LnB1c2goYCMke2VsZW0uaWR9YCk7CiAgICB9CgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdAogICAgY2xhc3NOYW1lID0gZWxlbS5jbGFzc05hbWU7CiAgICBpZiAoY2xhc3NOYW1lICYmIGlzU3RyaW5nKGNsYXNzTmFtZSkpIHsKICAgICAgY2xhc3NlcyA9IGNsYXNzTmFtZS5zcGxpdCgvXHMrLyk7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBjbGFzc2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgb3V0LnB1c2goYC4ke2NsYXNzZXNbaV19YCk7CiAgICAgIH0KICAgIH0KICB9CiAgY29uc3QgYWxsb3dlZEF0dHJzID0gWydhcmlhLWxhYmVsJywgJ3R5cGUnLCAnbmFtZScsICd0aXRsZScsICdhbHQnXTsKICBmb3IgKGkgPSAwOyBpIDwgYWxsb3dlZEF0dHJzLmxlbmd0aDsgaSsrKSB7CiAgICBrZXkgPSBhbGxvd2VkQXR0cnNbaV07CiAgICBhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoa2V5KTsKICAgIGlmIChhdHRyKSB7CiAgICAgIG91dC5wdXNoKGBbJHtrZXl9PSIke2F0dHJ9Il1gKTsKICAgIH0KICB9CiAgcmV0dXJuIG91dC5qb2luKCcnKTsKfQoKLyoqCiAqIFRoaXMgc2VydmVzIGFzIGEgYnVpbGQgdGltZSBmbGFnIHRoYXQgd2lsbCBiZSB0cnVlIGJ5IGRlZmF1bHQsIGJ1dCBmYWxzZSBpbiBub24tZGVidWcgYnVpbGRzIG9yIGlmIHVzZXJzIHJlcGxhY2UgYF9fU0VOVFJZX0RFQlVHX19gIGluIHRoZWlyIGdlbmVyYXRlZCBjb2RlLgogKgogKiBBVFRFTlRJT046IFRoaXMgY29uc3RhbnQgbXVzdCBuZXZlciBjcm9zcyBwYWNrYWdlIGJvdW5kYXJpZXMgKGkuZS4gYmUgZXhwb3J0ZWQpIHRvIGd1YXJhbnRlZSB0aGF0IGl0IGNhbiBiZSB1c2VkIGZvciB0cmVlIHNoYWtpbmcuCiAqLwpjb25zdCBERUJVR19CVUlMRCQxID0gKHR5cGVvZiBfX1NFTlRSWV9ERUJVR19fID09PSAndW5kZWZpbmVkJyB8fCBfX1NFTlRSWV9ERUJVR19fKTsKCi8qKiBQcmVmaXggZm9yIGxvZ2dpbmcgc3RyaW5ncyAqLwpjb25zdCBQUkVGSVggPSAnU2VudHJ5IExvZ2dlciAnOwoKY29uc3QgQ09OU09MRV9MRVZFTFMgPSBbCiAgJ2RlYnVnJywKICAnaW5mbycsCiAgJ3dhcm4nLAogICdlcnJvcicsCiAgJ2xvZycsCiAgJ2Fzc2VydCcsCiAgJ3RyYWNlJywKXSA7CgovKiogVGhpcyBtYXkgYmUgbXV0YXRlZCBieSB0aGUgY29uc29sZSBpbnN0cnVtZW50YXRpb24uICovCmNvbnN0IG9yaWdpbmFsQ29uc29sZU1ldGhvZHMKCiA9IHt9OwoKLyoqIEpTRG9jICovCgovKioKICogVGVtcG9yYXJpbHkgZGlzYWJsZSBzZW50cnkgY29uc29sZSBpbnN0cnVtZW50YXRpb25zLgogKgogKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIHJ1biBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBgY29uc29sZWAgbWVzc2FnZXMKICogQHJldHVybnMgVGhlIHJlc3VsdHMgb2YgdGhlIGNhbGxiYWNrCiAqLwpmdW5jdGlvbiBjb25zb2xlU2FuZGJveChjYWxsYmFjaykgewogIGlmICghKCdjb25zb2xlJyBpbiBHTE9CQUxfT0JKKSkgewogICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgfQoKICBjb25zdCBjb25zb2xlID0gR0xPQkFMX09CSi5jb25zb2xlIDsKICBjb25zdCB3cmFwcGVkRnVuY3MgPSB7fTsKCiAgY29uc3Qgd3JhcHBlZExldmVscyA9IE9iamVjdC5rZXlzKG9yaWdpbmFsQ29uc29sZU1ldGhvZHMpIDsKCiAgLy8gUmVzdG9yZSBhbGwgd3JhcHBlZCBjb25zb2xlIG1ldGhvZHMKICB3cmFwcGVkTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4gewogICAgY29uc3Qgb3JpZ2luYWxDb25zb2xlTWV0aG9kID0gb3JpZ2luYWxDb25zb2xlTWV0aG9kc1tsZXZlbF0gOwogICAgd3JhcHBlZEZ1bmNzW2xldmVsXSA9IGNvbnNvbGVbbGV2ZWxdIDsKICAgIGNvbnNvbGVbbGV2ZWxdID0gb3JpZ2luYWxDb25zb2xlTWV0aG9kOwogIH0pOwoKICB0cnkgewogICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgfSBmaW5hbGx5IHsKICAgIC8vIFJldmVydCByZXN0b3JhdGlvbiB0byB3cmFwcGVkIHN0YXRlCiAgICB3cmFwcGVkTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4gewogICAgICBjb25zb2xlW2xldmVsXSA9IHdyYXBwZWRGdW5jc1tsZXZlbF0gOwogICAgfSk7CiAgfQp9CgpmdW5jdGlvbiBtYWtlTG9nZ2VyKCkgewogIGxldCBlbmFibGVkID0gZmFsc2U7CiAgY29uc3QgbG9nZ2VyID0gewogICAgZW5hYmxlOiAoKSA9PiB7CiAgICAgIGVuYWJsZWQgPSB0cnVlOwogICAgfSwKICAgIGRpc2FibGU6ICgpID0+IHsKICAgICAgZW5hYmxlZCA9IGZhbHNlOwogICAgfSwKICAgIGlzRW5hYmxlZDogKCkgPT4gZW5hYmxlZCwKICB9OwoKICBpZiAoREVCVUdfQlVJTEQkMSkgewogICAgQ09OU09MRV9MRVZFTFMuZm9yRWFjaChuYW1lID0+IHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkKICAgICAgbG9nZ2VyW25hbWVdID0gKC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoZW5hYmxlZCkgewogICAgICAgICAgY29uc29sZVNhbmRib3goKCkgPT4gewogICAgICAgICAgICBHTE9CQUxfT0JKLmNvbnNvbGVbbmFtZV0oYCR7UFJFRklYfVske25hbWV9XTpgLCAuLi5hcmdzKTsKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfTsKICAgIH0pOwogIH0gZWxzZSB7CiAgICBDT05TT0xFX0xFVkVMUy5mb3JFYWNoKG5hbWUgPT4gewogICAgICBsb2dnZXJbbmFtZV0gPSAoKSA9PiB1bmRlZmluZWQ7CiAgICB9KTsKICB9CgogIHJldHVybiBsb2dnZXIgOwp9Cgpjb25zdCBsb2dnZXIgPSBtYWtlTG9nZ2VyKCk7CgovKioKICogUmVuZGVycyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHNuLgogKgogKiBCeSBkZWZhdWx0LCB0aGlzIHdpbGwgcmVuZGVyIHRoZSBwdWJsaWMgcmVwcmVzZW50YXRpb24gd2l0aG91dCB0aGUgcGFzc3dvcmQKICogY29tcG9uZW50LiBUbyBnZXQgdGhlIGRlcHJlY2F0ZWQgcHJpdmF0ZSByZXByZXNlbnRhdGlvbiwgc2V0IGB3aXRoUGFzc3dvcmRgCiAqIHRvIHRydWUuCiAqCiAqIEBwYXJhbSB3aXRoUGFzc3dvcmQgV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIHBhc3N3b3JkIHdpbGwgYmUgaW5jbHVkZWQuCiAqLwpmdW5jdGlvbiBkc25Ub1N0cmluZyhkc24sIHdpdGhQYXNzd29yZCA9IGZhbHNlKSB7CiAgY29uc3QgeyBob3N0LCBwYXRoLCBwYXNzLCBwb3J0LCBwcm9qZWN0SWQsIHByb3RvY29sLCBwdWJsaWNLZXkgfSA9IGRzbjsKICByZXR1cm4gKAogICAgYCR7cHJvdG9jb2x9Oi8vJHtwdWJsaWNLZXl9JHt3aXRoUGFzc3dvcmQgJiYgcGFzcyA/IGA6JHtwYXNzfWAgOiAnJ31gICsKICAgIGBAJHtob3N0fSR7cG9ydCA/IGA6JHtwb3J0fWAgOiAnJ30vJHtwYXRoID8gYCR7cGF0aH0vYCA6IHBhdGh9JHtwcm9qZWN0SWR9YAogICk7Cn0KCi8qKiBBbiBlcnJvciBlbWl0dGVkIGJ5IFNlbnRyeSBTREtzIGFuZCByZWxhdGVkIHV0aWxpdGllcy4gKi8KY2xhc3MgU2VudHJ5RXJyb3IgZXh0ZW5kcyBFcnJvciB7CiAgLyoqIERpc3BsYXkgbmFtZSBvZiB0aGlzIGVycm9yIGluc3RhbmNlLiAqLwoKICAgY29uc3RydWN0b3IoIG1lc3NhZ2UsIGxvZ0xldmVsID0gJ3dhcm4nKSB7CiAgICBzdXBlcihtZXNzYWdlKTt0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOwogICAgdGhpcy5uYW1lID0gbmV3LnRhcmdldC5wcm90b3R5cGUuY29uc3RydWN0b3IubmFtZTsKICAgIC8vIFRoaXMgc2V0cyB0aGUgcHJvdG90eXBlIHRvIGJlIGBFcnJvcmAsIG5vdCBgU2VudHJ5RXJyb3JgLiBJdCdzIHVuY2xlYXIgd2h5IHdlIGRvIHRoaXMsIGJ1dCBjb21tZW50aW5nIHRoaXMgbGluZQogICAgLy8gb3V0IGNhdXNlcyB2YXJpb3VzIChzZWVtaW5nbHkgdG90YWxseSB1bnJlbGF0ZWQpIHBsYXl3cmlnaHQgdGVzdHMgY29uc2lzdGVudGx5IHRpbWUgb3V0LiBGWUksIHRoaXMgbWFrZXMKICAgIC8vIGluc3RhbmNlcyBvZiBgU2VudHJ5RXJyb3JgIGZhaWwgYG9iaiBpbnN0YW5jZW9mIFNlbnRyeUVycm9yYCBjaGVja3MuCiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgbmV3LnRhcmdldC5wcm90b3R5cGUpOwogICAgdGhpcy5sb2dMZXZlbCA9IGxvZ0xldmVsOwogIH0KfQoKLyoqCiAqIEVuY29kZXMgZ2l2ZW4gb2JqZWN0IGludG8gdXJsLWZyaWVuZGx5IGZvcm1hdAogKgogKiBAcGFyYW0gb2JqZWN0IEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHNlcmlhbGl6YWJsZSB2YWx1ZXMKICogQHJldHVybnMgc3RyaW5nIEVuY29kZWQKICovCmZ1bmN0aW9uIHVybEVuY29kZShvYmplY3QpIHsKICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KQogICAgLm1hcChrZXkgPT4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9iamVjdFtrZXldKX1gKQogICAgLmpvaW4oJyYnKTsKfQoKLyoqCiAqIFRyYW5zZm9ybXMgYW55IGBFcnJvcmAgb3IgYEV2ZW50YCBpbnRvIGEgcGxhaW4gb2JqZWN0IHdpdGggYWxsIG9mIHRoZWlyIGVudW1lcmFibGUgcHJvcGVydGllcywgYW5kIHNvbWUgb2YgdGhlaXIKICogbm9uLWVudW1lcmFibGUgcHJvcGVydGllcyBhdHRhY2hlZC4KICoKICogQHBhcmFtIHZhbHVlIEluaXRpYWwgc291cmNlIHRoYXQgd2UgaGF2ZSB0byB0cmFuc2Zvcm0gaW4gb3JkZXIgZm9yIGl0IHRvIGJlIHVzYWJsZSBieSB0aGUgc2VyaWFsaXplcgogKiBAcmV0dXJucyBBbiBFdmVudCBvciBFcnJvciB0dXJuZWQgaW50byBhbiBvYmplY3QgLSBvciB0aGUgdmFsdWUgYXJndXJtZW50IGl0c2VsZiwgd2hlbiB2YWx1ZSBpcyBuZWl0aGVyIGFuIEV2ZW50IG5vcgogKiAgYW4gRXJyb3IuCiAqLwpmdW5jdGlvbiBjb252ZXJ0VG9QbGFpbk9iamVjdCgKICB2YWx1ZSwKKQoKIHsKICBpZiAoaXNFcnJvcih2YWx1ZSkpIHsKICAgIHJldHVybiB7CiAgICAgIG1lc3NhZ2U6IHZhbHVlLm1lc3NhZ2UsCiAgICAgIG5hbWU6IHZhbHVlLm5hbWUsCiAgICAgIHN0YWNrOiB2YWx1ZS5zdGFjaywKICAgICAgLi4uZ2V0T3duUHJvcGVydGllcyh2YWx1ZSksCiAgICB9OwogIH0gZWxzZSBpZiAoaXNFdmVudCh2YWx1ZSkpIHsKICAgIGNvbnN0IG5ld09iagoKID0gewogICAgICB0eXBlOiB2YWx1ZS50eXBlLAogICAgICB0YXJnZXQ6IHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHZhbHVlLnRhcmdldCksCiAgICAgIGN1cnJlbnRUYXJnZXQ6IHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHZhbHVlLmN1cnJlbnRUYXJnZXQpLAogICAgICAuLi5nZXRPd25Qcm9wZXJ0aWVzKHZhbHVlKSwKICAgIH07CgogICAgaWYgKHR5cGVvZiBDdXN0b21FdmVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNJbnN0YW5jZU9mKHZhbHVlLCBDdXN0b21FdmVudCkpIHsKICAgICAgbmV3T2JqLmRldGFpbCA9IHZhbHVlLmRldGFpbDsKICAgIH0KCiAgICByZXR1cm4gbmV3T2JqOwogIH0gZWxzZSB7CiAgICByZXR1cm4gdmFsdWU7CiAgfQp9CgovKiogQ3JlYXRlcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGFyZ2V0IG9mIGFuIGBFdmVudGAgb2JqZWN0ICovCmZ1bmN0aW9uIHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHRhcmdldCkgewogIHRyeSB7CiAgICByZXR1cm4gaXNFbGVtZW50KHRhcmdldCkgPyBodG1sVHJlZUFzU3RyaW5nKHRhcmdldCkgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGFyZ2V0KTsKICB9IGNhdGNoIChfb08pIHsKICAgIHJldHVybiAnPHVua25vd24+JzsKICB9Cn0KCi8qKiBGaWx0ZXJzIG91dCBhbGwgYnV0IGFuIG9iamVjdCdzIG93biBwcm9wZXJ0aWVzICovCmZ1bmN0aW9uIGdldE93blByb3BlcnRpZXMob2JqKSB7CiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkgewogICAgY29uc3QgZXh0cmFjdGVkUHJvcHMgPSB7fTsKICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gb2JqKSB7CiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wZXJ0eSkpIHsKICAgICAgICBleHRyYWN0ZWRQcm9wc1twcm9wZXJ0eV0gPSAob2JqIClbcHJvcGVydHldOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gZXh0cmFjdGVkUHJvcHM7CiAgfSBlbHNlIHsKICAgIHJldHVybiB7fTsKICB9Cn0KCi8qKgogKiBHaXZlbiBhbnkgb2JqZWN0LCByZXR1cm4gYSBuZXcgb2JqZWN0IGhhdmluZyByZW1vdmVkIGFsbCBmaWVsZHMgd2hvc2UgdmFsdWUgd2FzIGB1bmRlZmluZWRgLgogKiBXb3JrcyByZWN1cnNpdmVseSBvbiBvYmplY3RzIGFuZCBhcnJheXMuCiAqCiAqIEF0dGVudGlvbjogVGhpcyBmdW5jdGlvbiBrZWVwcyBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSByZXR1cm5lZCBvYmplY3QuCiAqLwpmdW5jdGlvbiBkcm9wVW5kZWZpbmVkS2V5cyhpbnB1dFZhbHVlKSB7CiAgLy8gVGhpcyBtYXAga2VlcHMgdHJhY2sgb2Ygd2hhdCBhbHJlYWR5IHZpc2l0ZWQgbm9kZXMgbWFwIHRvLgogIC8vIE91ciBTZXQgLSBiYXNlZCBtZW1vQnVpbGRlciBkb2Vzbid0IHdvcmsgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdG8gdGhlIG91dHB1dCBvYmplY3QgdG8gaGF2ZSB0aGUgc2FtZSBjaXJjdWxhcgogIC8vIHJlZmVyZW5jZXMgYXMgdGhlIGlucHV0IG9iamVjdC4KICBjb25zdCBtZW1vaXphdGlvbk1hcCA9IG5ldyBNYXAoKTsKCiAgLy8gVGhpcyBmdW5jdGlvbiBqdXN0IHByb3hpZXMgYF9kcm9wVW5kZWZpbmVkS2V5c2AgdG8ga2VlcCB0aGUgYG1lbW9CdWlsZGVyYCBvdXQgb2YgdGhpcyBmdW5jdGlvbidzIEFQSQogIHJldHVybiBfZHJvcFVuZGVmaW5lZEtleXMoaW5wdXRWYWx1ZSwgbWVtb2l6YXRpb25NYXApOwp9CgpmdW5jdGlvbiBfZHJvcFVuZGVmaW5lZEtleXMoaW5wdXRWYWx1ZSwgbWVtb2l6YXRpb25NYXApIHsKICBpZiAoaXNQb2pvKGlucHV0VmFsdWUpKSB7CiAgICAvLyBJZiB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGR1ZSB0byBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgcmV0dXJuIHRoZSBvYmplY3QgaXQgd2FzIG1hcHBlZCB0byBpbiB0aGUgbmV3IG9iamVjdAogICAgY29uc3QgbWVtb1ZhbCA9IG1lbW9pemF0aW9uTWFwLmdldChpbnB1dFZhbHVlKTsKICAgIGlmIChtZW1vVmFsICE9PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIG1lbW9WYWwgOwogICAgfQoKICAgIGNvbnN0IHJldHVyblZhbHVlID0ge307CiAgICAvLyBTdG9yZSB0aGUgbWFwcGluZyBvZiB0aGlzIHZhbHVlIGluIGNhc2Ugd2UgdmlzaXQgaXQgYWdhaW4sIGluIGNhc2Ugb2YgY2lyY3VsYXIgZGF0YQogICAgbWVtb2l6YXRpb25NYXAuc2V0KGlucHV0VmFsdWUsIHJldHVyblZhbHVlKTsKCiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhpbnB1dFZhbHVlKSkgewogICAgICBpZiAodHlwZW9mIGlucHV0VmFsdWVba2V5XSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICByZXR1cm5WYWx1ZVtrZXldID0gX2Ryb3BVbmRlZmluZWRLZXlzKGlucHV0VmFsdWVba2V5XSwgbWVtb2l6YXRpb25NYXApOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJldHVyblZhbHVlIDsKICB9CgogIGlmIChBcnJheS5pc0FycmF5KGlucHV0VmFsdWUpKSB7CiAgICAvLyBJZiB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGR1ZSB0byBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgcmV0dXJuIHRoZSBhcnJheSBpdCB3YXMgbWFwcGVkIHRvIGluIHRoZSBuZXcgb2JqZWN0CiAgICBjb25zdCBtZW1vVmFsID0gbWVtb2l6YXRpb25NYXAuZ2V0KGlucHV0VmFsdWUpOwogICAgaWYgKG1lbW9WYWwgIT09IHVuZGVmaW5lZCkgewogICAgICByZXR1cm4gbWVtb1ZhbCA7CiAgICB9CgogICAgY29uc3QgcmV0dXJuVmFsdWUgPSBbXTsKICAgIC8vIFN0b3JlIHRoZSBtYXBwaW5nIG9mIHRoaXMgdmFsdWUgaW4gY2FzZSB3ZSB2aXNpdCBpdCBhZ2FpbiwgaW4gY2FzZSBvZiBjaXJjdWxhciBkYXRhCiAgICBtZW1vaXphdGlvbk1hcC5zZXQoaW5wdXRWYWx1ZSwgcmV0dXJuVmFsdWUpOwoKICAgIGlucHV0VmFsdWUuZm9yRWFjaCgoaXRlbSkgPT4gewogICAgICByZXR1cm5WYWx1ZS5wdXNoKF9kcm9wVW5kZWZpbmVkS2V5cyhpdGVtLCBtZW1vaXphdGlvbk1hcCkpOwogICAgfSk7CgogICAgcmV0dXJuIHJldHVyblZhbHVlIDsKICB9CgogIHJldHVybiBpbnB1dFZhbHVlOwp9CgpmdW5jdGlvbiBpc1Bvam8oaW5wdXQpIHsKICBpZiAoIWlzUGxhaW5PYmplY3QoaW5wdXQpKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICB0cnkgewogICAgY29uc3QgbmFtZSA9IChPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5wdXQpICkuY29uc3RydWN0b3IubmFtZTsKICAgIHJldHVybiAhbmFtZSB8fCBuYW1lID09PSAnT2JqZWN0JzsKICB9IGNhdGNoIChlKSB7CiAgICByZXR1cm4gdHJ1ZTsKICB9Cn0KCi8qKgogKiBEb2VzIHRoaXMgZmlsZW5hbWUgbG9vayBsaWtlIGl0J3MgcGFydCBvZiB0aGUgYXBwIGNvZGU/CiAqLwpmdW5jdGlvbiBmaWxlbmFtZUlzSW5BcHAoZmlsZW5hbWUsIGlzTmF0aXZlID0gZmFsc2UpIHsKICBjb25zdCBpc0ludGVybmFsID0KICAgIGlzTmF0aXZlIHx8CiAgICAoZmlsZW5hbWUgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgaXQncyBhbiBhYnNvbHV0ZSBsaW51eCBwYXRoCiAgICAgICFmaWxlbmFtZS5zdGFydHNXaXRoKCcvJykgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgaXQncyBhbiBhYnNvbHV0ZSB3aW5kb3dzIHBhdGgKICAgICAgIWZpbGVuYW1lLm1hdGNoKC9eW0EtWl06LykgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgdGhlIHBhdGggaXMgc3RhcnRpbmcgd2l0aCBhIGRvdAogICAgICAhZmlsZW5hbWUuc3RhcnRzV2l0aCgnLicpICYmCiAgICAgIC8vIEl0J3Mgbm90IGludGVybmFsIGlmIHRoZSBmcmFtZSBoYXMgYSBwcm90b2NvbC4gSW4gbm9kZSwgdGhpcyBpcyB1c3VhbGx5IHRoZSBjYXNlIGlmIHRoZSBmaWxlIGdvdCBwcmUtcHJvY2Vzc2VkIHdpdGggYSBidW5kbGVyIGxpa2Ugd2VicGFjawogICAgICAhZmlsZW5hbWUubWF0Y2goL15bYS16QS1aXShbYS16QS1aMC05LlwtK10pKjpcL1wvLykpOyAvLyBTY2hlbWEgZnJvbTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM2NDE3ODIKCiAgLy8gaW5fYXBwIGlzIGFsbCB0aGF0J3Mgbm90IGFuIGludGVybmFsIE5vZGUgZnVuY3Rpb24gb3IgYSBtb2R1bGUgd2l0aGluIG5vZGVfbW9kdWxlcwogIC8vIG5vdGUgdGhhdCBpc05hdGl2ZSBhcHBlYXJzIHRvIHJldHVybiB0cnVlIGV2ZW4gZm9yIG5vZGUgY29yZSBsaWJyYXJpZXMKICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9yYXZlbi1ub2RlL2lzc3Vlcy8xNzYKCiAgcmV0dXJuICFpc0ludGVybmFsICYmIGZpbGVuYW1lICE9PSB1bmRlZmluZWQgJiYgIWZpbGVuYW1lLmluY2x1ZGVzKCdub2RlX21vZHVsZXMvJyk7Cn0KCmNvbnN0IFNUQUNLVFJBQ0VfRlJBTUVfTElNSVQgPSA1MDsKY29uc3QgU1RSSVBfRlJBTUVfUkVHRVhQID0gL2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vOwoKLyoqCiAqIFJlbW92ZXMgU2VudHJ5IGZyYW1lcyBmcm9tIHRoZSB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgc3RhY2sgaWYgcHJlc2VudCBhbmQgZW5mb3JjZXMgYSBsaW1pdCBvZiBtYXggbnVtYmVyIG9mIGZyYW1lcy4KICogQXNzdW1lcyBzdGFjayBpbnB1dCBpcyBvcmRlcmVkIGZyb20gdG9wIHRvIGJvdHRvbSBhbmQgcmV0dXJucyB0aGUgcmV2ZXJzZSByZXByZXNlbnRhdGlvbiBzbyBjYWxsIHNpdGUgb2YgdGhlCiAqIGZ1bmN0aW9uIHRoYXQgY2F1c2VkIHRoZSBjcmFzaCBpcyB0aGUgbGFzdCBmcmFtZSBpbiB0aGUgYXJyYXkuCiAqIEBoaWRkZW4KICovCmZ1bmN0aW9uIHN0cmlwU2VudHJ5RnJhbWVzQW5kUmV2ZXJzZShzdGFjaykgewogIGlmICghc3RhY2subGVuZ3RoKSB7CiAgICByZXR1cm4gW107CiAgfQoKICBjb25zdCBsb2NhbFN0YWNrID0gQXJyYXkuZnJvbShzdGFjayk7CgogIC8vIElmIHN0YWNrIHN0YXJ0cyB3aXRoIG9uZSBvZiBvdXIgQVBJIGNhbGxzLCByZW1vdmUgaXQgKHN0YXJ0cywgbWVhbmluZyBpdCdzIHRoZSB0b3Agb2YgdGhlIHN0YWNrIC0gYWthIGxhc3QgY2FsbCkKICBpZiAoL3NlbnRyeVdyYXBwZWQvLnRlc3QobG9jYWxTdGFja1tsb2NhbFN0YWNrLmxlbmd0aCAtIDFdLmZ1bmN0aW9uIHx8ICcnKSkgewogICAgbG9jYWxTdGFjay5wb3AoKTsKICB9CgogIC8vIFJldmVyc2luZyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwcm9jZWR1cmUgYWxsb3dzIHVzIHRvIGp1c3QgcG9wIHRoZSB2YWx1ZXMgb2ZmIHRoZSBzdGFjawogIGxvY2FsU3RhY2sucmV2ZXJzZSgpOwoKICAvLyBJZiBzdGFjayBlbmRzIHdpdGggb25lIG9mIG91ciBpbnRlcm5hbCBBUEkgY2FsbHMsIHJlbW92ZSBpdCAoZW5kcywgbWVhbmluZyBpdCdzIHRoZSBib3R0b20gb2YgdGhlIHN0YWNrIC0gYWthIHRvcC1tb3N0IGNhbGwpCiAgaWYgKFNUUklQX0ZSQU1FX1JFR0VYUC50ZXN0KGxvY2FsU3RhY2tbbG9jYWxTdGFjay5sZW5ndGggLSAxXS5mdW5jdGlvbiB8fCAnJykpIHsKICAgIGxvY2FsU3RhY2sucG9wKCk7CgogICAgLy8gV2hlbiB1c2luZyBzeW50aGV0aWMgZXZlbnRzLCB3ZSB3aWxsIGhhdmUgYSAyIGxldmVscyBkZWVwIHN0YWNrLCBhcyBgbmV3IEVycm9yKCdTZW50cnkgc3ludGhldGljRXhjZXB0aW9uJylgCiAgICAvLyBpcyBwcm9kdWNlZCB3aXRoaW4gdGhlIGh1YiBpdHNlbGYsIG1ha2luZyBpdDoKICAgIC8vCiAgICAvLyAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKCkKICAgIC8vICAgZ2V0Q3VycmVudEh1YigpLmNhcHR1cmVFeGNlcHRpb24oKQogICAgLy8KICAgIC8vIGluc3RlYWQgb2YganVzdCB0aGUgdG9wIGBTZW50cnlgIGNhbGwgaXRzZWxmLgogICAgLy8gVGhpcyBmb3JjZXMgdXMgdG8gcG9zc2libHkgc3RyaXAgYW4gYWRkaXRpb25hbCBmcmFtZSBpbiB0aGUgZXhhY3Qgc2FtZSB3YXMgYXMgYWJvdmUuCiAgICBpZiAoU1RSSVBfRlJBTUVfUkVHRVhQLnRlc3QobG9jYWxTdGFja1tsb2NhbFN0YWNrLmxlbmd0aCAtIDFdLmZ1bmN0aW9uIHx8ICcnKSkgewogICAgICBsb2NhbFN0YWNrLnBvcCgpOwogICAgfQogIH0KCiAgcmV0dXJuIGxvY2FsU3RhY2suc2xpY2UoMCwgU1RBQ0tUUkFDRV9GUkFNRV9MSU1JVCkubWFwKGZyYW1lID0+ICh7CiAgICAuLi5mcmFtZSwKICAgIGZpbGVuYW1lOiBmcmFtZS5maWxlbmFtZSB8fCBsb2NhbFN0YWNrW2xvY2FsU3RhY2subGVuZ3RoIC0gMV0uZmlsZW5hbWUsCiAgICBmdW5jdGlvbjogZnJhbWUuZnVuY3Rpb24gfHwgJz8nLAogIH0pKTsKfQoKY29uc3QgZGVmYXVsdEZ1bmN0aW9uTmFtZSA9ICc8YW5vbnltb3VzPic7CgovKioKICogU2FmZWx5IGV4dHJhY3QgZnVuY3Rpb24gbmFtZSBmcm9tIGl0c2VsZgogKi8KZnVuY3Rpb24gZ2V0RnVuY3Rpb25OYW1lKGZuKSB7CiAgdHJ5IHsKICAgIGlmICghZm4gfHwgdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgIHJldHVybiBkZWZhdWx0RnVuY3Rpb25OYW1lOwogICAgfQogICAgcmV0dXJuIGZuLm5hbWUgfHwgZGVmYXVsdEZ1bmN0aW9uTmFtZTsKICB9IGNhdGNoIChlKSB7CiAgICAvLyBKdXN0IGFjY2Vzc2luZyBjdXN0b20gcHJvcHMgaW4gc29tZSBTZWxlbml1bSBlbnZpcm9ubWVudHMKICAgIC8vIGNhbiBjYXVzZSBhICJQZXJtaXNzaW9uIGRlbmllZCIgZXhjZXB0aW9uIChzZWUgcmF2ZW4tanMjNDk1KS4KICAgIHJldHVybiBkZWZhdWx0RnVuY3Rpb25OYW1lOwogIH0KfQoKLyoqCiAqIFVVSUQ0IGdlbmVyYXRvcgogKgogKiBAcmV0dXJucyBzdHJpbmcgR2VuZXJhdGVkIFVVSUQ0LgogKi8KZnVuY3Rpb24gdXVpZDQoKSB7CiAgY29uc3QgZ2JsID0gR0xPQkFMX09CSiA7CiAgY29uc3QgY3J5cHRvID0gZ2JsLmNyeXB0byB8fCBnYmwubXNDcnlwdG87CgogIGxldCBnZXRSYW5kb21CeXRlID0gKCkgPT4gTWF0aC5yYW5kb20oKSAqIDE2OwogIHRyeSB7CiAgICBpZiAoY3J5cHRvICYmIGNyeXB0by5yYW5kb21VVUlEKSB7CiAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tVVVJRCgpLnJlcGxhY2UoLy0vZywgJycpOwogICAgfQogICAgaWYgKGNyeXB0byAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7CiAgICAgIGdldFJhbmRvbUJ5dGUgPSAoKSA9PiB7CiAgICAgICAgLy8gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyBtaWdodCByZXR1cm4gdW5kZWZpbmVkIGluc3RlYWQgb2YgdGhlIHR5cGVkIGFycmF5CiAgICAgICAgLy8gaW4gb2xkIENocm9taXVtIHZlcnNpb25zIChlLmcuIDIzLjAuMTIzNS4wICgxNTE0MjIpKQogICAgICAgIC8vIEhvd2V2ZXIsIGB0eXBlZEFycmF5YCBpcyBzdGlsbCBmaWxsZWQgaW4tcGxhY2UuCiAgICAgICAgLy8gQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ3J5cHRvL2dldFJhbmRvbVZhbHVlcyN0eXBlZGFycmF5CiAgICAgICAgY29uc3QgdHlwZWRBcnJheSA9IG5ldyBVaW50OEFycmF5KDEpOwogICAgICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXModHlwZWRBcnJheSk7CiAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlbMF07CiAgICAgIH07CiAgICB9CiAgfSBjYXRjaCAoXykgewogICAgLy8gc29tZSBydW50aW1lcyBjYW4gY3Jhc2ggaW52b2tpbmcgY3J5cHRvCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy84OTM1CiAgfQoKICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNTAzNC9ob3ctdG8tY3JlYXRlLWEtZ3VpZC11dWlkLWluLWphdmFzY3JpcHQvMjExNzUyMyMyMTE3NTIzCiAgLy8gQ29uY2F0ZW5hdGluZyB0aGUgZm9sbG93aW5nIG51bWJlcnMgYXMgc3RyaW5ncyByZXN1bHRzIGluICcxMDAwMDAwMDEwMDA0MDAwODAwMDEwMDAwMDAwMDAwMCcKICByZXR1cm4gKChbMWU3XSApICsgMWUzICsgNGUzICsgOGUzICsgMWUxMSkucmVwbGFjZSgvWzAxOF0vZywgYyA9PgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2UKICAgICgoYyApIF4gKChnZXRSYW5kb21CeXRlKCkgJiAxNSkgPj4gKChjICkgLyA0KSkpLnRvU3RyaW5nKDE2KSwKICApOwp9CgovKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MgKi8KLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqLwoKLyoqCiAqIEhlbHBlciB0byBkZWN5Y2xlIGpzb24gb2JqZWN0cwogKi8KZnVuY3Rpb24gbWVtb0J1aWxkZXIoKSB7CiAgY29uc3QgaGFzV2Vha1NldCA9IHR5cGVvZiBXZWFrU2V0ID09PSAnZnVuY3Rpb24nOwogIGNvbnN0IGlubmVyID0gaGFzV2Vha1NldCA/IG5ldyBXZWFrU2V0KCkgOiBbXTsKICBmdW5jdGlvbiBtZW1vaXplKG9iaikgewogICAgaWYgKGhhc1dlYWtTZXQpIHsKICAgICAgaWYgKGlubmVyLmhhcyhvYmopKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgaW5uZXIuYWRkKG9iaik7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLWZvci1vZgogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbm5lci5sZW5ndGg7IGkrKykgewogICAgICBjb25zdCB2YWx1ZSA9IGlubmVyW2ldOwogICAgICBpZiAodmFsdWUgPT09IG9iaikgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICB9CiAgICBpbm5lci5wdXNoKG9iaik7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiB1bm1lbW9pemUob2JqKSB7CiAgICBpZiAoaGFzV2Vha1NldCkgewogICAgICBpbm5lci5kZWxldGUob2JqKTsKICAgIH0gZWxzZSB7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5uZXIubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoaW5uZXJbaV0gPT09IG9iaikgewogICAgICAgICAgaW5uZXIuc3BsaWNlKGksIDEpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQogIHJldHVybiBbbWVtb2l6ZSwgdW5tZW1vaXplXTsKfQoKLyoqCiAqIFJlY3Vyc2l2ZWx5IG5vcm1hbGl6ZXMgdGhlIGdpdmVuIG9iamVjdC4KICoKICogLSBDcmVhdGVzIGEgY29weSB0byBwcmV2ZW50IG9yaWdpbmFsIGlucHV0IG11dGF0aW9uCiAqIC0gU2tpcHMgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcwogKiAtIFdoZW4gc3RyaW5naWZ5aW5nLCBjYWxscyBgdG9KU09OYCBpZiBpbXBsZW1lbnRlZAogKiAtIFJlbW92ZXMgY2lyY3VsYXIgcmVmZXJlbmNlcwogKiAtIFRyYW5zbGF0ZXMgbm9uLXNlcmlhbGl6YWJsZSB2YWx1ZXMgKGB1bmRlZmluZWRgL2BOYU5gL2Z1bmN0aW9ucykgdG8gc2VyaWFsaXphYmxlIGZvcm1hdAogKiAtIFRyYW5zbGF0ZXMga25vd24gZ2xvYmFsIG9iamVjdHMvY2xhc3NlcyB0byBhIHN0cmluZyByZXByZXNlbnRhdGlvbnMKICogLSBUYWtlcyBjYXJlIG9mIGBFcnJvcmAgb2JqZWN0IHNlcmlhbGl6YXRpb24KICogLSBPcHRpb25hbGx5IGxpbWl0cyBkZXB0aCBvZiBmaW5hbCBvdXRwdXQKICogLSBPcHRpb25hbGx5IGxpbWl0cyBudW1iZXIgb2YgcHJvcGVydGllcy9lbGVtZW50cyBpbmNsdWRlZCBpbiBhbnkgc2luZ2xlIG9iamVjdC9hcnJheQogKgogKiBAcGFyYW0gaW5wdXQgVGhlIG9iamVjdCB0byBiZSBub3JtYWxpemVkLgogKiBAcGFyYW0gZGVwdGggVGhlIG1heCBkZXB0aCB0byB3aGljaCB0byBub3JtYWxpemUgdGhlIG9iamVjdC4gKEFueXRoaW5nIGRlZXBlciBzdHJpbmdpZmllZCB3aG9sZS4pCiAqIEBwYXJhbSBtYXhQcm9wZXJ0aWVzIFRoZSBtYXggbnVtYmVyIG9mIGVsZW1lbnRzIG9yIHByb3BlcnRpZXMgdG8gYmUgaW5jbHVkZWQgaW4gYW55IHNpbmdsZSBhcnJheSBvcgogKiBvYmplY3QgaW4gdGhlIG5vcm1hbGxpemVkIG91dHB1dC4KICogQHJldHVybnMgQSBub3JtYWxpemVkIHZlcnNpb24gb2YgdGhlIG9iamVjdCwgb3IgYCIqKm5vbi1zZXJpYWxpemFibGUqKiJgIGlmIGFueSBlcnJvcnMgYXJlIHRocm93biBkdXJpbmcgbm9ybWFsaXphdGlvbi4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55CmZ1bmN0aW9uIG5vcm1hbGl6ZShpbnB1dCwgZGVwdGggPSAxMDAsIG1heFByb3BlcnRpZXMgPSArSW5maW5pdHkpIHsKICB0cnkgewogICAgLy8gc2luY2Ugd2UncmUgYXQgdGhlIG91dGVybW9zdCBsZXZlbCwgd2UgZG9uJ3QgcHJvdmlkZSBhIGtleQogICAgcmV0dXJuIHZpc2l0KCcnLCBpbnB1dCwgZGVwdGgsIG1heFByb3BlcnRpZXMpOwogIH0gY2F0Y2ggKGVycikgewogICAgcmV0dXJuIHsgRVJST1I6IGAqKm5vbi1zZXJpYWxpemFibGUqKiAoJHtlcnJ9KWAgfTsKICB9Cn0KCi8qKgogKiBWaXNpdHMgYSBub2RlIHRvIHBlcmZvcm0gbm9ybWFsaXphdGlvbiBvbiBpdAogKgogKiBAcGFyYW0ga2V5IFRoZSBrZXkgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gbm9kZQogKiBAcGFyYW0gdmFsdWUgVGhlIG5vZGUgdG8gYmUgdmlzaXRlZAogKiBAcGFyYW0gZGVwdGggT3B0aW9uYWwgbnVtYmVyIGluZGljYXRpbmcgdGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoCiAqIEBwYXJhbSBtYXhQcm9wZXJ0aWVzIE9wdGlvbmFsIG1heGltdW0gbnVtYmVyIG9mIHByb3BlcnRpZXMvZWxlbWVudHMgaW5jbHVkZWQgaW4gYW55IHNpbmdsZSBvYmplY3QvYXJyYXkKICogQHBhcmFtIG1lbW8gT3B0aW9uYWwgTWVtbyBjbGFzcyBoYW5kbGluZyBkZWN5Y2xpbmcKICovCmZ1bmN0aW9uIHZpc2l0KAogIGtleSwKICB2YWx1ZSwKICBkZXB0aCA9ICtJbmZpbml0eSwKICBtYXhQcm9wZXJ0aWVzID0gK0luZmluaXR5LAogIG1lbW8gPSBtZW1vQnVpbGRlcigpLAopIHsKICBjb25zdCBbbWVtb2l6ZSwgdW5tZW1vaXplXSA9IG1lbW87CgogIC8vIEdldCB0aGUgc2ltcGxlIGNhc2VzIG91dCBvZiB0aGUgd2F5IGZpcnN0CiAgaWYgKAogICAgdmFsdWUgPT0gbnVsbCB8fCAvLyB0aGlzIG1hdGNoZXMgbnVsbCBhbmQgdW5kZWZpbmVkIC0+IGVxZXEgbm90IGVxZXFlcQogICAgKFsnbnVtYmVyJywgJ2Jvb2xlYW4nLCAnc3RyaW5nJ10uaW5jbHVkZXModHlwZW9mIHZhbHVlKSAmJiAhaXNOYU4kMSh2YWx1ZSkpCiAgKSB7CiAgICByZXR1cm4gdmFsdWUgOwogIH0KCiAgY29uc3Qgc3RyaW5naWZpZWQgPSBzdHJpbmdpZnlWYWx1ZShrZXksIHZhbHVlKTsKCiAgLy8gQW55dGhpbmcgd2UgY291bGQgcG90ZW50aWFsbHkgZGlnIGludG8gbW9yZSAob2JqZWN0cyBvciBhcnJheXMpIHdpbGwgaGF2ZSBjb21lIGJhY2sgYXMgYCJbb2JqZWN0IFhYWFhdImAuCiAgLy8gRXZlcnl0aGluZyBlbHNlIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4gc2VyaWFsaXplZCwgc28gaWYgd2UgZG9uJ3Qgc2VlIHRoYXQgcGF0dGVybiwgd2UncmUgZG9uZS4KICBpZiAoIXN0cmluZ2lmaWVkLnN0YXJ0c1dpdGgoJ1tvYmplY3QgJykpIHsKICAgIHJldHVybiBzdHJpbmdpZmllZDsKICB9CgogIC8vIEZyb20gaGVyZSBvbiwgd2UgY2FuIGFzc2VydCB0aGF0IGB2YWx1ZWAgaXMgZWl0aGVyIGFuIG9iamVjdCBvciBhbiBhcnJheS4KCiAgLy8gRG8gbm90IG5vcm1hbGl6ZSBvYmplY3RzIHRoYXQgd2Uga25vdyBoYXZlIGFscmVhZHkgYmVlbiBub3JtYWxpemVkLiBBcyBhIGdlbmVyYWwgcnVsZSwgdGhlCiAgLy8gIl9fc2VudHJ5X3NraXBfbm9ybWFsaXphdGlvbl9fIiBwcm9wZXJ0eSBzaG91bGQgb25seSBiZSB1c2VkIHNwYXJpbmdseSBhbmQgb25seSBzaG91bGQgb25seSBiZSBzZXQgb24gb2JqZWN0cyB0aGF0CiAgLy8gaGF2ZSBhbHJlYWR5IGJlZW4gbm9ybWFsaXplZC4KICBpZiAoKHZhbHVlIClbJ19fc2VudHJ5X3NraXBfbm9ybWFsaXphdGlvbl9fJ10pIHsKICAgIHJldHVybiB2YWx1ZSA7CiAgfQoKICAvLyBXZSBjYW4gc2V0IGBfX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX19gIG9uIGFuIG9iamVjdCB0byBlbnN1cmUgdGhhdCBmcm9tIHRoZXJlCiAgLy8gV2Uga2VlcCBhIGNlcnRhaW4gYW1vdW50IG9mIGRlcHRoLgogIC8vIFRoaXMgc2hvdWxkIGJlIHVzZWQgc3BhcmluZ2x5LCBlLmcuIHdlIHVzZSBpdCBmb3IgdGhlIHJlZHV4IGludGVncmF0aW9uIHRvIGVuc3VyZSB3ZSBnZXQgYSBjZXJ0YWluIGFtb3VudCBvZiBzdGF0ZS4KICBjb25zdCByZW1haW5pbmdEZXB0aCA9CiAgICB0eXBlb2YgKHZhbHVlIClbJ19fc2VudHJ5X292ZXJyaWRlX25vcm1hbGl6YXRpb25fZGVwdGhfXyddID09PSAnbnVtYmVyJwogICAgICA/ICgodmFsdWUgKVsnX19zZW50cnlfb3ZlcnJpZGVfbm9ybWFsaXphdGlvbl9kZXB0aF9fJ10gKQogICAgICA6IGRlcHRoOwoKICAvLyBXZSdyZSBhbHNvIGRvbmUgaWYgd2UndmUgcmVhY2hlZCB0aGUgbWF4IGRlcHRoCiAgaWYgKHJlbWFpbmluZ0RlcHRoID09PSAwKSB7CiAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgYHNlcmlhbGl6ZWRgIGlzIGEgc3RyaW5nIG9mIHRoZSBmb3JtIGAiW29iamVjdCBYWFhYXSJgLiBDbGVhbiBpdCB1cCBzbyBpdCdzIGp1c3QgYCJbWFhYWF0iYC4KICAgIHJldHVybiBzdHJpbmdpZmllZC5yZXBsYWNlKCdvYmplY3QgJywgJycpOwogIH0KCiAgLy8gSWYgd2UndmUgYWxyZWFkeSB2aXNpdGVkIHRoaXMgYnJhbmNoLCBiYWlsIG91dCwgYXMgaXQncyBjaXJjdWxhciByZWZlcmVuY2UuIElmIG5vdCwgbm90ZSB0aGF0IHdlJ3JlIHNlZWluZyBpdCBub3cuCiAgaWYgKG1lbW9pemUodmFsdWUpKSB7CiAgICByZXR1cm4gJ1tDaXJjdWxhciB+XSc7CiAgfQoKICAvLyBJZiB0aGUgdmFsdWUgaGFzIGEgYHRvSlNPTmAgbWV0aG9kLCB3ZSBjYWxsIGl0IHRvIGV4dHJhY3QgbW9yZSBpbmZvcm1hdGlvbgogIGNvbnN0IHZhbHVlV2l0aFRvSlNPTiA9IHZhbHVlIDsKICBpZiAodmFsdWVXaXRoVG9KU09OICYmIHR5cGVvZiB2YWx1ZVdpdGhUb0pTT04udG9KU09OID09PSAnZnVuY3Rpb24nKSB7CiAgICB0cnkgewogICAgICBjb25zdCBqc29uVmFsdWUgPSB2YWx1ZVdpdGhUb0pTT04udG9KU09OKCk7CiAgICAgIC8vIFdlIG5lZWQgdG8gbm9ybWFsaXplIHRoZSByZXR1cm4gdmFsdWUgb2YgYC50b0pTT04oKWAgaW4gY2FzZSBpdCBoYXMgY2lyY3VsYXIgcmVmZXJlbmNlcwogICAgICByZXR1cm4gdmlzaXQoJycsIGpzb25WYWx1ZSwgcmVtYWluaW5nRGVwdGggLSAxLCBtYXhQcm9wZXJ0aWVzLCBtZW1vKTsKICAgIH0gY2F0Y2ggKGVycikgewogICAgICAvLyBwYXNzIChUaGUgYnVpbHQtaW4gYHRvSlNPTmAgZmFpbGVkLCBidXQgd2UgY2FuIHN0aWxsIHRyeSB0byBkbyBpdCBvdXJzZWx2ZXMpCiAgICB9CiAgfQoKICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgd2UgZWl0aGVyIGhhdmUgYW4gb2JqZWN0IG9yIGFuIGFycmF5LCB3ZSBoYXZlbid0IHNlZW4gaXQgYmVmb3JlLCBhbmQgd2UncmUgZ29pbmcgdG8gcmVjdXJzZQogIC8vIGJlY2F1c2Ugd2UgaGF2ZW4ndCB5ZXQgcmVhY2hlZCB0aGUgbWF4IGRlcHRoLiBDcmVhdGUgYW4gYWNjdW11bGF0b3IgdG8gaG9sZCB0aGUgcmVzdWx0cyBvZiB2aXNpdGluZyBlYWNoCiAgLy8gcHJvcGVydHkvZW50cnksIGFuZCBrZWVwIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgaXRlbXMgd2UgYWRkIHRvIGl0LgogIGNvbnN0IG5vcm1hbGl6ZWQgPSAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBbXSA6IHt9KSA7CiAgbGV0IG51bUFkZGVkID0gMDsKCiAgLy8gQmVmb3JlIHdlIGJlZ2luLCBjb252ZXJ0YEVycm9yYCBhbmRgRXZlbnRgIGluc3RhbmNlcyBpbnRvIHBsYWluIG9iamVjdHMsIHNpbmNlIHNvbWUgb2YgZWFjaCBvZiB0aGVpciByZWxldmFudAogIC8vIHByb3BlcnRpZXMgYXJlIG5vbi1lbnVtZXJhYmxlIGFuZCBvdGhlcndpc2Ugd291bGQgZ2V0IG1pc3NlZC4KICBjb25zdCB2aXNpdGFibGUgPSBjb252ZXJ0VG9QbGFpbk9iamVjdCh2YWx1ZSApOwoKICBmb3IgKGNvbnN0IHZpc2l0S2V5IGluIHZpc2l0YWJsZSkgewogICAgLy8gQXZvaWQgaXRlcmF0aW5nIG92ZXIgZmllbGRzIGluIHRoZSBwcm90b3R5cGUgaWYgdGhleSd2ZSBzb21laG93IGJlZW4gZXhwb3NlZCB0byBlbnVtZXJhdGlvbi4KICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZpc2l0YWJsZSwgdmlzaXRLZXkpKSB7CiAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIGlmIChudW1BZGRlZCA+PSBtYXhQcm9wZXJ0aWVzKSB7CiAgICAgIG5vcm1hbGl6ZWRbdmlzaXRLZXldID0gJ1tNYXhQcm9wZXJ0aWVzIH5dJzsKICAgICAgYnJlYWs7CiAgICB9CgogICAgLy8gUmVjdXJzaXZlbHkgdmlzaXQgYWxsIHRoZSBjaGlsZCBub2RlcwogICAgY29uc3QgdmlzaXRWYWx1ZSA9IHZpc2l0YWJsZVt2aXNpdEtleV07CiAgICBub3JtYWxpemVkW3Zpc2l0S2V5XSA9IHZpc2l0KHZpc2l0S2V5LCB2aXNpdFZhbHVlLCByZW1haW5pbmdEZXB0aCAtIDEsIG1heFByb3BlcnRpZXMsIG1lbW8pOwoKICAgIG51bUFkZGVkKys7CiAgfQoKICAvLyBPbmNlIHdlJ3ZlIHZpc2l0ZWQgYWxsIHRoZSBicmFuY2hlcywgcmVtb3ZlIHRoZSBwYXJlbnQgZnJvbSBtZW1vIHN0b3JhZ2UKICB1bm1lbW9pemUodmFsdWUpOwoKICAvLyBSZXR1cm4gYWNjdW11bGF0ZWQgdmFsdWVzCiAgcmV0dXJuIG5vcm1hbGl6ZWQ7Cn0KCi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi8KLyoqCiAqIFN0cmluZ2lmeSB0aGUgZ2l2ZW4gdmFsdWUuIEhhbmRsZXMgdmFyaW91cyBrbm93biBzcGVjaWFsIHZhbHVlcyBhbmQgdHlwZXMuCiAqCiAqIE5vdCBtZWFudCB0byBiZSB1c2VkIG9uIHNpbXBsZSBwcmltaXRpdmVzIHdoaWNoIGFscmVhZHkgaGF2ZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiwgYXMgaXQgd2lsbCwgZm9yIGV4YW1wbGUsIHR1cm4KICogdGhlIG51bWJlciAxMjMxIGludG8gIltPYmplY3QgTnVtYmVyXSIsIG5vciBvbiBgbnVsbGAsIGFzIGl0IHdpbGwgdGhyb3cuCiAqCiAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gc3RyaW5naWZ5CiAqIEByZXR1cm5zIEEgc3RyaW5naWZpZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIHZhbHVlCiAqLwpmdW5jdGlvbiBzdHJpbmdpZnlWYWx1ZSgKICBrZXksCiAgLy8gdGhpcyB0eXBlIGlzIGEgdGlueSBiaXQgb2YgYSBjaGVhdCwgc2luY2UgdGhpcyBmdW5jdGlvbiBkb2VzIGhhbmRsZSBOYU4gKHdoaWNoIGlzIHRlY2huaWNhbGx5IGEgbnVtYmVyKSwgYnV0IGZvcgogIC8vIG91ciBpbnRlcm5hbCB1c2UsIGl0J2xsIGRvCiAgdmFsdWUsCikgewogIHRyeSB7CiAgICBpZiAoa2V5ID09PSAnZG9tYWluJyAmJiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICh2YWx1ZSApLl9ldmVudHMpIHsKICAgICAgcmV0dXJuICdbRG9tYWluXSc7CiAgICB9CgogICAgaWYgKGtleSA9PT0gJ2RvbWFpbkVtaXR0ZXInKSB7CiAgICAgIHJldHVybiAnW0RvbWFpbkVtaXR0ZXJdJzsKICAgIH0KCiAgICAvLyBJdCdzIHNhZmUgdG8gdXNlIGBnbG9iYWxgLCBgd2luZG93YCwgYW5kIGBkb2N1bWVudGAgaGVyZSBpbiB0aGlzIG1hbm5lciwgYXMgd2UgYXJlIGFzc2VydGluZyB1c2luZyBgdHlwZW9mYCBmaXJzdAogICAgLy8gd2hpY2ggd29uJ3QgdGhyb3cgaWYgdGhleSBhcmUgbm90IHByZXNlbnQuCgogICAgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlID09PSBnbG9iYWwpIHsKICAgICAgcmV0dXJuICdbR2xvYmFsXSc7CiAgICB9CgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscwogICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlID09PSB3aW5kb3cpIHsKICAgICAgcmV0dXJuICdbV2luZG93XSc7CiAgICB9CgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscwogICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgPT09IGRvY3VtZW50KSB7CiAgICAgIHJldHVybiAnW0RvY3VtZW50XSc7CiAgICB9CgogICAgaWYgKGlzVnVlVmlld01vZGVsKHZhbHVlKSkgewogICAgICByZXR1cm4gJ1tWdWVWaWV3TW9kZWxdJzsKICAgIH0KCiAgICAvLyBSZWFjdCdzIFN5bnRoZXRpY0V2ZW50IHRoaW5neQogICAgaWYgKGlzU3ludGhldGljRXZlbnQodmFsdWUpKSB7CiAgICAgIHJldHVybiAnW1N5bnRoZXRpY0V2ZW50XSc7CiAgICB9CgogICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT09IHZhbHVlKSB7CiAgICAgIHJldHVybiAnW05hTl0nOwogICAgfQoKICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHsKICAgICAgcmV0dXJuIGBbRnVuY3Rpb246ICR7Z2V0RnVuY3Rpb25OYW1lKHZhbHVlKX1dYDsKICAgIH0KCiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3ltYm9sJykgewogICAgICByZXR1cm4gYFske1N0cmluZyh2YWx1ZSl9XWA7CiAgICB9CgogICAgLy8gc3RyaW5naWZpZWQgQmlnSW50cyBhcmUgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSByZWd1bGFyIG51bWJlcnMsIHNvIHdlIG5lZWQgdG8gbGFiZWwgdGhlbSB0byBhdm9pZCBjb25mdXNpb24KICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnKSB7CiAgICAgIHJldHVybiBgW0JpZ0ludDogJHtTdHJpbmcodmFsdWUpfV1gOwogICAgfQoKICAgIC8vIE5vdyB0aGF0IHdlJ3ZlIGtub2NrZWQgb3V0IGFsbCB0aGUgc3BlY2lhbCBjYXNlcyBhbmQgdGhlIHByaW1pdGl2ZXMsIGFsbCB3ZSBoYXZlIGxlZnQgYXJlIG9iamVjdHMuIFNpbXBseSBjYXN0aW5nCiAgICAvLyB0aGVtIHRvIHN0cmluZ3MgbWVhbnMgdGhhdCBpbnN0YW5jZXMgb2YgY2xhc3NlcyB3aGljaCBoYXZlbid0IGRlZmluZWQgdGhlaXIgYHRvU3RyaW5nVGFnYCB3aWxsIGp1c3QgY29tZSBvdXQgYXMKICAgIC8vIGAiW29iamVjdCBPYmplY3RdImAuIElmIHdlIGluc3RlYWQgbG9vayBhdCB0aGUgY29uc3RydWN0b3IncyBuYW1lICh3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUgbmFtZSBvZiB0aGUgY2xhc3MpLAogICAgLy8gd2UgY2FuIG1ha2Ugc3VyZSB0aGF0IG9ubHkgcGxhaW4gb2JqZWN0cyBjb21lIG91dCB0aGF0IHdheS4KICAgIGNvbnN0IG9iak5hbWUgPSBnZXRDb25zdHJ1Y3Rvck5hbWUodmFsdWUpOwoKICAgIC8vIEhhbmRsZSBIVE1MIEVsZW1lbnRzCiAgICBpZiAoL15IVE1MKFx3KilFbGVtZW50JC8udGVzdChvYmpOYW1lKSkgewogICAgICByZXR1cm4gYFtIVE1MRWxlbWVudDogJHtvYmpOYW1lfV1gOwogICAgfQoKICAgIHJldHVybiBgW29iamVjdCAke29iak5hbWV9XWA7CiAgfSBjYXRjaCAoZXJyKSB7CiAgICByZXR1cm4gYCoqbm9uLXNlcmlhbGl6YWJsZSoqICgke2Vycn0pYDsKICB9Cn0KLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovCgpmdW5jdGlvbiBnZXRDb25zdHJ1Y3Rvck5hbWUodmFsdWUpIHsKICBjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpOwoKICByZXR1cm4gcHJvdG90eXBlID8gcHJvdG90eXBlLmNvbnN0cnVjdG9yLm5hbWUgOiAnbnVsbCBwcm90b3R5cGUnOwp9CgovKioKICogTm9ybWFsaXplcyBVUkxzIGluIGV4Y2VwdGlvbnMgYW5kIHN0YWNrdHJhY2VzIHRvIGEgYmFzZSBwYXRoIHNvIFNlbnRyeSBjYW4gZmluZ2VycHJpbnQKICogYWNyb3NzIHBsYXRmb3JtcyBhbmQgd29ya2luZyBkaXJlY3RvcnkuCiAqCiAqIEBwYXJhbSB1cmwgVGhlIFVSTCB0byBiZSBub3JtYWxpemVkLgogKiBAcGFyYW0gYmFzZVBhdGggVGhlIGFwcGxpY2F0aW9uIGJhc2UgcGF0aC4KICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgVVJMLgogKi8KZnVuY3Rpb24gbm9ybWFsaXplVXJsVG9CYXNlKHVybCwgYmFzZVBhdGgpIHsKICBjb25zdCBlc2NhcGVkQmFzZSA9IGJhc2VQYXRoCiAgICAvLyBCYWNrc2xhc2ggdG8gZm9yd2FyZAogICAgLnJlcGxhY2UoL1xcL2csICcvJykKICAgIC8vIEVzY2FwZSBSZWdFeHAgc3BlY2lhbCBjaGFyYWN0ZXJzCiAgICAucmVwbGFjZSgvW3xcXHt9KClbXF1eJCsqPy5dL2csICdcXCQmJyk7CgogIGxldCBuZXdVcmwgPSB1cmw7CiAgdHJ5IHsKICAgIG5ld1VybCA9IGRlY29kZVVSSSh1cmwpOwogIH0gY2F0Y2ggKF9PbykgewogICAgLy8gU29tZXRpbWUgdGhpcyBicmVha3MKICB9CiAgcmV0dXJuICgKICAgIG5ld1VybAogICAgICAucmVwbGFjZSgvXFwvZywgJy8nKQogICAgICAucmVwbGFjZSgvd2VicGFjazpcLz8vZywgJycpIC8vIFJlbW92ZSBpbnRlcm1lZGlhdGUgYmFzZSBwYXRoCiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAc2VudHJ5LWludGVybmFsL3Nkay9uby1yZWdleHAtY29uc3RydWN0b3IKICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgKGZpbGU6Ly8pPy8qJHtlc2NhcGVkQmFzZX0vKmAsICdpZycpLCAnYXBwOi8vLycpCiAgKTsKfQoKLy8gU2xpZ2h0bHkgbW9kaWZpZWQgKG5vIElFOCBzdXBwb3J0LCBFUzYpIGFuZCB0cmFuc2NyaWJlZCB0byBUeXBlU2NyaXB0CgovLyBTcGxpdCBhIGZpbGVuYW1lIGludG8gW3Jvb3QsIGRpciwgYmFzZW5hbWUsIGV4dF0sIHVuaXggdmVyc2lvbgovLyAncm9vdCcgaXMganVzdCBhIHNsYXNoLCBvciBub3RoaW5nLgpjb25zdCBzcGxpdFBhdGhSZSA9IC9eKFxTKzpcXHxcLz8pKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteL1xcXSs/fCkoXC5bXi4vXFxdKnwpKSg/OlsvXFxdKikkLzsKLyoqIEpTRG9jICovCmZ1bmN0aW9uIHNwbGl0UGF0aChmaWxlbmFtZSkgewogIC8vIFRydW5jYXRlIGZpbGVzIG5hbWVzIGdyZWF0ZXIgdGhhbiAxMDI0IGNoYXJhY3RlcnMgdG8gYXZvaWQgcmVnZXggZG9zCiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdC9wdWxsLzg3MzcjZGlzY3Vzc2lvbl9yMTI4NTcxOTE3MgogIGNvbnN0IHRydW5jYXRlZCA9IGZpbGVuYW1lLmxlbmd0aCA+IDEwMjQgPyBgPHRydW5jYXRlZD4ke2ZpbGVuYW1lLnNsaWNlKC0xMDI0KX1gIDogZmlsZW5hbWU7CiAgY29uc3QgcGFydHMgPSBzcGxpdFBhdGhSZS5leGVjKHRydW5jYXRlZCk7CiAgcmV0dXJuIHBhcnRzID8gcGFydHMuc2xpY2UoMSkgOiBbXTsKfQoKLyoqIEpTRG9jICovCmZ1bmN0aW9uIGRpcm5hbWUocGF0aCkgewogIGNvbnN0IHJlc3VsdCA9IHNwbGl0UGF0aChwYXRoKTsKICBjb25zdCByb290ID0gcmVzdWx0WzBdOwogIGxldCBkaXIgPSByZXN1bHRbMV07CgogIGlmICghcm9vdCAmJiAhZGlyKSB7CiAgICAvLyBObyBkaXJuYW1lIHdoYXRzb2V2ZXIKICAgIHJldHVybiAnLic7CiAgfQoKICBpZiAoZGlyKSB7CiAgICAvLyBJdCBoYXMgYSBkaXJuYW1lLCBzdHJpcCB0cmFpbGluZyBzbGFzaAogICAgZGlyID0gZGlyLnNsaWNlKDAsIGRpci5sZW5ndGggLSAxKTsKICB9CgogIHJldHVybiByb290ICsgZGlyOwp9CgovKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtZnVuY3Rpb24tcmV0dXJuLXR5cGUgKi8KCi8qKiBTeW5jUHJvbWlzZSBpbnRlcm5hbCBzdGF0ZXMgKi8KdmFyIFN0YXRlczsgKGZ1bmN0aW9uIChTdGF0ZXMpIHsKICAvKiogUGVuZGluZyAqLwogIGNvbnN0IFBFTkRJTkcgPSAwOyBTdGF0ZXNbU3RhdGVzWyJQRU5ESU5HIl0gPSBQRU5ESU5HXSA9ICJQRU5ESU5HIjsKICAvKiogUmVzb2x2ZWQgLyBPSyAqLwogIGNvbnN0IFJFU09MVkVEID0gMTsgU3RhdGVzW1N0YXRlc1siUkVTT0xWRUQiXSA9IFJFU09MVkVEXSA9ICJSRVNPTFZFRCI7CiAgLyoqIFJlamVjdGVkIC8gRXJyb3IgKi8KICBjb25zdCBSRUpFQ1RFRCA9IDI7IFN0YXRlc1tTdGF0ZXNbIlJFSkVDVEVEIl0gPSBSRUpFQ1RFRF0gPSAiUkVKRUNURUQiOwp9KShTdGF0ZXMgfHwgKFN0YXRlcyA9IHt9KSk7CgovLyBPdmVybG9hZHMgc28gd2UgY2FuIGNhbGwgcmVzb2x2ZWRTeW5jUHJvbWlzZSB3aXRob3V0IGFyZ3VtZW50cyBhbmQgZ2VuZXJpYyBhcmd1bWVudAoKLyoqCiAqIENyZWF0ZXMgYSByZXNvbHZlZCBzeW5jIHByb21pc2UuCiAqCiAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gcmVzb2x2ZSB0aGUgcHJvbWlzZSB3aXRoCiAqIEByZXR1cm5zIHRoZSByZXNvbHZlZCBzeW5jIHByb21pc2UKICovCmZ1bmN0aW9uIHJlc29sdmVkU3luY1Byb21pc2UodmFsdWUpIHsKICByZXR1cm4gbmV3IFN5bmNQcm9taXNlKHJlc29sdmUgPT4gewogICAgcmVzb2x2ZSh2YWx1ZSk7CiAgfSk7Cn0KCi8qKgogKiBDcmVhdGVzIGEgcmVqZWN0ZWQgc3luYyBwcm9taXNlLgogKgogKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHJlamVjdCB0aGUgcHJvbWlzZSB3aXRoCiAqIEByZXR1cm5zIHRoZSByZWplY3RlZCBzeW5jIHByb21pc2UKICovCmZ1bmN0aW9uIHJlamVjdGVkU3luY1Byb21pc2UocmVhc29uKSB7CiAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7CiAgICByZWplY3QocmVhc29uKTsKICB9KTsKfQoKLyoqCiAqIFRoZW5hYmxlIGNsYXNzIHRoYXQgYmVoYXZlcyBsaWtlIGEgUHJvbWlzZSBhbmQgZm9sbG93cyBpdCdzIGludGVyZmFjZQogKiBidXQgaXMgbm90IGFzeW5jIGludGVybmFsbHkKICovCmNsYXNzIFN5bmNQcm9taXNlIHsKCiAgIGNvbnN0cnVjdG9yKAogICAgZXhlY3V0b3IsCiAgKSB7U3luY1Byb21pc2UucHJvdG90eXBlLl9faW5pdC5jYWxsKHRoaXMpO1N5bmNQcm9taXNlLnByb3RvdHlwZS5fX2luaXQyLmNhbGwodGhpcyk7U3luY1Byb21pc2UucHJvdG90eXBlLl9faW5pdDMuY2FsbCh0aGlzKTtTeW5jUHJvbWlzZS5wcm90b3R5cGUuX19pbml0NC5jYWxsKHRoaXMpOwogICAgdGhpcy5fc3RhdGUgPSBTdGF0ZXMuUEVORElORzsKICAgIHRoaXMuX2hhbmRsZXJzID0gW107CgogICAgdHJ5IHsKICAgICAgZXhlY3V0b3IodGhpcy5fcmVzb2x2ZSwgdGhpcy5fcmVqZWN0KTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5fcmVqZWN0KGUpOwogICAgfQogIH0KCiAgLyoqIEpTRG9jICovCiAgIHRoZW4oCiAgICBvbmZ1bGZpbGxlZCwKICAgIG9ucmVqZWN0ZWQsCiAgKSB7CiAgICByZXR1cm4gbmV3IFN5bmNQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgdGhpcy5faGFuZGxlcnMucHVzaChbCiAgICAgICAgZmFsc2UsCiAgICAgICAgcmVzdWx0ID0+IHsKICAgICAgICAgIGlmICghb25mdWxmaWxsZWQpIHsKICAgICAgICAgICAgLy8gVE9ETzogwq9cXyjjg4QpXy/CrwogICAgICAgICAgICAvLyBUT0RPOiBGSVhNRQogICAgICAgICAgICByZXNvbHZlKHJlc3VsdCApOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICByZXNvbHZlKG9uZnVsZmlsbGVkKHJlc3VsdCkpOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgcmVqZWN0KGUpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICByZWFzb24gPT4gewogICAgICAgICAgaWYgKCFvbnJlamVjdGVkKSB7CiAgICAgICAgICAgIHJlamVjdChyZWFzb24pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICByZXNvbHZlKG9ucmVqZWN0ZWQocmVhc29uKSk7CiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICByZWplY3QoZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICBdKTsKICAgICAgdGhpcy5fZXhlY3V0ZUhhbmRsZXJzKCk7CiAgICB9KTsKICB9CgogIC8qKiBKU0RvYyAqLwogICBjYXRjaCgKICAgIG9ucmVqZWN0ZWQsCiAgKSB7CiAgICByZXR1cm4gdGhpcy50aGVuKHZhbCA9PiB2YWwsIG9ucmVqZWN0ZWQpOwogIH0KCiAgLyoqIEpTRG9jICovCiAgIGZpbmFsbHkob25maW5hbGx5KSB7CiAgICByZXR1cm4gbmV3IFN5bmNQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgbGV0IHZhbDsKICAgICAgbGV0IGlzUmVqZWN0ZWQ7CgogICAgICByZXR1cm4gdGhpcy50aGVuKAogICAgICAgIHZhbHVlID0+IHsKICAgICAgICAgIGlzUmVqZWN0ZWQgPSBmYWxzZTsKICAgICAgICAgIHZhbCA9IHZhbHVlOwogICAgICAgICAgaWYgKG9uZmluYWxseSkgewogICAgICAgICAgICBvbmZpbmFsbHkoKTsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHJlYXNvbiA9PiB7CiAgICAgICAgICBpc1JlamVjdGVkID0gdHJ1ZTsKICAgICAgICAgIHZhbCA9IHJlYXNvbjsKICAgICAgICAgIGlmIChvbmZpbmFsbHkpIHsKICAgICAgICAgICAgb25maW5hbGx5KCk7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgKS50aGVuKCgpID0+IHsKICAgICAgICBpZiAoaXNSZWplY3RlZCkgewogICAgICAgICAgcmVqZWN0KHZhbCk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICByZXNvbHZlKHZhbCApOwogICAgICB9KTsKICAgIH0pOwogIH0KCiAgLyoqIEpTRG9jICovCiAgICBfX2luaXQoKSB7dGhpcy5fcmVzb2x2ZSA9ICh2YWx1ZSkgPT4gewogICAgdGhpcy5fc2V0UmVzdWx0KFN0YXRlcy5SRVNPTFZFRCwgdmFsdWUpOwogIH07fQoKICAvKiogSlNEb2MgKi8KICAgIF9faW5pdDIoKSB7dGhpcy5fcmVqZWN0ID0gKHJlYXNvbikgPT4gewogICAgdGhpcy5fc2V0UmVzdWx0KFN0YXRlcy5SRUpFQ1RFRCwgcmVhc29uKTsKICB9O30KCiAgLyoqIEpTRG9jICovCiAgICBfX2luaXQzKCkge3RoaXMuX3NldFJlc3VsdCA9IChzdGF0ZSwgdmFsdWUpID0+IHsKICAgIGlmICh0aGlzLl9zdGF0ZSAhPT0gU3RhdGVzLlBFTkRJTkcpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmIChpc1RoZW5hYmxlKHZhbHVlKSkgewogICAgICB2b2lkICh2YWx1ZSApLnRoZW4odGhpcy5fcmVzb2x2ZSwgdGhpcy5fcmVqZWN0KTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHRoaXMuX3N0YXRlID0gc3RhdGU7CiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlOwoKICAgIHRoaXMuX2V4ZWN1dGVIYW5kbGVycygpOwogIH07fQoKICAvKiogSlNEb2MgKi8KICAgIF9faW5pdDQoKSB7dGhpcy5fZXhlY3V0ZUhhbmRsZXJzID0gKCkgPT4gewogICAgaWYgKHRoaXMuX3N0YXRlID09PSBTdGF0ZXMuUEVORElORykgewogICAgICByZXR1cm47CiAgICB9CgogICAgY29uc3QgY2FjaGVkSGFuZGxlcnMgPSB0aGlzLl9oYW5kbGVycy5zbGljZSgpOwogICAgdGhpcy5faGFuZGxlcnMgPSBbXTsKCiAgICBjYWNoZWRIYW5kbGVycy5mb3JFYWNoKGhhbmRsZXIgPT4gewogICAgICBpZiAoaGFuZGxlclswXSkgewogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgaWYgKHRoaXMuX3N0YXRlID09PSBTdGF0ZXMuUkVTT0xWRUQpIHsKICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzCiAgICAgICAgaGFuZGxlclsxXSh0aGlzLl92YWx1ZSApOwogICAgICB9CgogICAgICBpZiAodGhpcy5fc3RhdGUgPT09IFN0YXRlcy5SRUpFQ1RFRCkgewogICAgICAgIGhhbmRsZXJbMl0odGhpcy5fdmFsdWUpOwogICAgICB9CgogICAgICBoYW5kbGVyWzBdID0gdHJ1ZTsKICAgIH0pOwogIH07fQp9CgovKioKICogQ3JlYXRlcyBhbiBuZXcgUHJvbWlzZUJ1ZmZlciBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGxpbWl0CiAqIEBwYXJhbSBsaW1pdCBtYXggbnVtYmVyIG9mIHByb21pc2VzIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiB0aGUgYnVmZmVyCiAqLwpmdW5jdGlvbiBtYWtlUHJvbWlzZUJ1ZmZlcihsaW1pdCkgewogIGNvbnN0IGJ1ZmZlciA9IFtdOwoKICBmdW5jdGlvbiBpc1JlYWR5KCkgewogICAgcmV0dXJuIGxpbWl0ID09PSB1bmRlZmluZWQgfHwgYnVmZmVyLmxlbmd0aCA8IGxpbWl0OwogIH0KCiAgLyoqCiAgICogUmVtb3ZlIGEgcHJvbWlzZSBmcm9tIHRoZSBxdWV1ZS4KICAgKgogICAqIEBwYXJhbSB0YXNrIENhbiBiZSBhbnkgUHJvbWlzZUxpa2U8VD4KICAgKiBAcmV0dXJucyBSZW1vdmVkIHByb21pc2UuCiAgICovCiAgZnVuY3Rpb24gcmVtb3ZlKHRhc2spIHsKICAgIHJldHVybiBidWZmZXIuc3BsaWNlKGJ1ZmZlci5pbmRleE9mKHRhc2spLCAxKVswXTsKICB9CgogIC8qKgogICAqIEFkZCBhIHByb21pc2UgKHJlcHJlc2VudGluZyBhbiBpbi1mbGlnaHQgYWN0aW9uKSB0byB0aGUgcXVldWUsIGFuZCBzZXQgaXQgdG8gcmVtb3ZlIGl0c2VsZiBvbiBmdWxmaWxsbWVudC4KICAgKgogICAqIEBwYXJhbSB0YXNrUHJvZHVjZXIgQSBmdW5jdGlvbiBwcm9kdWNpbmcgYW55IFByb21pc2VMaWtlPFQ+OyBJbiBwcmV2aW91cyB2ZXJzaW9ucyB0aGlzIHVzZWQgdG8gYmUgYHRhc2s6CiAgICogICAgICAgIFByb21pc2VMaWtlPFQ+YCwgYnV0IHVuZGVyIHRoYXQgbW9kZWwsIFByb21pc2VzIHdlcmUgaW5zdGFudGx5IGNyZWF0ZWQgb24gdGhlIGNhbGwtc2l0ZSBhbmQgdGhlaXIgZXhlY3V0b3IKICAgKiAgICAgICAgZnVuY3Rpb25zIHRoZXJlZm9yZSByYW4gaW1tZWRpYXRlbHkuIFRodXMsIGV2ZW4gaWYgdGhlIGJ1ZmZlciB3YXMgZnVsbCwgdGhlIGFjdGlvbiBzdGlsbCBoYXBwZW5lZC4gQnkKICAgKiAgICAgICAgcmVxdWlyaW5nIHRoZSBwcm9taXNlIHRvIGJlIHdyYXBwZWQgaW4gYSBmdW5jdGlvbiwgd2UgY2FuIGRlZmVyIHByb21pc2UgY3JlYXRpb24gdW50aWwgYWZ0ZXIgdGhlIGJ1ZmZlcgogICAqICAgICAgICBsaW1pdCBjaGVjay4KICAgKiBAcmV0dXJucyBUaGUgb3JpZ2luYWwgcHJvbWlzZS4KICAgKi8KICBmdW5jdGlvbiBhZGQodGFza1Byb2R1Y2VyKSB7CiAgICBpZiAoIWlzUmVhZHkoKSkgewogICAgICByZXR1cm4gcmVqZWN0ZWRTeW5jUHJvbWlzZShuZXcgU2VudHJ5RXJyb3IoJ05vdCBhZGRpbmcgUHJvbWlzZSBiZWNhdXNlIGJ1ZmZlciBsaW1pdCB3YXMgcmVhY2hlZC4nKSk7CiAgICB9CgogICAgLy8gc3RhcnQgdGhlIHRhc2sgYW5kIGFkZCBpdHMgcHJvbWlzZSB0byB0aGUgcXVldWUKICAgIGNvbnN0IHRhc2sgPSB0YXNrUHJvZHVjZXIoKTsKICAgIGlmIChidWZmZXIuaW5kZXhPZih0YXNrKSA9PT0gLTEpIHsKICAgICAgYnVmZmVyLnB1c2godGFzayk7CiAgICB9CiAgICB2b2lkIHRhc2sKICAgICAgLnRoZW4oKCkgPT4gcmVtb3ZlKHRhc2spKQogICAgICAvLyBVc2UgYHRoZW4obnVsbCwgcmVqZWN0aW9uSGFuZGxlcilgIHJhdGhlciB0aGFuIGBjYXRjaChyZWplY3Rpb25IYW5kbGVyKWAgc28gdGhhdCB3ZSBjYW4gdXNlIGBQcm9taXNlTGlrZWAKICAgICAgLy8gcmF0aGVyIHRoYW4gYFByb21pc2VgLiBgUHJvbWlzZUxpa2VgIGRvZXNuJ3QgaGF2ZSBhIGAuY2F0Y2hgIG1ldGhvZCwgbWFraW5nIGl0cyBwb2x5ZmlsbCBzbWFsbGVyLiAoRVM1IGRpZG4ndAogICAgICAvLyBoYXZlIHByb21pc2VzLCBzbyBUUyBoYXMgdG8gcG9seWZpbGwgd2hlbiBkb3duLWNvbXBpbGluZy4pCiAgICAgIC50aGVuKG51bGwsICgpID0+CiAgICAgICAgcmVtb3ZlKHRhc2spLnRoZW4obnVsbCwgKCkgPT4gewogICAgICAgICAgLy8gV2UgaGF2ZSB0byBhZGQgYW5vdGhlciBjYXRjaCBoZXJlIGJlY2F1c2UgYHJlbW92ZSgpYCBzdGFydHMgYSBuZXcgcHJvbWlzZSBjaGFpbi4KICAgICAgICB9KSwKICAgICAgKTsKICAgIHJldHVybiB0YXNrOwogIH0KCiAgLyoqCiAgICogV2FpdCBmb3IgYWxsIHByb21pc2VzIGluIHRoZSBxdWV1ZSB0byByZXNvbHZlIG9yIGZvciB0aW1lb3V0IHRvIGV4cGlyZSwgd2hpY2hldmVyIGNvbWVzIGZpcnN0LgogICAqCiAgICogQHBhcmFtIHRpbWVvdXQgVGhlIHRpbWUsIGluIG1zLCBhZnRlciB3aGljaCB0byByZXNvbHZlIHRvIGBmYWxzZWAgaWYgdGhlIHF1ZXVlIGlzIHN0aWxsIG5vbi1lbXB0eS4gUGFzc2luZyBgMGAgKG9yCiAgICogbm90IHBhc3NpbmcgYW55dGhpbmcpIHdpbGwgbWFrZSB0aGUgcHJvbWlzZSB3YWl0IGFzIGxvbmcgYXMgaXQgdGFrZXMgZm9yIHRoZSBxdWV1ZSB0byBkcmFpbiBiZWZvcmUgcmVzb2x2aW5nIHRvCiAgICogYHRydWVgLgogICAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aGljaCB3aWxsIHJlc29sdmUgdG8gYHRydWVgIGlmIHRoZSBxdWV1ZSBpcyBhbHJlYWR5IGVtcHR5IG9yIGRyYWlucyBiZWZvcmUgdGhlIHRpbWVvdXQsIGFuZAogICAqIGBmYWxzZWAgb3RoZXJ3aXNlCiAgICovCiAgZnVuY3Rpb24gZHJhaW4odGltZW91dCkgewogICAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIGxldCBjb3VudGVyID0gYnVmZmVyLmxlbmd0aDsKCiAgICAgIGlmICghY291bnRlcikgewogICAgICAgIHJldHVybiByZXNvbHZlKHRydWUpOwogICAgICB9CgogICAgICAvLyB3YWl0IGZvciBgdGltZW91dGAgbXMgYW5kIHRoZW4gcmVzb2x2ZSB0byBgZmFsc2VgIChpZiBub3QgY2FuY2VsbGVkIGZpcnN0KQogICAgICBjb25zdCBjYXB0dXJlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICBpZiAodGltZW91dCAmJiB0aW1lb3V0ID4gMCkgewogICAgICAgICAgcmVzb2x2ZShmYWxzZSk7CiAgICAgICAgfQogICAgICB9LCB0aW1lb3V0KTsKCiAgICAgIC8vIGlmIGFsbCBwcm9taXNlcyByZXNvbHZlIGluIHRpbWUsIGNhbmNlbCB0aGUgdGltZXIgYW5kIHJlc29sdmUgdG8gYHRydWVgCiAgICAgIGJ1ZmZlci5mb3JFYWNoKGl0ZW0gPT4gewogICAgICAgIHZvaWQgcmVzb2x2ZWRTeW5jUHJvbWlzZShpdGVtKS50aGVuKCgpID0+IHsKICAgICAgICAgIGlmICghLS1jb3VudGVyKSB7CiAgICAgICAgICAgIGNsZWFyVGltZW91dChjYXB0dXJlZFNldFRpbWVvdXQpOwogICAgICAgICAgICByZXNvbHZlKHRydWUpOwogICAgICAgICAgfQogICAgICAgIH0sIHJlamVjdCk7CiAgICAgIH0pOwogICAgfSk7CiAgfQoKICByZXR1cm4gewogICAgJDogYnVmZmVyLAogICAgYWRkLAogICAgZHJhaW4sCiAgfTsKfQoKY29uc3QgT05FX1NFQ09ORF9JTl9NUyA9IDEwMDA7CgovKioKICogQSBwYXJ0aWFsIGRlZmluaXRpb24gb2YgdGhlIFtQZXJmb3JtYW5jZSBXZWIgQVBJXXtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUGVyZm9ybWFuY2V9CiAqIGZvciBhY2Nlc3NpbmcgYSBoaWdoLXJlc29sdXRpb24gbW9ub3RvbmljIGNsb2NrLgogKi8KCi8qKgogKiBSZXR1cm5zIGEgdGltZXN0YW1wIGluIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2ggdXNpbmcgdGhlIERhdGUgQVBJLgogKgogKiBUT0RPKHY4KTogUmV0dXJuIHR5cGUgc2hvdWxkIGJlIHJvdW5kZWQuCiAqLwpmdW5jdGlvbiBkYXRlVGltZXN0YW1wSW5TZWNvbmRzKCkgewogIHJldHVybiBEYXRlLm5vdygpIC8gT05FX1NFQ09ORF9JTl9NUzsKfQoKLyoqCiAqIFJldHVybnMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgbmF0aXZlIFBlcmZvcm1hbmNlIEFQSSBicm93c2VyIGltcGxlbWVudGF0aW9uLCBvciB1bmRlZmluZWQgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90CiAqIHN1cHBvcnQgdGhlIEFQSS4KICoKICogV3JhcHBpbmcgdGhlIG5hdGl2ZSBBUEkgd29ya3MgYXJvdW5kIGRpZmZlcmVuY2VzIGluIGJlaGF2aW9yIGZyb20gZGlmZmVyZW50IGJyb3dzZXJzLgogKi8KZnVuY3Rpb24gY3JlYXRlVW5peFRpbWVzdGFtcEluU2Vjb25kc0Z1bmMoKSB7CiAgY29uc3QgeyBwZXJmb3JtYW5jZSB9ID0gR0xPQkFMX09CSiA7CiAgaWYgKCFwZXJmb3JtYW5jZSB8fCAhcGVyZm9ybWFuY2Uubm93KSB7CiAgICByZXR1cm4gZGF0ZVRpbWVzdGFtcEluU2Vjb25kczsKICB9CgogIC8vIFNvbWUgYnJvd3NlciBhbmQgZW52aXJvbm1lbnRzIGRvbid0IGhhdmUgYSB0aW1lT3JpZ2luLCBzbyB3ZSBmYWxsYmFjayB0bwogIC8vIHVzaW5nIERhdGUubm93KCkgdG8gY29tcHV0ZSB0aGUgc3RhcnRpbmcgdGltZS4KICBjb25zdCBhcHByb3hTdGFydGluZ1RpbWVPcmlnaW4gPSBEYXRlLm5vdygpIC0gcGVyZm9ybWFuY2Uubm93KCk7CiAgY29uc3QgdGltZU9yaWdpbiA9IHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gPT0gdW5kZWZpbmVkID8gYXBwcm94U3RhcnRpbmdUaW1lT3JpZ2luIDogcGVyZm9ybWFuY2UudGltZU9yaWdpbjsKCiAgLy8gcGVyZm9ybWFuY2Uubm93KCkgaXMgYSBtb25vdG9uaWMgY2xvY2ssIHdoaWNoIG1lYW5zIGl0IHN0YXJ0cyBhdCAwIHdoZW4gdGhlIHByb2Nlc3MgYmVnaW5zLiBUbyBnZXQgdGhlIGN1cnJlbnQKICAvLyB3YWxsIGNsb2NrIHRpbWUgKGFjdHVhbCBVTklYIHRpbWVzdGFtcCksIHdlIG5lZWQgdG8gYWRkIHRoZSBzdGFydGluZyB0aW1lIG9yaWdpbiBhbmQgdGhlIGN1cnJlbnQgdGltZSBlbGFwc2VkLgogIC8vCiAgLy8gVE9ETzogVGhpcyBkb2VzIG5vdCBhY2NvdW50IGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgbW9ub3RvbmljIGNsb2NrIHRoYXQgcG93ZXJzIHBlcmZvcm1hbmNlLm5vdygpIGRyaWZ0cyBmcm9tIHRoZQogIC8vIHdhbGwgY2xvY2sgdGltZSwgd2hpY2ggY2F1c2VzIHRoZSByZXR1cm5lZCB0aW1lc3RhbXAgdG8gYmUgaW5hY2N1cmF0ZS4gV2Ugc2hvdWxkIGludmVzdGlnYXRlIGhvdyB0byBkZXRlY3QgYW5kCiAgLy8gY29ycmVjdCBmb3IgdGhpcy4KICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvaXNzdWVzLzI1OTAKICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tZG4vY29udGVudC9pc3N1ZXMvNDcxMwogIC8vIFNlZTogaHR0cHM6Ly9kZXYudG8vbm9hbXIvd2hlbi1hLW1pbGxpc2Vjb25kLWlzLW5vdC1hLW1pbGxpc2Vjb25kLTNoNgogIHJldHVybiAoKSA9PiB7CiAgICByZXR1cm4gKHRpbWVPcmlnaW4gKyBwZXJmb3JtYW5jZS5ub3coKSkgLyBPTkVfU0VDT05EX0lOX01TOwogIH07Cn0KCi8qKgogKiBSZXR1cm5zIGEgdGltZXN0YW1wIGluIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2ggdXNpbmcgZWl0aGVyIHRoZSBQZXJmb3JtYW5jZSBvciBEYXRlIEFQSXMsIGRlcGVuZGluZyBvbiB0aGUKICogYXZhaWxhYmlsaXR5IG9mIHRoZSBQZXJmb3JtYW5jZSBBUEkuCiAqCiAqIEJVRzogTm90ZSB0aGF0IGJlY2F1c2Ugb2YgaG93IGJyb3dzZXJzIGltcGxlbWVudCB0aGUgUGVyZm9ybWFuY2UgQVBJLCB0aGUgY2xvY2sgbWlnaHQgc3RvcCB3aGVuIHRoZSBjb21wdXRlciBpcwogKiBhc2xlZXAuIFRoaXMgY3JlYXRlcyBhIHNrZXcgYmV0d2VlbiBgZGF0ZVRpbWVzdGFtcEluU2Vjb25kc2AgYW5kIGB0aW1lc3RhbXBJblNlY29uZHNgLiBUaGUKICogc2tldyBjYW4gZ3JvdyB0byBhcmJpdHJhcnkgYW1vdW50cyBsaWtlIGRheXMsIHdlZWtzIG9yIG1vbnRocy4KICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvaXNzdWVzLzI1OTAuCiAqLwpjb25zdCB0aW1lc3RhbXBJblNlY29uZHMgPSBjcmVhdGVVbml4VGltZXN0YW1wSW5TZWNvbmRzRnVuYygpOwoKLyoqCiAqIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoLiBUaGlzIHZhbHVlIGlzIG9ubHkgdXNhYmxlIGluIGEgYnJvd3NlciwgYW5kIG9ubHkgd2hlbiB0aGUKICogcGVyZm9ybWFuY2UgQVBJIGlzIGF2YWlsYWJsZS4KICovCigoKSA9PiB7CiAgLy8gVW5mb3J0dW5hdGVseSBicm93c2VycyBtYXkgcmVwb3J0IGFuIGluYWNjdXJhdGUgdGltZSBvcmlnaW4gZGF0YSwgdGhyb3VnaCBlaXRoZXIgcGVyZm9ybWFuY2UudGltZU9yaWdpbiBvcgogIC8vIHBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQsIHdoaWNoIHJlc3VsdHMgaW4gcG9vciByZXN1bHRzIGluIHBlcmZvcm1hbmNlIGRhdGEuIFdlIG9ubHkgdHJlYXQgdGltZSBvcmlnaW4KICAvLyBkYXRhIGFzIHJlbGlhYmxlIGlmIHRoZXkgYXJlIHdpdGhpbiBhIHJlYXNvbmFibGUgdGhyZXNob2xkIG9mIHRoZSBjdXJyZW50IHRpbWUuCgogIGNvbnN0IHsgcGVyZm9ybWFuY2UgfSA9IEdMT0JBTF9PQkogOwogIGlmICghcGVyZm9ybWFuY2UgfHwgIXBlcmZvcm1hbmNlLm5vdykgewogICAgcmV0dXJuIHVuZGVmaW5lZDsKICB9CgogIGNvbnN0IHRocmVzaG9sZCA9IDM2MDAgKiAxMDAwOwogIGNvbnN0IHBlcmZvcm1hbmNlTm93ID0gcGVyZm9ybWFuY2Uubm93KCk7CiAgY29uc3QgZGF0ZU5vdyA9IERhdGUubm93KCk7CgogIC8vIGlmIHRpbWVPcmlnaW4gaXNuJ3QgYXZhaWxhYmxlIHNldCBkZWx0YSB0byB0aHJlc2hvbGQgc28gaXQgaXNuJ3QgdXNlZAogIGNvbnN0IHRpbWVPcmlnaW5EZWx0YSA9IHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4KICAgID8gTWF0aC5hYnMocGVyZm9ybWFuY2UudGltZU9yaWdpbiArIHBlcmZvcm1hbmNlTm93IC0gZGF0ZU5vdykKICAgIDogdGhyZXNob2xkOwogIGNvbnN0IHRpbWVPcmlnaW5Jc1JlbGlhYmxlID0gdGltZU9yaWdpbkRlbHRhIDwgdGhyZXNob2xkOwoKICAvLyBXaGlsZSBwZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgcGVyZm9ybWFuY2UudGltZU9yaWdpbiwgcGVyZm9ybWFuY2UudGltZU9yaWdpbgogIC8vIGlzIG5vdCBhcyB3aWRlbHkgc3VwcG9ydGVkLiBOYW1lbHksIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gaXMgdW5kZWZpbmVkIGluIFNhZmFyaSBhcyBvZiB3cml0aW5nLgogIC8vIEFsc28gYXMgb2Ygd3JpdGluZywgcGVyZm9ybWFuY2UudGltaW5nIGlzIG5vdCBhdmFpbGFibGUgaW4gV2ViIFdvcmtlcnMgaW4gbWFpbnN0cmVhbSBicm93c2Vycywgc28gaXQgaXMgbm90IGFsd2F5cwogIC8vIGEgdmFsaWQgZmFsbGJhY2suIEluIHRoZSBhYnNlbmNlIG9mIGFuIGluaXRpYWwgdGltZSBwcm92aWRlZCBieSB0aGUgYnJvd3NlciwgZmFsbGJhY2sgdG8gdGhlIGN1cnJlbnQgdGltZSBmcm9tIHRoZQogIC8vIERhdGUgQVBJLgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIGNvbnN0IG5hdmlnYXRpb25TdGFydCA9IHBlcmZvcm1hbmNlLnRpbWluZyAmJiBwZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0OwogIGNvbnN0IGhhc05hdmlnYXRpb25TdGFydCA9IHR5cGVvZiBuYXZpZ2F0aW9uU3RhcnQgPT09ICdudW1iZXInOwogIC8vIGlmIG5hdmlnYXRpb25TdGFydCBpc24ndCBhdmFpbGFibGUgc2V0IGRlbHRhIHRvIHRocmVzaG9sZCBzbyBpdCBpc24ndCB1c2VkCiAgY29uc3QgbmF2aWdhdGlvblN0YXJ0RGVsdGEgPSBoYXNOYXZpZ2F0aW9uU3RhcnQgPyBNYXRoLmFicyhuYXZpZ2F0aW9uU3RhcnQgKyBwZXJmb3JtYW5jZU5vdyAtIGRhdGVOb3cpIDogdGhyZXNob2xkOwogIGNvbnN0IG5hdmlnYXRpb25TdGFydElzUmVsaWFibGUgPSBuYXZpZ2F0aW9uU3RhcnREZWx0YSA8IHRocmVzaG9sZDsKCiAgaWYgKHRpbWVPcmlnaW5Jc1JlbGlhYmxlIHx8IG5hdmlnYXRpb25TdGFydElzUmVsaWFibGUpIHsKICAgIC8vIFVzZSB0aGUgbW9yZSByZWxpYWJsZSB0aW1lIG9yaWdpbgogICAgaWYgKHRpbWVPcmlnaW5EZWx0YSA8PSBuYXZpZ2F0aW9uU3RhcnREZWx0YSkgewogICAgICByZXR1cm4gcGVyZm9ybWFuY2UudGltZU9yaWdpbjsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBuYXZpZ2F0aW9uU3RhcnQ7CiAgICB9CiAgfQogIHJldHVybiBkYXRlTm93Owp9KSgpOwoKLyoqCiAqIENyZWF0ZXMgYW4gZW52ZWxvcGUuCiAqIE1ha2Ugc3VyZSB0byBhbHdheXMgZXhwbGljaXRseSBwcm92aWRlIHRoZSBnZW5lcmljIHRvIHRoaXMgZnVuY3Rpb24KICogc28gdGhhdCB0aGUgZW52ZWxvcGUgdHlwZXMgcmVzb2x2ZSBjb3JyZWN0bHkuCiAqLwpmdW5jdGlvbiBjcmVhdGVFbnZlbG9wZShoZWFkZXJzLCBpdGVtcyA9IFtdKSB7CiAgcmV0dXJuIFtoZWFkZXJzLCBpdGVtc10gOwp9CgovKioKICogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gbG9vcCB0aHJvdWdoIHRoZSBpdGVtcyBhbmQgaXRlbSB0eXBlcyBvZiBhbiBlbnZlbG9wZS4KICogKFRoaXMgZnVuY3Rpb24gd2FzIG1vc3RseSBjcmVhdGVkIGJlY2F1c2Ugd29ya2luZyB3aXRoIGVudmVsb3BlIHR5cGVzIGlzIHBhaW5mdWwgYXQgdGhlIG1vbWVudCkKICoKICogSWYgdGhlIGNhbGxiYWNrIHJldHVybnMgdHJ1ZSwgdGhlIHJlc3Qgb2YgdGhlIGl0ZW1zIHdpbGwgYmUgc2tpcHBlZC4KICovCmZ1bmN0aW9uIGZvckVhY2hFbnZlbG9wZUl0ZW0oCiAgZW52ZWxvcGUsCiAgY2FsbGJhY2ssCikgewogIGNvbnN0IGVudmVsb3BlSXRlbXMgPSBlbnZlbG9wZVsxXTsKCiAgZm9yIChjb25zdCBlbnZlbG9wZUl0ZW0gb2YgZW52ZWxvcGVJdGVtcykgewogICAgY29uc3QgZW52ZWxvcGVJdGVtVHlwZSA9IGVudmVsb3BlSXRlbVswXS50eXBlOwogICAgY29uc3QgcmVzdWx0ID0gY2FsbGJhY2soZW52ZWxvcGVJdGVtLCBlbnZlbG9wZUl0ZW1UeXBlKTsKCiAgICBpZiAocmVzdWx0KSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgcmV0dXJuIGZhbHNlOwp9CgovKioKICogRW5jb2RlIGEgc3RyaW5nIHRvIFVURjguCiAqLwpmdW5jdGlvbiBlbmNvZGVVVEY4KGlucHV0LCB0ZXh0RW5jb2RlcikgewogIGNvbnN0IHV0ZjggPSB0ZXh0RW5jb2RlciB8fCBuZXcgVGV4dEVuY29kZXIoKTsKICByZXR1cm4gdXRmOC5lbmNvZGUoaW5wdXQpOwp9CgovKioKICogU2VyaWFsaXplcyBhbiBlbnZlbG9wZS4KICovCmZ1bmN0aW9uIHNlcmlhbGl6ZUVudmVsb3BlKGVudmVsb3BlLCB0ZXh0RW5jb2RlcikgewogIGNvbnN0IFtlbnZIZWFkZXJzLCBpdGVtc10gPSBlbnZlbG9wZTsKCiAgLy8gSW5pdGlhbGx5IHdlIGNvbnN0cnVjdCBvdXIgZW52ZWxvcGUgYXMgYSBzdHJpbmcgYW5kIG9ubHkgY29udmVydCB0byBiaW5hcnkgY2h1bmtzIGlmIHdlIGVuY291bnRlciBiaW5hcnkgZGF0YQogIGxldCBwYXJ0cyA9IEpTT04uc3RyaW5naWZ5KGVudkhlYWRlcnMpOwoKICBmdW5jdGlvbiBhcHBlbmQobmV4dCkgewogICAgaWYgKHR5cGVvZiBwYXJ0cyA9PT0gJ3N0cmluZycpIHsKICAgICAgcGFydHMgPSB0eXBlb2YgbmV4dCA9PT0gJ3N0cmluZycgPyBwYXJ0cyArIG5leHQgOiBbZW5jb2RlVVRGOChwYXJ0cywgdGV4dEVuY29kZXIpLCBuZXh0XTsKICAgIH0gZWxzZSB7CiAgICAgIHBhcnRzLnB1c2godHlwZW9mIG5leHQgPT09ICdzdHJpbmcnID8gZW5jb2RlVVRGOChuZXh0LCB0ZXh0RW5jb2RlcikgOiBuZXh0KTsKICAgIH0KICB9CgogIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykgewogICAgY29uc3QgW2l0ZW1IZWFkZXJzLCBwYXlsb2FkXSA9IGl0ZW07CgogICAgYXBwZW5kKGBcbiR7SlNPTi5zdHJpbmdpZnkoaXRlbUhlYWRlcnMpfVxuYCk7CgogICAgaWYgKHR5cGVvZiBwYXlsb2FkID09PSAnc3RyaW5nJyB8fCBwYXlsb2FkIGluc3RhbmNlb2YgVWludDhBcnJheSkgewogICAgICBhcHBlbmQocGF5bG9hZCk7CiAgICB9IGVsc2UgewogICAgICBsZXQgc3RyaW5naWZpZWRQYXlsb2FkOwogICAgICB0cnkgewogICAgICAgIHN0cmluZ2lmaWVkUGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgLy8gSW4gY2FzZSwgZGVzcGl0ZSBhbGwgb3VyIGVmZm9ydHMgdG8ga2VlcCBgcGF5bG9hZGAgY2lyY3VsYXItZGVwZW5kZW5jeS1mcmVlLCBgSlNPTi5zdHJpbmlmeSgpYCBzdGlsbAogICAgICAgIC8vIGZhaWxzLCB3ZSB0cnkgYWdhaW4gYWZ0ZXIgbm9ybWFsaXppbmcgaXQgYWdhaW4gd2l0aCBpbmZpbml0ZSBub3JtYWxpemF0aW9uIGRlcHRoLiBUaGlzIG9mIGNvdXJzZSBoYXMgYQogICAgICAgIC8vIHBlcmZvcm1hbmNlIGltcGFjdCBidXQgaW4gdGhpcyBjYXNlIGEgcGVyZm9ybWFuY2UgaGl0IGlzIGJldHRlciB0aGFuIHRocm93aW5nLgogICAgICAgIHN0cmluZ2lmaWVkUGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KG5vcm1hbGl6ZShwYXlsb2FkKSk7CiAgICAgIH0KICAgICAgYXBwZW5kKHN0cmluZ2lmaWVkUGF5bG9hZCk7CiAgICB9CiAgfQoKICByZXR1cm4gdHlwZW9mIHBhcnRzID09PSAnc3RyaW5nJyA/IHBhcnRzIDogY29uY2F0QnVmZmVycyhwYXJ0cyk7Cn0KCmZ1bmN0aW9uIGNvbmNhdEJ1ZmZlcnMoYnVmZmVycykgewogIGNvbnN0IHRvdGFsTGVuZ3RoID0gYnVmZmVycy5yZWR1Y2UoKGFjYywgYnVmKSA9PiBhY2MgKyBidWYubGVuZ3RoLCAwKTsKCiAgY29uc3QgbWVyZ2VkID0gbmV3IFVpbnQ4QXJyYXkodG90YWxMZW5ndGgpOwogIGxldCBvZmZzZXQgPSAwOwogIGZvciAoY29uc3QgYnVmZmVyIG9mIGJ1ZmZlcnMpIHsKICAgIG1lcmdlZC5zZXQoYnVmZmVyLCBvZmZzZXQpOwogICAgb2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7CiAgfQoKICByZXR1cm4gbWVyZ2VkOwp9Cgpjb25zdCBJVEVNX1RZUEVfVE9fREFUQV9DQVRFR09SWV9NQVAgPSB7CiAgc2Vzc2lvbjogJ3Nlc3Npb24nLAogIHNlc3Npb25zOiAnc2Vzc2lvbicsCiAgYXR0YWNobWVudDogJ2F0dGFjaG1lbnQnLAogIHRyYW5zYWN0aW9uOiAndHJhbnNhY3Rpb24nLAogIGV2ZW50OiAnZXJyb3InLAogIGNsaWVudF9yZXBvcnQ6ICdpbnRlcm5hbCcsCiAgdXNlcl9yZXBvcnQ6ICdkZWZhdWx0JywKICBwcm9maWxlOiAncHJvZmlsZScsCiAgcmVwbGF5X2V2ZW50OiAncmVwbGF5JywKICByZXBsYXlfcmVjb3JkaW5nOiAncmVwbGF5JywKICBjaGVja19pbjogJ21vbml0b3InLAogIGZlZWRiYWNrOiAnZmVlZGJhY2snLAogIHNwYW46ICdzcGFuJywKICAvLyBUT0RPOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQgdW50aWwgd2UgaGF2ZSBhIHByb3BlciBkYXRhIGNhdGVnb3J5IGZvciBtZXRyaWNzCiAgc3RhdHNkOiAndW5rbm93bicsCn07CgovKioKICogTWFwcyB0aGUgdHlwZSBvZiBhbiBlbnZlbG9wZSBpdGVtIHRvIGEgZGF0YSBjYXRlZ29yeS4KICovCmZ1bmN0aW9uIGVudmVsb3BlSXRlbVR5cGVUb0RhdGFDYXRlZ29yeSh0eXBlKSB7CiAgcmV0dXJuIElURU1fVFlQRV9UT19EQVRBX0NBVEVHT1JZX01BUFt0eXBlXTsKfQoKLyoqIEV4dHJhY3RzIHRoZSBtaW5pbWFsIFNESyBpbmZvIGZyb20gZnJvbSB0aGUgbWV0YWRhdGEgb3IgYW4gZXZlbnRzICovCmZ1bmN0aW9uIGdldFNka01ldGFkYXRhRm9yRW52ZWxvcGVIZWFkZXIobWV0YWRhdGFPckV2ZW50KSB7CiAgaWYgKCFtZXRhZGF0YU9yRXZlbnQgfHwgIW1ldGFkYXRhT3JFdmVudC5zZGspIHsKICAgIHJldHVybjsKICB9CiAgY29uc3QgeyBuYW1lLCB2ZXJzaW9uIH0gPSBtZXRhZGF0YU9yRXZlbnQuc2RrOwogIHJldHVybiB7IG5hbWUsIHZlcnNpb24gfTsKfQoKLyoqCiAqIENyZWF0ZXMgZXZlbnQgZW52ZWxvcGUgaGVhZGVycywgYmFzZWQgb24gZXZlbnQsIHNkayBpbmZvIGFuZCB0dW5uZWwKICogTm90ZTogVGhpcyBmdW5jdGlvbiB3YXMgZXh0cmFjdGVkIGZyb20gdGhlIGNvcmUgcGFja2FnZSB0byBtYWtlIGl0IGF2YWlsYWJsZSBpbiBSZXBsYXkKICovCmZ1bmN0aW9uIGNyZWF0ZUV2ZW50RW52ZWxvcGVIZWFkZXJzKAogIGV2ZW50LAogIHNka0luZm8sCiAgdHVubmVsLAogIGRzbiwKKSB7CiAgY29uc3QgZHluYW1pY1NhbXBsaW5nQ29udGV4dCA9IGV2ZW50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YSAmJiBldmVudC5zZGtQcm9jZXNzaW5nTWV0YWRhdGEuZHluYW1pY1NhbXBsaW5nQ29udGV4dDsKICByZXR1cm4gewogICAgZXZlbnRfaWQ6IGV2ZW50LmV2ZW50X2lkICwKICAgIHNlbnRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwKICAgIC4uLihzZGtJbmZvICYmIHsgc2RrOiBzZGtJbmZvIH0pLAogICAgLi4uKCEhdHVubmVsICYmIGRzbiAmJiB7IGRzbjogZHNuVG9TdHJpbmcoZHNuKSB9KSwKICAgIC4uLihkeW5hbWljU2FtcGxpbmdDb250ZXh0ICYmIHsKICAgICAgdHJhY2U6IGRyb3BVbmRlZmluZWRLZXlzKHsgLi4uZHluYW1pY1NhbXBsaW5nQ29udGV4dCB9KSwKICAgIH0pLAogIH07Cn0KCi8vIEludGVudGlvbmFsbHkga2VlcGluZyB0aGUga2V5IGJyb2FkLCBhcyB3ZSBkb24ndCBrbm93IGZvciBzdXJlIHdoYXQgcmF0ZSBsaW1pdCBoZWFkZXJzIGdldCByZXR1cm5lZCBmcm9tIGJhY2tlbmQKCmNvbnN0IERFRkFVTFRfUkVUUllfQUZURVIgPSA2MCAqIDEwMDA7IC8vIDYwIHNlY29uZHMKCi8qKgogKiBFeHRyYWN0cyBSZXRyeS1BZnRlciB2YWx1ZSBmcm9tIHRoZSByZXF1ZXN0IGhlYWRlciBvciByZXR1cm5zIGRlZmF1bHQgdmFsdWUKICogQHBhcmFtIGhlYWRlciBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgJ1JldHJ5LUFmdGVyJyBoZWFkZXIKICogQHBhcmFtIG5vdyBjdXJyZW50IHVuaXggdGltZXN0YW1wCiAqCiAqLwpmdW5jdGlvbiBwYXJzZVJldHJ5QWZ0ZXJIZWFkZXIoaGVhZGVyLCBub3cgPSBEYXRlLm5vdygpKSB7CiAgY29uc3QgaGVhZGVyRGVsYXkgPSBwYXJzZUludChgJHtoZWFkZXJ9YCwgMTApOwogIGlmICghaXNOYU4oaGVhZGVyRGVsYXkpKSB7CiAgICByZXR1cm4gaGVhZGVyRGVsYXkgKiAxMDAwOwogIH0KCiAgY29uc3QgaGVhZGVyRGF0ZSA9IERhdGUucGFyc2UoYCR7aGVhZGVyfWApOwogIGlmICghaXNOYU4oaGVhZGVyRGF0ZSkpIHsKICAgIHJldHVybiBoZWFkZXJEYXRlIC0gbm93OwogIH0KCiAgcmV0dXJuIERFRkFVTFRfUkVUUllfQUZURVI7Cn0KCi8qKgogKiBHZXRzIHRoZSB0aW1lIHRoYXQgdGhlIGdpdmVuIGNhdGVnb3J5IGlzIGRpc2FibGVkIHVudGlsIGZvciByYXRlIGxpbWl0aW5nLgogKiBJbiBjYXNlIG5vIGNhdGVnb3J5LXNwZWNpZmljIGxpbWl0IGlzIHNldCBidXQgYSBnZW5lcmFsIHJhdGUgbGltaXQgYWNyb3NzIGFsbCBjYXRlZ29yaWVzIGlzIGFjdGl2ZSwKICogdGhhdCB0aW1lIGlzIHJldHVybmVkLgogKgogKiBAcmV0dXJuIHRoZSB0aW1lIGluIG1zIHRoYXQgdGhlIGNhdGVnb3J5IGlzIGRpc2FibGVkIHVudGlsIG9yIDAgaWYgdGhlcmUncyBubyBhY3RpdmUgcmF0ZSBsaW1pdC4KICovCmZ1bmN0aW9uIGRpc2FibGVkVW50aWwobGltaXRzLCBjYXRlZ29yeSkgewogIHJldHVybiBsaW1pdHNbY2F0ZWdvcnldIHx8IGxpbWl0cy5hbGwgfHwgMDsKfQoKLyoqCiAqIENoZWNrcyBpZiBhIGNhdGVnb3J5IGlzIHJhdGUgbGltaXRlZAogKi8KZnVuY3Rpb24gaXNSYXRlTGltaXRlZChsaW1pdHMsIGNhdGVnb3J5LCBub3cgPSBEYXRlLm5vdygpKSB7CiAgcmV0dXJuIGRpc2FibGVkVW50aWwobGltaXRzLCBjYXRlZ29yeSkgPiBub3c7Cn0KCi8qKgogKiBVcGRhdGUgcmF0ZWxpbWl0cyBmcm9tIGluY29taW5nIGhlYWRlcnMuCiAqCiAqIEByZXR1cm4gdGhlIHVwZGF0ZWQgUmF0ZUxpbWl0cyBvYmplY3QuCiAqLwpmdW5jdGlvbiB1cGRhdGVSYXRlTGltaXRzKAogIGxpbWl0cywKICB7IHN0YXR1c0NvZGUsIGhlYWRlcnMgfSwKICBub3cgPSBEYXRlLm5vdygpLAopIHsKICBjb25zdCB1cGRhdGVkUmF0ZUxpbWl0cyA9IHsKICAgIC4uLmxpbWl0cywKICB9OwoKICAvLyAiVGhlIG5hbWUgaXMgY2FzZS1pbnNlbnNpdGl2ZS4iCiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hlYWRlcnMvZ2V0CiAgY29uc3QgcmF0ZUxpbWl0SGVhZGVyID0gaGVhZGVycyAmJiBoZWFkZXJzWyd4LXNlbnRyeS1yYXRlLWxpbWl0cyddOwogIGNvbnN0IHJldHJ5QWZ0ZXJIZWFkZXIgPSBoZWFkZXJzICYmIGhlYWRlcnNbJ3JldHJ5LWFmdGVyJ107CgogIGlmIChyYXRlTGltaXRIZWFkZXIpIHsKICAgIC8qKgogICAgICogcmF0ZSBsaW1pdCBoZWFkZXJzIGFyZSBvZiB0aGUgZm9ybQogICAgICogICAgIDxoZWFkZXI+LDxoZWFkZXI+LC4uCiAgICAgKiB3aGVyZSBlYWNoIDxoZWFkZXI+IGlzIG9mIHRoZSBmb3JtCiAgICAgKiAgICAgPHJldHJ5X2FmdGVyPjogPGNhdGVnb3JpZXM+OiA8c2NvcGU+OiA8cmVhc29uX2NvZGU+CiAgICAgKiB3aGVyZQogICAgICogICAgIDxyZXRyeV9hZnRlcj4gaXMgYSBkZWxheSBpbiBzZWNvbmRzCiAgICAgKiAgICAgPGNhdGVnb3JpZXM+IGlzIHRoZSBldmVudCB0eXBlKHMpIChlcnJvciwgdHJhbnNhY3Rpb24sIGV0YykgYmVpbmcgcmF0ZSBsaW1pdGVkIGFuZCBpcyBvZiB0aGUgZm9ybQogICAgICogICAgICAgICA8Y2F0ZWdvcnk+OzxjYXRlZ29yeT47Li4uCiAgICAgKiAgICAgPHNjb3BlPiBpcyB3aGF0J3MgYmVpbmcgbGltaXRlZCAob3JnLCBwcm9qZWN0LCBvciBrZXkpIC0gaWdub3JlZCBieSBTREsKICAgICAqICAgICA8cmVhc29uX2NvZGU+IGlzIGFuIGFyYml0cmFyeSBzdHJpbmcgbGlrZSAib3JnX3F1b3RhIiAtIGlnbm9yZWQgYnkgU0RLCiAgICAgKi8KICAgIGZvciAoY29uc3QgbGltaXQgb2YgcmF0ZUxpbWl0SGVhZGVyLnRyaW0oKS5zcGxpdCgnLCcpKSB7CiAgICAgIGNvbnN0IFtyZXRyeUFmdGVyLCBjYXRlZ29yaWVzXSA9IGxpbWl0LnNwbGl0KCc6JywgMik7CiAgICAgIGNvbnN0IGhlYWRlckRlbGF5ID0gcGFyc2VJbnQocmV0cnlBZnRlciwgMTApOwogICAgICBjb25zdCBkZWxheSA9ICghaXNOYU4oaGVhZGVyRGVsYXkpID8gaGVhZGVyRGVsYXkgOiA2MCkgKiAxMDAwOyAvLyA2MHNlYyBkZWZhdWx0CiAgICAgIGlmICghY2F0ZWdvcmllcykgewogICAgICAgIHVwZGF0ZWRSYXRlTGltaXRzLmFsbCA9IG5vdyArIGRlbGF5OwogICAgICB9IGVsc2UgewogICAgICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllcy5zcGxpdCgnOycpKSB7CiAgICAgICAgICB1cGRhdGVkUmF0ZUxpbWl0c1tjYXRlZ29yeV0gPSBub3cgKyBkZWxheTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9IGVsc2UgaWYgKHJldHJ5QWZ0ZXJIZWFkZXIpIHsKICAgIHVwZGF0ZWRSYXRlTGltaXRzLmFsbCA9IG5vdyArIHBhcnNlUmV0cnlBZnRlckhlYWRlcihyZXRyeUFmdGVySGVhZGVyLCBub3cpOwogIH0gZWxzZSBpZiAoc3RhdHVzQ29kZSA9PT0gNDI5KSB7CiAgICB1cGRhdGVkUmF0ZUxpbWl0cy5hbGwgPSBub3cgKyA2MCAqIDEwMDA7CiAgfQoKICByZXR1cm4gdXBkYXRlZFJhdGVMaW1pdHM7Cn0KCi8qKgogKiBBIG5vZGUuanMgd2F0Y2hkb2cgdGltZXIKICogQHBhcmFtIHBvbGxJbnRlcnZhbCBUaGUgaW50ZXJ2YWwgdGhhdCB3ZSBleHBlY3QgdG8gZ2V0IHBvbGxlZCBhdAogKiBAcGFyYW0gYW5yVGhyZXNob2xkIFRoZSB0aHJlc2hvbGQgZm9yIHdoZW4gd2UgY29uc2lkZXIgQU5SCiAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gY2FsbCBmb3IgQU5SCiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGBwb2xsYCBhbmQgYGVuYWJsZWRgIGZ1bmN0aW9ucyB7QGxpbmsgV2F0Y2hkb2dSZXR1cm59CiAqLwpmdW5jdGlvbiB3YXRjaGRvZ1RpbWVyKAogIGNyZWF0ZVRpbWVyLAogIHBvbGxJbnRlcnZhbCwKICBhbnJUaHJlc2hvbGQsCiAgY2FsbGJhY2ssCikgewogIGNvbnN0IHRpbWVyID0gY3JlYXRlVGltZXIoKTsKICBsZXQgdHJpZ2dlcmVkID0gZmFsc2U7CiAgbGV0IGVuYWJsZWQgPSB0cnVlOwoKICBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICBjb25zdCBkaWZmTXMgPSB0aW1lci5nZXRUaW1lTXMoKTsKCiAgICBpZiAodHJpZ2dlcmVkID09PSBmYWxzZSAmJiBkaWZmTXMgPiBwb2xsSW50ZXJ2YWwgKyBhbnJUaHJlc2hvbGQpIHsKICAgICAgdHJpZ2dlcmVkID0gdHJ1ZTsKICAgICAgaWYgKGVuYWJsZWQpIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9CgogICAgaWYgKGRpZmZNcyA8IHBvbGxJbnRlcnZhbCArIGFuclRocmVzaG9sZCkgewogICAgICB0cmlnZ2VyZWQgPSBmYWxzZTsKICAgIH0KICB9LCAyMCk7CgogIHJldHVybiB7CiAgICBwb2xsOiAoKSA9PiB7CiAgICAgIHRpbWVyLnJlc2V0KCk7CiAgICB9LAogICAgZW5hYmxlZDogKHN0YXRlKSA9PiB7CiAgICAgIGVuYWJsZWQgPSBzdGF0ZTsKICAgIH0sCiAgfTsKfQoKLy8gdHlwZXMgY29waWVkIGZyb20gaW5zcGVjdG9yLmQudHMKCi8qKgogKiBDb252ZXJ0cyBEZWJ1Z2dlci5DYWxsRnJhbWUgdG8gU2VudHJ5IFN0YWNrRnJhbWUKICovCmZ1bmN0aW9uIGNhbGxGcmFtZVRvU3RhY2tGcmFtZSgKICBmcmFtZSwKICB1cmwsCiAgZ2V0TW9kdWxlRnJvbUZpbGVuYW1lLAopIHsKICBjb25zdCBmaWxlbmFtZSA9IHVybCA/IHVybC5yZXBsYWNlKC9eZmlsZTpcL1wvLywgJycpIDogdW5kZWZpbmVkOwoKICAvLyBDYWxsRnJhbWUgcm93L2NvbCBhcmUgMCBiYXNlZCwgd2hlcmVhcyBTdGFja0ZyYW1lIGFyZSAxIGJhc2VkCiAgY29uc3QgY29sbm8gPSBmcmFtZS5sb2NhdGlvbi5jb2x1bW5OdW1iZXIgPyBmcmFtZS5sb2NhdGlvbi5jb2x1bW5OdW1iZXIgKyAxIDogdW5kZWZpbmVkOwogIGNvbnN0IGxpbmVubyA9IGZyYW1lLmxvY2F0aW9uLmxpbmVOdW1iZXIgPyBmcmFtZS5sb2NhdGlvbi5saW5lTnVtYmVyICsgMSA6IHVuZGVmaW5lZDsKCiAgcmV0dXJuIGRyb3BVbmRlZmluZWRLZXlzKHsKICAgIGZpbGVuYW1lLAogICAgbW9kdWxlOiBnZXRNb2R1bGVGcm9tRmlsZW5hbWUoZmlsZW5hbWUpLAogICAgZnVuY3Rpb246IGZyYW1lLmZ1bmN0aW9uTmFtZSB8fCAnPycsCiAgICBjb2xubywKICAgIGxpbmVubywKICAgIGluX2FwcDogZmlsZW5hbWUgPyBmaWxlbmFtZUlzSW5BcHAoZmlsZW5hbWUpIDogdW5kZWZpbmVkLAogIH0pOwp9CgovKioKICogVGhpcyBzZXJ2ZXMgYXMgYSBidWlsZCB0aW1lIGZsYWcgdGhhdCB3aWxsIGJlIHRydWUgYnkgZGVmYXVsdCwgYnV0IGZhbHNlIGluIG5vbi1kZWJ1ZyBidWlsZHMgb3IgaWYgdXNlcnMgcmVwbGFjZSBgX19TRU5UUllfREVCVUdfX2AgaW4gdGhlaXIgZ2VuZXJhdGVkIGNvZGUuCiAqCiAqIEFUVEVOVElPTjogVGhpcyBjb25zdGFudCBtdXN0IG5ldmVyIGNyb3NzIHBhY2thZ2UgYm91bmRhcmllcyAoaS5lLiBiZSBleHBvcnRlZCkgdG8gZ3VhcmFudGVlIHRoYXQgaXQgY2FuIGJlIHVzZWQgZm9yIHRyZWUgc2hha2luZy4KICovCmNvbnN0IERFQlVHX0JVSUxEID0gKHR5cGVvZiBfX1NFTlRSWV9ERUJVR19fID09PSAndW5kZWZpbmVkJyB8fCBfX1NFTlRSWV9ERUJVR19fKTsKCi8qKgogKiBDcmVhdGVzIGEgbmV3IGBTZXNzaW9uYCBvYmplY3QgYnkgc2V0dGluZyBjZXJ0YWluIGRlZmF1bHQgcGFyYW1ldGVycy4gSWYgb3B0aW9uYWwgQHBhcmFtIGNvbnRleHQKICogaXMgcGFzc2VkLCB0aGUgcGFzc2VkIHByb3BlcnRpZXMgYXJlIGFwcGxpZWQgdG8gdGhlIHNlc3Npb24gb2JqZWN0LgogKgogKiBAcGFyYW0gY29udGV4dCAob3B0aW9uYWwpIGFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBiZSBhcHBsaWVkIHRvIHRoZSByZXR1cm5lZCBzZXNzaW9uIG9iamVjdAogKgogKiBAcmV0dXJucyBhIG5ldyBgU2Vzc2lvbmAgb2JqZWN0CiAqLwpmdW5jdGlvbiBtYWtlU2Vzc2lvbihjb250ZXh0KSB7CiAgLy8gQm90aCB0aW1lc3RhbXAgYW5kIHN0YXJ0ZWQgYXJlIGluIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guCiAgY29uc3Qgc3RhcnRpbmdUaW1lID0gdGltZXN0YW1wSW5TZWNvbmRzKCk7CgogIGNvbnN0IHNlc3Npb24gPSB7CiAgICBzaWQ6IHV1aWQ0KCksCiAgICBpbml0OiB0cnVlLAogICAgdGltZXN0YW1wOiBzdGFydGluZ1RpbWUsCiAgICBzdGFydGVkOiBzdGFydGluZ1RpbWUsCiAgICBkdXJhdGlvbjogMCwKICAgIHN0YXR1czogJ29rJywKICAgIGVycm9yczogMCwKICAgIGlnbm9yZUR1cmF0aW9uOiBmYWxzZSwKICAgIHRvSlNPTjogKCkgPT4gc2Vzc2lvblRvSlNPTihzZXNzaW9uKSwKICB9OwoKICBpZiAoY29udGV4dCkgewogICAgdXBkYXRlU2Vzc2lvbihzZXNzaW9uLCBjb250ZXh0KTsKICB9CgogIHJldHVybiBzZXNzaW9uOwp9CgovKioKICogVXBkYXRlcyBhIHNlc3Npb24gb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgcGFzc2VkIGluIHRoZSBjb250ZXh0LgogKgogKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZSBwYXNzZWQgb2JqZWN0IGFuZCByZXR1cm5zIHZvaWQuCiAqIChIYWQgdG8gZG8gdGhpcyBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG5ldyBhbmQgdXBkYXRlZCBzZXNzaW9uIGJlY2F1c2UgY2xvc2luZyBhbmQgc2VuZGluZyBhIHNlc3Npb24KICogbWFrZXMgYW4gdXBkYXRlIHRvIHRoZSBzZXNzaW9uIGFmdGVyIGl0IHdhcyBwYXNzZWQgdG8gdGhlIHNlbmRpbmcgbG9naWMuCiAqIEBzZWUgQmFzZUNsaWVudC5jYXB0dXJlU2Vzc2lvbiApCiAqCiAqIEBwYXJhbSBzZXNzaW9uIHRoZSBgU2Vzc2lvbmAgdG8gdXBkYXRlCiAqIEBwYXJhbSBjb250ZXh0IHRoZSBgU2Vzc2lvbkNvbnRleHRgIGhvbGRpbmcgdGhlIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgYmUgdXBkYXRlZCBpbiBAcGFyYW0gc2Vzc2lvbgogKi8KLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHkKZnVuY3Rpb24gdXBkYXRlU2Vzc2lvbihzZXNzaW9uLCBjb250ZXh0ID0ge30pIHsKICBpZiAoY29udGV4dC51c2VyKSB7CiAgICBpZiAoIXNlc3Npb24uaXBBZGRyZXNzICYmIGNvbnRleHQudXNlci5pcF9hZGRyZXNzKSB7CiAgICAgIHNlc3Npb24uaXBBZGRyZXNzID0gY29udGV4dC51c2VyLmlwX2FkZHJlc3M7CiAgICB9CgogICAgaWYgKCFzZXNzaW9uLmRpZCAmJiAhY29udGV4dC5kaWQpIHsKICAgICAgc2Vzc2lvbi5kaWQgPSBjb250ZXh0LnVzZXIuaWQgfHwgY29udGV4dC51c2VyLmVtYWlsIHx8IGNvbnRleHQudXNlci51c2VybmFtZTsKICAgIH0KICB9CgogIHNlc3Npb24udGltZXN0YW1wID0gY29udGV4dC50aW1lc3RhbXAgfHwgdGltZXN0YW1wSW5TZWNvbmRzKCk7CgogIGlmIChjb250ZXh0LmFibm9ybWFsX21lY2hhbmlzbSkgewogICAgc2Vzc2lvbi5hYm5vcm1hbF9tZWNoYW5pc20gPSBjb250ZXh0LmFibm9ybWFsX21lY2hhbmlzbTsKICB9CgogIGlmIChjb250ZXh0Lmlnbm9yZUR1cmF0aW9uKSB7CiAgICBzZXNzaW9uLmlnbm9yZUR1cmF0aW9uID0gY29udGV4dC5pZ25vcmVEdXJhdGlvbjsKICB9CiAgaWYgKGNvbnRleHQuc2lkKSB7CiAgICAvLyBHb29kIGVub3VnaCB1dWlkIHZhbGlkYXRpb24uIOKAlCBLYW1pbAogICAgc2Vzc2lvbi5zaWQgPSBjb250ZXh0LnNpZC5sZW5ndGggPT09IDMyID8gY29udGV4dC5zaWQgOiB1dWlkNCgpOwogIH0KICBpZiAoY29udGV4dC5pbml0ICE9PSB1bmRlZmluZWQpIHsKICAgIHNlc3Npb24uaW5pdCA9IGNvbnRleHQuaW5pdDsKICB9CiAgaWYgKCFzZXNzaW9uLmRpZCAmJiBjb250ZXh0LmRpZCkgewogICAgc2Vzc2lvbi5kaWQgPSBgJHtjb250ZXh0LmRpZH1gOwogIH0KICBpZiAodHlwZW9mIGNvbnRleHQuc3RhcnRlZCA9PT0gJ251bWJlcicpIHsKICAgIHNlc3Npb24uc3RhcnRlZCA9IGNvbnRleHQuc3RhcnRlZDsKICB9CiAgaWYgKHNlc3Npb24uaWdub3JlRHVyYXRpb24pIHsKICAgIHNlc3Npb24uZHVyYXRpb24gPSB1bmRlZmluZWQ7CiAgfSBlbHNlIGlmICh0eXBlb2YgY29udGV4dC5kdXJhdGlvbiA9PT0gJ251bWJlcicpIHsKICAgIHNlc3Npb24uZHVyYXRpb24gPSBjb250ZXh0LmR1cmF0aW9uOwogIH0gZWxzZSB7CiAgICBjb25zdCBkdXJhdGlvbiA9IHNlc3Npb24udGltZXN0YW1wIC0gc2Vzc2lvbi5zdGFydGVkOwogICAgc2Vzc2lvbi5kdXJhdGlvbiA9IGR1cmF0aW9uID49IDAgPyBkdXJhdGlvbiA6IDA7CiAgfQogIGlmIChjb250ZXh0LnJlbGVhc2UpIHsKICAgIHNlc3Npb24ucmVsZWFzZSA9IGNvbnRleHQucmVsZWFzZTsKICB9CiAgaWYgKGNvbnRleHQuZW52aXJvbm1lbnQpIHsKICAgIHNlc3Npb24uZW52aXJvbm1lbnQgPSBjb250ZXh0LmVudmlyb25tZW50OwogIH0KICBpZiAoIXNlc3Npb24uaXBBZGRyZXNzICYmIGNvbnRleHQuaXBBZGRyZXNzKSB7CiAgICBzZXNzaW9uLmlwQWRkcmVzcyA9IGNvbnRleHQuaXBBZGRyZXNzOwogIH0KICBpZiAoIXNlc3Npb24udXNlckFnZW50ICYmIGNvbnRleHQudXNlckFnZW50KSB7CiAgICBzZXNzaW9uLnVzZXJBZ2VudCA9IGNvbnRleHQudXNlckFnZW50OwogIH0KICBpZiAodHlwZW9mIGNvbnRleHQuZXJyb3JzID09PSAnbnVtYmVyJykgewogICAgc2Vzc2lvbi5lcnJvcnMgPSBjb250ZXh0LmVycm9yczsKICB9CiAgaWYgKGNvbnRleHQuc3RhdHVzKSB7CiAgICBzZXNzaW9uLnN0YXR1cyA9IGNvbnRleHQuc3RhdHVzOwogIH0KfQoKLyoqCiAqIFNlcmlhbGl6ZXMgYSBwYXNzZWQgc2Vzc2lvbiBvYmplY3QgdG8gYSBKU09OIG9iamVjdCB3aXRoIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHN0cnVjdHVyZS4KICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgU2VudHJ5IGJhY2tlbmQgcmVxdWlyZXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgc2NoZW1hIG9mIGEgc2Vzc2lvbgogKiB0aGFuIHRoZSBvbmUgdGhlIEpTIFNES3MgdXNlIGludGVybmFsbHkuCiAqCiAqIEBwYXJhbSBzZXNzaW9uIHRoZSBzZXNzaW9uIHRvIGJlIGNvbnZlcnRlZAogKgogKiBAcmV0dXJucyBhIEpTT04gb2JqZWN0IG9mIHRoZSBwYXNzZWQgc2Vzc2lvbgogKi8KZnVuY3Rpb24gc2Vzc2lvblRvSlNPTihzZXNzaW9uKSB7CiAgcmV0dXJuIGRyb3BVbmRlZmluZWRLZXlzKHsKICAgIHNpZDogYCR7c2Vzc2lvbi5zaWR9YCwKICAgIGluaXQ6IHNlc3Npb24uaW5pdCwKICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHNlYyBpcyBjb252ZXJ0ZWQgdG8gbXMgZm9yIGRhdGUgY29uc3RydWN0b3IKICAgIHN0YXJ0ZWQ6IG5ldyBEYXRlKHNlc3Npb24uc3RhcnRlZCAqIDEwMDApLnRvSVNPU3RyaW5nKCksCiAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKHNlc3Npb24udGltZXN0YW1wICogMTAwMCkudG9JU09TdHJpbmcoKSwKICAgIHN0YXR1czogc2Vzc2lvbi5zdGF0dXMsCiAgICBlcnJvcnM6IHNlc3Npb24uZXJyb3JzLAogICAgZGlkOiB0eXBlb2Ygc2Vzc2lvbi5kaWQgPT09ICdudW1iZXInIHx8IHR5cGVvZiBzZXNzaW9uLmRpZCA9PT0gJ3N0cmluZycgPyBgJHtzZXNzaW9uLmRpZH1gIDogdW5kZWZpbmVkLAogICAgZHVyYXRpb246IHNlc3Npb24uZHVyYXRpb24sCiAgICBhYm5vcm1hbF9tZWNoYW5pc206IHNlc3Npb24uYWJub3JtYWxfbWVjaGFuaXNtLAogICAgYXR0cnM6IHsKICAgICAgcmVsZWFzZTogc2Vzc2lvbi5yZWxlYXNlLAogICAgICBlbnZpcm9ubWVudDogc2Vzc2lvbi5lbnZpcm9ubWVudCwKICAgICAgaXBfYWRkcmVzczogc2Vzc2lvbi5pcEFkZHJlc3MsCiAgICAgIHVzZXJfYWdlbnQ6IHNlc3Npb24udXNlckFnZW50LAogICAgfSwKICB9KTsKfQoKLyoqCiAqIEFwcGx5IFNka0luZm8gKG5hbWUsIHZlcnNpb24sIHBhY2thZ2VzLCBpbnRlZ3JhdGlvbnMpIHRvIHRoZSBjb3JyZXNwb25kaW5nIGV2ZW50IGtleS4KICogTWVyZ2Ugd2l0aCBleGlzdGluZyBkYXRhIGlmIGFueS4KICoqLwpmdW5jdGlvbiBlbmhhbmNlRXZlbnRXaXRoU2RrSW5mbyhldmVudCwgc2RrSW5mbykgewogIGlmICghc2RrSW5mbykgewogICAgcmV0dXJuIGV2ZW50OwogIH0KICBldmVudC5zZGsgPSBldmVudC5zZGsgfHwge307CiAgZXZlbnQuc2RrLm5hbWUgPSBldmVudC5zZGsubmFtZSB8fCBzZGtJbmZvLm5hbWU7CiAgZXZlbnQuc2RrLnZlcnNpb24gPSBldmVudC5zZGsudmVyc2lvbiB8fCBzZGtJbmZvLnZlcnNpb247CiAgZXZlbnQuc2RrLmludGVncmF0aW9ucyA9IFsuLi4oZXZlbnQuc2RrLmludGVncmF0aW9ucyB8fCBbXSksIC4uLihzZGtJbmZvLmludGVncmF0aW9ucyB8fCBbXSldOwogIGV2ZW50LnNkay5wYWNrYWdlcyA9IFsuLi4oZXZlbnQuc2RrLnBhY2thZ2VzIHx8IFtdKSwgLi4uKHNka0luZm8ucGFja2FnZXMgfHwgW10pXTsKICByZXR1cm4gZXZlbnQ7Cn0KCi8qKiBDcmVhdGVzIGFuIGVudmVsb3BlIGZyb20gYSBTZXNzaW9uICovCmZ1bmN0aW9uIGNyZWF0ZVNlc3Npb25FbnZlbG9wZSgKICBzZXNzaW9uLAogIGRzbiwKICBtZXRhZGF0YSwKICB0dW5uZWwsCikgewogIGNvbnN0IHNka0luZm8gPSBnZXRTZGtNZXRhZGF0YUZvckVudmVsb3BlSGVhZGVyKG1ldGFkYXRhKTsKICBjb25zdCBlbnZlbG9wZUhlYWRlcnMgPSB7CiAgICBzZW50X2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksCiAgICAuLi4oc2RrSW5mbyAmJiB7IHNkazogc2RrSW5mbyB9KSwKICAgIC4uLighIXR1bm5lbCAmJiBkc24gJiYgeyBkc246IGRzblRvU3RyaW5nKGRzbikgfSksCiAgfTsKCiAgY29uc3QgZW52ZWxvcGVJdGVtID0KICAgICdhZ2dyZWdhdGVzJyBpbiBzZXNzaW9uID8gW3sgdHlwZTogJ3Nlc3Npb25zJyB9LCBzZXNzaW9uXSA6IFt7IHR5cGU6ICdzZXNzaW9uJyB9LCBzZXNzaW9uLnRvSlNPTigpXTsKCiAgcmV0dXJuIGNyZWF0ZUVudmVsb3BlKGVudmVsb3BlSGVhZGVycywgW2VudmVsb3BlSXRlbV0pOwp9CgovKioKICogQ3JlYXRlIGFuIEVudmVsb3BlIGZyb20gYW4gZXZlbnQuCiAqLwpmdW5jdGlvbiBjcmVhdGVFdmVudEVudmVsb3BlKAogIGV2ZW50LAogIGRzbiwKICBtZXRhZGF0YSwKICB0dW5uZWwsCikgewogIGNvbnN0IHNka0luZm8gPSBnZXRTZGtNZXRhZGF0YUZvckVudmVsb3BlSGVhZGVyKG1ldGFkYXRhKTsKCiAgLyoKICAgIE5vdGU6IER1ZSB0byBUUywgZXZlbnQudHlwZSBtYXkgYmUgYHJlcGxheV9ldmVudGAsIHRoZW9yZXRpY2FsbHkuCiAgICBJbiBwcmFjdGljZSwgd2UgbmV2ZXIgY2FsbCBgY3JlYXRlRXZlbnRFbnZlbG9wZWAgd2l0aCBgcmVwbGF5X2V2ZW50YCB0eXBlLAogICAgYW5kIHdlJ2QgaGF2ZSB0byBhZGp1dCBhIGxvb290IG9mIHR5cGVzIHRvIG1ha2UgdGhpcyB3b3JrIHByb3Blcmx5LgogICAgV2Ugd2FudCB0byBhdm9pZCBjYXN0aW5nIHRoaXMgYXJvdW5kLCBhcyB0aGF0IGNvdWxkIGxlYWQgdG8gYnVncyAoZS5nLiB3aGVuIHdlIGFkZCBhbm90aGVyIHR5cGUpCiAgICBTbyB0aGUgc2FmZSBjaG9pY2UgaXMgdG8gcmVhbGx5IGd1YXJkIGFnYWluc3QgdGhlIHJlcGxheV9ldmVudCB0eXBlIGhlcmUuCiAgKi8KICBjb25zdCBldmVudFR5cGUgPSBldmVudC50eXBlICYmIGV2ZW50LnR5cGUgIT09ICdyZXBsYXlfZXZlbnQnID8gZXZlbnQudHlwZSA6ICdldmVudCc7CgogIGVuaGFuY2VFdmVudFdpdGhTZGtJbmZvKGV2ZW50LCBtZXRhZGF0YSAmJiBtZXRhZGF0YS5zZGspOwoKICBjb25zdCBlbnZlbG9wZUhlYWRlcnMgPSBjcmVhdGVFdmVudEVudmVsb3BlSGVhZGVycyhldmVudCwgc2RrSW5mbywgdHVubmVsLCBkc24pOwoKICAvLyBQcmV2ZW50IHRoaXMgZGF0YSAod2hpY2gsIGlmIGl0IGV4aXN0cywgd2FzIHVzZWQgaW4gZWFybGllciBzdGVwcyBpbiB0aGUgcHJvY2Vzc2luZyBwaXBlbGluZSkgZnJvbSBiZWluZyBzZW50IHRvCiAgLy8gc2VudHJ5LiAoTm90ZTogT3VyIHVzZSBvZiB0aGlzIHByb3BlcnR5IGNvbWVzIGFuZCBnb2VzIHdpdGggd2hhdGV2ZXIgd2UgbWlnaHQgYmUgZGVidWdnaW5nLCB3aGF0ZXZlciBoYWNrcyB3ZSBtYXkKICAvLyBoYXZlIHRlbXBvcmFyaWx5IGFkZGVkLCBldGMuIEV2ZW4gaWYgd2UgZG9uJ3QgaGFwcGVuIHRvIGJlIHVzaW5nIGl0IGF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZSwgbGV0J3Mgbm90IGdldCByaWQKICAvLyBvZiB0aGlzIGBkZWxldGVgLCBsZXN0IHdlIG1pc3MgcHV0dGluZyBpdCBiYWNrIGluIHRoZSBuZXh0IHRpbWUgdGhlIHByb3BlcnR5IGlzIGluIHVzZS4pCiAgZGVsZXRlIGV2ZW50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YTsKCiAgY29uc3QgZXZlbnRJdGVtID0gW3sgdHlwZTogZXZlbnRUeXBlIH0sIGV2ZW50XTsKICByZXR1cm4gY3JlYXRlRW52ZWxvcGUoZW52ZWxvcGVIZWFkZXJzLCBbZXZlbnRJdGVtXSk7Cn0KCmNvbnN0IFNFTlRSWV9BUElfVkVSU0lPTiA9ICc3JzsKCi8qKiBSZXR1cm5zIHRoZSBwcmVmaXggdG8gY29uc3RydWN0IFNlbnRyeSBpbmdlc3Rpb24gQVBJIGVuZHBvaW50cy4gKi8KZnVuY3Rpb24gZ2V0QmFzZUFwaUVuZHBvaW50KGRzbikgewogIGNvbnN0IHByb3RvY29sID0gZHNuLnByb3RvY29sID8gYCR7ZHNuLnByb3RvY29sfTpgIDogJyc7CiAgY29uc3QgcG9ydCA9IGRzbi5wb3J0ID8gYDoke2Rzbi5wb3J0fWAgOiAnJzsKICByZXR1cm4gYCR7cHJvdG9jb2x9Ly8ke2Rzbi5ob3N0fSR7cG9ydH0ke2Rzbi5wYXRoID8gYC8ke2Rzbi5wYXRofWAgOiAnJ30vYXBpL2A7Cn0KCi8qKiBSZXR1cm5zIHRoZSBpbmdlc3QgQVBJIGVuZHBvaW50IGZvciB0YXJnZXQuICovCmZ1bmN0aW9uIF9nZXRJbmdlc3RFbmRwb2ludChkc24pIHsKICByZXR1cm4gYCR7Z2V0QmFzZUFwaUVuZHBvaW50KGRzbil9JHtkc24ucHJvamVjdElkfS9lbnZlbG9wZS9gOwp9CgovKiogUmV0dXJucyBhIFVSTC1lbmNvZGVkIHN0cmluZyB3aXRoIGF1dGggY29uZmlnIHN1aXRhYmxlIGZvciBhIHF1ZXJ5IHN0cmluZy4gKi8KZnVuY3Rpb24gX2VuY29kZWRBdXRoKGRzbiwgc2RrSW5mbykgewogIHJldHVybiB1cmxFbmNvZGUoewogICAgLy8gV2Ugc2VuZCBvbmx5IHRoZSBtaW5pbXVtIHNldCBvZiByZXF1aXJlZCBpbmZvcm1hdGlvbi4gU2VlCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy8yNTcyLgogICAgc2VudHJ5X2tleTogZHNuLnB1YmxpY0tleSwKICAgIHNlbnRyeV92ZXJzaW9uOiBTRU5UUllfQVBJX1ZFUlNJT04sCiAgICAuLi4oc2RrSW5mbyAmJiB7IHNlbnRyeV9jbGllbnQ6IGAke3Nka0luZm8ubmFtZX0vJHtzZGtJbmZvLnZlcnNpb259YCB9KSwKICB9KTsKfQoKLyoqCiAqIFJldHVybnMgdGhlIGVudmVsb3BlIGVuZHBvaW50IFVSTCB3aXRoIGF1dGggaW4gdGhlIHF1ZXJ5IHN0cmluZy4KICoKICogU2VuZGluZyBhdXRoIGFzIHBhcnQgb2YgdGhlIHF1ZXJ5IHN0cmluZyBhbmQgbm90IGFzIGN1c3RvbSBIVFRQIGhlYWRlcnMgYXZvaWRzIENPUlMgcHJlZmxpZ2h0IHJlcXVlc3RzLgogKi8KZnVuY3Rpb24gZ2V0RW52ZWxvcGVFbmRwb2ludFdpdGhVcmxFbmNvZGVkQXV0aCgKICBkc24sCiAgLy8gVE9ETyAodjgpOiBSZW1vdmUgYHR1bm5lbE9yT3B0aW9uc2AgaW4gZmF2b3Igb2YgYG9wdGlvbnNgLCBhbmQgdXNlIHRoZSBzdWJzdGl0dXRlIGNvZGUgYmVsb3cKICAvLyBvcHRpb25zOiBDbGllbnRPcHRpb25zID0ge30gYXMgQ2xpZW50T3B0aW9ucywKICB0dW5uZWxPck9wdGlvbnMgPSB7fSAsCikgewogIC8vIFRPRE8gKHY4KTogVXNlIHRoaXMgY29kZSBpbnN0ZWFkCiAgLy8gY29uc3QgeyB0dW5uZWwsIF9tZXRhZGF0YSA9IHt9IH0gPSBvcHRpb25zOwogIC8vIHJldHVybiB0dW5uZWwgPyB0dW5uZWwgOiBgJHtfZ2V0SW5nZXN0RW5kcG9pbnQoZHNuKX0/JHtfZW5jb2RlZEF1dGgoZHNuLCBfbWV0YWRhdGEuc2RrKX1gOwoKICBjb25zdCB0dW5uZWwgPSB0eXBlb2YgdHVubmVsT3JPcHRpb25zID09PSAnc3RyaW5nJyA/IHR1bm5lbE9yT3B0aW9ucyA6IHR1bm5lbE9yT3B0aW9ucy50dW5uZWw7CiAgY29uc3Qgc2RrSW5mbyA9CiAgICB0eXBlb2YgdHVubmVsT3JPcHRpb25zID09PSAnc3RyaW5nJyB8fCAhdHVubmVsT3JPcHRpb25zLl9tZXRhZGF0YSA/IHVuZGVmaW5lZCA6IHR1bm5lbE9yT3B0aW9ucy5fbWV0YWRhdGEuc2RrOwoKICByZXR1cm4gdHVubmVsID8gdHVubmVsIDogYCR7X2dldEluZ2VzdEVuZHBvaW50KGRzbil9PyR7X2VuY29kZWRBdXRoKGRzbiwgc2RrSW5mbyl9YDsKfQoKY29uc3QgREVGQVVMVF9UUkFOU1BPUlRfQlVGRkVSX1NJWkUgPSAzMDsKCi8qKgogKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIGEgU2VudHJ5IGBUcmFuc3BvcnRgCiAqCiAqIEBwYXJhbSBvcHRpb25zCiAqIEBwYXJhbSBtYWtlUmVxdWVzdAogKi8KZnVuY3Rpb24gY3JlYXRlVHJhbnNwb3J0KAogIG9wdGlvbnMsCiAgbWFrZVJlcXVlc3QsCiAgYnVmZmVyID0gbWFrZVByb21pc2VCdWZmZXIoCiAgICBvcHRpb25zLmJ1ZmZlclNpemUgfHwgREVGQVVMVF9UUkFOU1BPUlRfQlVGRkVSX1NJWkUsCiAgKSwKKSB7CiAgbGV0IHJhdGVMaW1pdHMgPSB7fTsKICBjb25zdCBmbHVzaCA9ICh0aW1lb3V0KSA9PiBidWZmZXIuZHJhaW4odGltZW91dCk7CgogIGZ1bmN0aW9uIHNlbmQoZW52ZWxvcGUpIHsKICAgIGNvbnN0IGZpbHRlcmVkRW52ZWxvcGVJdGVtcyA9IFtdOwoKICAgIC8vIERyb3AgcmF0ZSBsaW1pdGVkIGl0ZW1zIGZyb20gZW52ZWxvcGUKICAgIGZvckVhY2hFbnZlbG9wZUl0ZW0oZW52ZWxvcGUsIChpdGVtLCB0eXBlKSA9PiB7CiAgICAgIGNvbnN0IGVudmVsb3BlSXRlbURhdGFDYXRlZ29yeSA9IGVudmVsb3BlSXRlbVR5cGVUb0RhdGFDYXRlZ29yeSh0eXBlKTsKICAgICAgaWYgKGlzUmF0ZUxpbWl0ZWQocmF0ZUxpbWl0cywgZW52ZWxvcGVJdGVtRGF0YUNhdGVnb3J5KSkgewogICAgICAgIGNvbnN0IGV2ZW50ID0gZ2V0RXZlbnRGb3JFbnZlbG9wZUl0ZW0oaXRlbSwgdHlwZSk7CiAgICAgICAgb3B0aW9ucy5yZWNvcmREcm9wcGVkRXZlbnQoJ3JhdGVsaW1pdF9iYWNrb2ZmJywgZW52ZWxvcGVJdGVtRGF0YUNhdGVnb3J5LCBldmVudCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZmlsdGVyZWRFbnZlbG9wZUl0ZW1zLnB1c2goaXRlbSk7CiAgICAgIH0KICAgIH0pOwoKICAgIC8vIFNraXAgc2VuZGluZyBpZiBlbnZlbG9wZSBpcyBlbXB0eSBhZnRlciBmaWx0ZXJpbmcgb3V0IHJhdGUgbGltaXRlZCBldmVudHMKICAgIGlmIChmaWx0ZXJlZEVudmVsb3BlSXRlbXMubGVuZ3RoID09PSAwKSB7CiAgICAgIHJldHVybiByZXNvbHZlZFN5bmNQcm9taXNlKCk7CiAgICB9CgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkKICAgIGNvbnN0IGZpbHRlcmVkRW52ZWxvcGUgPSBjcmVhdGVFbnZlbG9wZShlbnZlbG9wZVswXSwgZmlsdGVyZWRFbnZlbG9wZUl0ZW1zICk7CgogICAgLy8gQ3JlYXRlcyBjbGllbnQgcmVwb3J0IGZvciBlYWNoIGl0ZW0gaW4gYW4gZW52ZWxvcGUKICAgIGNvbnN0IHJlY29yZEVudmVsb3BlTG9zcyA9IChyZWFzb24pID0+IHsKICAgICAgZm9yRWFjaEVudmVsb3BlSXRlbShmaWx0ZXJlZEVudmVsb3BlLCAoaXRlbSwgdHlwZSkgPT4gewogICAgICAgIGNvbnN0IGV2ZW50ID0gZ2V0RXZlbnRGb3JFbnZlbG9wZUl0ZW0oaXRlbSwgdHlwZSk7CiAgICAgICAgb3B0aW9ucy5yZWNvcmREcm9wcGVkRXZlbnQocmVhc29uLCBlbnZlbG9wZUl0ZW1UeXBlVG9EYXRhQ2F0ZWdvcnkodHlwZSksIGV2ZW50KTsKICAgICAgfSk7CiAgICB9OwoKICAgIGNvbnN0IHJlcXVlc3RUYXNrID0gKCkgPT4KICAgICAgbWFrZVJlcXVlc3QoeyBib2R5OiBzZXJpYWxpemVFbnZlbG9wZShmaWx0ZXJlZEVudmVsb3BlLCBvcHRpb25zLnRleHRFbmNvZGVyKSB9KS50aGVuKAogICAgICAgIHJlc3BvbnNlID0+IHsKICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gdGhyb3cgb24gTk9LIHJlc3BvbnNlcywgYnV0IHdlIHdhbnQgdG8gYXQgbGVhc3QgbG9nIHRoZW0KICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlICE9PSB1bmRlZmluZWQgJiYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPCAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzQ29kZSA+PSAzMDApKSB7CiAgICAgICAgICAgIERFQlVHX0JVSUxEICYmIGxvZ2dlci53YXJuKGBTZW50cnkgcmVzcG9uZGVkIHdpdGggc3RhdHVzIGNvZGUgJHtyZXNwb25zZS5zdGF0dXNDb2RlfSB0byBzZW50IGV2ZW50LmApOwogICAgICAgICAgfQoKICAgICAgICAgIHJhdGVMaW1pdHMgPSB1cGRhdGVSYXRlTGltaXRzKHJhdGVMaW1pdHMsIHJlc3BvbnNlKTsKICAgICAgICAgIHJldHVybiByZXNwb25zZTsKICAgICAgICB9LAogICAgICAgIGVycm9yID0+IHsKICAgICAgICAgIHJlY29yZEVudmVsb3BlTG9zcygnbmV0d29ya19lcnJvcicpOwogICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgfSwKICAgICAgKTsKCiAgICByZXR1cm4gYnVmZmVyLmFkZChyZXF1ZXN0VGFzaykudGhlbigKICAgICAgcmVzdWx0ID0+IHJlc3VsdCwKICAgICAgZXJyb3IgPT4gewogICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFNlbnRyeUVycm9yKSB7CiAgICAgICAgICBERUJVR19CVUlMRCAmJiBsb2dnZXIuZXJyb3IoJ1NraXBwZWQgc2VuZGluZyBldmVudCBiZWNhdXNlIGJ1ZmZlciBpcyBmdWxsLicpOwogICAgICAgICAgcmVjb3JkRW52ZWxvcGVMb3NzKCdxdWV1ZV9vdmVyZmxvdycpOwogICAgICAgICAgcmV0dXJuIHJlc29sdmVkU3luY1Byb21pc2UoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgfQogICAgICB9LAogICAgKTsKICB9CgogIC8vIFdlIHVzZSB0aGlzIHRvIGlkZW50aWZpZnkgaWYgdGhlIHRyYW5zcG9ydCBpcyB0aGUgYmFzZSB0cmFuc3BvcnQKICAvLyBUT0RPICh2OCk6IFJlbW92ZSB0aGlzIGFnYWluIGFzIHdlJ2xsIG5vIGxvbmdlciBuZWVkIGl0CiAgc2VuZC5fX3NlbnRyeV9fYmFzZVRyYW5zcG9ydF9fID0gdHJ1ZTsKCiAgcmV0dXJuIHsKICAgIHNlbmQsCiAgICBmbHVzaCwKICB9Owp9CgpmdW5jdGlvbiBnZXRFdmVudEZvckVudmVsb3BlSXRlbShpdGVtLCB0eXBlKSB7CiAgaWYgKHR5cGUgIT09ICdldmVudCcgJiYgdHlwZSAhPT0gJ3RyYW5zYWN0aW9uJykgewogICAgcmV0dXJuIHVuZGVmaW5lZDsKICB9CgogIHJldHVybiBBcnJheS5pc0FycmF5KGl0ZW0pID8gKGl0ZW0gKVsxXSA6IHVuZGVmaW5lZDsKfQoKLyoqIG5vcm1hbGl6ZXMgV2luZG93cyBwYXRocyAqLwpmdW5jdGlvbiBub3JtYWxpemVXaW5kb3dzUGF0aChwYXRoKSB7CiAgcmV0dXJuIHBhdGgKICAgIC5yZXBsYWNlKC9eW0EtWl06LywgJycpIC8vIHJlbW92ZSBXaW5kb3dzLXN0eWxlIHByZWZpeAogICAgLnJlcGxhY2UoL1xcL2csICcvJyk7IC8vIHJlcGxhY2UgYWxsIGBcYCBpbnN0YW5jZXMgd2l0aCBgL2AKfQoKLyoqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIG1vZHVsZSBuYW1lIGZyb20gYSBmaWxlbmFtZSAqLwpmdW5jdGlvbiBjcmVhdGVHZXRNb2R1bGVGcm9tRmlsZW5hbWUoCiAgYmFzZVBhdGggPSBwcm9jZXNzLmFyZ3ZbMV0gPyBkaXJuYW1lKHByb2Nlc3MuYXJndlsxXSkgOiBwcm9jZXNzLmN3ZCgpLAogIGlzV2luZG93cyA9IHNlcCA9PT0gJ1xcJywKKSB7CiAgY29uc3Qgbm9ybWFsaXplZEJhc2UgPSBpc1dpbmRvd3MgPyBub3JtYWxpemVXaW5kb3dzUGF0aChiYXNlUGF0aCkgOiBiYXNlUGF0aDsKCiAgcmV0dXJuIChmaWxlbmFtZSkgPT4gewogICAgaWYgKCFmaWxlbmFtZSkgewogICAgICByZXR1cm47CiAgICB9CgogICAgY29uc3Qgbm9ybWFsaXplZEZpbGVuYW1lID0gaXNXaW5kb3dzID8gbm9ybWFsaXplV2luZG93c1BhdGgoZmlsZW5hbWUpIDogZmlsZW5hbWU7CgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdAogICAgbGV0IHsgZGlyLCBiYXNlOiBmaWxlLCBleHQgfSA9IHBvc2l4LnBhcnNlKG5vcm1hbGl6ZWRGaWxlbmFtZSk7CgogICAgaWYgKGV4dCA9PT0gJy5qcycgfHwgZXh0ID09PSAnLm1qcycgfHwgZXh0ID09PSAnLmNqcycpIHsKICAgICAgZmlsZSA9IGZpbGUuc2xpY2UoMCwgZXh0Lmxlbmd0aCAqIC0xKTsKICAgIH0KCiAgICBpZiAoIWRpcikgewogICAgICAvLyBObyBkaXJuYW1lIHdoYXRzb2V2ZXIKICAgICAgZGlyID0gJy4nOwogICAgfQoKICAgIGNvbnN0IG4gPSBkaXIubGFzdEluZGV4T2YoJy9ub2RlX21vZHVsZXMnKTsKICAgIGlmIChuID4gLTEpIHsKICAgICAgcmV0dXJuIGAke2Rpci5zbGljZShuICsgMTQpLnJlcGxhY2UoL1wvL2csICcuJyl9OiR7ZmlsZX1gOwogICAgfQoKICAgIC8vIExldCdzIHNlZSBpZiBpdCdzIGEgcGFydCBvZiB0aGUgbWFpbiBtb2R1bGUKICAgIC8vIFRvIGJlIGEgcGFydCBvZiBtYWluIG1vZHVsZSwgaXQgaGFzIHRvIHNoYXJlIHRoZSBzYW1lIGJhc2UKICAgIGlmIChkaXIuc3RhcnRzV2l0aChub3JtYWxpemVkQmFzZSkpIHsKICAgICAgbGV0IG1vZHVsZU5hbWUgPSBkaXIuc2xpY2Uobm9ybWFsaXplZEJhc2UubGVuZ3RoICsgMSkucmVwbGFjZSgvXC8vZywgJy4nKTsKCiAgICAgIGlmIChtb2R1bGVOYW1lKSB7CiAgICAgICAgbW9kdWxlTmFtZSArPSAnOic7CiAgICAgIH0KICAgICAgbW9kdWxlTmFtZSArPSBmaWxlOwoKICAgICAgcmV0dXJuIG1vZHVsZU5hbWU7CiAgICB9CgogICAgcmV0dXJuIGZpbGU7CiAgfTsKfQoKZnVuY3Rpb24gX251bGxpc2hDb2FsZXNjZSQyKGxocywgcmhzRm4pIHsgaWYgKGxocyAhPSBudWxsKSB7IHJldHVybiBsaHM7IH0gZWxzZSB7IHJldHVybiByaHNGbigpOyB9IH0vKioKICogVGhpcyBjb2RlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9Ub29UYWxsTmF0ZS9wcm94eS1hZ2VudHMvdHJlZS9iMTMzMjk1ZmQxNmY2NDc1NTc4YjZiMTViZDliNGUzM2VjYjBkMGI3CiAqIFdpdGggdGhlIGZvbGxvd2luZyBsaWNlbmNlOgogKgogKiAoVGhlIE1JVCBMaWNlbnNlKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTMgTmF0aGFuIFJhamxpY2ggPG5hdGhhbkB0b290YWxsbmF0ZS5uZXQ+KgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCiAqICdTb2Z0d2FyZScpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAogKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCiAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoqCiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCiAqIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLioKICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICdBUyBJUycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCiAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgogKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCiAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCiAqIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCiAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCiAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKi8KCmNvbnN0IElOVEVSTkFMID0gU3ltYm9sKCdBZ2VudEJhc2VJbnRlcm5hbFN0YXRlJyk7CgpjbGFzcyBBZ2VudCBleHRlbmRzIGh0dHAuQWdlbnQgewoKICAvLyBTZXQgYnkgYGh0dHAuQWdlbnRgIC0gbWlzc2luZyBmcm9tIGBAdHlwZXMvbm9kZWAKCiAgY29uc3RydWN0b3Iob3B0cykgewogICAgc3VwZXIob3B0cyk7CiAgICB0aGlzW0lOVEVSTkFMXSA9IHt9OwogIH0KCiAgLyoqCiAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhbiBgaHR0cGAgb3IgYGh0dHBzYCByZXF1ZXN0LgogICAqLwogIGlzU2VjdXJlRW5kcG9pbnQob3B0aW9ucykgewogICAgaWYgKG9wdGlvbnMpIHsKICAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIGBzZWN1cmVFbmRwb2ludGAgcHJvcGVydHkgZXhwbGljaXRseSwgc2luY2UgdGhpcwogICAgICAvLyBtZWFucyB0aGF0IGEgcGFyZW50IGBBZ2VudGAgaXMgInBhc3NpbmcgdGhyb3VnaCIgdG8gdGhpcyBpbnN0YW5jZS4KICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcwogICAgICBpZiAodHlwZW9mIChvcHRpb25zICkuc2VjdXJlRW5kcG9pbnQgPT09ICdib29sZWFuJykgewogICAgICAgIHJldHVybiBvcHRpb25zLnNlY3VyZUVuZHBvaW50OwogICAgICB9CgogICAgICAvLyBJZiBubyBleHBsaWNpdCBgc2VjdXJlYCBlbmRwb2ludCwgY2hlY2sgaWYgYHByb3RvY29sYCBwcm9wZXJ0eSBpcwogICAgICAvLyBzZXQuIFRoaXMgd2lsbCB1c3VhbGx5IGJlIHRoZSBjYXNlIHNpbmNlIHVzaW5nIGEgZnVsbCBzdHJpbmcgVVJMCiAgICAgIC8vIG9yIGBVUkxgIGluc3RhbmNlIHNob3VsZCBiZSB0aGUgbW9zdCBjb21tb24gdXNhZ2UuCiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5wcm90b2NvbCA9PT0gJ3N0cmluZycpIHsKICAgICAgICByZXR1cm4gb3B0aW9ucy5wcm90b2NvbCA9PT0gJ2h0dHBzOic7CiAgICAgIH0KICAgIH0KCiAgICAvLyBGaW5hbGx5LCBpZiBubyBgcHJvdG9jb2xgIHByb3BlcnR5IHdhcyBzZXQsIHRoZW4gZmFsbCBiYWNrIHRvCiAgICAvLyBjaGVja2luZyB0aGUgc3RhY2sgdHJhY2Ugb2YgdGhlIGN1cnJlbnQgY2FsbCBzdGFjaywgYW5kIHRyeSB0bwogICAgLy8gZGV0ZWN0IHRoZSAiaHR0cHMiIG1vZHVsZS4KICAgIGNvbnN0IHsgc3RhY2sgfSA9IG5ldyBFcnJvcigpOwogICAgaWYgKHR5cGVvZiBzdGFjayAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiBzdGFjay5zcGxpdCgnXG4nKS5zb21lKGwgPT4gbC5pbmRleE9mKCcoaHR0cHMuanM6JykgIT09IC0xIHx8IGwuaW5kZXhPZignbm9kZTpodHRwczonKSAhPT0gLTEpOwogIH0KCiAgY3JlYXRlU29ja2V0KHJlcSwgb3B0aW9ucywgY2IpIHsKICAgIGNvbnN0IGNvbm5lY3RPcHRzID0gewogICAgICAuLi5vcHRpb25zLAogICAgICBzZWN1cmVFbmRwb2ludDogdGhpcy5pc1NlY3VyZUVuZHBvaW50KG9wdGlvbnMpLAogICAgfTsKICAgIFByb21pc2UucmVzb2x2ZSgpCiAgICAgIC50aGVuKCgpID0+IHRoaXMuY29ubmVjdChyZXEsIGNvbm5lY3RPcHRzKSkKICAgICAgLnRoZW4oc29ja2V0ID0+IHsKICAgICAgICBpZiAoc29ja2V0IGluc3RhbmNlb2YgaHR0cC5BZ2VudCkgewogICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBgYWRkUmVxdWVzdCgpYCBpc24ndCBkZWZpbmVkIGluIGBAdHlwZXMvbm9kZWAKICAgICAgICAgIHJldHVybiBzb2NrZXQuYWRkUmVxdWVzdChyZXEsIGNvbm5lY3RPcHRzKTsKICAgICAgICB9CiAgICAgICAgdGhpc1tJTlRFUk5BTF0uY3VycmVudFNvY2tldCA9IHNvY2tldDsKICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBjcmVhdGVTb2NrZXQoKWAgaXNuJ3QgZGVmaW5lZCBpbiBgQHR5cGVzL25vZGVgCiAgICAgICAgc3VwZXIuY3JlYXRlU29ja2V0KHJlcSwgb3B0aW9ucywgY2IpOwogICAgICB9LCBjYik7CiAgfQoKICBjcmVhdGVDb25uZWN0aW9uKCkgewogICAgY29uc3Qgc29ja2V0ID0gdGhpc1tJTlRFUk5BTF0uY3VycmVudFNvY2tldDsKICAgIHRoaXNbSU5URVJOQUxdLmN1cnJlbnRTb2NrZXQgPSB1bmRlZmluZWQ7CiAgICBpZiAoIXNvY2tldCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHNvY2tldCB3YXMgcmV0dXJuZWQgaW4gdGhlIGBjb25uZWN0KClgIGZ1bmN0aW9uJyk7CiAgICB9CiAgICByZXR1cm4gc29ja2V0OwogIH0KCiAgZ2V0IGRlZmF1bHRQb3J0KCkgewogICAgcmV0dXJuIF9udWxsaXNoQ29hbGVzY2UkMih0aGlzW0lOVEVSTkFMXS5kZWZhdWx0UG9ydCwgKCkgPT4gKCAodGhpcy5wcm90b2NvbCA9PT0gJ2h0dHBzOicgPyA0NDMgOiA4MCkpKTsKICB9CgogIHNldCBkZWZhdWx0UG9ydCh2KSB7CiAgICBpZiAodGhpc1tJTlRFUk5BTF0pIHsKICAgICAgdGhpc1tJTlRFUk5BTF0uZGVmYXVsdFBvcnQgPSB2OwogICAgfQogIH0KCiAgZ2V0IHByb3RvY29sKCkgewogICAgcmV0dXJuIF9udWxsaXNoQ29hbGVzY2UkMih0aGlzW0lOVEVSTkFMXS5wcm90b2NvbCwgKCkgPT4gKCAodGhpcy5pc1NlY3VyZUVuZHBvaW50KCkgPyAnaHR0cHM6JyA6ICdodHRwOicpKSk7CiAgfQoKICBzZXQgcHJvdG9jb2wodikgewogICAgaWYgKHRoaXNbSU5URVJOQUxdKSB7CiAgICAgIHRoaXNbSU5URVJOQUxdLnByb3RvY29sID0gdjsKICAgIH0KICB9Cn0KCmZ1bmN0aW9uIGRlYnVnJDEoLi4uYXJncykgewogIGxvZ2dlci5sb2coJ1todHRwcy1wcm94eS1hZ2VudDpwYXJzZS1wcm94eS1yZXNwb25zZV0nLCAuLi5hcmdzKTsKfQoKZnVuY3Rpb24gcGFyc2VQcm94eVJlc3BvbnNlKHNvY2tldCkgewogIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAvLyB3ZSBuZWVkIHRvIGJ1ZmZlciBhbnkgSFRUUCB0cmFmZmljIHRoYXQgaGFwcGVucyB3aXRoIHRoZSBwcm94eSBiZWZvcmUgd2UgZ2V0CiAgICAvLyB0aGUgQ09OTkVDVCByZXNwb25zZSwgc28gdGhhdCBpZiB0aGUgcmVzcG9uc2UgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiBhbiAiMjAwIgogICAgLy8gcmVzcG9uc2UgY29kZSwgdGhlbiB3ZSBjYW4gcmUtcGxheSB0aGUgImRhdGEiIGV2ZW50cyBvbiB0aGUgc29ja2V0IG9uY2UgdGhlCiAgICAvLyBIVFRQIHBhcnNlciBpcyBob29rZWQgdXAuLi4KICAgIGxldCBidWZmZXJzTGVuZ3RoID0gMDsKICAgIGNvbnN0IGJ1ZmZlcnMgPSBbXTsKCiAgICBmdW5jdGlvbiByZWFkKCkgewogICAgICBjb25zdCBiID0gc29ja2V0LnJlYWQoKTsKICAgICAgaWYgKGIpIG9uZGF0YShiKTsKICAgICAgZWxzZSBzb2NrZXQub25jZSgncmVhZGFibGUnLCByZWFkKTsKICAgIH0KCiAgICBmdW5jdGlvbiBjbGVhbnVwKCkgewogICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTsKICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpOwogICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ3JlYWRhYmxlJywgcmVhZCk7CiAgICB9CgogICAgZnVuY3Rpb24gb25lbmQoKSB7CiAgICAgIGNsZWFudXAoKTsKICAgICAgZGVidWckMSgnb25lbmQnKTsKICAgICAgcmVqZWN0KG5ldyBFcnJvcignUHJveHkgY29ubmVjdGlvbiBlbmRlZCBiZWZvcmUgcmVjZWl2aW5nIENPTk5FQ1QgcmVzcG9uc2UnKSk7CiAgICB9CgogICAgZnVuY3Rpb24gb25lcnJvcihlcnIpIHsKICAgICAgY2xlYW51cCgpOwogICAgICBkZWJ1ZyQxKCdvbmVycm9yICVvJywgZXJyKTsKICAgICAgcmVqZWN0KGVycik7CiAgICB9CgogICAgZnVuY3Rpb24gb25kYXRhKGIpIHsKICAgICAgYnVmZmVycy5wdXNoKGIpOwogICAgICBidWZmZXJzTGVuZ3RoICs9IGIubGVuZ3RoOwoKICAgICAgY29uc3QgYnVmZmVyZWQgPSBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMsIGJ1ZmZlcnNMZW5ndGgpOwogICAgICBjb25zdCBlbmRPZkhlYWRlcnMgPSBidWZmZXJlZC5pbmRleE9mKCdcclxuXHJcbicpOwoKICAgICAgaWYgKGVuZE9mSGVhZGVycyA9PT0gLTEpIHsKICAgICAgICAvLyBrZWVwIGJ1ZmZlcmluZwogICAgICAgIGRlYnVnJDEoJ2hhdmUgbm90IHJlY2VpdmVkIGVuZCBvZiBIVFRQIGhlYWRlcnMgeWV0Li4uJyk7CiAgICAgICAgcmVhZCgpOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgY29uc3QgaGVhZGVyUGFydHMgPSBidWZmZXJlZC5zbGljZSgwLCBlbmRPZkhlYWRlcnMpLnRvU3RyaW5nKCdhc2NpaScpLnNwbGl0KCdcclxuJyk7CiAgICAgIGNvbnN0IGZpcnN0TGluZSA9IGhlYWRlclBhcnRzLnNoaWZ0KCk7CiAgICAgIGlmICghZmlyc3RMaW5lKSB7CiAgICAgICAgc29ja2V0LmRlc3Ryb3koKTsKICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignTm8gaGVhZGVyIHJlY2VpdmVkIGZyb20gcHJveHkgQ09OTkVDVCByZXNwb25zZScpKTsKICAgICAgfQogICAgICBjb25zdCBmaXJzdExpbmVQYXJ0cyA9IGZpcnN0TGluZS5zcGxpdCgnICcpOwogICAgICBjb25zdCBzdGF0dXNDb2RlID0gK2ZpcnN0TGluZVBhcnRzWzFdOwogICAgICBjb25zdCBzdGF0dXNUZXh0ID0gZmlyc3RMaW5lUGFydHMuc2xpY2UoMikuam9pbignICcpOwogICAgICBjb25zdCBoZWFkZXJzID0ge307CiAgICAgIGZvciAoY29uc3QgaGVhZGVyIG9mIGhlYWRlclBhcnRzKSB7CiAgICAgICAgaWYgKCFoZWFkZXIpIGNvbnRpbnVlOwogICAgICAgIGNvbnN0IGZpcnN0Q29sb24gPSBoZWFkZXIuaW5kZXhPZignOicpOwogICAgICAgIGlmIChmaXJzdENvbG9uID09PSAtMSkgewogICAgICAgICAgc29ja2V0LmRlc3Ryb3koKTsKICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKGBJbnZhbGlkIGhlYWRlciBmcm9tIHByb3h5IENPTk5FQ1QgcmVzcG9uc2U6ICIke2hlYWRlcn0iYCkpOwogICAgICAgIH0KICAgICAgICBjb25zdCBrZXkgPSBoZWFkZXIuc2xpY2UoMCwgZmlyc3RDb2xvbikudG9Mb3dlckNhc2UoKTsKICAgICAgICBjb25zdCB2YWx1ZSA9IGhlYWRlci5zbGljZShmaXJzdENvbG9uICsgMSkudHJpbVN0YXJ0KCk7CiAgICAgICAgY29uc3QgY3VycmVudCA9IGhlYWRlcnNba2V5XTsKICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnQgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICBoZWFkZXJzW2tleV0gPSBbY3VycmVudCwgdmFsdWVdOwogICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkgewogICAgICAgICAgY3VycmVudC5wdXNoKHZhbHVlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaGVhZGVyc1trZXldID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9CiAgICAgIGRlYnVnJDEoJ2dvdCBwcm94eSBzZXJ2ZXIgcmVzcG9uc2U6ICVvICVvJywgZmlyc3RMaW5lLCBoZWFkZXJzKTsKICAgICAgY2xlYW51cCgpOwogICAgICByZXNvbHZlKHsKICAgICAgICBjb25uZWN0OiB7CiAgICAgICAgICBzdGF0dXNDb2RlLAogICAgICAgICAgc3RhdHVzVGV4dCwKICAgICAgICAgIGhlYWRlcnMsCiAgICAgICAgfSwKICAgICAgICBidWZmZXJlZCwKICAgICAgfSk7CiAgICB9CgogICAgc29ja2V0Lm9uKCdlcnJvcicsIG9uZXJyb3IpOwogICAgc29ja2V0Lm9uKCdlbmQnLCBvbmVuZCk7CgogICAgcmVhZCgpOwogIH0pOwp9CgpmdW5jdGlvbiBfbnVsbGlzaENvYWxlc2NlJDEobGhzLCByaHNGbikgeyBpZiAobGhzICE9IG51bGwpIHsgcmV0dXJuIGxoczsgfSBlbHNlIHsgcmV0dXJuIHJoc0ZuKCk7IH0gfSBmdW5jdGlvbiBfb3B0aW9uYWxDaGFpbiQxKG9wcykgeyBsZXQgbGFzdEFjY2Vzc0xIUyA9IHVuZGVmaW5lZDsgbGV0IHZhbHVlID0gb3BzWzBdOyBsZXQgaSA9IDE7IHdoaWxlIChpIDwgb3BzLmxlbmd0aCkgeyBjb25zdCBvcCA9IG9wc1tpXTsgY29uc3QgZm4gPSBvcHNbaSArIDFdOyBpICs9IDI7IGlmICgob3AgPT09ICdvcHRpb25hbEFjY2VzcycgfHwgb3AgPT09ICdvcHRpb25hbENhbGwnKSAmJiB2YWx1ZSA9PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gaWYgKG9wID09PSAnYWNjZXNzJyB8fCBvcCA9PT0gJ29wdGlvbmFsQWNjZXNzJykgeyBsYXN0QWNjZXNzTEhTID0gdmFsdWU7IHZhbHVlID0gZm4odmFsdWUpOyB9IGVsc2UgaWYgKG9wID09PSAnY2FsbCcgfHwgb3AgPT09ICdvcHRpb25hbENhbGwnKSB7IHZhbHVlID0gZm4oKC4uLmFyZ3MpID0+IHZhbHVlLmNhbGwobGFzdEFjY2Vzc0xIUywgLi4uYXJncykpOyBsYXN0QWNjZXNzTEhTID0gdW5kZWZpbmVkOyB9IH0gcmV0dXJuIHZhbHVlOyB9CgpmdW5jdGlvbiBkZWJ1ZyguLi5hcmdzKSB7CiAgbG9nZ2VyLmxvZygnW2h0dHBzLXByb3h5LWFnZW50XScsIC4uLmFyZ3MpOwp9CgovKioKICogVGhlIGBIdHRwc1Byb3h5QWdlbnRgIGltcGxlbWVudHMgYW4gSFRUUCBBZ2VudCBzdWJjbGFzcyB0aGF0IGNvbm5lY3RzIHRvCiAqIHRoZSBzcGVjaWZpZWQgIkhUVFAocykgcHJveHkgc2VydmVyIiBpbiBvcmRlciB0byBwcm94eSBIVFRQUyByZXF1ZXN0cy4KICoKICogT3V0Z29pbmcgSFRUUCByZXF1ZXN0cyBhcmUgZmlyc3QgdHVubmVsZWQgdGhyb3VnaCB0aGUgcHJveHkgc2VydmVyIHVzaW5nIHRoZQogKiBgQ09OTkVDVGAgSFRUUCByZXF1ZXN0IG1ldGhvZCB0byBlc3RhYmxpc2ggYSBjb25uZWN0aW9uIHRvIHRoZSBwcm94eSBzZXJ2ZXIsCiAqIGFuZCB0aGVuIHRoZSBwcm94eSBzZXJ2ZXIgY29ubmVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIHRhcmdldCBhbmQgaXNzdWVzIHRoZQogKiBIVFRQIHJlcXVlc3QgZnJvbSB0aGUgcHJveHkgc2VydmVyLgogKgogKiBgaHR0cHM6YCByZXF1ZXN0cyBoYXZlIHRoZWlyIHNvY2tldCBjb25uZWN0aW9uIHVwZ3JhZGVkIHRvIFRMUyBvbmNlCiAqIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBwcm94eSBzZXJ2ZXIgaGFzIGJlZW4gZXN0YWJsaXNoZWQuCiAqLwpjbGFzcyBIdHRwc1Byb3h5QWdlbnQgZXh0ZW5kcyBBZ2VudCB7CiAgc3RhdGljIF9faW5pdFN0YXRpYygpIHt0aGlzLnByb3RvY29scyA9IFsnaHR0cCcsICdodHRwcyddOyB9CgogIGNvbnN0cnVjdG9yKHByb3h5LCBvcHRzKSB7CiAgICBzdXBlcihvcHRzKTsKICAgIHRoaXMub3B0aW9ucyA9IHt9OwogICAgdGhpcy5wcm94eSA9IHR5cGVvZiBwcm94eSA9PT0gJ3N0cmluZycgPyBuZXcgVVJMKHByb3h5KSA6IHByb3h5OwogICAgdGhpcy5wcm94eUhlYWRlcnMgPSBfbnVsbGlzaENvYWxlc2NlJDEoX29wdGlvbmFsQ2hhaW4kMShbb3B0cywgJ29wdGlvbmFsQWNjZXNzJywgXzIgPT4gXzIuaGVhZGVyc10pLCAoKSA9PiAoIHt9KSk7CiAgICBkZWJ1ZygnQ3JlYXRpbmcgbmV3IEh0dHBzUHJveHlBZ2VudCBpbnN0YW5jZTogJW8nLCB0aGlzLnByb3h5LmhyZWYpOwoKICAgIC8vIFRyaW0gb2ZmIHRoZSBicmFja2V0cyBmcm9tIElQdjYgYWRkcmVzc2VzCiAgICBjb25zdCBob3N0ID0gKHRoaXMucHJveHkuaG9zdG5hbWUgfHwgdGhpcy5wcm94eS5ob3N0KS5yZXBsYWNlKC9eXFt8XF0kL2csICcnKTsKICAgIGNvbnN0IHBvcnQgPSB0aGlzLnByb3h5LnBvcnQgPyBwYXJzZUludCh0aGlzLnByb3h5LnBvcnQsIDEwKSA6IHRoaXMucHJveHkucHJvdG9jb2wgPT09ICdodHRwczonID8gNDQzIDogODA7CiAgICB0aGlzLmNvbm5lY3RPcHRzID0gewogICAgICAvLyBBdHRlbXB0IHRvIG5lZ290aWF0ZSBodHRwLzEuMSBmb3IgcHJveHkgc2VydmVycyB0aGF0IHN1cHBvcnQgaHR0cC8yCiAgICAgIEFMUE5Qcm90b2NvbHM6IFsnaHR0cC8xLjEnXSwKICAgICAgLi4uKG9wdHMgPyBvbWl0KG9wdHMsICdoZWFkZXJzJykgOiBudWxsKSwKICAgICAgaG9zdCwKICAgICAgcG9ydCwKICAgIH07CiAgfQoKICAvKioKICAgKiBDYWxsZWQgd2hlbiB0aGUgbm9kZS1jb3JlIEhUVFAgY2xpZW50IGxpYnJhcnkgaXMgY3JlYXRpbmcgYQogICAqIG5ldyBIVFRQIHJlcXVlc3QuCiAgICovCiAgYXN5bmMgY29ubmVjdChyZXEsIG9wdHMpIHsKICAgIGNvbnN0IHsgcHJveHkgfSA9IHRoaXM7CgogICAgaWYgKCFvcHRzLmhvc3QpIHsKICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gImhvc3QiIHByb3ZpZGVkJyk7CiAgICB9CgogICAgLy8gQ3JlYXRlIGEgc29ja2V0IGNvbm5lY3Rpb24gdG8gdGhlIHByb3h5IHNlcnZlci4KICAgIGxldCBzb2NrZXQ7CiAgICBpZiAocHJveHkucHJvdG9jb2wgPT09ICdodHRwczonKSB7CiAgICAgIGRlYnVnKCdDcmVhdGluZyBgdGxzLlNvY2tldGA6ICVvJywgdGhpcy5jb25uZWN0T3B0cyk7CiAgICAgIGNvbnN0IHNlcnZlcm5hbWUgPSB0aGlzLmNvbm5lY3RPcHRzLnNlcnZlcm5hbWUgfHwgdGhpcy5jb25uZWN0T3B0cy5ob3N0OwogICAgICBzb2NrZXQgPSB0bHMuY29ubmVjdCh7CiAgICAgICAgLi4udGhpcy5jb25uZWN0T3B0cywKICAgICAgICBzZXJ2ZXJuYW1lOiBzZXJ2ZXJuYW1lICYmIG5ldC5pc0lQKHNlcnZlcm5hbWUpID8gdW5kZWZpbmVkIDogc2VydmVybmFtZSwKICAgICAgfSk7CiAgICB9IGVsc2UgewogICAgICBkZWJ1ZygnQ3JlYXRpbmcgYG5ldC5Tb2NrZXRgOiAlbycsIHRoaXMuY29ubmVjdE9wdHMpOwogICAgICBzb2NrZXQgPSBuZXQuY29ubmVjdCh0aGlzLmNvbm5lY3RPcHRzKTsKICAgIH0KCiAgICBjb25zdCBoZWFkZXJzID0KICAgICAgdHlwZW9mIHRoaXMucHJveHlIZWFkZXJzID09PSAnZnVuY3Rpb24nID8gdGhpcy5wcm94eUhlYWRlcnMoKSA6IHsgLi4udGhpcy5wcm94eUhlYWRlcnMgfTsKICAgIGNvbnN0IGhvc3QgPSBuZXQuaXNJUHY2KG9wdHMuaG9zdCkgPyBgWyR7b3B0cy5ob3N0fV1gIDogb3B0cy5ob3N0OwogICAgbGV0IHBheWxvYWQgPSBgQ09OTkVDVCAke2hvc3R9OiR7b3B0cy5wb3J0fSBIVFRQLzEuMVxyXG5gOwoKICAgIC8vIEluamVjdCB0aGUgYFByb3h5LUF1dGhvcml6YXRpb25gIGhlYWRlciBpZiBuZWNlc3NhcnkuCiAgICBpZiAocHJveHkudXNlcm5hbWUgfHwgcHJveHkucGFzc3dvcmQpIHsKICAgICAgY29uc3QgYXV0aCA9IGAke2RlY29kZVVSSUNvbXBvbmVudChwcm94eS51c2VybmFtZSl9OiR7ZGVjb2RlVVJJQ29tcG9uZW50KHByb3h5LnBhc3N3b3JkKX1gOwogICAgICBoZWFkZXJzWydQcm94eS1BdXRob3JpemF0aW9uJ10gPSBgQmFzaWMgJHtCdWZmZXIuZnJvbShhdXRoKS50b1N0cmluZygnYmFzZTY0Jyl9YDsKICAgIH0KCiAgICBoZWFkZXJzLkhvc3QgPSBgJHtob3N0fToke29wdHMucG9ydH1gOwoKICAgIGlmICghaGVhZGVyc1snUHJveHktQ29ubmVjdGlvbiddKSB7CiAgICAgIGhlYWRlcnNbJ1Byb3h5LUNvbm5lY3Rpb24nXSA9IHRoaXMua2VlcEFsaXZlID8gJ0tlZXAtQWxpdmUnIDogJ2Nsb3NlJzsKICAgIH0KICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhoZWFkZXJzKSkgewogICAgICBwYXlsb2FkICs9IGAke25hbWV9OiAke2hlYWRlcnNbbmFtZV19XHJcbmA7CiAgICB9CgogICAgY29uc3QgcHJveHlSZXNwb25zZVByb21pc2UgPSBwYXJzZVByb3h5UmVzcG9uc2Uoc29ja2V0KTsKCiAgICBzb2NrZXQud3JpdGUoYCR7cGF5bG9hZH1cclxuYCk7CgogICAgY29uc3QgeyBjb25uZWN0LCBidWZmZXJlZCB9ID0gYXdhaXQgcHJveHlSZXNwb25zZVByb21pc2U7CiAgICByZXEuZW1pdCgncHJveHlDb25uZWN0JywgY29ubmVjdCk7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50CiAgICAvLyBAdHMtaWdub3JlIE5vdCBFdmVudEVtaXR0ZXIgaW4gTm9kZSB0eXBlcwogICAgdGhpcy5lbWl0KCdwcm94eUNvbm5lY3QnLCBjb25uZWN0LCByZXEpOwoKICAgIGlmIChjb25uZWN0LnN0YXR1c0NvZGUgPT09IDIwMCkgewogICAgICByZXEub25jZSgnc29ja2V0JywgcmVzdW1lKTsKCiAgICAgIGlmIChvcHRzLnNlY3VyZUVuZHBvaW50KSB7CiAgICAgICAgLy8gVGhlIHByb3h5IGlzIGNvbm5lY3RpbmcgdG8gYSBUTFMgc2VydmVyLCBzbyB1cGdyYWRlCiAgICAgICAgLy8gdGhpcyBzb2NrZXQgY29ubmVjdGlvbiB0byBhIFRMUyBjb25uZWN0aW9uLgogICAgICAgIGRlYnVnKCdVcGdyYWRpbmcgc29ja2V0IGNvbm5lY3Rpb24gdG8gVExTJyk7CiAgICAgICAgY29uc3Qgc2VydmVybmFtZSA9IG9wdHMuc2VydmVybmFtZSB8fCBvcHRzLmhvc3Q7CiAgICAgICAgcmV0dXJuIHRscy5jb25uZWN0KHsKICAgICAgICAgIC4uLm9taXQob3B0cywgJ2hvc3QnLCAncGF0aCcsICdwb3J0JyksCiAgICAgICAgICBzb2NrZXQsCiAgICAgICAgICBzZXJ2ZXJuYW1lOiBuZXQuaXNJUChzZXJ2ZXJuYW1lKSA/IHVuZGVmaW5lZCA6IHNlcnZlcm5hbWUsCiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBzb2NrZXQ7CiAgICB9CgogICAgLy8gU29tZSBvdGhlciBzdGF0dXMgY29kZSB0aGF0J3Mgbm90IDIwMC4uLiBuZWVkIHRvIHJlLXBsYXkgdGhlIEhUVFAKICAgIC8vIGhlYWRlciAiZGF0YSIgZXZlbnRzIG9udG8gdGhlIHNvY2tldCBvbmNlIHRoZSBIVFRQIG1hY2hpbmVyeSBpcwogICAgLy8gYXR0YWNoZWQgc28gdGhhdCB0aGUgbm9kZSBjb3JlIGBodHRwYCBjYW4gcGFyc2UgYW5kIGhhbmRsZSB0aGUKICAgIC8vIGVycm9yIHN0YXR1cyBjb2RlLgoKICAgIC8vIENsb3NlIHRoZSBvcmlnaW5hbCBzb2NrZXQsIGFuZCBhIG5ldyAiZmFrZSIgc29ja2V0IGlzIHJldHVybmVkCiAgICAvLyBpbnN0ZWFkLCBzbyB0aGF0IHRoZSBwcm94eSBkb2Vzbid0IGdldCB0aGUgSFRUUCByZXF1ZXN0CiAgICAvLyB3cml0dGVuIHRvIGl0ICh3aGljaCBtYXkgY29udGFpbiBgQXV0aG9yaXphdGlvbmAgaGVhZGVycyBvciBvdGhlcgogICAgLy8gc2Vuc2l0aXZlIGRhdGEpLgogICAgLy8KICAgIC8vIFNlZTogaHR0cHM6Ly9oYWNrZXJvbmUuY29tL3JlcG9ydHMvNTQxNTAyCiAgICBzb2NrZXQuZGVzdHJveSgpOwoKICAgIGNvbnN0IGZha2VTb2NrZXQgPSBuZXcgbmV0LlNvY2tldCh7IHdyaXRhYmxlOiBmYWxzZSB9KTsKICAgIGZha2VTb2NrZXQucmVhZGFibGUgPSB0cnVlOwoKICAgIC8vIE5lZWQgdG8gd2FpdCBmb3IgdGhlICJzb2NrZXQiIGV2ZW50IHRvIHJlLXBsYXkgdGhlICJkYXRhIiBldmVudHMuCiAgICByZXEub25jZSgnc29ja2V0JywgKHMpID0+IHsKICAgICAgZGVidWcoJ1JlcGxheWluZyBwcm94eSBidWZmZXIgZm9yIGZhaWxlZCByZXF1ZXN0Jyk7CiAgICAgIC8vIFJlcGxheSB0aGUgImJ1ZmZlcmVkIiBCdWZmZXIgb250byB0aGUgZmFrZSBgc29ja2V0YCwgc2luY2UgYXQKICAgICAgLy8gdGhpcyBwb2ludCB0aGUgSFRUUCBtb2R1bGUgbWFjaGluZXJ5IGhhcyBiZWVuIGhvb2tlZCB1cCBmb3IKICAgICAgLy8gdGhlIHVzZXIuCiAgICAgIHMucHVzaChidWZmZXJlZCk7CiAgICAgIHMucHVzaChudWxsKTsKICAgIH0pOwoKICAgIHJldHVybiBmYWtlU29ja2V0OwogIH0KfSBIdHRwc1Byb3h5QWdlbnQuX19pbml0U3RhdGljKCk7CgpmdW5jdGlvbiByZXN1bWUoc29ja2V0KSB7CiAgc29ja2V0LnJlc3VtZSgpOwp9CgpmdW5jdGlvbiBvbWl0KAogIG9iaiwKICAuLi5rZXlzCikKCiB7CiAgY29uc3QgcmV0ID0ge30KCjsKICBsZXQga2V5OwogIGZvciAoa2V5IGluIG9iaikgewogICAgaWYgKCFrZXlzLmluY2x1ZGVzKGtleSkpIHsKICAgICAgcmV0W2tleV0gPSBvYmpba2V5XTsKICAgIH0KICB9CiAgcmV0dXJuIHJldDsKfQoKZnVuY3Rpb24gX251bGxpc2hDb2FsZXNjZShsaHMsIHJoc0ZuKSB7IGlmIChsaHMgIT0gbnVsbCkgeyByZXR1cm4gbGhzOyB9IGVsc2UgeyByZXR1cm4gcmhzRm4oKTsgfSB9Ci8vIEVzdGltYXRlZCBtYXhpbXVtIHNpemUgZm9yIHJlYXNvbmFibGUgc3RhbmRhbG9uZSBldmVudApjb25zdCBHWklQX1RIUkVTSE9MRCA9IDEwMjQgKiAzMjsKCi8qKgogKiBHZXRzIGEgc3RyZWFtIGZyb20gYSBVaW50OEFycmF5IG9yIHN0cmluZwogKiBSZWFkYWJsZS5mcm9tIGlzIGlkZWFsIGJ1dCB3YXMgYWRkZWQgaW4gbm9kZS5qcyB2MTIuMy4wIGFuZCB2MTAuMTcuMAogKi8KZnVuY3Rpb24gc3RyZWFtRnJvbUJvZHkoYm9keSkgewogIHJldHVybiBuZXcgUmVhZGFibGUoewogICAgcmVhZCgpIHsKICAgICAgdGhpcy5wdXNoKGJvZHkpOwogICAgICB0aGlzLnB1c2gobnVsbCk7CiAgICB9LAogIH0pOwp9CgovKioKICogQ3JlYXRlcyBhIFRyYW5zcG9ydCB0aGF0IHVzZXMgbmF0aXZlIHRoZSBuYXRpdmUgJ2h0dHAnIGFuZCAnaHR0cHMnIG1vZHVsZXMgdG8gc2VuZCBldmVudHMgdG8gU2VudHJ5LgogKi8KZnVuY3Rpb24gbWFrZU5vZGVUcmFuc3BvcnQob3B0aW9ucykgewogIGxldCB1cmxTZWdtZW50czsKCiAgdHJ5IHsKICAgIHVybFNlZ21lbnRzID0gbmV3IFVSTChvcHRpb25zLnVybCk7CiAgfSBjYXRjaCAoZSkgewogICAgY29uc29sZVNhbmRib3goKCkgPT4gewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZQogICAgICBjb25zb2xlLndhcm4oCiAgICAgICAgJ1tAc2VudHJ5L25vZGVdOiBJbnZhbGlkIGRzbiBvciB0dW5uZWwgb3B0aW9uLCB3aWxsIG5vdCBzZW5kIGFueSBldmVudHMuIFRoZSB0dW5uZWwgb3B0aW9uIG11c3QgYmUgYSBmdWxsIFVSTCB3aGVuIHVzZWQuJywKICAgICAgKTsKICAgIH0pOwogICAgcmV0dXJuIGNyZWF0ZVRyYW5zcG9ydChvcHRpb25zLCAoKSA9PiBQcm9taXNlLnJlc29sdmUoe30pKTsKICB9CgogIGNvbnN0IGlzSHR0cHMgPSB1cmxTZWdtZW50cy5wcm90b2NvbCA9PT0gJ2h0dHBzOic7CgogIC8vIFByb3h5IHByaW9yaXRpemF0aW9uOiBodHRwID0+IGBvcHRpb25zLnByb3h5YCB8IGBwcm9jZXNzLmVudi5odHRwX3Byb3h5YAogIC8vIFByb3h5IHByaW9yaXRpemF0aW9uOiBodHRwcyA9PiBgb3B0aW9ucy5wcm94eWAgfCBgcHJvY2Vzcy5lbnYuaHR0cHNfcHJveHlgIHwgYHByb2Nlc3MuZW52Lmh0dHBfcHJveHlgCiAgY29uc3QgcHJveHkgPSBhcHBseU5vUHJveHlPcHRpb24oCiAgICB1cmxTZWdtZW50cywKICAgIG9wdGlvbnMucHJveHkgfHwgKGlzSHR0cHMgPyBwcm9jZXNzLmVudi5odHRwc19wcm94eSA6IHVuZGVmaW5lZCkgfHwgcHJvY2Vzcy5lbnYuaHR0cF9wcm94eSwKICApOwoKICBjb25zdCBuYXRpdmVIdHRwTW9kdWxlID0gaXNIdHRwcyA/IGh0dHBzIDogaHR0cDsKICBjb25zdCBrZWVwQWxpdmUgPSBvcHRpb25zLmtlZXBBbGl2ZSA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBvcHRpb25zLmtlZXBBbGl2ZTsKCiAgLy8gVE9ETyh2Nyk6IEV2YWx1YXRlIGlmIHdlIGNhbiBzZXQga2VlcEFsaXZlIHRvIHRydWUuIFRoaXMgd291bGQgaW52b2x2ZSB0ZXN0aW5nIGZvciBtZW1vcnkgbGVha3MgaW4gb2xkZXIgbm9kZQogIC8vIHZlcnNpb25zKD49IDgpIGFzIHRoZXkgaGFkIG1lbW9yeSBsZWFrcyB3aGVuIHVzaW5nIGl0OiAjMjU1NQogIGNvbnN0IGFnZW50ID0gcHJveHkKICAgID8gKG5ldyBIdHRwc1Byb3h5QWdlbnQocHJveHkpICkKICAgIDogbmV3IG5hdGl2ZUh0dHBNb2R1bGUuQWdlbnQoeyBrZWVwQWxpdmUsIG1heFNvY2tldHM6IDMwLCB0aW1lb3V0OiAyMDAwIH0pOwoKICBjb25zdCByZXF1ZXN0RXhlY3V0b3IgPSBjcmVhdGVSZXF1ZXN0RXhlY3V0b3Iob3B0aW9ucywgX251bGxpc2hDb2FsZXNjZShvcHRpb25zLmh0dHBNb2R1bGUsICgpID0+ICggbmF0aXZlSHR0cE1vZHVsZSkpLCBhZ2VudCk7CiAgcmV0dXJuIGNyZWF0ZVRyYW5zcG9ydChvcHRpb25zLCByZXF1ZXN0RXhlY3V0b3IpOwp9CgovKioKICogSG9ub3JzIHRoZSBgbm9fcHJveHlgIGVudiB2YXJpYWJsZSB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5IHRvIGFsbG93IGZvciBob3N0cyBleGNsdXNpb24uCiAqCiAqIEBwYXJhbSB0cmFuc3BvcnRVcmwgVGhlIFVSTCB0aGUgdHJhbnNwb3J0IGludGVuZHMgdG8gc2VuZCBldmVudHMgdG8uCiAqIEBwYXJhbSBwcm94eSBUaGUgY2xpZW50IGNvbmZpZ3VyZWQgcHJveHkuCiAqIEByZXR1cm5zIEEgcHJveHkgdGhlIHRyYW5zcG9ydCBzaG91bGQgdXNlLgogKi8KZnVuY3Rpb24gYXBwbHlOb1Byb3h5T3B0aW9uKHRyYW5zcG9ydFVybFNlZ21lbnRzLCBwcm94eSkgewogIGNvbnN0IHsgbm9fcHJveHkgfSA9IHByb2Nlc3MuZW52OwoKICBjb25zdCB1cmxJc0V4ZW1wdEZyb21Qcm94eSA9CiAgICBub19wcm94eSAmJgogICAgbm9fcHJveHkKICAgICAgLnNwbGl0KCcsJykKICAgICAgLnNvbWUoCiAgICAgICAgZXhlbXB0aW9uID0+IHRyYW5zcG9ydFVybFNlZ21lbnRzLmhvc3QuZW5kc1dpdGgoZXhlbXB0aW9uKSB8fCB0cmFuc3BvcnRVcmxTZWdtZW50cy5ob3N0bmFtZS5lbmRzV2l0aChleGVtcHRpb24pLAogICAgICApOwoKICBpZiAodXJsSXNFeGVtcHRGcm9tUHJveHkpIHsKICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfSBlbHNlIHsKICAgIHJldHVybiBwcm94eTsKICB9Cn0KCi8qKgogKiBDcmVhdGVzIGEgUmVxdWVzdEV4ZWN1dG9yIHRvIGJlIHVzZWQgd2l0aCBgY3JlYXRlVHJhbnNwb3J0YC4KICovCmZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RFeGVjdXRvcigKICBvcHRpb25zLAogIGh0dHBNb2R1bGUsCiAgYWdlbnQsCikgewogIGNvbnN0IHsgaG9zdG5hbWUsIHBhdGhuYW1lLCBwb3J0LCBwcm90b2NvbCwgc2VhcmNoIH0gPSBuZXcgVVJMKG9wdGlvbnMudXJsKTsKICByZXR1cm4gZnVuY3Rpb24gbWFrZVJlcXVlc3QocmVxdWVzdCkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgbGV0IGJvZHkgPSBzdHJlYW1Gcm9tQm9keShyZXF1ZXN0LmJvZHkpOwoKICAgICAgY29uc3QgaGVhZGVycyA9IHsgLi4ub3B0aW9ucy5oZWFkZXJzIH07CgogICAgICBpZiAocmVxdWVzdC5ib2R5Lmxlbmd0aCA+IEdaSVBfVEhSRVNIT0xEKSB7CiAgICAgICAgaGVhZGVyc1snY29udGVudC1lbmNvZGluZyddID0gJ2d6aXAnOwogICAgICAgIGJvZHkgPSBib2R5LnBpcGUoY3JlYXRlR3ppcCgpKTsKICAgICAgfQoKICAgICAgY29uc3QgcmVxID0gaHR0cE1vZHVsZS5yZXF1ZXN0KAogICAgICAgIHsKICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgICAgYWdlbnQsCiAgICAgICAgICBoZWFkZXJzLAogICAgICAgICAgaG9zdG5hbWUsCiAgICAgICAgICBwYXRoOiBgJHtwYXRobmFtZX0ke3NlYXJjaH1gLAogICAgICAgICAgcG9ydCwKICAgICAgICAgIHByb3RvY29sLAogICAgICAgICAgY2E6IG9wdGlvbnMuY2FDZXJ0cywKICAgICAgICB9LAogICAgICAgIHJlcyA9PiB7CiAgICAgICAgICByZXMub24oJ2RhdGEnLCAoKSA9PiB7CiAgICAgICAgICAgIC8vIERyYWluIHNvY2tldAogICAgICAgICAgfSk7CgogICAgICAgICAgcmVzLm9uKCdlbmQnLCAoKSA9PiB7CiAgICAgICAgICAgIC8vIERyYWluIHNvY2tldAogICAgICAgICAgfSk7CgogICAgICAgICAgcmVzLnNldEVuY29kaW5nKCd1dGY4Jyk7CgogICAgICAgICAgLy8gIktleS12YWx1ZSBwYWlycyBvZiBoZWFkZXIgbmFtZXMgYW5kIHZhbHVlcy4gSGVhZGVyIG5hbWVzIGFyZSBsb3dlci1jYXNlZC4iCiAgICAgICAgICAvLyBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbCNodHRwX21lc3NhZ2VfaGVhZGVycwogICAgICAgICAgY29uc3QgcmV0cnlBZnRlckhlYWRlciA9IF9udWxsaXNoQ29hbGVzY2UocmVzLmhlYWRlcnNbJ3JldHJ5LWFmdGVyJ10sICgpID0+ICggbnVsbCkpOwogICAgICAgICAgY29uc3QgcmF0ZUxpbWl0c0hlYWRlciA9IF9udWxsaXNoQ29hbGVzY2UocmVzLmhlYWRlcnNbJ3gtc2VudHJ5LXJhdGUtbGltaXRzJ10sICgpID0+ICggbnVsbCkpOwoKICAgICAgICAgIHJlc29sdmUoewogICAgICAgICAgICBzdGF0dXNDb2RlOiByZXMuc3RhdHVzQ29kZSwKICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICdyZXRyeS1hZnRlcic6IHJldHJ5QWZ0ZXJIZWFkZXIsCiAgICAgICAgICAgICAgJ3gtc2VudHJ5LXJhdGUtbGltaXRzJzogQXJyYXkuaXNBcnJheShyYXRlTGltaXRzSGVhZGVyKSA/IHJhdGVMaW1pdHNIZWFkZXJbMF0gOiByYXRlTGltaXRzSGVhZGVyLAogICAgICAgICAgICB9LAogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgKTsKCiAgICAgIHJlcS5vbignZXJyb3InLCByZWplY3QpOwogICAgICBib2R5LnBpcGUocmVxKTsKICAgIH0pOwogIH07Cn0KCmZ1bmN0aW9uIF9vcHRpb25hbENoYWluKG9wcykgeyBsZXQgbGFzdEFjY2Vzc0xIUyA9IHVuZGVmaW5lZDsgbGV0IHZhbHVlID0gb3BzWzBdOyBsZXQgaSA9IDE7IHdoaWxlIChpIDwgb3BzLmxlbmd0aCkgeyBjb25zdCBvcCA9IG9wc1tpXTsgY29uc3QgZm4gPSBvcHNbaSArIDFdOyBpICs9IDI7IGlmICgob3AgPT09ICdvcHRpb25hbEFjY2VzcycgfHwgb3AgPT09ICdvcHRpb25hbENhbGwnKSAmJiB2YWx1ZSA9PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gaWYgKG9wID09PSAnYWNjZXNzJyB8fCBvcCA9PT0gJ29wdGlvbmFsQWNjZXNzJykgeyBsYXN0QWNjZXNzTEhTID0gdmFsdWU7IHZhbHVlID0gZm4odmFsdWUpOyB9IGVsc2UgaWYgKG9wID09PSAnY2FsbCcgfHwgb3AgPT09ICdvcHRpb25hbENhbGwnKSB7IHZhbHVlID0gZm4oKC4uLmFyZ3MpID0+IHZhbHVlLmNhbGwobGFzdEFjY2Vzc0xIUywgLi4uYXJncykpOyBsYXN0QWNjZXNzTEhTID0gdW5kZWZpbmVkOyB9IH0gcmV0dXJuIHZhbHVlOyB9CmNvbnN0IG9wdGlvbnMgPSB3b3JrZXJEYXRhOwpsZXQgc2Vzc2lvbjsKbGV0IGhhc1NlbnRBbnJFdmVudCA9IGZhbHNlOwoKZnVuY3Rpb24gbG9nKG1zZykgewogIGlmIChvcHRpb25zLmRlYnVnKSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZQogICAgY29uc29sZS5sb2coYFtBTlIgV29ya2VyXSAke21zZ31gKTsKICB9Cn0KCmNvbnN0IHVybCA9IGdldEVudmVsb3BlRW5kcG9pbnRXaXRoVXJsRW5jb2RlZEF1dGgob3B0aW9ucy5kc24pOwpjb25zdCB0cmFuc3BvcnQgPSBtYWtlTm9kZVRyYW5zcG9ydCh7CiAgdXJsLAogIHJlY29yZERyb3BwZWRFdmVudDogKCkgPT4gewogICAgLy8KICB9LAp9KTsKCmFzeW5jIGZ1bmN0aW9uIHNlbmRBYm5vcm1hbFNlc3Npb24oKSB7CiAgLy8gb2Ygd2UgaGF2ZSBhbiBleGlzdGluZyBzZXNzaW9uIHBhc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZCwgc2VuZCBpdCBhcyBhYm5vcm1hbAogIGlmIChzZXNzaW9uKSB7CiAgICBsb2coJ1NlbmRpbmcgYWJub3JtYWwgc2Vzc2lvbicpOwogICAgdXBkYXRlU2Vzc2lvbihzZXNzaW9uLCB7IHN0YXR1czogJ2Fibm9ybWFsJywgYWJub3JtYWxfbWVjaGFuaXNtOiAnYW5yX2ZvcmVncm91bmQnIH0pOwoKICAgIGNvbnN0IGVudmVsb3BlID0gY3JlYXRlU2Vzc2lvbkVudmVsb3BlKHNlc3Npb24sIG9wdGlvbnMuZHNuLCBvcHRpb25zLnNka01ldGFkYXRhKTsKICAgIC8vIExvZyB0aGUgZW52ZWxvcGUgc28gdG8gYWlkIGluIHRlc3RpbmcKICAgIGxvZyhKU09OLnN0cmluZ2lmeShlbnZlbG9wZSkpOwoKICAgIGF3YWl0IHRyYW5zcG9ydC5zZW5kKGVudmVsb3BlKTsKCiAgICB0cnkgewogICAgICAvLyBOb3RpZnkgdGhlIG1haW4gcHJvY2VzcyB0aGF0IHRoZSBzZXNzaW9uIGhhcyBlbmRlZCBzbyB0aGUgc2Vzc2lvbiBjYW4gYmUgY2xlYXJlZCBmcm9tIHRoZSBzY29wZQogICAgICBfb3B0aW9uYWxDaGFpbihbcGFyZW50UG9ydCwgJ29wdGlvbmFsQWNjZXNzJywgXzIgPT4gXzIucG9zdE1lc3NhZ2UsICdjYWxsJywgXzMgPT4gXzMoJ3Nlc3Npb24tZW5kZWQnKV0pOwogICAgfSBjYXRjaCAoXykgewogICAgICAvLyBpZ25vcmUKICAgIH0KICB9Cn0KCmxvZygnU3RhcnRlZCcpOwoKZnVuY3Rpb24gcHJlcGFyZVN0YWNrRnJhbWVzKHN0YWNrRnJhbWVzKSB7CiAgaWYgKCFzdGFja0ZyYW1lcykgewogICAgcmV0dXJuIHVuZGVmaW5lZDsKICB9CgogIC8vIFN0cmlwIFNlbnRyeSBmcmFtZXMgYW5kIHJldmVyc2UgdGhlIHN0YWNrIGZyYW1lcyBzbyB0aGV5IGFyZSBpbiB0aGUgY29ycmVjdCBvcmRlcgogIGNvbnN0IHN0cmlwcGVkRnJhbWVzID0gc3RyaXBTZW50cnlGcmFtZXNBbmRSZXZlcnNlKHN0YWNrRnJhbWVzKTsKCiAgLy8gSWYgd2UgaGF2ZSBhbiBhcHAgcm9vdCBwYXRoLCByZXdyaXRlIHRoZSBmaWxlbmFtZXMgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIGFwcCByb290CiAgaWYgKG9wdGlvbnMuYXBwUm9vdFBhdGgpIHsKICAgIGZvciAoY29uc3QgZnJhbWUgb2Ygc3RyaXBwZWRGcmFtZXMpIHsKICAgICAgaWYgKCFmcmFtZS5maWxlbmFtZSkgewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CgogICAgICBmcmFtZS5maWxlbmFtZSA9IG5vcm1hbGl6ZVVybFRvQmFzZShmcmFtZS5maWxlbmFtZSwgb3B0aW9ucy5hcHBSb290UGF0aCk7CiAgICB9CiAgfQoKICByZXR1cm4gc3RyaXBwZWRGcmFtZXM7Cn0KCmFzeW5jIGZ1bmN0aW9uIHNlbmRBbnJFdmVudChmcmFtZXMsIHRyYWNlQ29udGV4dCkgewogIGlmIChoYXNTZW50QW5yRXZlbnQpIHsKICAgIHJldHVybjsKICB9CgogIGhhc1NlbnRBbnJFdmVudCA9IHRydWU7CgogIGF3YWl0IHNlbmRBYm5vcm1hbFNlc3Npb24oKTsKCiAgbG9nKCdTZW5kaW5nIGV2ZW50Jyk7CgogIGNvbnN0IGV2ZW50ID0gewogICAgZXZlbnRfaWQ6IHV1aWQ0KCksCiAgICBjb250ZXh0czogeyAuLi5vcHRpb25zLmNvbnRleHRzLCB0cmFjZTogdHJhY2VDb250ZXh0IH0sCiAgICByZWxlYXNlOiBvcHRpb25zLnJlbGVhc2UsCiAgICBlbnZpcm9ubWVudDogb3B0aW9ucy5lbnZpcm9ubWVudCwKICAgIGRpc3Q6IG9wdGlvbnMuZGlzdCwKICAgIHBsYXRmb3JtOiAnbm9kZScsCiAgICBsZXZlbDogJ2Vycm9yJywKICAgIGV4Y2VwdGlvbjogewogICAgICB2YWx1ZXM6IFsKICAgICAgICB7CiAgICAgICAgICB0eXBlOiAnQXBwbGljYXRpb25Ob3RSZXNwb25kaW5nJywKICAgICAgICAgIHZhbHVlOiBgQXBwbGljYXRpb24gTm90IFJlc3BvbmRpbmcgZm9yIGF0IGxlYXN0ICR7b3B0aW9ucy5hbnJUaHJlc2hvbGR9IG1zYCwKICAgICAgICAgIHN0YWNrdHJhY2U6IHsgZnJhbWVzOiBwcmVwYXJlU3RhY2tGcmFtZXMoZnJhbWVzKSB9LAogICAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHRoZSBVSSBkb2Vzbid0IHNheSAnQ3Jhc2hlZCBpbicgZm9yIHRoZSBzdGFjayB0cmFjZQogICAgICAgICAgbWVjaGFuaXNtOiB7IHR5cGU6ICdBTlInIH0sCiAgICAgICAgfSwKICAgICAgXSwKICAgIH0sCiAgICB0YWdzOiBvcHRpb25zLnN0YXRpY1RhZ3MsCiAgfTsKCiAgY29uc3QgZW52ZWxvcGUgPSBjcmVhdGVFdmVudEVudmVsb3BlKGV2ZW50LCBvcHRpb25zLmRzbiwgb3B0aW9ucy5zZGtNZXRhZGF0YSk7CiAgLy8gTG9nIHRoZSBlbnZlbG9wZSBzbyB0byBhaWQgaW4gdGVzdGluZwogIGxvZyhKU09OLnN0cmluZ2lmeShlbnZlbG9wZSkpOwoKICBhd2FpdCB0cmFuc3BvcnQuc2VuZChlbnZlbG9wZSk7CiAgYXdhaXQgdHJhbnNwb3J0LmZsdXNoKDIwMDApOwoKICAvLyBEZWxheSBmb3IgNSBzZWNvbmRzIHNvIHRoYXQgc3RkaW8gY2FuIGZsdXNoIGluIHRoZSBtYWluIGV2ZW50IGxvb3AgZXZlciByZXN0YXJ0cy4KICAvLyBUaGlzIGlzIG1haW5seSBmb3IgdGhlIGJlbmVmaXQgb2YgbG9nZ2luZy9kZWJ1Z2dpbmcgaXNzdWVzLgogIHNldFRpbWVvdXQoKCkgPT4gewogICAgcHJvY2Vzcy5leGl0KDApOwogIH0sIDUwMDApOwp9CgpsZXQgZGVidWdnZXJQYXVzZTsKCmlmIChvcHRpb25zLmNhcHR1cmVTdGFja1RyYWNlKSB7CiAgbG9nKCdDb25uZWN0aW5nIHRvIGRlYnVnZ2VyJyk7CgogIGNvbnN0IHNlc3Npb24gPSBuZXcgU2Vzc2lvbigpIDsKICBzZXNzaW9uLmNvbm5lY3RUb01haW5UaHJlYWQoKTsKCiAgbG9nKCdDb25uZWN0ZWQgdG8gZGVidWdnZXInKTsKCiAgLy8gQ29sbGVjdCBzY3JpcHRJZCAtPiB1cmwgbWFwIHNvIHdlIGNhbiBsb29rIHVwIHRoZSBmaWxlbmFtZXMgbGF0ZXIKICBjb25zdCBzY3JpcHRzID0gbmV3IE1hcCgpOwoKICBzZXNzaW9uLm9uKCdEZWJ1Z2dlci5zY3JpcHRQYXJzZWQnLCBldmVudCA9PiB7CiAgICBzY3JpcHRzLnNldChldmVudC5wYXJhbXMuc2NyaXB0SWQsIGV2ZW50LnBhcmFtcy51cmwpOwogIH0pOwoKICBzZXNzaW9uLm9uKCdEZWJ1Z2dlci5wYXVzZWQnLCBldmVudCA9PiB7CiAgICBpZiAoZXZlbnQucGFyYW1zLnJlYXNvbiAhPT0gJ290aGVyJykgewogICAgICByZXR1cm47CiAgICB9CgogICAgdHJ5IHsKICAgICAgbG9nKCdEZWJ1Z2dlciBwYXVzZWQnKTsKCiAgICAgIC8vIGNvcHkgdGhlIGZyYW1lcwogICAgICBjb25zdCBjYWxsRnJhbWVzID0gWy4uLmV2ZW50LnBhcmFtcy5jYWxsRnJhbWVzXTsKCiAgICAgIGNvbnN0IGdldE1vZHVsZU5hbWUgPSBvcHRpb25zLmFwcFJvb3RQYXRoID8gY3JlYXRlR2V0TW9kdWxlRnJvbUZpbGVuYW1lKG9wdGlvbnMuYXBwUm9vdFBhdGgpIDogKCkgPT4gdW5kZWZpbmVkOwogICAgICBjb25zdCBzdGFja0ZyYW1lcyA9IGNhbGxGcmFtZXMubWFwKGZyYW1lID0+CiAgICAgICAgY2FsbEZyYW1lVG9TdGFja0ZyYW1lKGZyYW1lLCBzY3JpcHRzLmdldChmcmFtZS5sb2NhdGlvbi5zY3JpcHRJZCksIGdldE1vZHVsZU5hbWUpLAogICAgICApOwoKICAgICAgLy8gRXZhbHVhdGUgYSBzY3JpcHQgaW4gdGhlIGN1cnJlbnRseSBwYXVzZWQgY29udGV4dAogICAgICBzZXNzaW9uLnBvc3QoCiAgICAgICAgJ1J1bnRpbWUuZXZhbHVhdGUnLAogICAgICAgIHsKICAgICAgICAgIC8vIEdyYWIgdGhlIHRyYWNlIGNvbnRleHQgZnJvbSB0aGUgY3VycmVudCBzY29wZQogICAgICAgICAgZXhwcmVzc2lvbjoKICAgICAgICAgICAgJ2NvbnN0IGN0eCA9IF9fU0VOVFJZX18uaHViLmdldFNjb3BlKCkuZ2V0UHJvcGFnYXRpb25Db250ZXh0KCk7IGN0eC50cmFjZUlkICsgIi0iICsgY3R4LnNwYW5JZCArICItIiArIGN0eC5wYXJlbnRTcGFuSWQnLAogICAgICAgICAgLy8gRG9uJ3QgcmUtdHJpZ2dlciB0aGUgZGVidWdnZXIgaWYgdGhpcyBjYXVzZXMgYW4gZXJyb3IKICAgICAgICAgIHNpbGVudDogdHJ1ZSwKICAgICAgICB9LAogICAgICAgIChfLCBwYXJhbSkgPT4gewogICAgICAgICAgY29uc3QgdHJhY2VJZCA9IHBhcmFtICYmIHBhcmFtLnJlc3VsdCA/IChwYXJhbS5yZXN1bHQudmFsdWUgKSA6ICctLSc7CiAgICAgICAgICBjb25zdCBbdHJhY2VfaWQsIHNwYW5faWQsIHBhcmVudF9zcGFuX2lkXSA9IHRyYWNlSWQuc3BsaXQoJy0nKSA7CgogICAgICAgICAgc2Vzc2lvbi5wb3N0KCdEZWJ1Z2dlci5yZXN1bWUnKTsKICAgICAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIuZGlzYWJsZScpOwoKICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBfb3B0aW9uYWxDaGFpbihbdHJhY2VfaWQsICdvcHRpb25hbEFjY2VzcycsIF80ID0+IF80Lmxlbmd0aF0pICYmIF9vcHRpb25hbENoYWluKFtzcGFuX2lkLCAnb3B0aW9uYWxBY2Nlc3MnLCBfNSA9PiBfNS5sZW5ndGhdKSA/IHsgdHJhY2VfaWQsIHNwYW5faWQsIHBhcmVudF9zcGFuX2lkIH0gOiB1bmRlZmluZWQ7CiAgICAgICAgICBzZW5kQW5yRXZlbnQoc3RhY2tGcmFtZXMsIGNvbnRleHQpLnRoZW4obnVsbCwgKCkgPT4gewogICAgICAgICAgICBsb2coJ1NlbmRpbmcgQU5SIGV2ZW50IGZhaWxlZC4nKTsKICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIucmVzdW1lJyk7CiAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIuZGlzYWJsZScpOwogICAgICB0aHJvdyBlOwogICAgfQogIH0pOwoKICBkZWJ1Z2dlclBhdXNlID0gKCkgPT4gewogICAgdHJ5IHsKICAgICAgc2Vzc2lvbi5wb3N0KCdEZWJ1Z2dlci5lbmFibGUnLCAoKSA9PiB7CiAgICAgICAgc2Vzc2lvbi5wb3N0KCdEZWJ1Z2dlci5wYXVzZScpOwogICAgICB9KTsKICAgIH0gY2F0Y2ggKF8pIHsKICAgICAgLy8KICAgIH0KICB9Owp9CgpmdW5jdGlvbiBjcmVhdGVIclRpbWVyKCkgewogIC8vIFRPRE8gKHY4KTogV2UgY2FuIHVzZSBwcm9jZXNzLmhydGltZS5iaWdpbnQoKSBhZnRlciB3ZSBkcm9wIG5vZGUgdjgKICBsZXQgbGFzdFBvbGwgPSBwcm9jZXNzLmhydGltZSgpOwoKICByZXR1cm4gewogICAgZ2V0VGltZU1zOiAoKSA9PiB7CiAgICAgIGNvbnN0IFtzZWNvbmRzLCBuYW5vU2Vjb25kc10gPSBwcm9jZXNzLmhydGltZShsYXN0UG9sbCk7CiAgICAgIHJldHVybiBNYXRoLmZsb29yKHNlY29uZHMgKiAxZTMgKyBuYW5vU2Vjb25kcyAvIDFlNik7CiAgICB9LAogICAgcmVzZXQ6ICgpID0+IHsKICAgICAgbGFzdFBvbGwgPSBwcm9jZXNzLmhydGltZSgpOwogICAgfSwKICB9Owp9CgpmdW5jdGlvbiB3YXRjaGRvZ1RpbWVvdXQoKSB7CiAgbG9nKCdXYXRjaGRvZyB0aW1lb3V0Jyk7CgogIGlmIChkZWJ1Z2dlclBhdXNlKSB7CiAgICBsb2coJ1BhdXNpbmcgZGVidWdnZXIgdG8gY2FwdHVyZSBzdGFjayB0cmFjZScpOwogICAgZGVidWdnZXJQYXVzZSgpOwogIH0gZWxzZSB7CiAgICBsb2coJ0NhcHR1cmluZyBldmVudCB3aXRob3V0IGEgc3RhY2sgdHJhY2UnKTsKICAgIHNlbmRBbnJFdmVudCgpLnRoZW4obnVsbCwgKCkgPT4gewogICAgICBsb2coJ1NlbmRpbmcgQU5SIGV2ZW50IGZhaWxlZCBvbiB3YXRjaGRvZyB0aW1lb3V0LicpOwogICAgfSk7CiAgfQp9Cgpjb25zdCB7IHBvbGwgfSA9IHdhdGNoZG9nVGltZXIoY3JlYXRlSHJUaW1lciwgb3B0aW9ucy5wb2xsSW50ZXJ2YWwsIG9wdGlvbnMuYW5yVGhyZXNob2xkLCB3YXRjaGRvZ1RpbWVvdXQpOwoKX29wdGlvbmFsQ2hhaW4oW3BhcmVudFBvcnQsICdvcHRpb25hbEFjY2VzcycsIF82ID0+IF82Lm9uLCAnY2FsbCcsIF83ID0+IF83KCdtZXNzYWdlJywgKG1zZykgPT4gewogIGlmIChtc2cuc2Vzc2lvbikgewogICAgc2Vzc2lvbiA9IG1ha2VTZXNzaW9uKG1zZy5zZXNzaW9uKTsKICB9CgogIHBvbGwoKTsKfSldKTs="}),E("68Cgx",function(e,t){_(e.exports,"tracingHandler",()=>f),_(e.exports,"requestHandler",()=>b),_(e.exports,"errorHandler",()=>v),_(e.exports,"trpcMiddleware",()=>I),_(e.exports,"extractRequestData",()=>T("fwl4C").extractRequestData),_(e.exports,"parseRequest",()=>T("fwl4C").parseRequest);var a=T("bsjXU"),i=T("jpnao"),n=T("e4IUz"),o=T("jVURz"),s=T("k2ErF"),r=T("jD1jC"),p=T("deYUe"),l=T("3hDCQ"),d=T("7z6ft"),c=T("eCOpK"),u=T("9GA7E"),m=T("b2ZPh"),g=T("2xRAP"),h=T("1iHXL");function f(){return function(e,t,n){let s=(0,a._optionalChain)([p.getClient,"call",e=>e(),"optionalAccess",e=>e.getOptions,"call",e=>e()]);if(!s||"sentry"!==s.instrumenter||"OPTIONS"===(0,a._optionalChain)([e,"access",e=>e.method,"optionalAccess",e=>e.toUpperCase,"call",e=>e()])||"HEAD"===(0,a._optionalChain)([e,"access",e=>e.method,"optionalAccess",e=>e.toUpperCase,"call",e=>e()]))return n();let r=e.headers&&(0,o.isString)(e.headers["sentry-trace"])?e.headers["sentry-trace"]:void 0,c=(0,a._optionalChain)([e,"access",e=>e.headers,"optionalAccess",e=>e.baggage]);if(!(0,d.hasTracingEnabled)(s))return n();let[g,h]=(0,i.extractPathForTransaction)(e,{path:!0,method:!0}),f=(0,l.continueTrace)({sentryTrace:r,baggage:c},t=>(0,p.startTransaction)({name:g,op:"http.server",origin:"auto.http.node.tracingHandler",...t,data:{[u.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:h},metadata:{...t.metadata,request:e}},{request:(0,i.extractRequestData)(e)}));(0,p.getCurrentScope)().setSpan(f),t.__sentry_transaction=f,t.once("finish",()=>{setImmediate(()=>{(0,i.addRequestDataToTransaction)(f,e),(0,m.setHttpStatus)(f,t.statusCode),f.end()})}),n()}}function b(e){let t=function(e={}){let t;if("include"in e)t={include:e.include};else{let{ip:a,request:i,transaction:o,user:s}=e;(a||i||o||s)&&(t={include:(0,n.dropUndefinedKeys)({ip:a,request:i,transaction:o,user:s})})}return t}(e),a=(0,p.getClient)();if(a&&(0,h.isAutoSessionTrackingEnabled)(a)){a.initSessionFlusher();let e=(0,p.getCurrentScope)();e.getSession()&&e.setSession()}return function(a,i,n){if(e&&e.flushTimeout&&e.flushTimeout>0){let t=i.end;i.end=function(a,i,n){(0,p.flush)(e.flushTimeout).then(()=>{t.call(this,a,i,n)}).then(null,e=>{g.DEBUG_BUILD&&(0,s.logger).error(e),t.call(this,a,i,n)})}}(0,c.runWithAsyncContext)(()=>{let e=(0,p.getCurrentScope)();e.setSDKProcessingMetadata({request:a,requestDataOptionsFromExpressHandler:t});let o=(0,p.getClient)();(0,h.isAutoSessionTrackingEnabled)(o)&&e.setRequestSession({status:"ok"}),i.once("finish",()=>{let e=(0,p.getClient)();(0,h.isAutoSessionTrackingEnabled)(e)&&setImmediate(()=>{e&&e._captureRequestSession&&e._captureRequestSession()})}),n()})}}function v(e){return function(t,a,i,n){if((e&&e.shouldHandleError||function(e){return function(e){let t=e.status||e.statusCode||e.status_code||e.output&&e.output.statusCode;return t?parseInt(t,10):500}(e)>=500})(t)){(0,p.withScope)(e=>{e.setSDKProcessingMetadata({request:a});let o=i.__sentry_transaction;o&&!(0,l.getActiveSpan)()&&e.setSpan(o);let s=(0,p.getClient)();if(s&&(0,h.isAutoSessionTrackingEnabled)(s)&&void 0!==s._sessionFlusher){let t=e.getRequestSession();t&&void 0!==t.status&&(t.status="crashed")}let r=(0,p.captureException)(t,{mechanism:{type:"middleware",handled:!1}});i.sentry=r,n(t)});return}n(t)}}function I(e={}){return function({path:t,type:i,next:n,rawInput:s}){let l;let d=(0,a._optionalChain)([p.getClient,"call",e=>e(),"optionalAccess",e=>e.getOptions,"call",e=>e()]),c=(0,p.getCurrentScope)().getTransaction();if(c){c.updateName(`trpc/${t}`),c.setAttribute(u.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,"route"),c.op="rpc.server";let n={procedure_type:i};(void 0!==e.attachRpcInput?e.attachRpcInput:(0,a._optionalChain)([d,"optionalAccess",e=>e.sendDefaultPii]))&&(n.input=(0,r.normalize)(s)),c.setContext("trpc",n)}function m(e){e.ok||(0,p.captureException)(e.error,{mechanism:{handled:!1,data:{function:"trpcMiddleware"}}})}try{l=n()}catch(e){throw(0,p.captureException)(e,{mechanism:{handled:!1,data:{function:"trpcMiddleware"}}}),e}return(0,o.isThenable)(l)?Promise.resolve(l).then(e=>{m(e)},e=>{(0,p.captureException)(e,{mechanism:{handled:!1,data:{function:"trpcMiddleware"}}})}):m(l),l}}T("fwl4C")}),E("fwl4C",function(e,t){_(e.exports,"extractRequestData",()=>i),_(e.exports,"parseRequest",()=>n);var a=T("jpnao");function i(e,t){return(0,a.extractRequestData)(e,{include:t})}function n(e,t,i={}){return(0,a.addRequestDataToEvent)(e,t,{include:i})}}),E("iGrMv",function(e,t){_(e.exports,"Console",()=>T("bCDzK").Console),_(e.exports,"Http",()=>T("8G0FT").Http),_(e.exports,"OnUncaughtException",()=>T("dDWKn").OnUncaughtException),_(e.exports,"OnUnhandledRejection",()=>T("kpGGI").OnUnhandledRejection),_(e.exports,"Modules",()=>T("esVyk").Modules),_(e.exports,"ContextLines",()=>T("koeOU").ContextLines),_(e.exports,"Context",()=>T("ezym9").Context),_(e.exports,"RequestData",()=>T("l9Z6v").RequestData),_(e.exports,"LocalVariables",()=>T("lVZId").LocalVariables),_(e.exports,"Undici",()=>T("aCFro").Undici),_(e.exports,"Spotlight",()=>T("7wvFM").Spotlight),_(e.exports,"Anr",()=>T("5x2pZ").Anr),_(e.exports,"Hapi",()=>T("28DJl").Hapi),T("bCDzK"),T("8G0FT"),T("dDWKn"),T("kpGGI"),T("esVyk"),T("koeOU"),T("ezym9"),T("l9Z6v"),T("lVZId"),T("aCFro"),T("7wvFM"),T("5x2pZ"),T("28DJl")}),E("28DJl",function(e,t){_(e.exports,"hapiErrorPlugin",()=>g),_(e.exports,"hapiIntegration",()=>b),_(e.exports,"Hapi",()=>v);var a=T("deYUe"),i=T("3hDCQ"),n=T("hVqbS"),o=T("050Gq"),s=T("cCmfn"),r=T("039qT"),p=T("b2ZPh"),l=T("iD1up"),d=T("hSiIl"),c=T("e4IUz");function u(e){return e&&void 0!==e.statusCode}function m(e){(0,a.captureException)(e,{mechanism:{type:"hapi",handled:!1,data:{function:"hapiErrorPlugin"}}})}let g={name:"SentryHapiErrorPlugin",version:r.SDK_VERSION,register:async function(e){e.events.on("request",(e,t)=>{var a;let i=(0,o.getActiveTransaction)();e.response&&(a=e.response)&&void 0!==a.isBoom?m(e.response):t&&void 0!==t.error&&m(t.error),i&&(i.setStatus("internal_error"),i.end())})}},h={name:"SentryHapiTracingPlugin",version:r.SDK_VERSION,register:async function(e){e.ext("onPreHandler",(e,t)=>{let n=(0,i.continueTrace)({sentryTrace:e.headers["sentry-trace"]||void 0,baggage:e.headers.baggage||void 0},t=>(0,a.startTransaction)({...t,op:"hapi.request",name:e.route.path,description:`${e.route.method} ${e.path}`}));return(0,a.getCurrentScope)().setSpan(n),t.continue}),e.ext("onPreResponse",(e,t)=>{let a=(0,o.getActiveTransaction)();if(e.response&&u(e.response)&&a){let t=e.response;t.header("sentry-trace",(0,l.spanToTraceHeader)(a));let i=(0,d.dynamicSamplingContextToSentryBaggageHeader)((0,s.getDynamicSamplingContextFromSpan)(a));i&&t.header("baggage",i)}return t.continue}),e.ext("onPostHandler",(e,t)=>{let a=(0,o.getActiveTransaction)();return a&&(e.response&&u(e.response)&&(0,p.setHttpStatus)(a,e.response.statusCode),a.end()),t.continue})}},f="Hapi",b=(0,n.defineIntegration)((e={})=>{let t=e.server;return{name:f,setupOnce(){t&&(0,c.fill)(t,"start",e=>async function(){return await this.register(h),await this.register(g),e.apply(this)})}}}),v=(0,n.convertIntegrationFnToClass)(f,b)}),E("i3FeK",function(e,t){_(e.exports,"Apollo",()=>T("9rcfq").Apollo),_(e.exports,"Express",()=>T("3SU1C").Express),_(e.exports,"GraphQL",()=>T("2UNWp").GraphQL),_(e.exports,"Mongo",()=>T("5N1eW").Mongo),_(e.exports,"Mysql",()=>T("kEOfe").Mysql),_(e.exports,"Postgres",()=>T("k9pSf").Postgres),_(e.exports,"Prisma",()=>T("cWSR5").Prisma),T("9rcfq"),T("3SU1C"),T("2UNWp"),T("5N1eW"),T("kEOfe"),T("k9pSf"),T("cWSR5")}),E("9rcfq",function(e,t){_(e.exports,"Apollo",()=>d);var a=T("bsjXU"),i=T("1gT0D"),n=T("e4IUz"),o=T("jVURz"),s=T("fArVl"),r=T("k2ErF"),p=T("5NAaM"),l=T("9AttI");class d{static __initStatic(){this.id="Apollo"}constructor(e={useNestjs:!1}){this.name=d.id,this._useNest=!!e.useNestjs}loadDependency(){return this._useNest?this._module=this._module||(0,s.loadModule)("@nestjs/graphql"):this._module=this._module||(0,s.loadModule)("apollo-server-core"),this._module}setupOnce(e,t){if((0,l.shouldDisableAutoInstrumentation)(t)){p.DEBUG_BUILD&&(0,r.logger).log("Apollo Integration is skipped because of instrumenter configuration.");return}if(this._useNest){let e=this.loadDependency();if(!e){p.DEBUG_BUILD&&(0,r.logger).error("Apollo-NestJS Integration was unable to require @nestjs/graphql package.");return}(0,n.fill)(e.GraphQLFactory.prototype,"mergeWithSchema",function(e){return function(...a){return(0,n.fill)(this.resolversExplorerService,"explore",function(e){return function(){return c((0,i.arrayify)(e.call(this)),t)}}),e.call(this,...a)}})}else{let e=this.loadDependency();if(!e){p.DEBUG_BUILD&&(0,r.logger).error("Apollo Integration was unable to require apollo-server-core package.");return}(0,n.fill)(e.ApolloServerBase.prototype,"constructSchema",function(e){return function(){if(!this.config.resolvers)return p.DEBUG_BUILD&&(this.config.schema?((0,r.logger).warn("Apollo integration is not able to trace `ApolloServer` instances constructed via `schema` property.If you are using NestJS with Apollo, please use `Sentry.Integrations.Apollo({ useNestjs: true })` instead."),(0,r.logger).warn()):this.config.modules&&(0,r.logger).warn("Apollo integration is not able to trace `ApolloServer` instances constructed via `modules` property."),(0,r.logger).error("Skipping tracing as no resolvers found on the `ApolloServer` instance.")),e.call(this);let a=(0,i.arrayify)(this.config.resolvers);return this.config.resolvers=c(a,t),e.call(this)}})}}}function c(e,t){return e.map(e=>(Object.keys(e).forEach(i=>{Object.keys(e[i]).forEach(s=>{"function"==typeof e[i][s]&&(0,n.fill)(e[i],s,function(e){return function(...n){let r=t().getScope().getSpan(),p=(0,a._optionalChain)([r,"optionalAccess",e=>e.startChild,"call",e=>e({description:`${i}.${s}`,op:"graphql.resolve",origin:"auto.graphql.apollo"})]),l=e.call(this,...n);return(0,o.isThenable)(l)?l.then(e=>((0,a._optionalChain)([p,"optionalAccess",e=>e.end,"call",e=>e()]),e)):((0,a._optionalChain)([p,"optionalAccess",e=>e.end,"call",e=>e()]),l)}})})}),e))}d.__initStatic()}),E("5NAaM",function(e,t){_(e.exports,"DEBUG_BUILD",()=>a);let a="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__}),E("9AttI",function(e,t){_(e.exports,"shouldDisableAutoInstrumentation",()=>i);var a=T("bsjXU");function i(e){let t=(0,a._optionalChain)([e,"call",e=>e(),"access",e=>e.getClient,"call",e=>e(),"optionalAccess",e=>e.getOptions,"call",e=>e()]);return"sentry"!==((0,a._optionalChain)([t,"optionalAccess",e=>e.instrumenter])||"sentry")}}),E("3SU1C",function(e,t){_(e.exports,"Express",()=>u);var a=T("bsjXU"),i=T("jpnao"),n=T("6szME"),o=T("gd055"),s=T("jVURz"),r=T("k2ErF"),p=T("9GA7E"),l=T("iD1up"),d=T("5NAaM"),c=T("9AttI");class u{static __initStatic(){this.id="Express"}constructor(e={}){this.name=u.id,this._router=e.router||e.app,this._methods=(Array.isArray(e.methods)?e.methods:[]).concat("use")}setupOnce(e,t){if(!this._router){d.DEBUG_BUILD&&(0,r.logger).error("ExpressIntegration is missing an Express instance");return}if((0,c.shouldDisableAutoInstrumentation)(t)){d.DEBUG_BUILD&&(0,r.logger).log("Express Integration is skipped because of instrumenter configuration.");return}(function(e,t=[]){t.forEach(t=>(function(e,t){let a=e[t];return e[t]=function(...e){return a.call(this,...e.map(e=>"function"==typeof e?m(e,t):Array.isArray(e)?e.map(e=>"function"==typeof e?m(e,t):e):e))},e})(e,t))})(this._router,this._methods),function(e){let t="settings"in e;t&&void 0===e._router&&e.lazyrouter&&e.lazyrouter();let c=t?e._router:e;if(!c){d.DEBUG_BUILD&&(0,r.logger).debug("Cannot instrument router for URL Parameterization (did not find a valid router)."),d.DEBUG_BUILD&&(0,r.logger).debug("Routing instrumentation is currently only supported in Express 4.");return}let u=Object.getPrototypeOf(c),m=u.process_params;u.process_params=function(e,t,r,d,c){r._reconstructedRoute||(r._reconstructedRoute="");let{layerRoutePath:u,isRegex:h,isArray:f,numExtraSegments:b}=function(e){var t;let i=(0,a._optionalChain)([e,"access",e=>e.route,"optionalAccess",e=>e.path]),r=(0,s.isRegExp)(i),p=Array.isArray(i);if(!i){let[t]=(0,o.GLOBAL_OBJ).process.versions.node.split(".").map(Number);t>=16&&(i=g(e.path,e.regexp,e.keys))}if(!i)return{isRegex:r,isArray:p,numExtraSegments:0};let l=p?Math.max(i.reduce((e,t)=>e+(0,n.getNumberOfUrlSegments)(t.toString()),0)-(0,n.getNumberOfUrlSegments)(e.path||""),0):0;return{layerRoutePath:(t=i,p?t.map(e=>e.toString()).join(","):t&&t.toString()),isRegex:r,isArray:p,numExtraSegments:l}}(e);(u||h||f)&&(r._hasParameters=!0);let v=(u||function(e,t,i){let o=(0,n.stripUrlQueryAndFragment)(e||""),s=(0,a._optionalChain)([o,"optionalAccess",e=>e.split,"call",e=>e("/"),"access",e=>e.filter,"call",e=>e(e=>!!e)]),r=0,p=(0,a._optionalChain)([t,"optionalAccess",e=>e.split,"call",e=>e("/"),"access",e=>e.filter,"call",e=>e(e=>!!e),"access",e=>e.length])||0;return(0,a._optionalChain)([i,"optionalAccess",e=>e.split,"call",e=>e("/"),"access",e=>e.filter,"call",e=>e(e=>(0,a._optionalChain)([s,"optionalAccess",e=>e[p+r]])===e&&(r+=1,!0)),"access",e=>e.join,"call",e=>e("/")])}(r.originalUrl,r._reconstructedRoute,e.path)||"").split("/").filter(e=>e.length>0&&(h||f||!e.includes("*"))).join("/");if(v&&v.length>0&&(r._reconstructedRoute+=`/${v}${h?"/":""}`),(0,n.getNumberOfUrlSegments)((0,n.stripUrlQueryAndFragment)(r.originalUrl||""))+b===(0,n.getNumberOfUrlSegments)(r._reconstructedRoute)){r._hasParameters||r._reconstructedRoute===r.originalUrl||(r._reconstructedRoute=r.originalUrl?(0,n.stripUrlQueryAndFragment)(r.originalUrl):r.originalUrl);let e=d.__sentry_transaction,t=e&&(0,l.spanToJSON)(e).data||{};if(e&&"custom"!==t[p.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]){let t=r._reconstructedRoute||"/",[a,n]=(0,i.extractPathForTransaction)(r,{path:!0,method:!0,customRoute:t});e.updateName(a),e.setAttribute(p.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,n)}}return m.call(this,e,t,r,d,c)}}(this._router)}}function m(e,t){let i=e.length;switch(i){case 2:return function(a,i){let n=i.__sentry_transaction;if(n){let a=n.startChild({description:e.name,op:`middleware.express.${t}`,origin:"auto.middleware.express"});i.once("finish",()=>{a.end()})}return e.call(this,a,i)};case 3:return function(i,n,o){let s=n.__sentry_transaction,r=(0,a._optionalChain)([s,"optionalAccess",e=>e.startChild,"call",a=>a({description:e.name,op:`middleware.express.${t}`,origin:"auto.middleware.express"})]);e.call(this,i,n,function(...e){(0,a._optionalChain)([r,"optionalAccess",e=>e.end,"call",e=>e()]),o.call(this,...e)})};case 4:return function(i,n,o,s){let r=o.__sentry_transaction,p=(0,a._optionalChain)([r,"optionalAccess",e=>e.startChild,"call",a=>a({description:e.name,op:`middleware.express.${t}`,origin:"auto.middleware.express"})]);e.call(this,i,n,o,function(...e){(0,a._optionalChain)([p,"optionalAccess",e=>e.end,"call",e=>e()]),s.call(this,...e)})};default:throw Error(`Express middleware takes 2-4 arguments. Got: ${i}`)}}u.__initStatic();let g=(e,t,i)=>{if(!e||!t||!i||0===Object.keys(i).length||!(0,a._optionalChain)([i,"access",e=>e[0],"optionalAccess",e=>e.offset]))return;let n=i.sort((e,t)=>e.offset-t.offset),o=RegExp(t,`${t.flags}d`).exec(e);if(!o||!o.indices)return;let[,...s]=o.indices;if(s.length!==n.length)return;let r=e,p=0;return s.forEach((e,t)=>{if(e){let[a,i]=e,o=r.substring(0,a-p),s=`:${n[t].name}`;r=o+s+r.substring(i-p),p+=i-a-s.length}}),r}}),E("2UNWp",function(e,t){_(e.exports,"GraphQL",()=>l);var a=T("bsjXU"),i=T("e4IUz"),n=T("jVURz"),o=T("fArVl"),s=T("k2ErF"),r=T("5NAaM"),p=T("9AttI");class l{static __initStatic(){this.id="GraphQL"}constructor(){this.name=l.id}loadDependency(){return this._module=this._module||(0,o.loadModule)("graphql/execution/execute.js")}setupOnce(e,t){if((0,p.shouldDisableAutoInstrumentation)(t)){r.DEBUG_BUILD&&(0,s.logger).log("GraphQL Integration is skipped because of instrumenter configuration.");return}let o=this.loadDependency();if(!o){r.DEBUG_BUILD&&(0,s.logger).error("GraphQL Integration was unable to require graphql/execution package.");return}(0,i.fill)(o,"execute",function(e){return function(...i){let o=t().getScope(),s=o.getSpan(),r=(0,a._optionalChain)([s,"optionalAccess",e=>e.startChild,"call",e=>e({description:"execute",op:"graphql.execute",origin:"auto.graphql.graphql"})]);(0,a._optionalChain)([o,"optionalAccess",e=>e.setSpan,"call",e=>e(r)]);let p=e.call(this,...i);return(0,n.isThenable)(p)?p.then(e=>((0,a._optionalChain)([r,"optionalAccess",e=>e.end,"call",e=>e()]),(0,a._optionalChain)([o,"optionalAccess",e=>e.setSpan,"call",e=>e(s)]),e)):((0,a._optionalChain)([r,"optionalAccess",e=>e.end,"call",e=>e()]),(0,a._optionalChain)([o,"optionalAccess",e=>e.setSpan,"call",e=>e(s)]),p)}})}}l.__initStatic()}),E("5N1eW",function(e,t){_(e.exports,"Mongo",()=>c);var a=T("bsjXU"),i=T("e4IUz"),n=T("jVURz"),o=T("fArVl"),s=T("k2ErF"),r=T("5NAaM"),p=T("9AttI");let l=["aggregate","bulkWrite","countDocuments","createIndex","createIndexes","deleteMany","deleteOne","distinct","drop","dropIndex","dropIndexes","estimatedDocumentCount","find","findOne","findOneAndDelete","findOneAndReplace","findOneAndUpdate","indexes","indexExists","indexInformation","initializeOrderedBulkOp","insertMany","insertOne","isCapped","mapReduce","options","parallelCollectionScan","rename","replaceOne","stats","updateMany","updateOne"],d={bulkWrite:["operations"],countDocuments:["query"],createIndex:["fieldOrSpec"],createIndexes:["indexSpecs"],deleteMany:["filter"],deleteOne:["filter"],distinct:["key","query"],dropIndex:["indexName"],find:["query"],findOne:["query"],findOneAndDelete:["filter"],findOneAndReplace:["filter","replacement"],findOneAndUpdate:["filter","update"],indexExists:["indexes"],insertMany:["docs"],insertOne:["doc"],mapReduce:["map","reduce"],rename:["newName"],replaceOne:["filter","doc"],updateMany:["filter","update"],updateOne:["filter","update"]};class c{static __initStatic(){this.id="Mongo"}constructor(e={}){this.name=c.id,this._operations=Array.isArray(e.operations)?e.operations:l,this._describeOperations=!("describeOperations"in e)||e.describeOperations,this._useMongoose=!!e.useMongoose}loadDependency(){let e=this._useMongoose?"mongoose":"mongodb";return this._module=this._module||(0,o.loadModule)(e)}setupOnce(e,t){if((0,p.shouldDisableAutoInstrumentation)(t)){r.DEBUG_BUILD&&(0,s.logger).log("Mongo Integration is skipped because of instrumenter configuration.");return}let a=this.loadDependency();if(!a){let e=this._useMongoose?"mongoose":"mongodb";r.DEBUG_BUILD&&(0,s.logger).error(`Mongo Integration was unable to require \`${e}\` package.`);return}this._instrumentOperations(a.Collection,this._operations,t)}_instrumentOperations(e,t,a){t.forEach(t=>this._patchOperation(e,t,a))}_patchOperation(e,t,o){if(!(t in e.prototype))return;let s=this._getSpanContextFromOperationArguments.bind(this);(0,i.fill)(e.prototype,t,function(e){return function(...i){let r=i[i.length-1],p=o(),l=p.getScope(),d=p.getClient(),c=l.getSpan(),u=(0,a._optionalChain)([d,"optionalAccess",e=>e.getOptions,"call",e=>e(),"access",e=>e.sendDefaultPii]);if("function"!=typeof r||"mapReduce"===t&&2===i.length){let o=(0,a._optionalChain)([c,"optionalAccess",e=>e.startChild,"call",e=>e(s(this,t,i,u))]),r=e.call(this,...i);if((0,n.isThenable)(r))return r.then(e=>((0,a._optionalChain)([o,"optionalAccess",e=>e.end,"call",e=>e()]),e));if(!r||"object"!=typeof r||!r.once||"function"!=typeof r.once)return(0,a._optionalChain)([o,"optionalAccess",e=>e.end,"call",e=>e()]),r;try{r.once("close",()=>{(0,a._optionalChain)([o,"optionalAccess",e=>e.end,"call",e=>e()])})}catch(e){(0,a._optionalChain)([o,"optionalAccess",e=>e.end,"call",e=>e()])}return r}let m=(0,a._optionalChain)([c,"optionalAccess",e=>e.startChild,"call",e=>e(s(this,t,i.slice(0,-1)))]);return e.call(this,...i.slice(0,-1),function(e,t){(0,a._optionalChain)([m,"optionalAccess",e=>e.end,"call",e=>e()]),r(e,t)})}})}_getSpanContextFromOperationArguments(e,t,a,i=!1){let n={"db.system":"mongodb","db.name":e.dbName,"db.operation":t,"db.mongodb.collection":e.collectionName},o={op:"db",origin:"auto.db.mongo",description:t,data:n},s=d[t],r=Array.isArray(this._describeOperations)?this._describeOperations.includes(t):this._describeOperations;if(!s||!r||!i)return o;try{if("mapReduce"===t){let[e,t]=a;n[s[0]]="string"==typeof e?e:e.name||"",n[s[1]]="string"==typeof t?t:t.name||""}else for(let e=0;ep);var a=T("bsjXU"),i=T("e4IUz"),n=T("fArVl"),o=T("k2ErF"),s=T("5NAaM"),r=T("9AttI");class p{static __initStatic(){this.id="Mysql"}constructor(){this.name=p.id}loadDependency(){return this._module=this._module||(0,n.loadModule)("mysql/lib/Connection.js")}setupOnce(e,t){let n;if((0,r.shouldDisableAutoInstrumentation)(t)){s.DEBUG_BUILD&&(0,o.logger).log("Mysql Integration is skipped because of instrumenter configuration.");return}let p=this.loadDependency();if(!p){s.DEBUG_BUILD&&(0,o.logger).error("Mysql Integration was unable to require `mysql` package.");return}try{p.prototype.connect=new Proxy(p.prototype.connect,{apply:(e,t,a)=>(n||(n=t.config),e.apply(t,a))})}catch(e){s.DEBUG_BUILD&&(0,o.logger).error("Mysql Integration was unable to instrument `mysql` config.")}function l(e){if(!e)return;let t=n?{"server.address":n.host,"server.port":n.port,"db.user":n.user}:{};Object.keys(t).forEach(a=>{e.setAttribute(a,t[a])}),e.end()}(0,i.fill)(p,"createQuery",function(e){return function(i,n,o){let s=t().getScope().getSpan(),r=(0,a._optionalChain)([s,"optionalAccess",e=>e.startChild,"call",e=>e({description:"string"==typeof i?i:i.sql,op:"db",origin:"auto.db.mysql",data:{"db.system":"mysql"}})]);if("function"==typeof o)return e.call(this,i,n,function(e,t,a){l(r),o(e,t,a)});if("function"==typeof n)return e.call(this,i,function(e,t,a){l(r),n(e,t,a)});let p=e.call(this,i,n);return p.on("end",()=>{l(r)}),p}})}}p.__initStatic()}),E("k9pSf",function(e,t){_(e.exports,"Postgres",()=>l);var a=T("bsjXU"),i=T("e4IUz"),n=T("jVURz"),o=T("fArVl"),s=T("k2ErF"),r=T("5NAaM"),p=T("9AttI");class l{static __initStatic(){this.id="Postgres"}constructor(e={}){this.name=l.id,this._usePgNative=!!e.usePgNative,this._module=e.module}loadDependency(){return this._module=this._module||(0,o.loadModule)("pg")}setupOnce(e,t){if((0,p.shouldDisableAutoInstrumentation)(t)){r.DEBUG_BUILD&&(0,s.logger).log("Postgres Integration is skipped because of instrumenter configuration.");return}let o=this.loadDependency();if(!o){r.DEBUG_BUILD&&(0,s.logger).error("Postgres Integration was unable to require `pg` package.");return}let l=this._usePgNative?(0,a._optionalChain)([o,"access",e=>e.native,"optionalAccess",e=>e.Client]):o.Client;if(!l){r.DEBUG_BUILD&&(0,s.logger).error("Postgres Integration was unable to access 'pg-native' bindings.");return}(0,i.fill)(l.prototype,"query",function(e){return function(i,o,s){let r=t().getScope().getSpan(),p={"db.system":"postgresql"};try{this.database&&(p["db.name"]=this.database),this.host&&(p["server.address"]=this.host),this.port&&(p["server.port"]=this.port),this.user&&(p["db.user"]=this.user)}catch(e){}let l=(0,a._optionalChain)([r,"optionalAccess",e=>e.startChild,"call",e=>e({description:"string"==typeof i?i:i.text,op:"db",origin:"auto.db.postgres",data:p})]);if("function"==typeof s)return e.call(this,i,o,function(e,t){(0,a._optionalChain)([l,"optionalAccess",e=>e.end,"call",e=>e()]),s(e,t)});if("function"==typeof o)return e.call(this,i,function(e,t){(0,a._optionalChain)([l,"optionalAccess",e=>e.end,"call",e=>e()]),o(e,t)});let d=void 0!==o?e.call(this,i,o):e.call(this,i);return(0,n.isThenable)(d)?d.then(e=>((0,a._optionalChain)([l,"optionalAccess",e=>e.end,"call",e=>e()]),e)):((0,a._optionalChain)([l,"optionalAccess",e=>e.end,"call",e=>e()]),d)}})}}l.__initStatic()}),E("cWSR5",function(e,t){_(e.exports,"Prisma",()=>l);var a=T("eCOpK"),i=T("9GA7E"),n=T("3hDCQ"),o=T("e4IUz"),s=T("k2ErF"),r=T("5NAaM"),p=T("9AttI");class l{static __initStatic(){this.id="Prisma"}constructor(e={}){var t;if(this.name=l.id,(t=e.client)&&t.$use&&!e.client._sentryInstrumented){(0,o.addNonEnumerableProperty)(e.client,"_sentryInstrumented",!0);let t={};try{let a=e.client._engineConfig;if(a){let{activeProvider:e,clientVersion:i}=a;e&&(t["db.system"]=e),i&&(t["db.prisma.version"]=i)}}catch(e){}e.client.$use((e,o)=>{if((0,p.shouldDisableAutoInstrumentation)(a.getCurrentHub))return o(e);let s=e.action,r=e.model;return(0,n.startSpan)({name:r?`${r} ${s}`:s,onlyIfParent:!0,op:"db.prisma",attributes:{[i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.db.prisma"},data:{...t,"db.operation":s}},()=>o(e))})}else r.DEBUG_BUILD&&(0,s.logger).warn("Unsupported Prisma client provided to PrismaIntegration. Provided client:",e.client)}setupOnce(){}}l.__initStatic()}),E("6G2Kr",function(e,t){_(e.exports,"instrumentCron",()=>o);var a=T("deYUe"),i=T("bdQRg");let n="Automatic instrumentation of CronJob only supports crontab string";function o(e,t){let o=!1;return new Proxy(e,{construct(e,s){let[r,p,l,d,c,...u]=s;if("string"!=typeof r)throw Error(n);if(o)throw Error(`A job named '${t}' has already been scheduled`);o=!0;let m=(0,i.replaceCronNames)(r);return new e(r,function(e,i){return(0,a.withMonitor)(t,()=>p(e,i),{schedule:{type:"crontab",value:m},...c?{timeZone:c}:{}})},l,d,c,...u)},get:(e,s)=>"from"===s?s=>{let{cronTime:r,onTick:p,timeZone:l}=s;if("string"!=typeof r)throw Error(n);if(o)throw Error(`A job named '${t}' has already been scheduled`);o=!0;let d=(0,i.replaceCronNames)(r);return s.onTick=(e,i)=>(0,a.withMonitor)(t,()=>p(e,i),{schedule:{type:"crontab",value:d},...l?{timeZone:l}:{}}),e.from(s)}:e[s]})}}),E("bdQRg",function(e,t){_(e.exports,"replaceCronNames",()=>i);let a=[["january","1"],["february","2"],["march","3"],["april","4"],["may","5"],["june","6"],["july","7"],["august","8"],["september","9"],["october","10"],["november","11"],["december","12"],["jan","1"],["feb","2"],["mar","3"],["apr","4"],["may","5"],["jun","6"],["jul","7"],["aug","8"],["sep","9"],["oct","10"],["nov","11"],["dec","12"],["sunday","0"],["monday","1"],["tuesday","2"],["wednesday","3"],["thursday","4"],["friday","5"],["saturday","6"],["sun","0"],["mon","1"],["tue","2"],["wed","3"],["thu","4"],["fri","5"],["sat","6"]];function i(e){return a.reduce((e,[t,a])=>e.replace(RegExp(t,"gi"),a),e)}}),E("gRbyu",function(e,t){_(e.exports,"instrumentNodeCron",()=>o);var a=T("bsjXU"),i=T("deYUe"),n=T("bdQRg");function o(e){return new Proxy(e,{get:(e,t)=>"schedule"===t&&e.schedule?new Proxy(e.schedule,{apply(e,t,o){let[s,,r]=o;if(!(0,a._optionalChain)([r,"optionalAccess",e=>e.name]))throw Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.');return(0,i.withMonitor)(r.name,()=>e.apply(t,o),{schedule:{type:"crontab",value:(0,n.replaceCronNames)(s)},timezone:(0,a._optionalChain)([r,"optionalAccess",e=>e.timezone])})}}):e[t]})}}),E("4dSSb",function(e,t){_(e.exports,"instrumentNodeSchedule",()=>n);var a=T("deYUe"),i=T("bdQRg");function n(e){return new Proxy(e,{get:(e,t)=>"scheduleJob"===t?new Proxy(e.scheduleJob,{apply(e,t,n){let[o,s]=n;if("string"!=typeof o||"string"!=typeof s)throw Error("Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string");return(0,a.withMonitor)(o,()=>e.apply(t,n),{schedule:{type:"crontab",value:(0,i.replaceCronNames)(s)}})}}):e[t]})}}),E("aDQYo",function(e,t){_(e.exports,"addExtensionMethods",()=>o);var a=T("jfDa9"),i=T("eCOpK"),n=T("fArVl");function o(){(0,a.addTracingExtensions)(),(0,n.isNodeEnv)()&&function(){let t=(0,i.getMainCarrier)();if(!t.__SENTRY__)return;let a={mongodb:()=>new((0,n.dynamicRequire)(e,"./node/integrations/mongo")).Mongo,mongoose:()=>new((0,n.dynamicRequire)(e,"./node/integrations/mongo")).Mongo,mysql:()=>new((0,n.dynamicRequire)(e,"./node/integrations/mysql")).Mysql,pg:()=>new((0,n.dynamicRequire)(e,"./node/integrations/postgres")).Postgres},o=Object.keys(a).filter(e=>!!(0,n.loadModule)(e)).map(e=>{try{return a[e]()}catch(e){return}}).filter(e=>e);o.length>0&&(t.__SENTRY__.integrations=[...t.__SENTRY__.integrations||[],...o])}()}}),E("95REl",function(e,t){var a=T("ihzfm");t.operation=function(e){return new a(t.timeouts(e),{forever:e&&(e.forever||e.retries===1/0),unref:e&&e.unref,maxRetryTime:e&&e.maxRetryTime})},t.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var a in e)t[a]=e[a];if(t.minTimeout>t.maxTimeout)throw Error("minTimeout is greater than maxTimeout");for(var i=[],n=0;n=this._maxRetryTime)return this._errors.push(e),this._errors.unshift(Error("RetryOperation timeout occurred")),!1;this._errors.push(e);var a=this._timeouts.shift();if(void 0===a){if(!this._cachedTimeouts)return!1;this._errors.splice(0,this._errors.length-1),a=this._cachedTimeouts.slice(-1)}var i=this;return this._timer=setTimeout(function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout(function(){i._operationTimeoutCb(i._attempts)},i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)},a),this._options.unref&&this._timer.unref(),!0},a.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var a=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){a._operationTimeoutCb()},a._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},a.prototype.try=function(e){console.log("Using RetryOperation.try() is deprecated"),this.attempt(e)},a.prototype.start=function(e){console.log("Using RetryOperation.start() is deprecated"),this.attempt(e)},a.prototype.start=a.prototype.try,a.prototype.errors=function(){return this._errors},a.prototype.attempts=function(){return this._attempts},a.prototype.mainError=function(){if(0===this._errors.length)return null;for(var e={},t=null,a=0,i=0;i=a&&(t=n,a=s)}return t}}),E("3X9Zh",function(e,t){_(e.exports,"getOctokitOrFail",()=>o);var a=T("2Evbo"),i=T("3midM"),n=T("7SZkG");let o=e=>{if(null==e)throw Error("github-token is required");try{return(0,a.getOctokit)(e)}catch(e){throw A(n).getLogger(i.METICULOUS_LOGGER_NAME).error(e),Error("Error connecting to GitHub. Did you specify a valid 'github-token'?")}}});var R=(T("3nEje"),T("3nEje")),V=T("2Evbo"),N=T("4aTko"),W=T("3midM"),k={},H=k&&k.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(k,"__esModule",{value:!0}),k.executeRemoteTestRun=void 0;var N=T("4aTko"),W=T("3midM"),F={};Object.defineProperty(F,"__esModule",{value:!0}),F.localtunnel=void 0;var U={};Object.defineProperty(U,"__esModule",{value:!0}),U.localtunnel=void 0;var Y={},O=Y&&Y.__createBinding||(Object.create?function(e,t,a,i){void 0===i&&(i=a);var n=Object.getOwnPropertyDescriptor(t,a);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,i,n)}:function(e,t,a,i){void 0===i&&(i=a),e[i]=t[a]}),X=Y&&Y.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),D=Y&&Y.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&O(t,e,a);return X(t,e),t},L=Y&&Y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Y,"__esModule",{value:!0}),Y.Tunnel=void 0;const K=L(p),J=L(l),z=D(T("5mM36")),j=L(T("3oP91"));var P=m.Duplex,M=m.Writable,Q=d.EventEmitter,q=T("04vO9");class ${constructor(e,t){this._client=e,this._server=t}get client(){return this._client}get server(){return this._server}}function ee(e,t,a){function i(){this._finished=!0,this._mux._send_end(this),this._check_remove()}P.call(this,e),e=Object.assign({max_write_size:0},e),this._mux=t,this.mux=t,this._chan=a,this._max_write_size=e.max_write_size,this._check_read_overflow=!1!==e.check_read_overflow,this._seq=0,this._remote_free=0,this._set_remote_free=!1,this._data=null,this._cb=null,this._index=0,this._finished=!1,this._ended=!1,this._removed=!1,this._handshake_sent=!1,this._handshake_received=!1,this._end_pending=!1,this._error_end=!1,this._error_end_pending=!1,this.once("finish",i),this.once("close",function(){this.removeListener("finish",i),this._finished||(this._finished=!0,this._mux._send_end(this)),this._check_remove()}),t.duplexes.set(a,this),t._max_open>0&&t.duplexes.size===t._max_open&&setImmediate(function(){t.emit("full")})}function et(e,t){if(Q.call(this,t),t=Object.assign({max_open:0,max_header_size:0,keep_alive:3e4},t),this._max_duplexes=2147483648,this._max_open=t.max_open,this.duplexes=new Map,this._chan=0,this._chan_offset=t.high_channels?this._max_duplexes:0,this._parse_handshake_data=t.parse_handshake_data,this.carrier=e,e instanceof $){let a={...(t.http2||{}).headers,[w.constants.HTTP2_HEADER_STATUS]:200,[w.constants.HTTP2_HEADER_CONTENT_TYPE]:"application/octet-stream"};e.server.on("stream",(e,t)=>{if(this._max_open>0&&this.duplexes.size===this._max_open)return this.emit("full"),e.respond({[w.constants.HTTP2_HEADER_STATUS]:503},{endStream:!0});let i=Buffer.from(t["bpmux-channel"],"base64").readUint32BE();if(this.duplexes.has(i))return e.respond({[w.constants.HTTP2_HEADER_STATUS]:409},{endStream:!0});e.cork(),this._add_http2_duplex(e,i),this.emit("peer_multiplex",e);let n=!1;this._parse_http2_handshake(e,t,()=>{let t;n=!0;let i=e.uncork;return e.uncork=()=>{e.uncork=i,e.destroyed||(e.respond({...a,...this._make_http2_handshake(t)}),e._handshake_sent=!0,this.emit("handshake_sent",e,!0),e.emit("handshake_sent",!0),e.uncork())},a=>{t=a,e.uncork()}}),n?(this.emit("pre_handshake_sent",e,!0),e.emit("pre_handshake_sent",!0)):(e.respond({...a,...this._make_http2_handshake()}),e._handshake_sent=!0,this.emit("handshake_sent",e,!0),e.emit("handshake_sent",!0),e.uncork())});let i=0;for(let t of[e.client,e.server])t.on("close",()=>{2==++i&&(this.emit("finish"),this.emit("end"),this.emit("close"))}),t.on("error",e=>{for(let a of this.duplexes.values())a.session===t&&!a.destroyed&&a.listenerCount("error")>0&&a.emit("error",e);this.emit("error",e)});return}this._max_header_size=t.max_header_size,this._finished=!1,this._ended=!1,this._header_buffers=[],this._header_buffer_len=0,this._reading_duplex=null,this._peer_multiplex_options=t.peer_multiplex_options,this._coalesce_writes=t.coalesce_writes,this._sending=!1,this._send_requested=!1,this._keep_alive_id=null,this._keep_alive_paused=!1,this._out_stream=q.encode(t),this._coalesce_writes&&(this._out_stream._pushFrameData=function(e){var t;for(t=0;t0&&t.emit("error",e);a.emit("error",e)}if(e.on("finish",n),e.on("close",n),this._in_stream.on("end",o),e.on("close",o),e.on("error",s),this._in_stream.on("error",s),this._out_stream.on("error",s),this._out_stream.on("drain",function(){a._send(),this._writableState.lengthn._readableState.highWaterMark?n.emit("error",Error("too much data")):n.push(e))):((a._max_header_size<=0||a._header_buffer_len0&&7===e[0])return this.emit("keep_alive");if(this._check_buffer(e,5)){var t=this,a=e.readUInt8(0,!0),i=e.readUInt32BE(1,!0),n=this.duplexes.get(i);if(3!==a&&!n){if(this._max_open>0&&this.duplexes.size===this._max_open)return this.emit("full");n=new ee(this._peer_multiplex_options,this,i),this.emit("peer_multiplex",n)}if(n&&n._handshake_received){switch(a){case 0:n._ended=!0,n._check_remove(),n.push(null);break;case 6:n._ended=!0,n._check_remove(),n.emit("error",Error("peer error")),n.push(null);break;case 2:case 3:if(!this._check_buffer(e,13))break;o();break;case 4:n._remote_seq=e.slice(5),this._reading_duplex=n;break;default:this.emit("error",Error("unknown type: "+a))}return}switch(a){case 0:n._end_pending=!0;break;case 6:n._error_end_pending=!0;break;case 5:if(!this._check_buffer(e,9))return;o();break;case 1:{if(!this._check_buffer(e,9))return;if(0===n._seq){let t=e.readUInt32BE(5,!0);n._remote_free=n._max_write_size>0?Math.min(t,n._max_write_size):t,n._set_remote_free=!0}n._handshake_received=!0;let t=e.slice(9);if(this._parse_handshake_data)try{t=this._parse_handshake_data(t)}catch(e){n.listenerCount("error")>0&&n.emit("error",e),this.emit("error",e)}let a=!1,i=n._handshake_sent?null:()=>(a=!0,function(e){n._send_handshake(e)});this.emit("handshake",n,t,i),n.emit("handshake",t,i),a?this._send_handshake(n):n._send_handshake(),n._error_end_pending?(n._ended=!0,n._check_remove(),n.emit("error",Error("peer error")),n.push(null)):n._end_pending&&(n._ended=!0,n._check_remove(),n.push(null)),this._send();break}case 3:break;default:this.emit("error",Error("expected handshake, got: "+a))}}function o(){let a=e.readUInt32BE(5,!0),i=13===e.length?e.readUInt32BE(9,!0):0;a=n._max_write_size>0?Math.min(a,n._max_write_size):a,n._remote_free=i+a-n._seq,n._seq0&&this.duplexes.size===this._max_open)throw this.emit("full"),Error("full");if(this.carrier instanceof $){if(this.carrier.client.closed||this.carrier.client.destroyed)throw Error("closed")}else{if(this.carrier.destroyed)throw Error("closed");if(this.carrier._writableState.ending)throw Error("finished");if(this.carrier._readableState.ended)throw Error("ended")}var t,a,i=this;function n(t){if(i.carrier instanceof $){let a=Buffer.alloc(4);a.writeUInt32BE(t);let n=e.http2||{},o=i.carrier.client.request({[w.constants.HTTP2_HEADER_PATH]:"/",[w.constants.HTTP2_HEADER_METHOD]:"POST",...n.headers,"bpmux-channel":a.toString("base64"),...i._make_http2_handshake(e.handshake_data)},{...n.options,endStream:!1,waitForTrailers:!0});return i._add_http2_duplex(o,t),setImmediate(()=>{o._handshake_sent=!0,i.emit("handshake_sent",o,!0),o.emit("handshake_sent",!0)}),o.on("response",e=>{let a=e[w.constants.HTTP2_HEADER_STATUS];if(200!==a){let e=Error(`peer returned status ${a} for channel ${t}`);return e.status=a,e.duplex=o,o.destroy(e),i.emit("error",e)}i._parse_http2_handshake(o,e,null)}),o}var a=new ee(e,i,t);return e._delay_handshake||setImmediate(function(){a._send_handshake(e.handshake_data)}),a}if(void 0!==(e=e||{}).channel)return this.duplexes.get(e.channel)||n(e.channel);t=this._chan;do{if(a=(t+1)%this._max_duplexes,!this.duplexes.has(t+this._chan_offset))return this._chan=a,n(t+this._chan_offset);t=a}while(t!==this._chan)throw this.emit("full"),Error("full")},et.prototype._add_http2_duplex=function(e,t){e._mux=this,e.mux=this,e._chan=t,e.get_channel=()=>t,e._handshake_sent=!1,e._handshake_received=!1,e._error_end=!1,this.duplexes.set(t,e),this._max_open>0&&this.duplexes.size===this._max_open&&this.emit("full"),e.on("close",()=>{this.duplexes.delete(t),this.emit("removed",e)}),e.peer_error_then_end=function(e,t,a){return this._error_end=!0,this.end(e,t,a)},e.on("wantTrailers",function(){this.sendTrailers({"bpmux-error":this._error_end.toString()})}),e.on("trailers",function(e){"true"===e["bpmux-error"]&&this.emit("error",Error("peer error"))})},et.prototype._make_http2_handshake=function(e){return{"bpmux-handshake":(e||Buffer.alloc(0)).toString("base64")}},et.prototype._parse_http2_handshake=function(e,t,a){e._handshake_received=!0;let i=Buffer.alloc(0);try{i=Buffer.from(t["bpmux-handshake"],"base64"),this._parse_handshake_data&&(i=this._parse_handshake_data(i))}catch(t){e.listenerCount("error")>0&&e.emit("error",t),this.emit("error",t)}this.emit("handshake",e,i,a),e.emit("handshake",i,a)};var ea={};Object.defineProperty(ea,"__esModule",{value:!0}),ea.TUNNEL_HIGH_WATER_MARK=void 0,ea.TUNNEL_HIGH_WATER_MARK=10485760;var ei={},en=ei&&ei.__createBinding||(Object.create?function(e,t,a,i){void 0===i&&(i=a);var n=Object.getOwnPropertyDescriptor(t,a);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,i,n)}:function(e,t,a,i){void 0===i&&(i=a),e[i]=t[a]}),eo=ei&&ei.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),es=ei&&ei.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&en(t,e,a);return eo(t,e),t},er=ei&&ei.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ei,"__esModule",{value:!0}),ei.TunnelMultiplexingCluster=void 0;const ep=er(d),el=es(p),ed=es(l);var ec={};Object.defineProperty(ec,"__esModule",{value:!0}),ec.HeaderHostTransformer=void 0;class eu extends m.Transform{constructor(e){super(e),this.host=`${e.host}:${e.port}`,this.replaced=!1}_transform(e,t,a){a(null,this.replaced?e:e.toString().replace(/(\r\n[Hh]ost: )\S+/,(e,t)=>(this.replaced=!0,t+this.host)))}}ec.HeaderHostTransformer=eu;class em extends ep.default{constructor(e){super(),this.logger=e.logger,this.opts=e,this.remoteMuxClient=e.remoteMuxClient}startListening(){let e=this.opts,t=e.localHost,a=e.localPort,i=e.localHttps?"https":"http",o=e.allowInvalidCert,s=r=>{let p;if(r.destroyed){this.logger.debug("remote destroyed"),this.emit("dead");return}this.logger.debug("connecting locally to %s://%s:%d",i,t,a);let l=()=>{this.logger.warn("local connection timeout"),u(!0)},d=null;if(e.localHttps){if(o)this.logger.debug("allowing invalid certificates");else{if(!e.localCert)throw Error("local_cert is required for https");if(!e.localKey)throw Error("local_key is required for https")}p=ed.connect({host:t,port:a,...o?{rejectUnauthorized:!1}:{cert:(0,n.readFileSync)(e.localCert),key:(0,n.readFileSync)(e.localKey),ca:e.localCa?[(0,n.readFileSync)(e.localCa)]:void 0}}),d=setTimeout(l,5e3)}else p=el.connect({host:t,port:a});d=setTimeout(l,5e3);let c=()=>{this.logger.debug("remote close"),this.emit("dead"),p.end()};r.once("close",c);let u=e=>{if(p.end(),r.removeListener("close",c),!e)return r.end();this.logger.warn("retrying connection to local server"),setTimeout(()=>s(r),0)};p.once("error",e=>{d&&clearTimeout(d),this.logger.error("local error %s %s %s",e.message,e.code,e,e.errors),u("ECONNREFUSED"===e.code||"ECONNRESET"===e.code)}),p.once("connect",()=>{d&&clearTimeout(d),this.logger.debug("connected locally"),r.resume();let t=r;e.localHost&&(this.logger.debug("transform Host header to %s",e.localHost),t=r.pipe(new ec.HeaderHostTransformer({host:e.localHost,port:e.localPort}))),t.pipe(p).pipe(r),p.once("close",e=>{this.logger.debug("local connection closed [%s]",e)})})};this.remoteMuxClient.on("handshake",e=>{e.on("data",e=>{let t=e.toString().match(/^(\w+) (\S+)/);t&&this.emit("request",{method:t[1],path:t[2]})}),e.pause(),s(e),this.emit("open",e)})}}ei.TunnelMultiplexingCluster=em;var eg={},eh=eg&&eg.__createBinding||(Object.create?function(e,t,a,i){void 0===i&&(i=a);var n=Object.getOwnPropertyDescriptor(t,a);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,i,n)}:function(e,t,a,i){void 0===i&&(i=a),e[i]=t[a]}),ef=eg&&eg.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),eb=eg&&eg.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&eh(t,e,a);return ef(t,e),t},ev=eg&&eg.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eg,"__esModule",{value:!0}),eg.TunnelMultiplexingPoolingCluster=void 0;const eI=ev(d),eC=eb(p),ey=eb(l);class ex extends eI.default{constructor(e){super(),this.logger=e.logger,this.opts=e,this.remoteMuxClient=e.remoteMuxClient}open(){let e=this.remoteMuxClient.multiplex({highWaterMark:ea.TUNNEL_HIGH_WATER_MARK}),t=this.opts,a=t.localHost,i=t.localPort,o=t.localHttps?"https":"http",s=t.allowInvalidCert,r=()=>{let p;if(e.destroyed){this.logger.debug("remote destroyed"),this.emit("dead");return}if(this.logger.debug("connecting locally to %s://%s:%d",o,a,i),t.localHttps){if(s)this.logger.debug("allowing invalid certificates");else{if(!t.localCert)throw Error("local_cert is required for https");if(!t.localKey)throw Error("local_key is required for https")}p=ey.connect({host:a,port:i,...s?{rejectUnauthorized:!1}:{cert:(0,n.readFileSync)(t.localCert),key:(0,n.readFileSync)(t.localKey),ca:t.localCa?[(0,n.readFileSync)(t.localCa)]:void 0}})}else p=eC.connect({host:a,port:i});let l=()=>{this.logger.debug("remote close"),this.emit("dead"),p.end()};e.once("close",l),p.once("error",t=>{if(this.logger.debug("local error %s",t.message),p.end(),e.removeListener("close",l),"ECONNREFUSED"!==t.code&&"ECONNRESET"!==t.code)return e.end();setTimeout(r,1e3)}),p.once("connect",()=>{this.logger.debug("connected locally"),e.resume();let a=e;t.localHost&&(this.logger.debug("transform Host header to %s",t.localHost),a=e.pipe(new ec.HeaderHostTransformer({host:t.localHost,port:t.localPort}))),a.pipe(p).pipe(e),p.once("close",e=>{this.logger.debug("local connection closed [%s]",e)})})};e.on("data",e=>{let t=e.toString().match(/^(\w+) (\S+)/);t&&this.emit("request",{method:t[1],path:t[2]})}),this.emit("open",e),e.pause(),r()}}eg.TunnelMultiplexingPoolingCluster=ex;class ew extends d.EventEmitter{constructor(e){super(),this.clientId=null,this.url=null,this.basicAuthUser=null,this.basicAuthPassword=null,this.logger=e.logger,this.opts=e,this.closed=!1,this.host=e.host||"https://tunnels.meticulous.ai"}_getInfo(e){let{id:t,port:a,multiplexing_port:i,use_no_pool_multiplexing:n,url:o,max_conn_count:s,tunnel_passphrase:r,basic_auth_user:p,basic_auth_password:l}=e,{port:d,localHost:c}=this.opts,{localHttps:u,localCert:m,localKey:g,localCa:h,allowInvalidCert:f}=this.opts,b=new URL(o),v=b.hostname.split(".");return v.shift(),{name:t,url:o,maxConn:s||1,remoteHost:v.join("."),remotePort:a,multiplexingRemotePort:i,useNoPoolMultiplexing:n,useTls:"https:"===b.protocol,tunnelPassphrase:r,basicAuthUser:p,basicAuthPassword:l,localPort:d,localHost:c,localHttps:u,localCert:m,localKey:g,localCa:h,allowInvalidCert:f}}_init(e){let t=this.opts,a=this._getInfo.bind(this),i={responseType:"json",headers:{Authorization:t.apiToken},params:{supportsMultiplexing:!0,supportsNoMultiplexingPool:!0,new:!0}},n=`${this.host}/`+(t.subdomain||""),o=()=>{let t=z.default.create({timeout:3e4});(0,j.default)(t,{retries:3,shouldResetTimeout:!0}),t.get(n,i).then(t=>{let i=t.data;if(this.logger.debug("got tunnel information",t.data),200!==t.status)return e(Error(i&&i.error||"localtunnel server returned an error, please try again"));e(null,a(i))}).catch(t=>{var a;return(0,z.isAxiosError)(t)&&(null===(a=t.response)||void 0===a?void 0:a.status)===401?e(Error("Unauthorized. Please check your API token")):(this.logger.error(`tunnel server offline: ${t.message}, retry 1s`),setTimeout(o,1e3))})};o()}async _establish(e){if(this.setMaxListeners(e.maxConn+(d.EventEmitter.defaultMaxListeners||10)),!e.multiplexingRemotePort)throw Error("multiplexingRemotePort must be set");this.logger.debug(`using multiplexing ${e.useNoPoolMultiplexing?"no-pooling":"pooling"} agent`);let t=await this._establishMultiplexingCluster({...e,multiplexingRemotePort:e.multiplexingRemotePort,useNoPoolMultiplexing:e.useNoPoolMultiplexing});t.once("open",()=>{this.emit("url",{url:e.url,basicAuthUser:e.basicAuthUser,basicAuthPassword:e.basicAuthPassword})}),t.on("error",e=>{this.logger.debug("got socket error",e.message),this.emit("error",e)});let a=0;if(t.on("open",e=>{a++,this.logger.debug("tunnel open [total: %d]",a);let t=()=>{e.destroy()};if(this.closed)return t();this.once("close",t),e.once("close",()=>{this.removeListener("close",t)})}),t.on("dead",()=>{a--,this.logger.debug("tunnel dead [total: %d]",a),this.closed||!t||t instanceof ei.TunnelMultiplexingCluster||t.open()}),t.on("request",e=>{this.emit("request",e)}),t instanceof eg.TunnelMultiplexingPoolingCluster)for(let a=0;a %s:%s",d,i,n,e,t),(l=r?J.default.connect({host:e,port:t,rejectUnauthorized:!0}):K.default.connect({host:e,port:t})).setNoDelay(!0),l.on("error",a=>{this.logger.debug("got remote connection error",a.message),"ECONNREFUSED"===a.code&&this.emit("error",Error(`connection refused: ${e}:${t} (check your firewall settings)`)),l.end()}),l.on("close",()=>{this.closed||this.logger.error("The remote connection was closed unexpectedly. Please check your network connection and try again.")});let c=r?"secureConnect":"connect";return new Promise(e=>{l.once(c,()=>{l.write(`AUTH ${p}`),l.once("data",t=>{"AUTH OK"!=t.toString()&&(this.emit("error",Error("Tunnel auth failed")),l.end());let r={remoteMuxClient:new et(l,{highWaterMark:ea.TUNNEL_HIGH_WATER_MARK,peer_multiplex_options:{highWaterMark:ea.TUNNEL_HIGH_WATER_MARK}}),logger:this.logger,localHost:i,localPort:n,localHttps:o,allowInvalidCert:s};e(a?new ei.TunnelMultiplexingCluster(r):new eg.TunnelMultiplexingPoolingCluster(r))})})})}open(e){this._init((t,a)=>{if(t||!a)return e(t||void 0);this.clientId=a.name,this.url=a.url,this.basicAuthUser=a.basicAuthUser,this.basicAuthPassword=a.basicAuthPassword,this._establish(a).then(()=>{e()}).catch(e=>{this.emit("error",e)})})}close(){this.closed=!0,this.emit("close")}}Y.Tunnel=ew,U.localtunnel=e=>{let t=new Y.Tunnel(e);return new Promise((e,a)=>t.open(i=>i?a(i):e(t)))},Object.defineProperty(F,"localtunnel",{enumerable:!0,get:function(){return U.localtunnel}});const e_=H(T("7SZkG"));var eA={};Object.defineProperty(eA,"__esModule",{value:!0}),eA.getPort=void 0,eA.getPort=function(e){if(""===e.port)switch(e.protocol){case"http:":case"ws:":return 80;case"https:":case"wss:":return 443;case"ftp:":return 21;default:return -1}let t=parseInt(e.port,10);return isNaN(t)?-1:t};const eG=async({apiToken:e,appUrl:t,commitSha:a,secureTunnelHost:i,onTunnelCreated:n,onTestRunCreated:o,onProgressUpdate:s,keepTunnelOpenPromise:r,environment:p})=>{let l,d,c;let u=e_.default.getLogger(W.METICULOUS_LOGGER_NAME),m=(0,N.getApiToken)(e);m||(u.error("You must provide an API token by using the --apiToken parameter"),process.exit(1));let g=(0,N.createClient)({apiToken:m});try{l=new URL(t)}catch(e){throw Error(`Invalid app URL: ${t}`)}let h=(0,eA.getPort)(l);if(-1===h)throw Error(`Invalid app URL port: ${t}`);let f=await (0,F.localtunnel)({logger:u,apiToken:m,localHost:l.hostname,...i?{host:i}:{},port:h,localHttps:!1,allowInvalidCert:!1});if(u.debug("Creating test run"),!f.url||!f.basicAuthUser||!f.basicAuthPassword)throw Error("Either Tunnel URL, basic auth user or basic auth password were not set");null==n||n({url:f.url,basicAuthUser:f.basicAuthUser,basicAuthPassword:f.basicAuthPassword});let b=await (0,N.executeSecureTunnelTestRun)({client:g,headSha:a,tunnelUrl:f.url,basicAuthUser:f.basicAuthUser,basicAuthPassword:f.basicAuthPassword,environment:p});if(!b)throw Error("Test run was not created");null==o||o(b);let v=(0,W.defer)(),I=e=>{if("ExecutionError"===e.status&&(void 0===c||Date.now()-c<3e5)){void 0===c&&(c=Date.now(),u.info("Test run failed with execution error. Waiting for 300 seconds to see if it gets automatically retried..."));return}d&&clearInterval(d),r?r.then(()=>{f.close(),v.resolve(e)}):(f.close(),v.resolve(e))};return d=setInterval(async()=>{let e=await (0,N.getTestRun)({client:g,testRunId:b.id});if(null==s||s(e),N.IN_PROGRESS_TEST_RUN_STATUS.includes(e.status))void 0!==c&&(u.info(`Retrying test run... (status is now ${e.status})`),c=void 0);else{I(e);return}},5e3),{testRun:await v.promise}};k.executeRemoteTestRun=eG;var eS={},eB=i.resolve(__dirname,"../node_modules/@alwaysmeticulous/sentry/dist","index.js"),eZ=eS&&eS.__createBinding||(Object.create?function(e,t,a,i){void 0===i&&(i=a);var n=Object.getOwnPropertyDescriptor(t,a);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,i,n)}:function(e,t,a,i){void 0===i&&(i=a),e[i]=t[a]}),eT=eS&&eS.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),eE=eS&&eS.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&eZ(t,e,a);return eT(t,e),t};Object.defineProperty(eS,"__esModule",{value:!0}),eS.initSentry=eS.SENTRY_FLUSH_TIMEOUT=void 0;var W=T("3midM");const eR=eE(T("igDVI"));var eV=T("aDQYo"),eN=T("9rcfq"),eW=T("jfDa9"),ek=T("050Gq"),eH=T("deYUe"),eF=T("9GA7E"),eU=T("ios84"),eY=T("fd5do"),eO=T("k2ErF"),eX=T("2gq4F"),eD=T("5NAaM"),ek=T("050Gq"),eL=T("iD1up"),eO=T("k2ErF"),eD=T("5NAaM"),eK=T("gd055");const eJ=eK.GLOBAL_OBJ;var ez=T("goIvU"),eO=T("k2ErF"),eD=T("5NAaM");const ej=(e,t,a)=>{let i,n;return o=>{t.value>=0&&(o||a)&&((n=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=n,e(t))}},eP=()=>`v3-${Date.now()}-${Math.floor(Math.random()*(9e12-1))+1e12}`,eM=()=>{let e=eJ.performance.timing,t=eJ.performance.navigation.type,a={entryType:"navigation",startTime:0,type:2==t?"back_forward":1===t?"reload":"navigate"};for(let t in e)"navigationStart"!==t&&"toJSON"!==t&&(a[t]=Math.max(e[t]-e.navigationStart,0));return a},eQ=()=>eJ.__WEB_VITALS_POLYFILL__?eJ.performance&&(performance.getEntriesByType&&performance.getEntriesByType("navigation")[0]||eM()):eJ.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0],eq=()=>{let e=eQ();return e&&e.activationStart||0},e$=(e,t)=>{let a=eQ(),i="navigate";return a&&(i=eJ.document.prerendering||eq()>0?"prerender":a.type.replace(/_/g,"-")),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:eP(),navigationType:i}},e1=(e,t,a)=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){let i=new PerformanceObserver(e=>{t(e.getEntries())});return i.observe(Object.assign({type:e,buffered:!0},a||{})),i}}catch(e){}},e0=(e,t)=>{let a=i=>{("pagehide"===i.type||"hidden"===eJ.document.visibilityState)&&(e(i),t&&(removeEventListener("visibilitychange",a,!0),removeEventListener("pagehide",a,!0)))};addEventListener("visibilitychange",a,!0),addEventListener("pagehide",a,!0)};let e2=-1;const e4=()=>"hidden"!==eJ.document.visibilityState||eJ.document.prerendering?1/0:0,e9=()=>{e0(({timeStamp:e})=>{e2=e},!0)},e6=()=>(e2<0&&(e2=e4(),e9()),{get firstHiddenTime(){return e2}});let e3=0,e5=1/0,e8=0;const e7=e=>{e.forEach(e=>{e.interactionId&&(e5=Math.min(e5,e.interactionId),e3=(e8=Math.max(e8,e.interactionId))?(e8-e5)/7+1:0)})},te=()=>e?e3:performance.interactionCount||0,tt=()=>{"interactionCount"in performance||e||(e=e1("event",e7,{type:"event",buffered:!0,durationThreshold:0}))},ta=()=>te(),ti=[],tn={},to=e=>{let t=ti[ti.length-1],a=tn[e.interactionId];if(a||ti.length<10||e.duration>t.latency){if(a)a.entries.push(e),a.latency=Math.max(a.latency,e.duration);else{let t={id:e.interactionId,latency:e.duration,entries:[e]};tn[t.id]=t,ti.push(t)}ti.sort((e,t)=>t.latency-e.latency),ti.splice(10).forEach(e=>{delete tn[e.id]})}},ts=()=>{let e=Math.min(ti.length-1,Math.floor(ta()/50));return ti[e]},tr={},tp={};T("4i5AO");var ek=T("050Gq"),eH=T("deYUe"),tl=T("7z6ft"),td=(T("ibVDy"),T("fziSu"),T("7nqVO")),eL=T("iD1up"),tc=T("iYy7D"),eY=T("fd5do"),eO=T("k2ErF"),tu=T("6szME"),eD=T("5NAaM"),eH=T("deYUe"),tm=T("cCmfn"),tg=T("eCOpK"),tl=T("7z6ft"),eF=T("9GA7E"),th=T("b2ZPh"),eL=T("iD1up"),tf=T("3hDCQ"),tb=T("e4IUz"),eO=(T("aoHsm"),T("k2ErF")),eK=T("gd055");(0,eK.getGlobalObject)();var eK=T("gd055"),tv=T("hxO1L"),tI=T("jVURz"),tb=T("e4IUz"),eK=T("gd055"),tv=T("hxO1L");eK.GLOBAL_OBJ;var tC=T("hSiIl"),tc=T("iYy7D"),eX=T("2gq4F"),eH=(T("c6AFW"),T("deYUe")),tm=T("cCmfn"),tg=T("eCOpK"),tl=T("7z6ft"),eF=T("9GA7E"),th=T("b2ZPh"),eL=T("iD1up"),tf=T("3hDCQ"),tC=T("hSiIl"),eX=T("2gq4F"),tI=T("jVURz"),tb=T("e4IUz"),eK=(T("gd055"),T("gd055"));const ty=(0,eK.getGlobalObject)();var tv=T("hxO1L");const tx=eK.GLOBAL_OBJ;var tc=T("iYy7D"),eO=T("k2ErF"),eD=T("5NAaM");eU.TRACING_DEFAULTS;var tw=T("3SU1C"),ek=T("050Gq"),t_=T("2UNWp"),tl=T("7z6ft"),eU=T("ios84"),tA=T("5N1eW"),tG=T("kEOfe"),tS=T("k9pSf"),tB=T("cWSR5"),td=T("7nqVO"),th=T("b2ZPh"),eW=T("jfDa9"),tu=T("6szME"),eX=T("2gq4F"),tZ=T("6aON8");const tT=eV.addExtensionMethods;ek.getActiveTransaction,ek.extractTraceparentData,th.spanStatusfromHttpCode,tZ.Transaction,td.Span,tl.hasTracingEnabled,tu.stripUrlQueryAndFragment,eX.TRACEPARENT_REGEXP,eU.IdleTransaction,eW.startIdleTransaction,th.SpanStatus,eN.Apollo,tw.Express,t_.GraphQL,tA.Mongo,tG.Mysql,tS.Postgres,tB.Prisma,("undefined"==typeof __SENTRY_TRACING__||__SENTRY_TRACING__)&&(0,eV.addExtensionMethods)(),T("endj4");var tE=T("lrbwi");eS.SENTRY_FLUSH_TIMEOUT=tE.default.fromObject({seconds:1});const tR=()=>{var e;return parseFloat(null!==(e=process.env.METICULOUS_TELEMETRY_SAMPLE_RATE)&&void 0!==e?e:"1.0")},tV=async(e,t)=>(eR.init({dsn:"https://10c6a6c9f5434786b37fb81b01323798@o914390.ingest.sentry.io/6435232",release:e,tracesSampleRate:null!=t?t:tR(),environment:eB.endsWith(".ts")||W.IS_METICULOUS_SUPER_USER?"development":"production"}),tT(),eR.getCurrentHub());eS.initSentry=tV;var tN=T("7SZkG");T("endj4");var tE=T("lrbwi"),tW={};tW=T("95REl");const tk=async e=>{let t=tW.operation({retries:7,factor:2,minTimeout:1e3}),a=new URL(e);return new Promise((i,n)=>{t.attempt(async()=>{if(await tH(a)){i();return}let o=Error(`Could not connect to '${e}'. Please check:
+ */e.exports=tj("6Q4OC")}),tK("6Q4OC",function(e,t){e.exports=JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}')}),tK("9zLvH",function(e,t){e.exports={parallel:tj("coioH"),serial:tj("dTyEz"),serialOrdered:tj("a1LZm")}}),tK("coioH",function(e,t){var a=tj("4TY9Y"),i=tj("4aWoJ"),s=tj("atNLY");e.exports=function(e,t,n){for(var r=i(e);r.index<(r.keyedList||e).length;)a(e,t,r,function(e,t){if(e){n(e,t);return}if(0===Object.keys(r.jobs).length){n(null,r.results);return}}),r.index++;return s.bind(r,n)}}),tK("4TY9Y",function(e,t){var a=tj("3ACfO"),i=tj("7hIFj");e.exports=function(e,t,s,n){var r,o,l=s.keyedList?s.keyedList[s.index]:s.index;s.jobs[l]=(r=e[l],o=function(e,t){l in s.jobs&&(delete s.jobs[l],e?i(s):s.results[l]=t,n(e,s.results))},2==t.length?t(r,a(o)):t(r,l,a(o)))}}),tK("3ACfO",function(e,t){var a=tj("8qRfa");e.exports=function(e){var t=!1;return a(function(){t=!0}),function(i,s){t?e(i,s):a(function(){e(i,s)})}}}),tK("8qRfa",function(e,t){e.exports=function(e){var t="function"==typeof setImmediate?setImmediate:"object"==typeof process&&"function"==typeof process.nextTick?process.nextTick:null;t?t(e):setTimeout(e,0)}}),tK("7hIFj",function(e,t){e.exports=function(e){Object.keys(e.jobs).forEach(a.bind(e)),e.jobs={}};function a(e){"function"==typeof this.jobs[e]&&this.jobs[e]()}}),tK("4aWoJ",function(e,t){e.exports=function(e,t){var a=!Array.isArray(e),i={index:0,keyedList:a||t?Object.keys(e):null,jobs:{},results:a?{}:[],size:a?Object.keys(e).length:e.length};return t&&i.keyedList.sort(a?t:function(a,i){return t(e[a],e[i])}),i}}),tK("atNLY",function(e,t){var a=tj("7hIFj"),i=tj("3ACfO");e.exports=function(e){Object.keys(this.jobs).length&&(this.index=this.size,a(this),i(e)(null,this.results))}}),tK("dTyEz",function(e,t){var a=tj("a1LZm");e.exports=function(e,t,i){return a(e,t,null,i)}}),tK("a1LZm",function(e,t){var a=tj("4TY9Y"),i=tj("4aWoJ"),s=tj("atNLY");function n(e,t){return et?1:0}e.exports=function(e,t,n,r){var o=i(e,n);return a(e,t,o,function i(s,n){if(s){r(s,n);return}if(o.index++,o.index<(o.keyedList||e).length){a(e,t,o,i);return}r(null,o.results)}),s.bind(o,r)},e.exports.ascending=n,e.exports.descending=function(e,t){return -1*n(e,t)}}),tK("5TE99",function(e,t){e.exports=function(e,t){return Object.keys(t).forEach(function(a){e[a]=e[a]||t[a]}),e}}),tK("iUabZ",function(e,t){tF(e.exports,"default",()=>i);var a=tj("68mdu"),i=class{constructor(){this.handlers=[]}use(e,t,a){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!a&&a.synchronous,runWhen:a?a.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){(0,a.default).forEach(this.handlers,function(t){null!==t&&e(t)})}}}),tK("3lZxV",function(e,t){tF(e.exports,"default",()=>p);var a=tj("dV3PX"),i=tj("5Jxas"),s=tj("Jl4EK"),n=tj("bECa5"),r=tj("cqy56"),o=tj("7Sagp");function l(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new n.default(null,e)}function p(e){return l(e),e.headers=(0,r.default).from(e.headers),e.data=(0,a.default).call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),(0,o.default).getAdapter(e.adapter||s.default.adapter)(e).then(function(t){return l(e),t.data=(0,a.default).call(e,e.transformResponse,t),t.headers=(0,r.default).from(t.headers),t},function(t){return!(0,i.default)(t)&&(l(e),t&&t.response&&(t.response.data=(0,a.default).call(e,e.transformResponse,t.response),t.response.headers=(0,r.default).from(t.response.headers))),Promise.reject(t)})}}),tK("dV3PX",function(e,t){tF(e.exports,"default",()=>n);var a=tj("68mdu"),i=tj("Jl4EK"),s=tj("cqy56");function n(e,t){let n=this||i.default,r=t||n,o=(0,s.default).from(r.headers),l=r.data;return(0,a.default).forEach(e,function(e){l=e.call(n,l,o.normalize(),t?t.status:void 0)}),o.normalize(),l}}),tK("Jl4EK",function(e,t){tF(e.exports,"default",()=>d);var a=tj("68mdu"),i=tj("0PEoX"),s=tj("hXgNz"),n=tj("jnrIy"),r=tj("8J3GS"),o=tj("6owpX"),l=tj("hU6WE");let p={transitional:s.default,adapter:["xhr","http"],transformRequest:[function(e,t){let i;let s=t.getContentType()||"",o=s.indexOf("application/json")>-1,p=(0,a.default).isObject(e);if(p&&(0,a.default).isHTMLForm(e)&&(e=new FormData(e)),(0,a.default).isFormData(e))return o&&o?JSON.stringify((0,l.default)(e)):e;if((0,a.default).isArrayBuffer(e)||(0,a.default).isBuffer(e)||(0,a.default).isStream(e)||(0,a.default).isFile(e)||(0,a.default).isBlob(e))return e;if((0,a.default).isArrayBufferView(e))return e.buffer;if((0,a.default).isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(p){if(s.indexOf("application/x-www-form-urlencoded")>-1)return(0,r.default)(e,this.formSerializer).toString();if((i=(0,a.default).isFileList(e))||s.indexOf("multipart/form-data")>-1){let t=this.env&&this.env.FormData;return(0,n.default)(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return p||o?(t.setContentType("application/json",!1),function(e,t,i){if((0,a.default).isString(e))try{return(0,JSON.parse)(e),(0,a.default).trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){let t=this.transitional||p.transitional,s=t&&t.forcedJSONParsing,n="json"===this.responseType;if(e&&(0,a.default).isString(e)&&(s&&!this.responseType||n)){let a=t&&t.silentJSONParsing;try{return JSON.parse(e)}catch(e){if(!a&&n){if("SyntaxError"===e.name)throw(0,i.default).from(e,i.default.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:o.default.classes.FormData,Blob:o.default.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};(0,a.default).forEach(["delete","get","head","post","put","patch"],e=>{p.headers[e]={}});var d=p}),tK("hXgNz",function(e,t){tF(e.exports,"default",()=>a);var a={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1}}),tK("8J3GS",function(e,t){tF(e.exports,"default",()=>n);var a=tj("68mdu"),i=tj("jnrIy"),s=tj("6owpX");function n(e,t){return(0,i.default)(e,new s.default.classes.URLSearchParams,Object.assign({visitor:function(e,t,i,n){return s.default.isNode&&(0,a.default).isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}}),tK("6owpX",function(e,t){tF(e.exports,"default",()=>i);var a=tj("guyjw"),i={...tj("giXfk"),...a.default}}),tK("guyjw",function(e,t){tF(e.exports,"default",()=>s);var a=tj("iGA0c"),i=tj("9OsAU"),s={isNode:!0,classes:{URLSearchParams:a.default,FormData:i.default,Blob:"undefined"!=typeof Blob&&Blob||null},protocols:["http","https","file","data"]}}),tK("iGA0c",function(e,t){tF(e.exports,"default",()=>a);var a=tU(tR).URLSearchParams}),tK("giXfk",function(e,t){let a;tF(e.exports,"hasBrowserEnv",()=>i),tF(e.exports,"hasStandardBrowserEnv",()=>s),tF(e.exports,"hasStandardBrowserWebWorkerEnv",()=>n);let i="undefined"!=typeof window&&"undefined"!=typeof document,s=(a="undefined"!=typeof navigator&&navigator.product,i&&0>["ReactNative","NativeScript","NS"].indexOf(a)),n="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts}),tK("hU6WE",function(e,t){tF(e.exports,"default",()=>i);var a=tj("68mdu"),i=function(e){if((0,a.default).isFormData(e)&&(0,a.default).isFunction(e.entries)){let t={};return(0,a.default).forEachEntry(e,(e,i)=>{!function e(t,i,s,n){let r=t[n++],o=Number.isFinite(+r),l=n>=t.length;return(r=!r&&(0,a.default).isArray(s)?s.length:r,l)?(0,a.default).hasOwnProp(s,r)?s[r]=[s[r],i]:s[r]=i:(s[r]&&(0,a.default).isObject(s[r])||(s[r]=[]),e(t,i,s[r],n)&&(0,a.default).isArray(s[r])&&(s[r]=function(e){let t,a;let i={},s=Object.keys(e),n=s.length;for(t=0;t"[]"===e[0]?"":e[1]||e[0]),i,t,0)}),t}return null}}),tK("cqy56",function(e,t){tF(e.exports,"default",()=>d);var a=tj("68mdu"),i=tj("ch0WQ");let s=Symbol("internals");function n(e){return e&&String(e).trim().toLowerCase()}function r(e){return!1===e||null==e?e:(0,a.default).isArray(e)?e.map(r):String(e)}let o=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function l(e,t,i,s,n){if((0,a.default).isFunction(s))return s.call(this,t,i);if(n&&(t=i),(0,a.default).isString(t)){if((0,a.default).isString(s))return -1!==t.indexOf(s);if((0,a.default).isRegExp(s))return s.test(t)}}class p{constructor(e){e&&this.set(e)}set(e,t,s){let l=this;function p(e,t,i){let s=n(t);if(!s)throw Error("header name must be a non-empty string");let o=(0,a.default).findKey(l,s);o&&void 0!==l[o]&&!0!==i&&(void 0!==i||!1===l[o])||(l[o||t]=r(e))}let d=(e,t)=>(0,a.default).forEach(e,(e,a)=>p(e,a,t));return(0,a.default).isPlainObject(e)||e instanceof this.constructor?d(e,t):(0,a.default).isString(e)&&(e=e.trim())&&!o(e)?d((0,i.default)(e),t):null!=e&&p(t,e,s),this}get(e,t){if(e=n(e)){let i=(0,a.default).findKey(this,e);if(i){let e=this[i];if(!t)return e;if(!0===t)return function(e){let t;let a=Object.create(null),i=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;for(;t=i.exec(e);)a[t[1]]=t[2];return a}(e);if((0,a.default).isFunction(t))return t.call(this,e,i);if((0,a.default).isRegExp(t))return t.exec(e);throw TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=n(e)){let i=(0,a.default).findKey(this,e);return!!(i&&void 0!==this[i]&&(!t||l(this,this[i],i,t)))}return!1}delete(e,t){let i=this,s=!1;function r(e){if(e=n(e)){let n=(0,a.default).findKey(i,e);n&&(!t||l(i,i[n],n,t))&&(delete i[n],s=!0)}}return(0,a.default).isArray(e)?e.forEach(r):r(e),s}clear(e){let t=Object.keys(this),a=t.length,i=!1;for(;a--;){let s=t[a];(!e||l(this,this[s],s,e,!0))&&(delete this[s],i=!0)}return i}normalize(e){let t=this,i={};return(0,a.default).forEach(this,(s,n)=>{let o=(0,a.default).findKey(i,n);if(o){t[o]=r(s),delete t[n];return}let l=e?n.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,a)=>t.toUpperCase()+a):String(n).trim();l!==n&&delete t[n],t[l]=r(s),i[l]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){let t=Object.create(null);return(0,a.default).forEach(this,(i,s)=>{null!=i&&!1!==i&&(t[s]=e&&(0,a.default).isArray(i)?i.join(", "):i)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){let a=new this(e);return t.forEach(e=>a.set(e)),a}static accessor(e){let t=(this[s]=this[s]={accessors:{}}).accessors,i=this.prototype;function r(e){let s=n(e);t[s]||(function(e,t){let i=(0,a.default).toCamelCase(" "+t);["get","set","has"].forEach(a=>{Object.defineProperty(e,a+i,{value:function(e,i,s){return this[a].call(this,t,e,i,s)},configurable:!0})})}(i,e),t[s]=!0)}return(0,a.default).isArray(e)?e.forEach(r):r(e),this}}p.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),(0,a.default).reduceDescriptors(p.prototype,({value:e},t)=>{let a=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[a]=e}}}),(0,a.default).freezeMethods(p);var d=p}),tK("ch0WQ",function(e,t){tF(e.exports,"default",()=>i);let a=(0,tj("68mdu").default).toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);var i=e=>{let t,i,s;let n={};return e&&e.split("\n").forEach(function(e){s=e.indexOf(":"),t=e.substring(0,s).trim().toLowerCase(),i=e.substring(s+1).trim(),!t||n[t]&&a[t]||("set-cookie"===t?n[t]?n[t].push(i):n[t]=[i]:n[t]=n[t]?n[t]+", "+i:i)}),n}}),tK("5Jxas",function(e,t){tF(e.exports,"default",()=>a);function a(e){return!!(e&&e.__CANCEL__)}}),tK("bECa5",function(e,t){tF(e.exports,"default",()=>s);var a=tj("0PEoX");function i(e,t,i){(0,a.default).call(this,null==e?"canceled":e,a.default.ERR_CANCELED,t,i),this.name="CanceledError"}(0,tj("68mdu").default).inherits(i,a.default,{__CANCEL__:!0});var s=i}),tK("7Sagp",function(e,t){tF(e.exports,"default",()=>p);var a=tj("68mdu"),i=tj("1U23q"),s=tj("d7Pkb"),n=tj("0PEoX");let r={http:i.default,xhr:s.default};(0,a.default).forEach(r,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}});let o=e=>`- ${e}`,l=e=>(0,a.default).isFunction(e)||null===e||!1===e;var p={getAdapter:e=>{let t,i;let{length:s}=e=(0,a.default).isArray(e)?e:[e],p={};for(let a=0;a`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")),t=s?e.length>1?"since :\n"+e.map(o).join("\n"):" "+o(e[0]):"as no adapter specified";throw new n.default("There is no suitable adapter to dispatch the request "+t,"ERR_NOT_SUPPORT")}return i},adapters:r}}),tK("1U23q",function(e,t){tF(e.exports,"default",()=>Z);var a=tj("68mdu"),i=tj("7VkCi"),s=tj("39JXn"),n=tj("brZco"),r=tj("9pSG8"),o=tj("lSkuc"),l=tj("6D1pE"),p=tj("hXgNz"),d=tj("0PEoX"),c=tj("bECa5"),u=tj("6owpX"),m=tj("2p1c3"),g=tj("cqy56"),h=tj("i8duE"),f=tj("l1kot"),b=tj("fpGkp"),v=tj("5s0pm"),y=tj("eJIcs");let I={flush:tU(tZ).constants.Z_SYNC_FLUSH,finishFlush:tU(tZ).constants.Z_SYNC_FLUSH},C={flush:tU(tZ).constants.BROTLI_OPERATION_FLUSH,finishFlush:tU(tZ).constants.BROTLI_OPERATION_FLUSH},x=(0,a.default).isFunction(tU(tZ).createBrotliDecompress),{http:w,https:_}=tU(o),A=/https:?/,S=(0,u.default).protocols.map(e=>e+":");function E(e){e.beforeRedirects.proxy&&e.beforeRedirects.proxy(e),e.beforeRedirects.config&&e.beforeRedirects.config(e)}let G="undefined"!=typeof process&&"process"===(0,a.default).kindOf(process),B=e=>new Promise((t,a)=>{let i,s;let n=(e,t)=>{!s&&(s=!0,i&&i(e,t))},r=e=>{n(e,!0),a(e)};e(e=>{n(e),t(e)},r,e=>i=e).catch(r)}),T=({address:e,family:t})=>{if(!(0,a.default).isString(e))throw TypeError("address must be a string");return{address:e,family:t||(0>e.indexOf(".")?6:4)}},R=(e,t)=>T((0,a.default).isObject(e)?e:{address:e,family:t});var Z=G&&function(e){return B(async function(t,o,u){let G,B,T,Z,N,k,V,{data:W,lookup:O,family:H}=e,{responseType:F,responseEncoding:U}=e,L=e.method.toUpperCase(),D=!1;if(O){let e=(0,y.default)(O,e=>(0,a.default).isArray(e)?e:[e]);O=(t,i,s)=>{e(t,i,(e,t,n)=>{let r=(0,a.default).isArray(t)?t.map(e=>R(e)):[R(t,n)];i.all?s(e,r):s(e,r[0].address,r[0].family)})}}let Y=new(tU(tA)),X=()=>{e.cancelToken&&e.cancelToken.unsubscribe(j),e.signal&&e.signal.removeEventListener("abort",j),Y.removeAllListeners()};function j(t){Y.emit("abort",!t||t.type?new c.default(null,e,N):t)}u((e,t)=>{Z=!0,t&&(D=!0,X())}),Y.once("abort",o),(e.cancelToken||e.signal)&&(e.cancelToken&&e.cancelToken.subscribe(j),e.signal&&(e.signal.aborted?j():e.signal.addEventListener("abort",j)));let K=new URL((0,s.default)(e.baseURL,e.url),"http://localhost"),P=K.protocol||S[0];if("data:"===P){let s;if("GET"!==L)return(0,i.default)(t,o,{status:405,statusText:"method not allowed",headers:{},config:e});try{s=(0,m.default)(e.url,"blob"===F,{Blob:e.env&&e.env.Blob})}catch(t){throw(0,d.default).from(t,d.default.ERR_BAD_REQUEST,e)}return"text"===F?(s=s.toString(U),U&&"utf8"!==U||(s=(0,a.default).stripBOM(s))):"stream"===F&&(s=tU(tT).Readable.from(s)),(0,i.default)(t,o,{data:s,status:200,statusText:"OK",headers:new g.default,config:e})}if(-1===S.indexOf(P))return o(new d.default("Unsupported protocol "+P,d.default.ERR_BAD_REQUEST,e));let M=(0,g.default).from(e.headers).normalize();M.set("User-Agent","axios/"+l.VERSION,!1);let J=e.onDownloadProgress,z=e.onUploadProgress,$=e.maxRate;if((0,a.default).isSpecCompliantForm(W)){let e=M.getContentType(/boundary=([-_\w\d]{10,70})/i);W=(0,f.default)(W,e=>{M.set(e)},{tag:`axios-${l.VERSION}-boundary`,boundary:e&&e[1]||void 0})}else if((0,a.default).isFormData(W)&&(0,a.default).isFunction(W.getHeaders)){if(M.set(W.getHeaders()),!M.hasContentLength())try{let e=await tU(tE).promisify(W.getLength).call(W);Number.isFinite(e)&&e>=0&&M.setContentLength(e)}catch(e){}}else if((0,a.default).isBlob(W))W.size&&M.setContentType(W.type||"application/octet-stream"),M.setContentLength(W.size||0),W=tU(tT).Readable.from((0,b.default)(W));else if(W&&!(0,a.default).isStream(W)){if(Buffer.isBuffer(W));else if((0,a.default).isArrayBuffer(W))W=Buffer.from(new Uint8Array(W));else{if(!(0,a.default).isString(W))return o(new d.default("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",d.default.ERR_BAD_REQUEST,e));W=Buffer.from(W,"utf-8")}if(M.setContentLength(W.length,!1),e.maxBodyLength>-1&&W.length>e.maxBodyLength)return o(new d.default("Request body larger than maxBodyLength limit",d.default.ERR_BAD_REQUEST,e))}let q=(0,a.default).toFiniteNumber(M.getContentLength());(0,a.default).isArray($)?(G=$[0],B=$[1]):G=B=$,W&&(z||G)&&((0,a.default).isStream(W)||(W=tU(tT).Readable.from(W,{objectMode:!1})),W=tU(tT).pipeline([W,new h.default({length:q,maxRate:(0,a.default).toFiniteNumber(G)})],a.default.noop),z&&W.on("progress",e=>{z(Object.assign(e,{upload:!0}))})),e.auth&&(T=(e.auth.username||"")+":"+(e.auth.password||"")),!T&&K.username&&(T=K.username+":"+K.password),T&&M.delete("authorization");try{k=(0,n.default)(K.pathname+K.search,e.params,e.paramsSerializer).replace(/^\?/,"")}catch(a){let t=Error(a.message);return t.config=e,t.url=e.url,t.exists=!0,o(t)}M.set("Accept-Encoding","gzip, compress, deflate"+(x?", br":""),!1);let Q={path:k,method:L,headers:M.toJSON(),agents:{http:e.httpAgent,https:e.httpsAgent},auth:T,protocol:P,family:H,beforeRedirect:E,beforeRedirects:{}};(0,a.default).isUndefined(O)||(Q.lookup=O),e.socketPath?Q.socketPath=e.socketPath:(Q.hostname=K.hostname,Q.port=K.port,function e(t,a,i){let s=a;if(!s&&!1!==s){let e=(0,r.getProxyForUrl)(i);e&&(s=new URL(e))}if(s){if(s.username&&(s.auth=(s.username||"")+":"+(s.password||"")),s.auth){(s.auth.username||s.auth.password)&&(s.auth=(s.auth.username||"")+":"+(s.auth.password||""));let e=Buffer.from(s.auth,"utf8").toString("base64");t.headers["Proxy-Authorization"]="Basic "+e}t.headers.host=t.hostname+(t.port?":"+t.port:"");let e=s.hostname||s.host;t.hostname=e,t.host=e,t.port=s.port,t.path=i,s.protocol&&(t.protocol=s.protocol.includes(":")?s.protocol:`${s.protocol}:`)}t.beforeRedirects.proxy=function(t){e(t,a,t.href)}}(Q,e.proxy,P+"//"+K.hostname+(K.port?":"+K.port:"")+Q.path));let ee=A.test(Q.protocol);if(Q.agent=ee?e.httpsAgent:e.httpAgent,e.transport?V=e.transport:0===e.maxRedirects?V=ee?tU(tx):tU(tC):(e.maxRedirects&&(Q.maxRedirects=e.maxRedirects),e.beforeRedirect&&(Q.beforeRedirects.config=e.beforeRedirect),V=ee?_:w),e.maxBodyLength>-1?Q.maxBodyLength=e.maxBodyLength:Q.maxBodyLength=1/0,e.insecureHTTPParser&&(Q.insecureHTTPParser=e.insecureHTTPParser),N=V.request(Q,function(s){if(N.destroyed)return;let n=[s],r=+s.headers["content-length"];if(J){let e=new h.default({length:(0,a.default).toFiniteNumber(r),maxRate:(0,a.default).toFiniteNumber(B)});J&&e.on("progress",e=>{J(Object.assign(e,{download:!0}))}),n.push(e)}let l=s,p=s.req||N;if(!1!==e.decompress&&s.headers["content-encoding"])switch(("HEAD"===L||204===s.statusCode)&&delete s.headers["content-encoding"],(s.headers["content-encoding"]||"").toLowerCase()){case"gzip":case"x-gzip":case"compress":case"x-compress":n.push(tU(tZ).createUnzip(I)),delete s.headers["content-encoding"];break;case"deflate":n.push(new v.default),n.push(tU(tZ).createUnzip(I)),delete s.headers["content-encoding"];break;case"br":x&&(n.push(tU(tZ).createBrotliDecompress(C)),delete s.headers["content-encoding"])}l=n.length>1?tU(tT).pipeline(n,a.default.noop):n[0];let c=tU(tT).finished(l,()=>{c(),X()}),u={status:s.statusCode,statusText:s.statusMessage,headers:new g.default(s.headers),config:e,request:p};if("stream"===F)u.data=l,(0,i.default)(t,o,u);else{let s=[],n=0;l.on("data",function(t){s.push(t),n+=t.length,e.maxContentLength>-1&&n>e.maxContentLength&&(D=!0,l.destroy(),o(new d.default("maxContentLength size of "+e.maxContentLength+" exceeded",d.default.ERR_BAD_RESPONSE,e,p)))}),l.on("aborted",function(){if(D)return;let t=new d.default("maxContentLength size of "+e.maxContentLength+" exceeded",d.default.ERR_BAD_RESPONSE,e,p);l.destroy(t),o(t)}),l.on("error",function(t){N.destroyed||o((0,d.default).from(t,null,e,p))}),l.on("end",function(){try{let e=1===s.length?s[0]:Buffer.concat(s);"arraybuffer"===F||(e=e.toString(U),U&&"utf8"!==U||(e=(0,a.default).stripBOM(e))),u.data=e}catch(t){return o((0,d.default).from(t,null,e,u.request,u))}(0,i.default)(t,o,u)})}Y.once("abort",e=>{l.destroyed||(l.emit("error",e),l.destroy())})}),Y.once("abort",e=>{o(e),N.destroy(e)}),N.on("error",function(t){o((0,d.default).from(t,null,e,N))}),N.on("socket",function(e){e.setKeepAlive(!0,6e4)}),e.timeout){let t=parseInt(e.timeout,10);if(Number.isNaN(t)){o(new d.default("error trying to parse `config.timeout` to int",d.default.ERR_BAD_OPTION_VALUE,e,N));return}N.setTimeout(t,function(){if(Z)return;let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",a=e.transitional||p.default;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),o(new d.default(t,a.clarifyTimeoutError?d.default.ETIMEDOUT:d.default.ECONNABORTED,e,N)),j()})}if((0,a.default).isStream(W)){let t=!1,a=!1;W.on("end",()=>{t=!0}),W.once("error",e=>{a=!0,N.destroy(e)}),W.on("close",()=>{t||a||j(new c.default("Request stream has been aborted",e,N))}),W.pipe(N)}else N.end(W)})}}),tK("7VkCi",function(e,t){tF(e.exports,"default",()=>i);var a=tj("0PEoX");function i(e,t,i){let s=i.config.validateStatus;!i.status||!s||s(i.status)?e(i):t(new a.default("Request failed with status code "+i.status,[a.default.ERR_BAD_REQUEST,a.default.ERR_BAD_RESPONSE][Math.floor(i.status/100)-4],i.config,i.request,i))}}),tK("39JXn",function(e,t){tF(e.exports,"default",()=>s);var a=tj("9erRz"),i=tj("fLXz9");function s(e,t){return e&&!(0,a.default)(t)?(0,i.default)(e,t):t}}),tK("9erRz",function(e,t){tF(e.exports,"default",()=>a);function a(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}}),tK("fLXz9",function(e,t){tF(e.exports,"default",()=>a);function a(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}}),tK("9pSG8",function(e,t){tF(e.exports,"getProxyForUrl",()=>a,e=>a=e);var a,i=tR.parse,s={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443},n=String.prototype.endsWith||function(e){return e.length<=this.length&&-1!==this.indexOf(e,this.length-e.length)};function r(e){return process.env[e.toLowerCase()]||process.env[e.toUpperCase()]||""}a=function(e){var t,a,o,l="string"==typeof e?i(e):e||{},p=l.protocol,d=l.host,c=l.port;if("string"!=typeof d||!d||"string"!=typeof p||(p=p.split(":",1)[0],t=d=d.replace(/:\d*$/,""),a=c=parseInt(c)||s[p]||0,!(!(o=(r("npm_config_no_proxy")||r("no_proxy")).toLowerCase())||"*"!==o&&o.split(/[,\s]/).every(function(e){if(!e)return!0;var i=e.match(/^(.+):(\d+)$/),s=i?i[1]:e,r=i?parseInt(i[2]):0;return!!r&&r!==a||(/^[.*]/.test(s)?("*"===s.charAt(0)&&(s=s.slice(1)),!n.call(t,s)):t!==s)}))))return"";var u=r("npm_config_"+p+"_proxy")||r(p+"_proxy")||r("npm_config_proxy")||r("all_proxy");return u&&-1===u.indexOf("://")&&(u=p+"://"+u),u}}),tK("lSkuc",function(e,t){var a=tR.URL,i=tT.Writable,s=tj("gnxgU"),n=!1;try{tS(new a)}catch(e){n="ERR_INVALID_URL"===e.code}var r=["auth","host","hostname","href","path","pathname","port","protocol","query","search","hash"],o=["abort","aborted","connect","error","socket","timeout"],l=Object.create(null);o.forEach(function(e){l[e]=function(t,a,i){this._redirectable.emit(e,t,a,i)}});var p=x("ERR_INVALID_URL","Invalid URL",TypeError),d=x("ERR_FR_REDIRECTION_FAILURE","Redirected request failed"),c=x("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded",d),u=x("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit"),m=x("ERR_STREAM_WRITE_AFTER_END","write after end"),g=i.prototype.destroy||b;function h(e,t){i.call(this),this._sanitizeOptions(e),this._options=e,this._ended=!1,this._ending=!1,this._redirectCount=0,this._redirects=[],this._requestBodyLength=0,this._requestBodyBuffers=[],t&&this.on("response",t);var a=this;this._onNativeResponse=function(e){try{a._processResponse(e)}catch(e){a.emit("error",e instanceof d?e:new d({cause:e}))}},this._performRequest()}function f(e){var t={maxRedirects:21,maxBodyLength:10485760},i={};return Object.keys(e).forEach(function(n){var r=n+":",o=i[r]=e[n],l=t[n]=Object.create(o);Object.defineProperties(l,{request:{value:function(e,n,o){var l;return(l=e,a&&l instanceof a)?e=I(e):_(e)?e=I(v(e)):(o=n,n=y(e),e={protocol:r}),A(n)&&(o=n,n=null),(n=Object.assign({maxRedirects:t.maxRedirects,maxBodyLength:t.maxBodyLength},e,n)).nativeProtocols=i,_(n.host)||_(n.hostname)||(n.hostname="::1"),tS.equal(n.protocol,r,"protocol mismatch"),s("options",n),new h(n,o)},configurable:!0,enumerable:!0,writable:!0},get:{value:function(e,t,a){var i=l.request(e,t,a);return i.end(),i},configurable:!0,enumerable:!0,writable:!0}})}),t}function b(){}function v(e){var t;if(n)t=new a(e);else if(!_((t=y(tR.parse(e))).protocol))throw new p({input:e});return t}function y(e){if(/^\[/.test(e.hostname)&&!/^\[[:0-9a-f]+\]$/i.test(e.hostname)||/^\[/.test(e.host)&&!/^\[[:0-9a-f]+\](:\d+)?$/i.test(e.host))throw new p({input:e.href||e});return e}function I(e,t){var a=t||{};for(var i of r)a[i]=e[i];return a.hostname.startsWith("[")&&(a.hostname=a.hostname.slice(1,-1)),""!==a.port&&(a.port=Number(a.port)),a.path=a.search?a.pathname+a.search:a.pathname,a}function C(e,t){var a;for(var i in t)e.test(i)&&(a=t[i],delete t[i]);return null==a?void 0:String(a).trim()}function x(e,t,a){function i(a){Error.captureStackTrace(this,this.constructor),Object.assign(this,a||{}),this.code=e,this.message=this.cause?t+": "+this.cause.message:t}return i.prototype=new(a||Error),Object.defineProperties(i.prototype,{constructor:{value:i,enumerable:!1},name:{value:"Error ["+e+"]",enumerable:!1}}),i}function w(e,t){for(var a of o)e.removeListener(a,l[a]);e.on("error",b),e.destroy(t)}function _(e){return"string"==typeof e||e instanceof String}function A(e){return"function"==typeof e}h.prototype=Object.create(i.prototype),h.prototype.abort=function(){w(this._currentRequest),this._currentRequest.abort(),this.emit("abort")},h.prototype.destroy=function(e){return w(this._currentRequest,e),g.call(this,e),this},h.prototype.write=function(e,t,a){if(this._ending)throw new m;if(!_(e)&&!("object"==typeof e&&"length"in e))throw TypeError("data should be a string, Buffer or Uint8Array");if(A(t)&&(a=t,t=null),0===e.length){a&&a();return}this._requestBodyLength+e.length<=this._options.maxBodyLength?(this._requestBodyLength+=e.length,this._requestBodyBuffers.push({data:e,encoding:t}),this._currentRequest.write(e,t,a)):(this.emit("error",new u),this.abort())},h.prototype.end=function(e,t,a){if(A(e)?(a=e,e=t=null):A(t)&&(a=t,t=null),e){var i=this,s=this._currentRequest;this.write(e,t,function(){i._ended=!0,s.end(null,null,a)}),this._ending=!0}else this._ended=this._ending=!0,this._currentRequest.end(null,null,a)},h.prototype.setHeader=function(e,t){this._options.headers[e]=t,this._currentRequest.setHeader(e,t)},h.prototype.removeHeader=function(e){delete this._options.headers[e],this._currentRequest.removeHeader(e)},h.prototype.setTimeout=function(e,t){var a=this;function i(t){t.setTimeout(e),t.removeListener("timeout",t.destroy),t.addListener("timeout",t.destroy)}function s(t){a._timeout&&clearTimeout(a._timeout),a._timeout=setTimeout(function(){a.emit("timeout"),n()},e),i(t)}function n(){a._timeout&&(clearTimeout(a._timeout),a._timeout=null),a.removeListener("abort",n),a.removeListener("error",n),a.removeListener("response",n),a.removeListener("close",n),t&&a.removeListener("timeout",t),a.socket||a._currentRequest.removeListener("socket",s)}return t&&this.on("timeout",t),this.socket?s(this.socket):this._currentRequest.once("socket",s),this.on("socket",i),this.on("abort",n),this.on("error",n),this.on("response",n),this.on("close",n),this},["flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach(function(e){h.prototype[e]=function(t,a){return this._currentRequest[e](t,a)}}),["aborted","connection","socket"].forEach(function(e){Object.defineProperty(h.prototype,e,{get:function(){return this._currentRequest[e]}})}),h.prototype._sanitizeOptions=function(e){if(e.headers||(e.headers={}),e.host&&(e.hostname||(e.hostname=e.host),delete e.host),!e.pathname&&e.path){var t=e.path.indexOf("?");t<0?e.pathname=e.path:(e.pathname=e.path.substring(0,t),e.search=e.path.substring(t))}},h.prototype._performRequest=function(){var e=this._options.protocol,t=this._options.nativeProtocols[e];if(!t)throw TypeError("Unsupported protocol "+e);if(this._options.agents){var a=e.slice(0,-1);this._options.agent=this._options.agents[a]}var i=this._currentRequest=t.request(this._options,this._onNativeResponse);for(var s of(i._redirectable=this,o))i.on(s,l[s]);if(this._currentUrl=/^\//.test(this._options.path)?tR.format(this._options):this._options.path,this._isRedirect){var n=0,r=this,p=this._requestBodyBuffers;!function e(t){if(i===r._currentRequest){if(t)r.emit("error",t);else if(n=400){e.responseUrl=this._currentUrl,e.redirects=this._redirects,this.emit("response",e),this._requestBodyBuffers=[];return}if(w(this._currentRequest),e.destroy(),++this._redirectCount>this._options.maxRedirects)throw new c;var p=this._options.beforeRedirect;p&&(r=Object.assign({Host:e.req.getHeader("host")},this._options.headers));var d=this._options.method;(301!==o&&302!==o||"POST"!==this._options.method)&&(303!==o||/^(?:GET|HEAD)$/.test(this._options.method))||(this._options.method="GET",this._requestBodyBuffers=[],C(/^content-/i,this._options.headers));var u=C(/^host$/i,this._options.headers),m=v(this._currentUrl),g=u||m.host,h=/^\w+:/.test(l)?this._currentUrl:tR.format(Object.assign(m,{host:g})),f=n?new a(l,h):v(tR.resolve(h,l));if(s("redirecting to",f.href),this._isRedirect=!0,I(f,this._options),(f.protocol===m.protocol||"https:"===f.protocol)&&(f.host===g||(tS(_(t=f.host)&&_(g)),(i=t.length-g.length-1)>0&&"."===t[i]&&t.endsWith(g)))||C(/^(?:(?:proxy-)?authorization|cookie)$/i,this._options.headers),A(p)){var b={headers:e.headers,statusCode:o},y={url:h,method:d,headers:r};p(this._options,b,y),this._sanitizeOptions(this._options)}this._performRequest()},e.exports=f({http:tC,https:tx}),e.exports.wrap=f}),tK("gnxgU",function(e,t){var a;e.exports=function(){if(!a){try{a=tj("CpzV4")("follow-redirects")}catch(e){}"function"!=typeof a&&(a=function(){})}a.apply(null,arguments)}}),tK("CpzV4",function(e,t){"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?e.exports=tj("1eO84"):e.exports=tj("kU1ND")}),tK("1eO84",function(e,t){let a;t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;let a="color: "+this.color;t.splice(1,0,a,"color: inherit");let i=0,s=0;t[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(i++,"%c"===e&&(s=i))}),t.splice(s,0,a)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return"undefined"!=typeof window&&!!window.process&&("renderer"===window.process.type||!!window.process.__nwjs)||!("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(a=!1,()=>{a||(a=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=tj("dmAzO")(t);let{formatters:i}=e.exports;i.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}),tK("dmAzO",function(e,t){e.exports=function(e){function t(e){let i,s,n;let r=null;function o(...e){if(!o.enabled)return;let a=Number(new Date),s=a-(i||a);o.diff=s,o.prev=i,o.curr=a,i=a,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let n=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(a,i)=>{if("%%"===a)return"%";n++;let s=t.formatters[i];if("function"==typeof s){let t=e[n];a=s.call(o,t),e.splice(n,1),n--}return a}),t.formatArgs.call(o,e),(o.log||t.log).apply(o,e)}return o.namespace=e,o.useColors=t.useColors(),o.color=t.selectColor(e),o.extend=a,o.destroy=t.destroy,Object.defineProperty(o,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==r?r:(s!==t.namespaces&&(s=t.namespaces,n=t.enabled(e)),n),set:e=>{r=e}}),"function"==typeof t.init&&t.init(o),o}function a(e,a){let i=t(this.namespace+(void 0===a?":":a)+e);return i.log=this.log,i}function i(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){let e=[...t.names.map(i),...t.skips.map(i).map(e=>"-"+e)].join(",");return t.enable(""),e},t.enable=function(e){let a;t.save(e),t.namespaces=e,t.names=[],t.skips=[];let i=("string"==typeof e?e:"").split(/[\s,]+/),s=i.length;for(a=0;a{t[a]=e[a]}),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let a=0;for(let t=0;t=1.5*a?"s":"")}e.exports=function(e,t){t=t||{};var i,s,n=typeof e;if("string"===n&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var a=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return 6048e5*a;case"days":case"day":case"d":return 864e5*a;case"hours":case"hour":case"hrs":case"hr":case"h":return 36e5*a;case"minutes":case"minute":case"mins":case"min":case"m":return 6e4*a;case"seconds":case"second":case"secs":case"sec":case"s":return 1e3*a;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}(e);if("number"===n&&isFinite(e))return t.long?(i=Math.abs(e))>=864e5?a(e,i,864e5,"day"):i>=36e5?a(e,i,36e5,"hour"):i>=6e4?a(e,i,6e4,"minute"):i>=1e3?a(e,i,1e3,"second"):e+" ms":(s=Math.abs(e))>=864e5?Math.round(e/864e5)+"d":s>=36e5?Math.round(e/36e5)+"h":s>=6e4?Math.round(e/6e4)+"m":s>=1e3?Math.round(e/1e3)+"s":e+"ms";throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}}),tK("kU1ND",function(e,t){t.init=function(e){e.inspectOpts={};let a=Object.keys(t.inspectOpts);for(let i=0;i{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{let e=tj("ix4BC");e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let a=t.substring(6).toLowerCase().replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),i=process.env[t];return i=!!/^(yes|on|true|enabled)$/i.test(i)||!/^(no|off|false|disabled)$/i.test(i)&&("null"===i?null:Number(i)),e[a]=i,e},{}),e.exports=tj("dmAzO")(t);let{formatters:a}=e.exports;a.o=function(e){return this.inspectOpts.colors=this.useColors,tE.inspect(e,this.inspectOpts).split("\n").map(e=>e.trim()).join(" ")},a.O=function(e){return this.inspectOpts.colors=this.useColors,tE.inspect(e,this.inspectOpts)}}),tK("ix4BC",function(e,t){let a;var i=tj("jnTZt");let{env:s}=process;function n(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function r(e,t){if(0===a)return 0;if(i("color=16m")||i("color=full")||i("color=truecolor"))return 3;if(i("color=256"))return 2;if(e&&!t&&void 0===a)return 0;let n=a||0;if("dumb"===s.TERM)return n;if("win32"===process.platform){let e=tb.release().split(".");return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if("CI"in s)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(e=>e in s)||"codeship"===s.CI_NAME?1:n;if("TEAMCITY_VERSION"in s)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(s.TEAMCITY_VERSION)?1:0;if("truecolor"===s.COLORTERM)return 3;if("TERM_PROGRAM"in s){let e=parseInt((s.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(s.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(s.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(s.TERM)||"COLORTERM"in s?1:n}i("no-color")||i("no-colors")||i("color=false")||i("color=never")?a=0:(i("color")||i("colors")||i("color=true")||i("color=always"))&&(a=1),"FORCE_COLOR"in s&&(a="true"===s.FORCE_COLOR?1:"false"===s.FORCE_COLOR?0:0===s.FORCE_COLOR.length?1:Math.min(parseInt(s.FORCE_COLOR,10),3)),e.exports={supportsColor:function(e){return n(r(e,e&&e.isTTY))},stdout:n(r(!0,tO.isatty(1))),stderr:n(r(!0,tO.isatty(2)))}}),tK("jnTZt",function(e,t){e.exports=(e,t=process.argv)=>{let a=e.startsWith("-")?"":1===e.length?"-":"--",i=t.indexOf(a+e),s=t.indexOf("--");return -1!==i&&(-1===s||ia);let a="1.6.2"}),tK("2p1c3",function(e,t){tF(e.exports,"default",()=>r);var a=tj("0PEoX"),i=tj("dfDjA"),s=tj("6owpX");let n=/^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/;function r(e,t,r){let o=r&&r.Blob||s.default.classes.Blob,l=(0,i.default)(e);if(void 0===t&&o&&(t=!0),"data"===l){e=l.length?e.slice(l.length+1):e;let i=n.exec(e);if(!i)throw new a.default("Invalid URL",a.default.ERR_INVALID_URL);let s=i[1],r=i[2],p=i[3],d=Buffer.from(decodeURIComponent(p),r?"base64":"utf8");if(t){if(!o)throw new a.default("Blob is not supported",a.default.ERR_NOT_SUPPORT);return new o([d],{type:s})}return d}throw new a.default("Unsupported protocol "+l,a.default.ERR_NOT_SUPPORT)}}),tK("dfDjA",function(e,t){tF(e.exports,"default",()=>a);function a(e){let t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}}),tK("i8duE",function(e,t){tF(e.exports,"default",()=>o);var a=tj("68mdu"),i=tj("fa1sm"),s=tj("d0Jxm");let n=Symbol("internals");class r extends tU(tT).Transform{constructor(e){super({readableHighWaterMark:(e=(0,a.default).toFlatObject(e,{maxRate:0,chunkSize:65536,minChunkSize:100,timeWindow:500,ticksRate:2,samplesCount:15},null,(e,t)=>!(0,a.default).isUndefined(t[e]))).chunkSize});let t=this,r=this[n]={length:e.length,timeWindow:e.timeWindow,ticksRate:e.ticksRate,chunkSize:e.chunkSize,maxRate:e.maxRate,minChunkSize:e.minChunkSize,bytesSeen:0,isCaptured:!1,notifiedBytesLoaded:0,ts:Date.now(),bytes:0,onReadCallback:null},o=(0,s.default)(r.ticksRate*e.samplesCount,r.timeWindow);this.on("newListener",e=>{"progress"!==e||r.isCaptured||(r.isCaptured=!0)});let l=0;r.updateProgress=(0,i.default)(function(){let e=r.length,a=r.bytesSeen,i=a-l;if(!i||t.destroyed)return;let s=o(i);l=a,process.nextTick(()=>{t.emit("progress",{loaded:a,total:e,progress:e?a/e:void 0,bytes:i,rate:s||void 0,estimated:s&&e&&a<=e?(e-a)/s:void 0})})},r.ticksRate);let p=()=>{r.updateProgress(!0)};this.once("end",p),this.once("error",p)}_read(e){let t=this[n];return t.onReadCallback&&t.onReadCallback(),super._read(e)}_transform(e,t,a){let i=this,s=this[n],r=s.maxRate,o=this.readableHighWaterMark,l=s.timeWindow,p=r/(1e3/l),d=!1!==s.minChunkSize?Math.max(s.minChunkSize,.01*p):0,c=(e,t)=>{let a;let n=Buffer.byteLength(e),c=null,u=o,m=0;if(r){let e=Date.now();(!s.ts||(m=e-s.ts)>=l)&&(s.ts=e,a=p-s.bytes,s.bytes=a<0?-a:0,m=0),a=p-s.bytes}if(r){if(a<=0)return setTimeout(()=>{t(null,e)},l-m);au&&n-u>d&&(c=e.subarray(u),e=e.subarray(0,u)),function(e,t){let a=Buffer.byteLength(e);s.bytesSeen+=a,s.bytes+=a,s.isCaptured&&s.updateProgress(),i.push(e)?process.nextTick(t):s.onReadCallback=()=>{s.onReadCallback=null,process.nextTick(t)}}(e,c?()=>{process.nextTick(t,null,c)}:t)};c(e,function e(t,i){if(t)return a(t);i?c(i,e):a(null)})}setLength(e){return this[n].length=+e,this}}var o=r}),tK("fa1sm",function(e,t){tF(e.exports,"default",()=>a);var a=function(e,t){let a=0,i=1e3/t,s=null;return function(t,n){let r=Date.now();if(t||r-a>i)return s&&(clearTimeout(s),s=null),a=r,e.apply(null,n);s||(s=setTimeout(()=>(s=null,a=Date.now(),e.apply(null,n)),i-(r-a)))}}}),tK("d0Jxm",function(e,t){tF(e.exports,"default",()=>a);var a=function(e,t){let a;let i=Array(e=e||10),s=Array(e),n=0,r=0;return t=void 0!==t?t:1e3,function(o){let l=Date.now(),p=s[r];a||(a=l),i[n]=o,s[n]=l;let d=r,c=0;for(;d!==n;)c+=i[d++],d%=e;if((n=(n+1)%e)===r&&(r=(r+1)%e),l-al);var a=tj("68mdu"),i=tj("fpGkp");let s=a.default.ALPHABET.ALPHA_DIGIT+"-_",n=new tE.TextEncoder,r=n.encode("\r\n");class o{constructor(e,t){let{escapeName:i}=this.constructor,s=(0,a.default).isString(t),r=`Content-Disposition: form-data; name="${i(e)}"${!s&&t.name?`; filename="${i(t.name)}"`:""}\r
+`;s?t=n.encode(String(t).replace(/\r?\n|\r\n?/g,"\r\n")):r+=`Content-Type: ${t.type||"application/octet-stream"}\r
+`,this.headers=n.encode(r+"\r\n"),this.contentLength=s?t.byteLength:t.size,this.size=this.headers.byteLength+this.contentLength+2,this.name=e,this.value=t}async *encode(){yield this.headers;let{value:e}=this;(0,a.default).isTypedArray(e)?yield e:yield*(0,i.default)(e),yield r}static escapeName(e){return String(e).replace(/[\r\n"]/g,e=>({"\r":"%0D","\n":"%0A",'"':"%22"})[e])}}var l=(e,t,i)=>{let{tag:r="form-data-boundary",size:l=25,boundary:p=r+"-"+(0,a.default).generateString(l,s)}=i||{};if(!(0,a.default).isFormData(e))throw TypeError("FormData instance required");if(p.length<1||p.length>70)throw Error("boundary must be 10-70 characters long");let d=n.encode("--"+p+"\r\n"),c=n.encode("--"+p+"--\r\n\r\n"),u=c.byteLength,m=Array.from(e.entries()).map(([e,t])=>{let a=new o(e,t);return u+=a.size,a});u+=d.byteLength*m.length;let g={"Content-Type":`multipart/form-data; boundary=${p}`};return Number.isFinite(u=(0,a.default).toFiniteNumber(u))&&(g["Content-Length"]=u),t&&t(g),(0,tT.Readable).from(async function*(){for(let e of m)yield d,yield*e.encode();yield c}())}}),tK("fpGkp",function(e,t){tF(e.exports,"default",()=>i);let{asyncIterator:a}=Symbol;var i=async function*(e){e.stream?yield*e.stream():e.arrayBuffer?yield await e.arrayBuffer():e[a]?yield*e[a]():yield e}}),tK("5s0pm",function(e,t){tF(e.exports,"default",()=>i);class a extends tU(tT).Transform{__transform(e,t,a){this.push(e),a()}_transform(e,t,a){if(0!==e.length&&(this._transform=this.__transform,120!==e[0])){let e=Buffer.alloc(2);e[0]=120,e[1]=156,this.push(e,t)}this.__transform(e,t,a)}}var i=a}),tK("eJIcs",function(e,t){tF(e.exports,"default",()=>i);var a=tj("68mdu"),i=(e,t)=>(0,a.default).isAsyncFn(e)?function(...a){let i=a.pop();e.apply(this,a).then(e=>{try{t?i(null,...t(e)):i(null,e)}catch(e){i(e)}},i)}:e}),tK("d7Pkb",function(e,t){tF(e.exports,"default",()=>f);var a=tj("68mdu"),i=tj("7VkCi"),s=tj("eCyXX"),n=tj("brZco"),r=tj("39JXn"),o=tj("3GCgi"),l=tj("hXgNz"),p=tj("0PEoX"),d=tj("bECa5"),c=tj("dfDjA"),u=tj("6owpX"),m=tj("cqy56"),g=tj("d0Jxm");function h(e,t){let a=0,i=(0,g.default)(50,250);return s=>{let n=s.loaded,r=s.lengthComputable?s.total:void 0,o=n-a,l=i(o);a=n;let p={loaded:n,total:r,progress:r?n/r:void 0,bytes:o,rate:l||void 0,estimated:l&&r&&n<=r?(r-n)/l:void 0,event:s};p[t?"download":"upload"]=!0,e(p)}}var f="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,g){let f,b,v=e.data,y=(0,m.default).from(e.headers).normalize(),{responseType:I,withXSRFToken:C}=e;function x(){e.cancelToken&&e.cancelToken.unsubscribe(f),e.signal&&e.signal.removeEventListener("abort",f)}if((0,a.default).isFormData(v)){if(u.default.hasStandardBrowserEnv||u.default.hasStandardBrowserWebWorkerEnv)y.setContentType(!1);else if(!1!==(b=y.getContentType())){let[e,...t]=b?b.split(";").map(e=>e.trim()).filter(Boolean):[];y.setContentType([e||"multipart/form-data",...t].join("; "))}}let w=new XMLHttpRequest;if(e.auth){let t=e.auth.username||"",a=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";y.set("Authorization","Basic "+btoa(t+":"+a))}let _=(0,r.default)(e.baseURL,e.url);function A(){if(!w)return;let a=(0,m.default).from("getAllResponseHeaders"in w&&w.getAllResponseHeaders()),s={data:I&&"text"!==I&&"json"!==I?w.response:w.responseText,status:w.status,statusText:w.statusText,headers:a,config:e,request:w};(0,i.default)(function(e){t(e),x()},function(e){g(e),x()},s),w=null}if(w.open(e.method.toUpperCase(),(0,n.default)(_,e.params,e.paramsSerializer),!0),w.timeout=e.timeout,"onloadend"in w?w.onloadend=A:w.onreadystatechange=function(){w&&4===w.readyState&&(0!==w.status||w.responseURL&&0===w.responseURL.indexOf("file:"))&&setTimeout(A)},w.onabort=function(){w&&(g(new p.default("Request aborted",p.default.ECONNABORTED,e,w)),w=null)},w.onerror=function(){g(new p.default("Network Error",p.default.ERR_NETWORK,e,w)),w=null},w.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",a=e.transitional||l.default;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),g(new p.default(t,a.clarifyTimeoutError?p.default.ETIMEDOUT:p.default.ECONNABORTED,e,w)),w=null},u.default.hasStandardBrowserEnv&&(C&&(0,a.default).isFunction(C)&&(C=C(e)),C||!1!==C&&(0,o.default)(_))){let t=e.xsrfHeaderName&&e.xsrfCookieName&&(0,s.default).read(e.xsrfCookieName);t&&y.set(e.xsrfHeaderName,t)}void 0===v&&y.setContentType(null),"setRequestHeader"in w&&(0,a.default).forEach(y.toJSON(),function(e,t){w.setRequestHeader(t,e)}),(0,a.default).isUndefined(e.withCredentials)||(w.withCredentials=!!e.withCredentials),I&&"json"!==I&&(w.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&w.addEventListener("progress",h(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&w.upload&&w.upload.addEventListener("progress",h(e.onUploadProgress)),(e.cancelToken||e.signal)&&(f=t=>{w&&(g(!t||t.type?new d.default(null,e,w):t),w.abort(),w=null)},e.cancelToken&&e.cancelToken.subscribe(f),e.signal&&(e.signal.aborted?f():e.signal.addEventListener("abort",f)));let S=(0,c.default)(_);if(S&&-1===(0,u.default).protocols.indexOf(S)){g(new p.default("Unsupported protocol "+S+":",p.default.ERR_BAD_REQUEST,e));return}w.send(v||null)})}}),tK("eCyXX",function(e,t){tF(e.exports,"default",()=>i);var a=tj("68mdu"),i=tj("6owpX").default.hasStandardBrowserEnv?{write(e,t,i,s,n,r){let o=[e+"="+encodeURIComponent(t)];(0,a.default).isNumber(i)&&o.push("expires="+new Date(i).toGMTString()),(0,a.default).isString(s)&&o.push("path="+s),(0,a.default).isString(n)&&o.push("domain="+n),!0===r&&o.push("secure"),document.cookie=o.join("; ")},read(e){let t=document.cookie.match(RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}}}),tK("3GCgi",function(e,t){tF(e.exports,"default",()=>i);var a=tj("68mdu"),i=tj("6owpX").default.hasStandardBrowserEnv?function(){let e;let t=/(msie|trident)/i.test(navigator.userAgent),i=document.createElement("a");function s(e){let a=e;return t&&(i.setAttribute("href",a),a=i.href),i.setAttribute("href",a),{href:i.href,protocol:i.protocol?i.protocol.replace(/:$/,""):"",host:i.host,search:i.search?i.search.replace(/^\?/,""):"",hash:i.hash?i.hash.replace(/^#/,""):"",hostname:i.hostname,port:i.port,pathname:"/"===i.pathname.charAt(0)?i.pathname:"/"+i.pathname}}return e=s(window.location.href),function(t){let i=(0,a.default).isString(t)?s(t):t;return i.protocol===e.protocol&&i.host===e.host}}():function(){return!0}}),tK("iiI18",function(e,t){tF(e.exports,"default",()=>n);var a=tj("68mdu"),i=tj("cqy56");let s=e=>e instanceof i.default?e.toJSON():e;function n(e,t){t=t||{};let i={};function n(e,t,i){return(0,a.default).isPlainObject(e)&&(0,a.default).isPlainObject(t)?(0,a.default).merge.call({caseless:i},e,t):(0,a.default).isPlainObject(t)?(0,a.default).merge({},t):(0,a.default).isArray(t)?t.slice():t}function r(e,t,i){return(0,a.default).isUndefined(t)?(0,a.default).isUndefined(e)?void 0:n(void 0,e,i):n(e,t,i)}function o(e,t){if(!(0,a.default).isUndefined(t))return n(void 0,t)}function l(e,t){return(0,a.default).isUndefined(t)?(0,a.default).isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function p(a,i,s){return s in t?n(a,i):s in e?n(void 0,a):void 0}let d={url:o,method:o,data:o,baseURL:l,transformRequest:l,transformResponse:l,paramsSerializer:l,timeout:l,timeoutMessage:l,withCredentials:l,withXSRFToken:l,adapter:l,responseType:l,xsrfCookieName:l,xsrfHeaderName:l,onUploadProgress:l,onDownloadProgress:l,decompress:l,maxContentLength:l,maxBodyLength:l,beforeRedirect:l,transport:l,httpAgent:l,httpsAgent:l,cancelToken:l,socketPath:l,responseEncoding:l,validateStatus:p,headers:(e,t)=>r(s(e),s(t),!0)};return(0,a.default).forEach(Object.keys(Object.assign({},e,t)),function(s){let n=d[s]||r,o=n(e[s],t[s],s);(0,a.default).isUndefined(o)&&n!==p||(i[s]=o)}),i}}),tK("1Y6RH",function(e,t){tF(e.exports,"default",()=>r);var a=tj("6D1pE"),i=tj("0PEoX");let s={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{s[e]=function(a){return typeof a===e||"a"+(t<1?"n ":" ")+e}});let n={};s.transitional=function(e,t,s){function r(e,t){return"[Axios v"+a.VERSION+"] Transitional option '"+e+"'"+t+(s?". "+s:"")}return(a,s,o)=>{if(!1===e)throw new i.default(r(s," has been removed"+(t?" in "+t:"")),i.default.ERR_DEPRECATED);return t&&!n[s]&&(n[s]=!0,console.warn(r(s," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(a,s,o)}};var r={assertOptions:function(e,t,a){if("object"!=typeof e)throw new i.default("options must be an object",i.default.ERR_BAD_OPTION_VALUE);let s=Object.keys(e),n=s.length;for(;n-- >0;){let r=s[n],o=t[r];if(o){let t=e[r],a=void 0===t||o(t,r,e);if(!0!==a)throw new i.default("option "+r+" must be "+a,i.default.ERR_BAD_OPTION_VALUE);continue}if(!0!==a)throw new i.default("Unknown option "+r,i.default.ERR_BAD_OPTION)}},validators:s}}),tK("bW7zi",function(e,t){tF(e.exports,"default",()=>s);var a=tj("bECa5");class i{constructor(e){let t;if("function"!=typeof e)throw TypeError("executor must be a function.");this.promise=new Promise(function(e){t=e});let i=this;this.promise.then(e=>{if(!i._listeners)return;let t=i._listeners.length;for(;t-- >0;)i._listeners[t](e);i._listeners=null}),this.promise.then=e=>{let t;let a=new Promise(e=>{i.subscribe(e),t=e}).then(e);return a.cancel=function(){i.unsubscribe(t)},a},e(function(e,s,n){i.reason||(i.reason=new a.default(e,s,n),t(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new i(function(t){e=t}),cancel:e}}}var s=i}),tK("ePpsA",function(e,t){tF(e.exports,"default",()=>a);function a(e){return function(t){return e.apply(null,t)}}}),tK("414ak",function(e,t){tF(e.exports,"default",()=>i);var a=tj("68mdu");function i(e){return(0,a.default).isObject(e)&&!0===e.isAxiosError}}),tK("jSwgq",function(e,t){tF(e.exports,"default",()=>i);let a={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(a).forEach(([e,t])=>{a[t]=e});var i=a}),tK("gT7hk",function(e,t){var a=e.exports&&e.exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.getProject=void 0;let i=a(tj("5mM36")),s=async e=>{let{data:t}=await e.get("projects/token-info").catch(e=>{var t;if(i.default.isAxiosError(e)&&(null===(t=e.response)||void 0===t?void 0:t.status)===404)return{data:null};throw e});return t};e.exports.getProject=s}),tK("adQSK",function(e,t){var a=e.exports&&e.exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.getReplayV3DownloadUrls=e.exports.getReplayDownloadUrl=e.exports.getReplay=void 0;let i=a(tj("5mM36")),s=async(e,t)=>{let{data:a}=await e.get(`replays/${t}`).catch(e=>{var t;if(i.default.isAxiosError(e)&&(null===(t=e.response)||void 0===t?void 0:t.status)===404)return{data:null};throw e});return a};e.exports.getReplay=s;let n=async(e,t)=>{let{data:a}=await e.get(`replays/${t}/archive-url`).catch(e=>{var t;if(i.default.isAxiosError(e)&&(null===(t=e.response)||void 0===t?void 0:t.status)===404)return{data:null};throw e});return a};e.exports.getReplayDownloadUrl=n;let r=async(e,t)=>{let{data:a}=await e.get(`replays/${t}/download-urls`).catch(e=>{var t;if(i.default.isAxiosError(e)&&(null===(t=e.response)||void 0===t?void 0:t.status)===404)return{data:null};throw e});return a};e.exports.getReplayV3DownloadUrls=r}),tK("g0suD",function(e,t){var a=e.exports&&e.exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.postSessionIdNotification=e.exports.getRecordingCommandId=e.exports.getRecordedSessionData=e.exports.getRecordedSession=void 0;let i=a(tj("5mM36")),s=async(e,t)=>{let{data:a}=await e.get(`sessions/${t}`).catch(e=>{var t;if(i.default.isAxiosError(e)&&(null===(t=e.response)||void 0===t?void 0:t.status)===404)return{data:null};throw e});return a};e.exports.getRecordedSession=s;let n=async(e,t)=>{let{data:a}=await e.get(`sessions/${t}/data`).catch(e=>{var t;if(i.default.isAxiosError(e)&&(null===(t=e.response)||void 0===t?void 0:t.status)===404)return{data:null};throw e});return a};e.exports.getRecordedSessionData=n;let r=async e=>{let{data:t}=await e.post("sessions/start"),{recordingCommandId:a}=t;return a};e.exports.getRecordingCommandId=r;let o=async(e,t,a)=>{await e.post(`sessions/${t}/notify`,{recordingCommandId:a})};e.exports.postSessionIdNotification=o}),tK("3Ctuh",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.emitTelemetry=e.exports.getLatestTestRunResults=e.exports.getTestRun=e.exports.executeSecureTunnelTestRun=void 0;var a=tj("5mM36");let i=async({client:e,headSha:t,tunnelUrl:i,basicAuthUser:s,basicAuthPassword:n,environment:r})=>{let{data:o}=await e.post("test-runs/trigger-secure-tunnel-test-run",{headSha:t,tunnelUrl:i,basicAuthUser:s,basicAuthPassword:n,environment:r}).catch(e=>{var t,i,s;if((0,a.isAxiosError)(e)){if((null===(t=e.response)||void 0===t?void 0:t.status)===404)return{data:null};let a=null===(s=null===(i=e.response)||void 0===i?void 0:i.data)||void 0===s?void 0:s.message;if(a)throw Error(a)}throw e});return null!=o?o:null};e.exports.executeSecureTunnelTestRun=i;let s=async({client:e,testRunId:t})=>{let{data:a}=await e.get(`test-runs/${t}`);return a};e.exports.getTestRun=s;let n=async({client:e,commitSha:t,logicalEnvironmentVersion:i,useCloudReplayEnvironmentVersion:s})=>{let{data:n}=await e.get("test-runs/cache",{params:{commitSha:encodeURIComponent(t),...i?{logicalEnvironmentVersion:encodeURIComponent(i)}:{},...s?{useCloudReplayEnvironmentVersion:!0}:{}}}).catch(e=>{var t;if(e instanceof a.AxiosError&&(null===(t=e.response)||void 0===t?void 0:t.status)===404)return{data:null};throw e});return null!=n?n:null};e.exports.getLatestTestRunResults=n;let r=async({client:e,values:t})=>{await e.post("test-runs/telemetry",{values:t})};e.exports.emitTelemetry=r}),tK("cy9Wq",function(e,t){Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.IN_PROGRESS_TEST_RUN_STATUS=void 0,e.exports.IN_PROGRESS_TEST_RUN_STATUS=["Scheduled","Running"]}),tK("gwE2M",function(e,t){var a=e.exports&&e.exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.getApiToken=void 0;var i=tj("3midM");let s=a(tj("7SZkG"));e.exports.getApiToken=e=>{let t=s.default.getLogger(i.METICULOUS_LOGGER_NAME);if(e)return e;if(process.env.METICULOUS_API_TOKEN)return process.env.METICULOUS_API_TOKEN;let a=(0,tv.join)((0,tb.homedir)(),".meticulous/config.json");if((0,ty.existsSync)(a)){let e=JSON.parse((0,ty.readFileSync)(a).toString("utf-8"));if(e.apiToken)return t.info(`Using apiToken from ${a}`),e.apiToken}return null}}),tK("4KnU4",function(e,t){var a=e.exports&&e.exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports.createClient=void 0;var i=tj("3midM");let s=a(tj("5mM36")),n=a(tj("3oP91")),r=a(tj("7SZkG"));var o=tj("gwE2M");e.exports.createClient=({apiToken:e})=>{let t=(0,o.getApiToken)(e);t||(r.default.getLogger(i.METICULOUS_LOGGER_NAME).error("You must provide an API token by using the --apiToken parameter"),process.exit(1));let a=s.default.create({baseURL:l(),headers:{authorization:t},timeout:6e4});return(0,n.default)(a,{retries:3}),a};let l=()=>process.env.METICULOUS_API_URL?process.env.METICULOUS_API_URL:"https://app.meticulous.ai/api/"}),tK("3oP91",function(e,t){tD(e.exports),tF(e.exports,"namespace",()=>i),tF(e.exports,"isNetworkError",()=>s),tF(e.exports,"isRetryableError",()=>o),tF(e.exports,"isSafeRequestError",()=>l),tF(e.exports,"isIdempotentRequestError",()=>p),tF(e.exports,"isNetworkOrIdempotentRequestError",()=>d),tF(e.exports,"exponentialDelay",()=>c),tF(e.exports,"DEFAULT_OPTIONS",()=>u),tF(e.exports,"default",()=>b);var a=tj("klleU");let i="axios-retry";function s(e){return!(e.response||!e.code||["ERR_CANCELED","ECONNABORTED"].includes(e.code))&&tU(a)(e)}let n=["get","head","options"],r=n.concat(["put","delete"]);function o(e){return"ECONNABORTED"!==e.code&&(!e.response||e.response.status>=500&&e.response.status<=599)}function l(e){return!!e.config?.method&&o(e)&&-1!==n.indexOf(e.config.method)}function p(e){return!!e.config?.method&&o(e)&&-1!==r.indexOf(e.config.method)}function d(e){return s(e)||p(e)}function c(e=0,t,a=100){let i=2**e*a;return i+.2*i*Math.random()}let u={retries:3,retryCondition:d,retryDelay:function(){return 0},shouldResetTimeout:!1,onRetry:()=>{},onMaxRetryTimesExceeded:()=>{}};function m(e,t){var a;let s=(a=t||{},{...u,...a,...e[i]});return s.retryCount=s.retryCount||0,s.lastRequestTime=s.lastRequestTime||Date.now(),e[i]=s,s}async function g(e,t){let{retries:a,retryCondition:i}=e,s=(e.retryCount||0)=e.retries&&await e.onMaxRetryTimesExceeded(t,e.retryCount)}let f=(e,t)=>({requestInterceptorId:e.interceptors.request.use(e=>(m(e,t),e)),responseInterceptorId:e.interceptors.response.use(null,async a=>{let{config:i}=a;if(!i)return Promise.reject(a);let s=m(i,t);if(await g(s,a)){s.retryCount+=1;let{retryDelay:t,shouldResetTimeout:n,onRetry:r}=s,o=t(s.retryCount,a);if(e.defaults.agent===i.agent&&delete i.agent,e.defaults.httpAgent===i.httpAgent&&delete i.httpAgent,e.defaults.httpsAgent===i.httpsAgent&&delete i.httpsAgent,!n&&i.timeout&&s.lastRequestTime){let e=Date.now()-s.lastRequestTime,t=i.timeout-e-o;if(t<=0)return Promise.reject(a);i.timeout=t}return i.transformRequest=[e=>e],await r(s.retryCount,a,i),new Promise(t=>{setTimeout(()=>t(e(i)),o)})}return await h(s,a),Promise.reject(a)})});f.isNetworkError=s,f.isSafeRequestError=l,f.isIdempotentRequestError=p,f.isNetworkOrIdempotentRequestError=d,f.exponentialDelay=c,f.isRetryableError=o;var b=f}),tK("klleU",function(e,t){let a=new Set(["ENOTFOUND","ENETUNREACH","UNABLE_TO_GET_ISSUER_CERT","UNABLE_TO_GET_CRL","UNABLE_TO_DECRYPT_CERT_SIGNATURE","UNABLE_TO_DECRYPT_CRL_SIGNATURE","UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY","CERT_SIGNATURE_FAILURE","CRL_SIGNATURE_FAILURE","CERT_NOT_YET_VALID","CERT_HAS_EXPIRED","CRL_NOT_YET_VALID","CRL_HAS_EXPIRED","ERROR_IN_CERT_NOT_BEFORE_FIELD","ERROR_IN_CERT_NOT_AFTER_FIELD","ERROR_IN_CRL_LAST_UPDATE_FIELD","ERROR_IN_CRL_NEXT_UPDATE_FIELD","OUT_OF_MEM","DEPTH_ZERO_SELF_SIGNED_CERT","SELF_SIGNED_CERT_IN_CHAIN","UNABLE_TO_GET_ISSUER_CERT_LOCALLY","UNABLE_TO_VERIFY_LEAF_SIGNATURE","CERT_CHAIN_TOO_LONG","CERT_REVOKED","INVALID_CA","PATH_LENGTH_EXCEEDED","INVALID_PURPOSE","CERT_UNTRUSTED","CERT_REJECTED","HOSTNAME_MISMATCH"]);e.exports=e=>!a.has(e&&e.code)}),tK("04vO9",function(e,t){var a=tT.Transform;(t=e.exports=function(e){return new i(e)}).decode=t;var i=t.Decoder=function(e){this.opts=tE._extend({lengthSize:4,maxSize:0,unbuffered:!1},e),this.getLength=this.opts.getLength||function(e){switch(e){case 1:return function(e){return e.readUInt8(0)};case 2:return function(e){return e.readUInt16BE(0)};case 4:return function(e){return e.readUInt32BE(0)};default:throw Error("Invalid frame length size")}}(this.opts.lengthSize),this.buffer=null,this.frameLength=-1,this.framePos=0,a.call(this,e)};tE.inherits(i,a),i.prototype._transform=function(e,t,a){for(;e.length>0;){var i=this.opts.lengthSize;if(this.buffer&&(e=Buffer.concat([this.buffer,e]),this.buffer=null),this.frameLength<0){if(e.length0&&this.frameLength>this.opts.maxSize)return a(Error("Message is larger than the allowed maximum of "+this.opts.maxSize))}else this.opts.unbuffered&&(i=0);var s=i+this.frameLength-this.framePos;if(this.opts.unbuffered)s=Math.min(s,e.length);else if(e.lengths))return a();e=e.slice(s)}a()},t.encode=function(e){return new s(e)};var s=t.Encoder=function(e){this.opts=tE._extend({lengthSize:4},e),this.setLength=this.opts.setLength||function(e){switch(e){case 1:return function(e,t){return e.writeUInt8(t,0)};case 2:return function(e,t){return e.writeUInt16BE(t,0)};case 4:return function(e,t){return e.writeUInt32BE(t,0)};default:throw Error("Invalid frame length size")}}(this.opts.lengthSize),a.call(this)};tE.inherits(s,a),s.prototype._transform=function(e,t,a){var i=Buffer.alloc(this.opts.lengthSize);this.setLength(i,e.length),this._pushFrameData([i,e]),a()},s.prototype._pushFrameData=function(e){this.push(Buffer.concat(e))},t.prefix=t.encode,t.FrameStream=i,t.LengthPrefixStream=s}),tK("95REl",function(e,t){var a=tj("ihzfm");t.operation=function(e){return new a(t.timeouts(e),{forever:e&&(e.forever||e.retries===1/0),unref:e&&e.unref,maxRetryTime:e&&e.maxRetryTime})},t.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var a in e)t[a]=e[a];if(t.minTimeout>t.maxTimeout)throw Error("minTimeout is greater than maxTimeout");for(var i=[],s=0;s=this._maxRetryTime)return this._errors.push(e),this._errors.unshift(Error("RetryOperation timeout occurred")),!1;this._errors.push(e);var a=this._timeouts.shift();if(void 0===a){if(!this._cachedTimeouts)return!1;this._errors.splice(0,this._errors.length-1),a=this._cachedTimeouts.slice(-1)}var i=this;return this._timer=setTimeout(function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout(function(){i._operationTimeoutCb(i._attempts)},i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)},a),this._options.unref&&this._timer.unref(),!0},a.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var a=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){a._operationTimeoutCb()},a._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},a.prototype.try=function(e){console.log("Using RetryOperation.try() is deprecated"),this.attempt(e)},a.prototype.start=function(e){console.log("Using RetryOperation.start() is deprecated"),this.attempt(e)},a.prototype.start=a.prototype.try,a.prototype.errors=function(){return this._errors},a.prototype.attempts=function(){return this._attempts},a.prototype.mainError=function(){if(0===this._errors.length)return null;for(var e={},t=null,a=0,i=0;i=a&&(t=s,a=r)}return t}}),tK("3X9Zh",function(e,t){tF(e.exports,"getOctokitOrFail",()=>n);var a=tj("2Evbo"),i=tj("3midM"),s=tj("7SZkG");let n=e=>{if(null==e)throw Error("github-token is required");try{return(0,a.getOctokit)(e)}catch(e){throw tU(s).getLogger(i.METICULOUS_LOGGER_NAME).error(e),Error("Error connecting to GitHub. Did you specify a valid 'github-token'?")}}});var tP=(tj("3nEje"),tj("3nEje")),tM={},tJ=tv.resolve(__dirname,"../node_modules/@alwaysmeticulous/sentry/dist","index.js"),tz=tM&&tM.__createBinding||(Object.create?function(e,t,a,i){void 0===i&&(i=a);var s=Object.getOwnPropertyDescriptor(t,a);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,i,s)}:function(e,t,a,i){void 0===i&&(i=a),e[i]=t[a]}),t$=tM&&tM.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),tq=tM&&tM.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&tz(t,e,a);return t$(t,e),t};Object.defineProperty(tM,"__esModule",{value:!0}),tM.initSentry=tM.SENTRY_FLUSH_TIMEOUT=void 0;var tQ=tj("3midM");const t1=tq(tj("igDVI"));var t0=tj("aDQYo"),t2=tj("9rcfq"),t4=tj("jfDa9"),t9=tj("050Gq"),t6=tj("deYUe"),t3=tj("9GA7E"),t5=tj("ios84"),t8=tj("fd5do"),t7=tj("k2ErF"),ae=tj("2gq4F"),at=tj("5NAaM"),t9=tj("050Gq"),aa=tj("iD1up"),t7=tj("k2ErF"),at=tj("5NAaM"),ai=tj("gd055");const as=ai.GLOBAL_OBJ;var an=tj("goIvU"),t7=tj("k2ErF"),at=tj("5NAaM");const ar=(e,t,a)=>{let i,s;return n=>{t.value>=0&&(n||a)&&((s=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=s,e(t))}},ao=()=>`v3-${Date.now()}-${Math.floor(Math.random()*(9e12-1))+1e12}`,al=()=>{let e=as.performance.timing,t=as.performance.navigation.type,a={entryType:"navigation",startTime:0,type:2==t?"back_forward":1===t?"reload":"navigate"};for(let t in e)"navigationStart"!==t&&"toJSON"!==t&&(a[t]=Math.max(e[t]-e.navigationStart,0));return a},ap=()=>as.__WEB_VITALS_POLYFILL__?as.performance&&(performance.getEntriesByType&&performance.getEntriesByType("navigation")[0]||al()):as.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0],ad=()=>{let e=ap();return e&&e.activationStart||0},ac=(e,t)=>{let a=ap(),i="navigate";return a&&(i=as.document.prerendering||ad()>0?"prerender":a.type.replace(/_/g,"-")),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:ao(),navigationType:i}},au=(e,t,a)=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){let i=new PerformanceObserver(e=>{t(e.getEntries())});return i.observe(Object.assign({type:e,buffered:!0},a||{})),i}}catch(e){}},am=(e,t)=>{let a=i=>{("pagehide"===i.type||"hidden"===as.document.visibilityState)&&(e(i),t&&(removeEventListener("visibilitychange",a,!0),removeEventListener("pagehide",a,!0)))};addEventListener("visibilitychange",a,!0),addEventListener("pagehide",a,!0)};let ag=-1;const ah=()=>"hidden"!==as.document.visibilityState||as.document.prerendering?1/0:0,af=()=>{am(({timeStamp:e})=>{ag=e},!0)},ab=()=>(ag<0&&(ag=ah(),af()),{get firstHiddenTime(){return ag}});let av=0,ay=1/0,aI=0;const aC=e=>{e.forEach(e=>{e.interactionId&&(ay=Math.min(ay,e.interactionId),av=(aI=Math.max(aI,e.interactionId))?(aI-ay)/7+1:0)})},ax=()=>e?av:performance.interactionCount||0,aw=()=>{"interactionCount"in performance||e||(e=au("event",aC,{type:"event",buffered:!0,durationThreshold:0}))},a_=()=>ax(),aA=[],aS={},aE=e=>{let t=aA[aA.length-1],a=aS[e.interactionId];if(a||aA.length<10||e.duration>t.latency){if(a)a.entries.push(e),a.latency=Math.max(a.latency,e.duration);else{let t={id:e.interactionId,latency:e.duration,entries:[e]};aS[t.id]=t,aA.push(t)}aA.sort((e,t)=>t.latency-e.latency),aA.splice(10).forEach(e=>{delete aS[e.id]})}},aG=()=>{let e=Math.min(aA.length-1,Math.floor(a_()/50));return aA[e]},aB={},aT={};tj("4i5AO");var t9=tj("050Gq"),t6=tj("deYUe"),aR=tj("7z6ft"),aZ=(tj("ibVDy"),tj("fziSu"),tj("7nqVO")),aa=tj("iD1up"),aN=tj("iYy7D"),t8=tj("fd5do"),t7=tj("k2ErF"),ak=tj("6szME"),at=tj("5NAaM"),t6=tj("deYUe"),aV=tj("cCmfn"),aW=tj("eCOpK"),aR=tj("7z6ft"),t3=tj("9GA7E"),aO=tj("b2ZPh"),aa=tj("iD1up"),aH=tj("3hDCQ"),aF=tj("e4IUz"),t7=(tj("aoHsm"),tj("k2ErF")),ai=tj("gd055");(0,ai.getGlobalObject)();var ai=tj("gd055"),aU=tj("hxO1L"),aL=tj("jVURz"),aF=tj("e4IUz"),ai=tj("gd055"),aU=tj("hxO1L");ai.GLOBAL_OBJ;var aD=tj("hSiIl"),aN=tj("iYy7D"),ae=tj("2gq4F"),t6=(tj("c6AFW"),tj("deYUe")),aV=tj("cCmfn"),aW=tj("eCOpK"),aR=tj("7z6ft"),t3=tj("9GA7E"),aO=tj("b2ZPh"),aa=tj("iD1up"),aH=tj("3hDCQ"),aD=tj("hSiIl"),ae=tj("2gq4F"),aL=tj("jVURz"),aF=tj("e4IUz"),ai=(tj("gd055"),tj("gd055"));const aY=(0,ai.getGlobalObject)();var aU=tj("hxO1L");const aX=ai.GLOBAL_OBJ;var aN=tj("iYy7D"),t7=tj("k2ErF"),at=tj("5NAaM");t5.TRACING_DEFAULTS;var aj=tj("3SU1C"),t9=tj("050Gq"),aK=tj("2UNWp"),aR=tj("7z6ft"),t5=tj("ios84"),aP=tj("5N1eW"),aM=tj("kEOfe"),aJ=tj("k9pSf"),az=tj("cWSR5"),aZ=tj("7nqVO"),aO=tj("b2ZPh"),t4=tj("jfDa9"),ak=tj("6szME"),ae=tj("2gq4F"),a$=tj("6aON8");const aq=t0.addExtensionMethods;t9.getActiveTransaction,t9.extractTraceparentData,aO.spanStatusfromHttpCode,a$.Transaction,aZ.Span,aR.hasTracingEnabled,ak.stripUrlQueryAndFragment,ae.TRACEPARENT_REGEXP,t5.IdleTransaction,t4.startIdleTransaction,aO.SpanStatus,t2.Apollo,aj.Express,aK.GraphQL,aP.Mongo,aM.Mysql,aJ.Postgres,az.Prisma,("undefined"==typeof __SENTRY_TRACING__||__SENTRY_TRACING__)&&(0,t0.addExtensionMethods)(),tj("endj4");var aQ=tj("lrbwi");tM.SENTRY_FLUSH_TIMEOUT=aQ.default.fromObject({seconds:1});const a1=()=>{var e;return parseFloat(null!==(e=process.env.METICULOUS_TELEMETRY_SAMPLE_RATE)&&void 0!==e?e:"1.0")},a0=async(e,t)=>(t1.init({dsn:"https://10c6a6c9f5434786b37fb81b01323798@o914390.ingest.sentry.io/6435232",release:e,tracesSampleRate:null!=t?t:a1(),environment:tJ.endsWith(".ts")||tQ.IS_METICULOUS_SUPER_USER?"development":"production"}),aq(),t1.getCurrentHub());tM.initSentry=a0;var a2=tj("2Evbo");const a4=async(e,t,a)=>{if("pull_request"===e.type){let i=e.payload.pull_request.head.sha,s=e.payload.pull_request.base.sha,n=e.payload.pull_request.base.ref;return t.useDeploymentUrl?{base:await a6(i,s,n,a)??s,head:i}:{base:await a5(i,s,a)??s,head:i}}return"push"===e.type?{base:e.payload.before,head:e.payload.after}:"workflow_dispatch"===e.type?{base:null,head:a2.context.sha}:a9(e)},a9=e=>{throw Error("Unexpected event: "+JSON.stringify(e))},a6=(e,t,a,i)=>{try{a8(),(0,tG.execSync)(`git fetch origin ${e}`),(0,tG.execSync)(`git fetch origin ${a}`);let s=(0,tG.execSync)(`git merge-base ${e} origin/${a}`).toString().trim();if(!a7(s))return i.error(`Failed to get merge base of ${e} and ${a}: value returned by 'git merge-base' was not a valid git SHA ('${s}').Using the base of the pull request instead (${t}).`),null;return s}catch(s){return i.error(`Failed to get merge base of ${e} and ${a}. Error: ${s}. Using the base of the pull request instead (${t}).`),null}},a3=()=>(0,tG.execSync)("git rev-list --max-count=1 HEAD").toString().trim(),a5=(e,t,a)=>{let i=process.env.GITHUB_SHA;if(null==i)return a.error(`No GITHUB_SHA environment var set, so can't work out true base of the merge commit. Using the base of the pull request instead (${t}).`),null;try{a8();let s=a3();if(s!==i)return a.info(`The head commit SHA (${s}) does not equal GITHUB_SHA environment variable (${i}).
+ This is likely because a custom ref has been passed to the 'actions/checkout' action. We're assuming therefore
+ that the head commit SHA is not a temporary merge commit, but rather the head of the branch. Therefore we're
+ using the base of the pull request (${t}) to compare the visual snapshots against, and not the base
+ of GitHub's temporary merge commit.`),null;let n=(0,tG.execSync)(`git cat-file -p ${i}`).toString().split("\n").filter(e=>e.startsWith("parent ")).map(e=>e.substring(7).trim());if(2!==n.length)return a.error(`GITHUB_SHA (${i}) is not a merge commit, so can't work out true base of the merge commit. Using the base of the pull request instead.`),null;let r=n[0];if(n[1]!==e)return a.error(`The second parent (${n[1]}) of the GITHUB_SHA merge commit (${i}) is not equal to the head of the PR (${e}),
+ so can not confidently determine the base of the merge commit to compare against. Using the base of the pull request instead (${t}).`),null;return r}catch(e){return a.error(`Error getting base of merge commit (${i}). Using the base of the pull request instead (${t}).`,e),null}},a8=()=>{(0,tG.execSync)(`git config --global --add safe.directory "${process.cwd()}"`)},a7=e=>/^[a-f0-9]{40}$/.test(e);var tQ=tj("3midM"),ie=tj("7SZkG"),it={};i=it,s=function(e){var t,a,i=function(e){for(var t,a=1,i=arguments.length;a{let t=tU(ie).getLogger(`${tQ.METICULOUS_LOGGER_NAME}/${e}`);return t.setLevel(+(process.env.RUNNER_DEBUG??"0")?tU(ie).levels.TRACE:tU(ie).levels.INFO),tU(it).reg(tU(ie)),tU(it).apply(t,{template:`[${e}] %l:`}),t},ii=()=>{let e=tU(ie).getLogger(tQ.METICULOUS_LOGGER_NAME);return e.setDefaultLevel(tU(ie).levels.INFO),+(process.env.RUNNER_DEBUG??"0")&&is("trace"),e},is=e=>{let t=tU(ie).getLogger(tQ.METICULOUS_LOGGER_NAME);switch((e||"").toLocaleLowerCase()){case"trace":t.setLevel(tU(ie).levels.TRACE,!1);break;case"debug":t.setLevel(tU(ie).levels.DEBUG,!1);break;case"info":t.setLevel(tU(ie).levels.INFO,!1);break;case"warn":t.setLevel(tU(ie).levels.WARN,!1);break;case"error":t.setLevel(tU(ie).levels.ERROR,!1);break;case"silent":t.setLevel(tU(ie).levels.SILENT,!1)}},ir=e=>e.slice(0,7);var tP=tj("3nEje"),io=tj("6gwOD"),il={};tF(il,"Composer",()=>n,e=>n=e),tF(il,"Document",()=>r,e=>r=e),tF(il,"Schema",()=>o,e=>o=e),tF(il,"YAMLError",()=>l,e=>l=e),tF(il,"YAMLParseError",()=>p,e=>p=e),tF(il,"YAMLWarning",()=>d,e=>d=e),tF(il,"Alias",()=>c,e=>c=e),tF(il,"isAlias",()=>u,e=>u=e),tF(il,"isCollection",()=>m,e=>m=e),tF(il,"isDocument",()=>g,e=>g=e),tF(il,"isMap",()=>h,e=>h=e),tF(il,"isNode",()=>f,e=>f=e),tF(il,"isPair",()=>b,e=>b=e),tF(il,"isScalar",()=>v,e=>v=e),tF(il,"isSeq",()=>y,e=>y=e),tF(il,"Pair",()=>I,e=>I=e),tF(il,"Scalar",()=>C,e=>C=e),tF(il,"YAMLMap",()=>x,e=>x=e),tF(il,"YAMLSeq",()=>w,e=>w=e),tF(il,"CST",()=>_,e=>_=e),tF(il,"Lexer",()=>A,e=>A=e),tF(il,"LineCounter",()=>S,e=>S=e),tF(il,"Parser",()=>E,e=>E=e),tF(il,"parse",()=>G,e=>G=e),tF(il,"parseAllDocuments",()=>B,e=>B=e),tF(il,"parseDocument",()=>T,e=>T=e),tF(il,"stringify",()=>R,e=>R=e),tF(il,"visit",()=>Z,e=>Z=e),tF(il,"visitAsync",()=>N,e=>N=e);const ip=Symbol.for("yaml.alias"),id=Symbol.for("yaml.document"),ic=Symbol.for("yaml.map"),iu=Symbol.for("yaml.pair"),im=Symbol.for("yaml.scalar"),ig=Symbol.for("yaml.seq"),ih=Symbol.for("yaml.node.type"),ib=e=>!!e&&"object"==typeof e&&e[ih]===im;function iv(e){if(e&&"object"==typeof e)switch(e[ih]){case ic:case ig:return!0}return!1}V=e=>(ib(e)||iv(e))&&!!e.anchor,W=e=>!!e&&"object"==typeof e&&e[ih]===ip,O=e=>!!e&&"object"==typeof e&&e[ih]===id,H=e=>!!e&&"object"==typeof e&&e[ih]===ic,F=function(e){if(e&&"object"==typeof e)switch(e[ih]){case ip:case ic:case im:case ig:return!0}return!1},U=e=>!!e&&"object"==typeof e&&e[ih]===iu,L=e=>!!e&&"object"==typeof e&&e[ih]===ig;const iy=Symbol("break visit"),iI=Symbol("skip children"),iC=Symbol("remove node");function ix(e,t){let a=iS(t);O(e)?iw(null,e.contents,a,Object.freeze([e]))===iC&&(e.contents=null):iw(null,e,a,Object.freeze([]))}function iw(e,t,a,i){let s=iE(e,t,a,i);if(F(s)||U(s))return iG(e,i,s),iw(e,s,a,i);if("symbol"!=typeof s){if(iv(t)){i=Object.freeze(i.concat(t));for(let e=0;ee.replace(/[!,[\]{}]/g,e=>iB[e]);class iR{constructor(e,t){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},iR.defaultYaml,e),this.tags=Object.assign({},iR.defaultTags,t)}clone(){let e=new iR(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new iR(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:iR.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},iR.defaultTags)}return e}add(e,t){this.atNextDocument&&(this.yaml={explicit:iR.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},iR.defaultTags),this.atNextDocument=!1);let a=e.trim().split(/[ \t]+/),i=a.shift();switch(i){case"%TAG":{if(2!==a.length&&(t(0,"%TAG directive should contain exactly two parts"),a.length<2))return!1;let[e,i]=a;return this.tags[e]=i,!0}case"%YAML":{if(this.yaml.explicit=!0,1!==a.length)return t(0,"%YAML directive should contain exactly one part"),!1;let[e]=a;if("1.1"===e||"1.2"===e)return this.yaml.version=e,!0;{let a=/^\d+\.\d+$/.test(e);return t(6,`Unsupported YAML version ${e}`,a),!1}}default:return t(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if("!"===e)return"!";if("!"!==e[0])return t(`Not a valid tag: ${e}`),null;if("<"===e[1]){let a=e.slice(2,-1);return"!"===a||"!!"===a?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(">"!==e[e.length-1]&&t("Verbatim tags must end with a >"),a)}let[,a,i]=e.match(/^(.*!)([^!]*)$/s);i||t(`The ${e} tag has no suffix`);let s=this.tags[a];if(s)try{return s+decodeURIComponent(i)}catch(e){return t(String(e)),null}return"!"===a?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,a]of Object.entries(this.tags))if(e.startsWith(a))return t+iT(e.substring(a.length));return"!"===e[0]?e:`!<${e}>`}toString(e){let t;let a=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],i=Object.entries(this.tags);if(e&&i.length>0&&F(e.contents)){let a={};ix(e.contents,(e,t)=>{F(t)&&t.tag&&(a[t.tag]=!0)}),t=Object.keys(a)}else t=[];for(let[s,n]of i)("!!"!==s||"tag:yaml.org,2002:"!==n)&&(!e||t.some(e=>e.startsWith(n)))&&a.push(`%TAG ${s} ${n}`);return a.join("\n")}}function iZ(e){let t=new Set;return ix(e,{Value(e,a){a.anchor&&t.add(a.anchor)}}),t}function iN(e,t){for(let a=1;;++a){let i=`${e}${a}`;if(!t.has(i))return i}}iR.defaultYaml={explicit:!1,version:"1.2"},iR.defaultTags={"!!":"tag:yaml.org,2002:"},Y=function(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let t=JSON.stringify(e);throw Error(`Anchor must not contain whitespace or control characters: ${t}`)}return!0},X=function(e,t){let a=[],i=new Map,s=null;return{onAnchor:i=>{a.push(i),s||(s=iZ(e));let n=iN(t,s);return s.add(n),n},setAnchors:()=>{for(let e of a){let t=i.get(e);if("object"==typeof t&&t.anchor&&(ib(t.node)||iv(t.node)))t.node.anchor=t.anchor;else{let t=Error("Failed to resolve repeated object (this should not happen)");throw t.source=e,t}}},sourceObjects:i}},K=function e(t,a,i,s){if(s&&"object"==typeof s){if(Array.isArray(s))for(let a=0,i=s.length;ae(t,String(a),i));if(t&&"function"==typeof t.toJSON){if(!i||!V(t))return t.toJSON(a,i);let e={aliasCount:0,count:1,res:void 0};i.anchors.set(t,e),i.onCreate=t=>{e.res=t,delete i.onCreate};let s=t.toJSON(a,i);return i.onCreate&&i.onCreate(s),s}return"bigint"!=typeof t||i?.keep?t:Number(t)},j=class{constructor(e){Object.defineProperty(this,ih,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:a,onAnchor:i,reviver:s}={}){if(!O(e))throw TypeError("A document argument is required");let n={anchors:new Map,doc:e,keep:!0,mapAsMap:!0===t,mapKeyWarned:!1,maxAliasCount:"number"==typeof a?a:100},r=P(this,"",n);if("function"==typeof i)for(let{count:e,res:t}of n.anchors.values())i(t,e);return"function"==typeof s?K(s,{"":r},"",r):r}},D=class extends j{constructor(e){super(ip),this.source=e,Object.defineProperty(this,"tag",{set(){throw Error("Alias nodes cannot have tags")}})}resolve(e){let t;return ix(e,{Node:(e,a)=>{if(a===this)return ix.BREAK;a.anchor===this.source&&(t=a)}}),t}toJSON(e,t){if(!t)return{source:this.source};let{anchors:a,doc:i,maxAliasCount:s}=t,n=this.resolve(i);if(!n)throw ReferenceError(`Unresolved alias (the anchor must be set before the alias): ${this.source}`);let r=a.get(n);if(r||(P(n,null,t),r=a.get(n)),!r||void 0===r.res)throw ReferenceError("This should not happen: Alias anchor was not resolved?");if(s>=0&&(r.count+=1,0===r.aliasCount&&(r.aliasCount=function e(t,a,i){if(W(a)){let e=a.resolve(t),s=i&&e&&i.get(e);return s?s.count*s.aliasCount:0}if(iv(a)){let s=0;for(let n of a.items){let a=e(t,n,i);a>s&&(s=a)}return s}return U(a)?Math.max(e(t,a.key,i),e(t,a.value,i)):1}(i,n,a)),r.count*r.aliasCount>s))throw ReferenceError("Excessive alias count indicates a resource exhaustion attack");return r.res}toString(e,t,a){let i=`*${this.source}`;if(e){if(Y(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source))throw Error(`Unresolved alias (the anchor must be set before the alias): ${this.source}`);if(e.implicitKey)return`${i} `}return i}};class ik extends j{constructor(e){super(im),this.value=e}toJSON(e,t){return t?.keep?this.value:P(this.value,e,t)}toString(){return String(this.value)}}function iV(e,t,a){let i=a;for(let e=t.length-1;e>=0;--e){let a=t[e];if("number"==typeof a&&Number.isInteger(a)&&a>=0){let e=[];e[a]=i,i=e}else i=new Map([[a,i]])}return J(i,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error("This should not happen, please report a bug.")},schema:e,sourceObjects:new Map})}ik.BLOCK_FOLDED="BLOCK_FOLDED",ik.BLOCK_LITERAL="BLOCK_LITERAL",ik.PLAIN="PLAIN",ik.QUOTE_DOUBLE="QUOTE_DOUBLE",ik.QUOTE_SINGLE="QUOTE_SINGLE",z=e=>!e||"function"!=typeof e&&"object"!=typeof e,J=function(e,t,a){let i;if(O(e)&&(e=e.contents),F(e))return e;if(U(e)){let t=a.schema[ic].createNode?.(a.schema,null,a);return t.items.push(e),t}(e instanceof String||e instanceof Number||e instanceof Boolean||"undefined"!=typeof BigInt&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:s,onAnchor:n,onTagObj:r,schema:o,sourceObjects:l}=a;if(s&&e&&"object"==typeof e){if(i=l.get(e))return i.anchor||(i.anchor=n(e)),new D(i.anchor);i={anchor:null,node:null},l.set(e,i)}t?.startsWith("!!")&&(t="tag:yaml.org,2002:"+t.slice(2));let p=function(e,t,a){if(t){let e=a.filter(e=>e.tag===t),i=e.find(e=>!e.format)??e[0];if(!i)throw Error(`Tag ${t} not found`);return i}return a.find(t=>t.identify?.(e)&&!t.format)}(e,t,o.tags);if(!p){if(e&&"function"==typeof e.toJSON&&(e=e.toJSON()),!e||"object"!=typeof e){let t=new ik(e);return i&&(i.node=t),t}p=e instanceof Map?o[ic]:Symbol.iterator in Object(e)?o[ig]:o[ic]}r&&(r(p),delete a.onTagObj);let d=p?.createNode?p.createNode(a.schema,e,a):"function"==typeof p?.nodeClass?.from?p.nodeClass.from(a.schema,e,a):new ik(e);return t?d.tag=t:p.default||(d.tag=p.tag),i&&(i.node=d),d};const iW=e=>null==e||"object"==typeof e&&!!e[Symbol.iterator]().next().done;function iO(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}M=class extends j{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(t=>F(t)||U(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(iW(e))this.add(t);else{let[a,...i]=e,s=this.get(a,!0);if(iv(s))s.addIn(i,t);else if(void 0===s&&this.schema)this.set(a,iV(this.schema,i,t));else throw Error(`Expected YAML collection at ${a}. Remaining path: ${i}`)}}deleteIn(e){let[t,...a]=e;if(0===a.length)return this.delete(t);let i=this.get(t,!0);if(iv(i))return i.deleteIn(a);throw Error(`Expected YAML collection at ${t}. Remaining path: ${a}`)}getIn(e,t){let[a,...i]=e,s=this.get(a,!0);return 0===i.length?!t&&ib(s)?s.value:s:iv(s)?s.getIn(i,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!U(t))return!1;let a=t.value;return null==a||e&&ib(a)&&null==a.value&&!a.commentBefore&&!a.comment&&!a.tag})}hasIn(e){let[t,...a]=e;if(0===a.length)return this.has(t);let i=this.get(t,!0);return!!iv(i)&&i.hasIn(a)}setIn(e,t){let[a,...i]=e;if(0===i.length)this.set(a,t);else{let e=this.get(a,!0);if(iv(e))e.setIn(i,t);else if(void 0===e&&this.schema)this.set(a,iV(this.schema,i,t));else throw Error(`Expected YAML collection at ${a}. Remaining path: ${i}`)}}},et=(e,t,a)=>e.endsWith("\n")?iO(a,t):a.includes("\n")?"\n"+iO(a,t):(e.endsWith(" ")?"":" ")+a,ea=e=>e.replace(/^(?!$)(?: $)?/gm,"#");const iH="block",iF="quoted";function iU(e,t,a){let i=t,s=t+1,n=e[s];for(;" "===n||" "===n;)if(ts-Math.max(2,n)?u.push(0):g=s-i);let h=!1,f=-1,b=-1,v=-1;for(a===iH&&-1!==(f=iU(e,f,t.length))&&(g=f+c);d=e[f+=1];){if(a===iF&&"\\"===d){switch(b=f,e[f+1]){case"x":f+=3;break;case"u":f+=5;break;case"U":f+=9;break;default:f+=1}v=f}if("\n"===d)a===iH&&(f=iU(e,f,t.length)),g=f+t.length+c,l=void 0;else{if(" "===d&&p&&" "!==p&&"\n"!==p&&" "!==p){let t=e[f+1];t&&" "!==t&&"\n"!==t&&" "!==t&&(l=f)}if(f>=g){if(l)u.push(l),g=l+c,l=void 0;else if(a===iF){for(;" "===p||" "===p;)p=d,d=e[f+=1],h=!0;let t=f>v+1?f-2:b-1;if(m[t])return e;u.push(t),m[t]=!0,g=t+c,l=void 0}else h=!0}}p=d}if(h&&o&&o(),0===u.length)return e;r&&r();let y=e.slice(0,u[0]);for(let i=0;i({indentAtStart:t?e.indent.length:e.indentAtStart,lineWidth:e.options.lineWidth,minContentWidth:e.options.minContentWidth}),iD=e=>/^(%|---|\.\.\.)/m.test(e);function iY(e,t){let a=JSON.stringify(e);if(t.options.doubleQuotedAsJSON)return a;let{implicitKey:i}=t,s=t.options.doubleQuotedMinMultiLineLength,n=t.indent||(iD(e)?" ":""),r="",o=0;for(let e=0,t=a[e];t;t=a[++e])if(" "===t&&"\\"===a[e+1]&&"n"===a[e+2]&&(r+=a.slice(o,e)+"\\ ",e+=1,o=e,t="\\"),"\\"===t)switch(a[e+1]){case"u":{r+=a.slice(o,e);let t=a.substr(e+2,4);switch(t){case"0000":r+="\\0";break;case"0007":r+="\\a";break;case"000b":r+="\\v";break;case"001b":r+="\\e";break;case"0085":r+="\\N";break;case"00a0":r+="\\_";break;case"2028":r+="\\L";break;case"2029":r+="\\P";break;default:"00"===t.substr(0,2)?r+="\\x"+t.substr(2):r+=a.substr(e,6)}e+=5,o=e+1}break;case"n":if(i||'"'===a[e+2]||a.lengthi)return!0;if(s-(a=t+1)<=i)return!1}return!0}(i,u,m.length));if(!i)return g?"|\n":">\n";for(l=i.length;l>0;--l){let e=i[l-1];if("\n"!==e&&" "!==e&&" "!==e)break}let h=i.substring(l),f=h.indexOf("\n");-1===f?o="-":i===h||f!==h.length-1?(o="+",r&&r()):o="",h&&(i=i.slice(0,-h.length),"\n"===h[h.length-1]&&(h=h.slice(0,-1)),h=h.replace(a,`$&${m}`));let b=!1,v=-1;for(p=0;p")+(b?I:"")+o;if(e&&(C+=" "+c(e.replace(/ ?[\r\n]+/g," ")),n&&n()),g)return i=i.replace(/\n+/g,`$&${m}`),`${C}
+${m}${y}${i}${h}`;i=i.replace(/\n+/g,"\n$&").replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${m}`);let x=en(`${y}${i}${h}`,m,iH,iL(s,!0));return`${C}
+${m}${x}`}ei=function(e,t,a,i){let{implicitKey:s,inFlow:n}=t,r="string"==typeof e.value?e:Object.assign({},e,{value:String(e.value)}),{type:o}=e;o!==ik.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(r.value)&&(o=ik.QUOTE_DOUBLE);let l=e=>{switch(e){case ik.BLOCK_FOLDED:case ik.BLOCK_LITERAL:return s||n?ij(r.value,t):iK(r,t,a,i);case ik.QUOTE_DOUBLE:return iY(r.value,t);case ik.QUOTE_SINGLE:return iX(r.value,t);case ik.PLAIN:return function(e,t,a,i){let{type:s,value:n}=e,{actualString:r,implicitKey:o,indent:l,indentStep:p,inFlow:d}=t;if(o&&n.includes("\n")||d&&/[[\]{},]/.test(n))return ij(n,t);if(!n||/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(n))return o||d||!n.includes("\n")?ij(n,t):iK(e,t,a,i);if(!o&&!d&&s!==ik.PLAIN&&n.includes("\n"))return iK(e,t,a,i);if(iD(n)){if(""===l)return t.forceBlockIndent=!0,iK(e,t,a,i);if(o&&l===p)return ij(n,t)}let c=n.replace(/\n+/g,`$&
+${l}`);if(r){let e=e=>e.default&&"tag:yaml.org,2002:str"!==e.tag&&e.test?.test(c),{compat:a,tags:i}=t.doc.schema;if(i.some(e)||a?.some(e))return ij(n,t)}return o?c:en(c,l,es,iL(t,!1))}(r,t,a,i);default:return null}},p=l(o);if(null===p){let{defaultKeyType:e,defaultStringType:a}=t.options,i=s&&e||a;if(null===(p=l(i)))throw Error(`Unsupported default string type ${i}`)}return p},Q=function(e,t){let a;let i=Object.assign({blockQuote:!0,commentString:ea,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},e.schema.toStringOptions,t);switch(i.collectionStyle){case"block":a=!1;break;case"flow":a=!0;break;default:a=null}return{anchors:new Set,doc:e,flowCollectionPadding:i.flowCollectionPadding?" ":"",indent:"",indentStep:"number"==typeof i.indent?" ".repeat(i.indent):" ",inFlow:a,options:i}},ee=function(e,t,a,i){let s;if(U(e))return e.toString(t,a,i);if(W(e)){if(t.doc.directives)return e.toString(t);if(t.resolvedAliases?.has(e))throw TypeError("Cannot stringify circular structure without alias nodes");t.resolvedAliases?t.resolvedAliases.add(e):t.resolvedAliases=new Set([e]),e=e.resolve(t.doc)}let n=F(e)?e:t.doc.createNode(e,{onTagObj:e=>s=e});s||(s=function(e,t){let a,i;if(t.tag){let a=e.filter(e=>e.tag===t.tag);if(a.length>0)return a.find(e=>e.format===t.format)??a[0]}if(ib(t)){a=t.value;let s=e.filter(e=>e.identify?.(a));i=s.find(e=>e.format===t.format)??s.find(e=>!e.format)}else a=t,i=e.find(e=>e.nodeClass&&a instanceof e.nodeClass);if(!i){let e=a?.constructor?.name??typeof a;throw Error(`Tag not resolved for ${e} value`)}return i}(t.doc.schema.tags,n));let r=function(e,t,{anchors:a,doc:i}){if(!i.directives)return"";let s=[],n=(ib(e)||iv(e))&&e.anchor;n&&Y(n)&&(a.add(n),s.push(`&${n}`));let r=e.tag?e.tag:t.default?null:t.tag;return r&&s.push(i.directives.tagString(r)),s.join(" ")}(n,s,t);r.length>0&&(t.indentAtStart=(t.indentAtStart??0)+r.length+1);let o="function"==typeof s.stringify?s.stringify(n,t,a,i):ib(n)?ei(n,t,a,i):n.toString(t,a,i);return r?ib(n)||"{"===o[0]||"["===o[0]?`${r} ${o}`:`${r}
+${t.indent}${o}`:o},q=function({key:e,value:t},a,i,s){let n,r,o;let{allNullValues:l,doc:p,indent:d,indentStep:c,options:{commentString:u,indentSeq:m,simpleKeys:g}}=a,h=F(e)&&e.comment||null;if(g){if(h)throw Error("With simple keys, key nodes cannot have comments");if(iv(e)||!F(e)&&"object"==typeof e)throw Error("With simple keys, collection cannot be used as a key value")}let f=!g&&(!e||h&&null==t&&!a.inFlow||iv(e)||(ib(e)?e.type===ik.BLOCK_FOLDED||e.type===ik.BLOCK_LITERAL:"object"==typeof e));a=Object.assign({},a,{allNullValues:!1,implicitKey:!f&&(g||!l),indent:d+c});let b=!1,v=!1,y=ee(e,a,()=>b=!0,()=>v=!0);if(!f&&!a.inFlow&&y.length>1024){if(g)throw Error("With simple keys, single line scalar must not span more than 1024 characters");f=!0}if(a.inFlow){if(l||null==t)return b&&i&&i(),""===y?"?":f?`? ${y}`:y}else if(l&&!g||null==t&&f)return y=`? ${y}`,h&&!b?y+=et(y,a.indent,u(h)):v&&s&&s(),y;b&&(h=null),f?(h&&(y+=et(y,a.indent,u(h))),y=`? ${y}
+${d}:`):(y=`${y}:`,h&&(y+=et(y,a.indent,u(h)))),F(t)?(n=!!t.spaceBefore,r=t.commentBefore,o=t.comment):(n=!1,r=null,o=null,t&&"object"==typeof t&&(t=p.createNode(t))),a.implicitKey=!1,!f&&!h&&ib(t)&&(a.indentAtStart=y.length+1),v=!1,!(!m&&c.length>=2&&!a.inFlow&&!f&&L(t))||t.flow||t.tag||t.anchor||(a.indent=a.indent.substring(2));let I=!1,C=ee(t,a,()=>I=!0,()=>v=!0),x=" ";if(h||n||r){if(x=n?"\n":"",r){let e=u(r);x+=`
+${iO(e,a.indent)}`}""!==C||a.inFlow?x+=`
+${a.indent}`:"\n"===x&&(x="\n\n")}else if(!f&&iv(t)){let e=C[0],i=C.indexOf("\n"),s=-1!==i,n=a.inFlow??t.flow??0===t.items.length;if(s||!n){let t=!1;if(s&&("&"===e||"!"===e)){let a=C.indexOf(" ");"&"===e&&-1!==a&&a"<<"===e||ib(e)&&"<<"===e.value&&(!e.type||e.type===ik.PLAIN);function iM(e,t,a){let i=e&&W(a)?a.resolve(e.doc):a;if(!H(i))throw Error("Merge sources must be maps or map aliases");for(let[a,s]of i.toJSON(null,e,Map))t instanceof Map?t.has(a)||t.set(a,s):t instanceof Set?t.add(a):Object.prototype.hasOwnProperty.call(t,a)||Object.defineProperty(t,a,{value:s,writable:!0,enumerable:!0,configurable:!0});return t}er=function(e,t,{key:a,value:i}){if(e?.doc.schema.merge&&iP(a)){if(L(i=W(i)?i.resolve(e.doc):i))for(let a of i.items)iM(e,t,a);else if(Array.isArray(i))for(let a of i)iM(e,t,a);else iM(e,t,i)}else{let s=P(a,"",e);if(t instanceof Map)t.set(s,P(i,s,e));else if(t instanceof Set)t.add(s);else{let n=function(e,t,a){if(null===t)return"";if("object"!=typeof t)return String(t);if(F(e)&&a?.doc){let t=Q(a.doc,{});for(let e of(t.anchors=new Set,a.anchors.keys()))t.anchors.add(e.anchor);t.inFlow=!0,t.inStringifyKey=!0;let i=e.toString(t);if(!a.mapKeyWarned){let e=JSON.stringify(i);e.length>40&&(e=e.substring(0,36)+'..."'),eo(a.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${e}. Set mapAsMap: true to use object keys.`),a.mapKeyWarned=!0}return i}return JSON.stringify(t)}(a,s,e),r=P(i,n,e);n in t?Object.defineProperty(t,n,{value:r,writable:!0,enumerable:!0,configurable:!0}):t[n]=r}}return t};class iJ{constructor(e,t=null){Object.defineProperty(this,ih,{value:iu}),this.key=e,this.value=t}clone(e){let{key:t,value:a}=this;return F(t)&&(t=t.clone(e)),F(a)&&(a=a.clone(e)),new iJ(t,a)}toJSON(e,t){let a=t?.mapAsMap?new Map:{};return er(t,a,this)}toString(e,t,a){return e?.doc?q(this,e,t,a):JSON.stringify(this)}}function iz({indent:e,options:{commentString:t}},a,i,s){if(i&&s&&(i=i.replace(/^\n+/,"")),i){let s=iO(t(i),e);a.push(s.trimStart())}}function i$(e,t){let a=ib(t)?t.value:t;for(let i of e)if(U(i)&&(i.key===t||i.key===a||ib(i.key)&&i.key.value===a))return i}function iq(e){let t=ib(e)?e.value:e;return t&&"string"==typeof t&&(t=Number(t)),"number"==typeof t&&Number.isInteger(t)&&t>=0?t:null}$=function(e,t,a){return new iJ(J(e,void 0,a),J(t,void 0,a))},ed=function(e,t,a){return(t.inFlow??e.flow?function({items:e},t,{flowChars:a,itemIndent:i}){let{indent:s,indentStep:n,flowCollectionPadding:r,options:{commentString:o}}=t,l=Object.assign({},t,{indent:i+=n,inFlow:!0,type:null}),p=!1,d=0,c=[];for(let a=0;an=null);ad||r.includes("\n"))&&(p=!0),c.push(r),d=c.length}let{start:u,end:m}=a;if(0===c.length)return u+m;if(!p){let e=c.reduce((e,t)=>e+t.length+2,2);p=t.options.lineWidth>0&&e>t.options.lineWidth}if(!p)return`${u}${r}${c.join(" ")}${r}${m}`;{let e=u;for(let t of c)e+=t?`
+${n}${s}${t}`:"\n";return`${e}
+${s}${m}`}}:function({comment:e,items:t},a,{blockItemPrefix:i,flowChars:s,itemIndent:n,onChompKeep:r,onComment:o}){let l;let{indent:p,options:{commentString:d}}=a,c=Object.assign({},a,{indent:n,type:null}),u=!1,m=[];for(let e=0;er=null,()=>u=!0);r&&(o+=et(o,n,d(r))),u&&r&&(u=!1),m.push(i+o)}if(0===m.length)l=s.start+s.end;else{l=m[0];for(let e=1;e{if("function"==typeof s)r=s.call(t,e,r);else if(Array.isArray(s)&&!s.includes(e))return;(void 0!==r||i)&&n.items.push($(e,r,a))};if(t instanceof Map)for(let[e,a]of t)r(e,a);else if(t&&"object"==typeof t)for(let e of Object.keys(t))r(e,t[e]);return"function"==typeof e.sortMapEntries&&n.items.sort(e.sortMapEntries),n}add(e,t){let a;a=U(e)?e:e&&"object"==typeof e&&"key"in e?new iJ(e.key,e.value):new iJ(e,e?.value);let i=i$(this.items,a.key),s=this.schema?.sortMapEntries;if(i){if(!t)throw Error(`Key ${a.key} already set`);ib(i.value)&&z(a.value)?i.value.value=a.value:i.value=a.value}else if(s){let e=this.items.findIndex(e=>0>s(a,e));-1===e?this.items.push(a):this.items.splice(e,0,a)}else this.items.push(a)}delete(e){let t=i$(this.items,e);return!!t&&this.items.splice(this.items.indexOf(t),1).length>0}get(e,t){let a=i$(this.items,e),i=a?.value;return(!t&&ib(i)?i.value:i)??void 0}has(e){return!!i$(this.items,e)}set(e,t){this.add(new iJ(e,t),!0)}toJSON(e,t,a){let i=a?new a:t?.mapAsMap?new Map:{};for(let e of(t?.onCreate&&t.onCreate(i),this.items))er(t,i,e);return i}toString(e,t,a){if(!e)return JSON.stringify(this);for(let e of this.items)if(!U(e))throw Error(`Map items must all be pairs; found ${JSON.stringify(e)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),ed(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:a,onComment:t})}},el={collection:"map",default:!0,nodeClass:ep,tag:"tag:yaml.org,2002:map",resolve:(e,t)=>(H(e)||t("Expected a mapping for this tag"),e),createNode:(e,t,a)=>ep.from(e,t,a)},eu=class extends M{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(ig,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=iq(e);return"number"==typeof t&&this.items.splice(t,1).length>0}get(e,t){let a=iq(e);if("number"!=typeof a)return;let i=this.items[a];return!t&&ib(i)?i.value:i}has(e){let t=iq(e);return"number"==typeof t&&t(L(e)||t("Expected a sequence for this tag"),e),createNode:(e,t,a)=>eu.from(e,t,a)},em={identify:e=>"string"==typeof e,default:!0,tag:"tag:yaml.org,2002:str",resolve:e=>e,stringify:(e,t,a,i)=>ei(e,t=Object.assign({actualString:!0},t),a,i)};const iQ={identify:e=>null==e,createNode:()=>new ik(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new ik(null),stringify:({source:e},t)=>"string"==typeof e&&iQ.test.test(e)?e:t.options.nullStr},i1={identify:e=>"boolean"==typeof e,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:e=>new ik("t"===e[0]||"T"===e[0]),stringify:({source:e,value:t},a)=>e&&i1.test.test(e)&&t===("t"===e[0]||"T"===e[0])?e:t?a.options.trueStr:a.options.falseStr};ef={identify:e=>"number"==typeof e,default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(e){let t=new ik(parseFloat(e)),a=e.indexOf(".");return -1!==a&&"0"===e[e.length-1]&&(t.minFractionDigits=e.length-a-1),t},stringify:ey=function({format:e,minFractionDigits:t,tag:a,value:i}){if("bigint"==typeof i)return String(i);let s="number"==typeof i?i:Number(i);if(!isFinite(s))return isNaN(s)?".nan":s<0?"-.inf":".inf";let n=JSON.stringify(i);if(!e&&t&&(!a||"tag:yaml.org,2002:float"===a)&&/^\d/.test(n)){let e=n.indexOf(".");e<0&&(e=n.length,n+=".");let a=t-(n.length-e-1);for(;a-- >0;)n+="0"}return n}},eb={identify:e=>"number"==typeof e,default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e),stringify(e){let t=Number(e.value);return isFinite(t)?t.toExponential():ey(e)}},ev={identify:e=>"number"==typeof e,default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>"nan"===e.slice(-3).toLowerCase()?NaN:"-"===e[0]?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:ey};const i0=e=>"bigint"==typeof e||Number.isInteger(e),i2=(e,t,a,{intAsBigInt:i})=>i?BigInt(e):parseInt(e.substring(t),a);function i4(e,t,a){let{value:i}=e;return i0(i)&&i>=0?a+i.toString(t):ey(e)}function i9(e){return"bigint"==typeof e||Number.isInteger(e)}eI={identify:i0,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(e,t,a)=>i2(e,0,10,a),stringify:ey},eC={identify:e=>i0(e)&&e>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(e,t,a)=>i2(e,2,16,a),stringify:e=>i4(e,16,"0x")},ew=[el,ec,em,iQ,i1,ex={identify:e=>i0(e)&&e>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(e,t,a)=>i2(e,2,8,a),stringify:e=>i4(e,8,"0o")},eI,eC,ev,eb,ef];const i6=({value:e})=>JSON.stringify(e),i3=[el,ec].concat([{identify:e=>"string"==typeof e,default:!0,tag:"tag:yaml.org,2002:str",resolve:e=>e,stringify:i6},{identify:e=>null==e,createNode:()=>new ik(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:i6},{identify:e=>"boolean"==typeof e,default:!0,tag:"tag:yaml.org,2002:bool",test:/^true|false$/,resolve:e=>"true"===e,stringify:i6},{identify:i9,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(e,t,{intAsBigInt:a})=>a?BigInt(e):parseInt(e,10),stringify:({value:e})=>i9(e)?e.toString():JSON.stringify(e)},{identify:e=>"number"==typeof e,default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:e=>parseFloat(e),stringify:i6}],{default:!0,tag:"",test:/^/,resolve:(e,t)=>(t(`Unresolved plain scalar ${JSON.stringify(e)}`),e)});function i5(e,t){if(L(e))for(let a=0;a1&&t("Each pair must have its own sequence indicator");let e=i.items[0]||new iJ(new ik(null));if(i.commentBefore&&(e.key.commentBefore=e.key.commentBefore?`${i.commentBefore}
+${e.key.commentBefore}`:i.commentBefore),i.comment){let t=e.value??e.key;t.comment=t.comment?`${i.comment}
+${t.comment}`:i.comment}i=e}e.items[a]=U(i)?i:new iJ(i)}}else t("Expected a sequence for this tag");return e}function i8(e,t,a){let{replacer:i}=a,s=new eu(e);s.tag="tag:yaml.org,2002:pairs";let n=0;if(t&&Symbol.iterator in Object(t))for(let e of t){let r,o;if("function"==typeof i&&(e=i.call(t,String(n++),e)),Array.isArray(e)){if(2===e.length)r=e[0],o=e[1];else throw TypeError(`Expected [key, value] tuple: ${e}`)}else if(e&&e instanceof Object){let t=Object.keys(e);if(1===t.length)o=e[r=t[0]];else throw TypeError(`Expected tuple with one key, not ${t.length} keys`)}else r=e;s.items.push($(r,o,a))}return s}e_={identify:e=>e instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(e,t){if("function"==typeof Buffer)return Buffer.from(e,"base64");if("function"!=typeof atob)return t("This environment does not support reading binary tags; either Buffer or atob is required"),e;{let t=atob(e.replace(/[\n\r]/g,"")),a=new Uint8Array(t.length);for(let e=0;ee instanceof Map,nodeClass:i7,default:!1,tag:"tag:yaml.org,2002:omap",resolve(e,t){let a=i5(e,t),i=[];for(let{key:e}of a.items)ib(e)&&(i.includes(e.value)?t(`Ordered maps must not include duplicate keys: ${e.value}`):i.push(e.value));return Object.assign(new i7,a)},createNode:(e,t,a)=>i7.from(e,t,a)};const st={identify:e=>!0===e,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new ik(!0),stringify:se},sa={identify:e=>!1===e,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new ik(!1),stringify:se};eG={identify:e=>"number"==typeof e,default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(e){let t=new ik(parseFloat(e.replace(/_/g,""))),a=e.indexOf(".");if(-1!==a){let i=e.substring(a+1).replace(/_/g,"");"0"===i[i.length-1]&&(t.minFractionDigits=i.length)}return t},stringify:ey},eB={identify:e=>"number"==typeof e,default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e.replace(/_/g,"")),stringify(e){let t=Number(e.value);return isFinite(t)?t.toExponential():ey(e)}},eT={identify:e=>"number"==typeof e,default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>"nan"===e.slice(-3).toLowerCase()?NaN:"-"===e[0]?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:ey};const si=e=>"bigint"==typeof e||Number.isInteger(e);function ss(e,t,a,{intAsBigInt:i}){let s=e[0];if(("-"===s||"+"===s)&&(t+=1),e=e.substring(t).replace(/_/g,""),i){switch(a){case 2:e=`0b${e}`;break;case 8:e=`0o${e}`;break;case 16:e=`0x${e}`}let t=BigInt(e);return"-"===s?BigInt(-1)*t:t}let n=parseInt(e,a);return"-"===s?-1*n:n}function sn(e,t,a){let{value:i}=e;if(si(i)){let e=i.toString(t);return i<0?"-"+a+e.substr(1):a+e}return ey(e)}eR={identify:si,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(e,t,a)=>ss(e,0,10,a),stringify:ey},eZ={identify:si,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(e,t,a)=>ss(e,2,2,a),stringify:e=>sn(e,2,"0b")},eN={identify:si,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(e,t,a)=>ss(e,2,16,a),stringify:e=>sn(e,16,"0x")},ek={identify:si,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(e,t,a)=>ss(e,1,8,a),stringify:e=>sn(e,8,"0")};class sr extends ep{constructor(e){super(e),this.tag=sr.tag}add(e){let t;t=U(e)?e:e&&"object"==typeof e&&"key"in e&&"value"in e&&null===e.value?new iJ(e.key,null):new iJ(e,null),i$(this.items,t.key)||this.items.push(t)}get(e,t){let a=i$(this.items,e);return!t&&U(a)?ib(a.key)?a.key.value:a.key:a}set(e,t){if("boolean"!=typeof t)throw Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let a=i$(this.items,e);a&&!t?this.items.splice(this.items.indexOf(a),1):!a&&t&&this.items.push(new iJ(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,a){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,a);throw Error("Set items must all have null values")}static from(e,t,a){let{replacer:i}=a,s=new this(e);if(t&&Symbol.iterator in Object(t))for(let e of t)"function"==typeof i&&(e=i.call(t,e,e)),s.items.push($(e,null,a));return s}}function so(e,t){let a=e[0],i="-"===a||"+"===a?e.substring(1):e,s=e=>t?BigInt(e):Number(e),n=i.replace(/_/g,"").split(":").reduce((e,t)=>e*s(60)+s(t),s(0));return"-"===a?s(-1)*n:n}function sl(e){let{value:t}=e,a=e=>e;if("bigint"==typeof t)a=e=>BigInt(e);else if(isNaN(t)||!isFinite(t))return ey(e);let i="";t<0&&(i="-",t*=a(-1));let s=a(60),n=[t%s];return t<60?n.unshift(0):(t=(t-n[0])/s,n.unshift(t%s),t>=60&&(t=(t-n[0])/s,n.unshift(t))),i+n.map(e=>String(e).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}sr.tag="tag:yaml.org,2002:set",eV={collection:"map",identify:e=>e instanceof Set,nodeClass:sr,default:!1,tag:"tag:yaml.org,2002:set",createNode:(e,t,a)=>sr.from(e,t,a),resolve(e,t){if(H(e)){if(e.hasAllNullValues(!0))return Object.assign(new sr,e);t("Set items must all have null values")}else t("Expected a mapping for this tag");return e}};const sp={identify:e=>e instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(e){let t=e.match(sp.test);if(!t)throw Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,a,i,s,n,r,o]=t.map(Number),l=Date.UTC(a,i-1,s,n||0,r||0,o||0,t[7]?Number((t[7]+"00").substr(1,3)):0),p=t[8];if(p&&"Z"!==p){let e=so(p,!1);30>Math.abs(e)&&(e*=60),l-=6e4*e}return new Date(l)},stringify:({value:e})=>e.toISOString().replace(/((T00:00)?:00)?\.000Z$/,"")};eW={identify:e=>"number"==typeof e,default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:e=>so(e,!1),stringify:sl},eE=[el,ec,em,iQ,st,sa,eZ,ek,eR,eN,eT,eB,eG,e_,eA,eS,eV,eO={identify:e=>"bigint"==typeof e||Number.isInteger(e),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(e,t,{intAsBigInt:a})=>so(e,a),stringify:sl},eW,sp];const sd=new Map([["core",ew],["failsafe",[el,ec,em]],["json",i3],["yaml11",eE],["yaml-1.1",eE]]),sc={binary:e_,bool:i1,float:ef,floatExp:eb,floatNaN:ev,floatTime:eW,int:eI,intHex:eC,intOct:ex,intTime:eO,map:el,null:iQ,omap:eA,pairs:eS,seq:ec,set:eV,timestamp:sp};eg={"tag:yaml.org,2002:binary":e_,"tag:yaml.org,2002:omap":eA,"tag:yaml.org,2002:pairs":eS,"tag:yaml.org,2002:set":eV,"tag:yaml.org,2002:timestamp":sp},eh=function(e,t){let a=sd.get(t);if(!a){if(Array.isArray(e))a=[];else{let e=Array.from(sd.keys()).filter(e=>"yaml11"!==e).map(e=>JSON.stringify(e)).join(", ");throw Error(`Unknown schema "${t}"; use one of ${e} or define customTags array`)}}if(Array.isArray(e))for(let t of e)a=a.concat(t);else"function"==typeof e&&(a=e(a.slice()));return a.map(e=>{if("string"!=typeof e)return e;let t=sc[e];if(t)return t;let a=Object.keys(sc).map(e=>JSON.stringify(e)).join(", ");throw Error(`Unknown custom tag "${e}"; use one of ${a}`)})};const su=(e,t)=>e.keyt.key?1:0;class sm{constructor({compat:e,customTags:t,merge:a,resolveKnownTags:i,schema:s,sortMapEntries:n,toStringDefaults:r}){this.compat=Array.isArray(e)?eh(e,"compat"):e?eh(null,e):null,this.merge=!!a,this.name="string"==typeof s&&s||"core",this.knownTags=i?eg:{},this.tags=eh(t,this.name),this.toStringOptions=r??null,Object.defineProperty(this,ic,{value:el}),Object.defineProperty(this,im,{value:em}),Object.defineProperty(this,ig,{value:ec}),this.sortMapEntries="function"==typeof n?n:!0===n?su:null}clone(){let e=Object.create(sm.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}}eH=function(e,t){let a=[],i=!0===t.directives;if(!1!==t.directives&&e.directives){let t=e.directives.toString(e);t?(a.push(t),i=!0):e.directives.docStart&&(i=!0)}i&&a.push("---");let s=Q(e,t),{commentString:n}=s.options;if(e.commentBefore){1!==a.length&&a.unshift("");let t=n(e.commentBefore);a.unshift(iO(t,""))}let r=!1,o=null;if(e.contents){if(F(e.contents)){if(e.contents.spaceBefore&&i&&a.push(""),e.contents.commentBefore){let t=n(e.contents.commentBefore);a.push(iO(t,""))}s.forceBlockIndent=!!e.comment,o=e.contents.comment}let t=o?void 0:()=>r=!0,l=ee(e.contents,s,()=>o=null,t);o&&(l+=et(l,"",n(o))),("|"===l[0]||">"===l[0])&&"---"===a[a.length-1]?a[a.length-1]=`--- ${l}`:a.push(l)}else a.push(ee(e.contents,s));if(e.directives?.docEnd){if(e.comment){let t=n(e.comment);t.includes("\n")?(a.push("..."),a.push(iO(t,""))):a.push(`... ${t}`)}else a.push("...")}else{let t=e.comment;t&&r&&(t=t.replace(/^\n+/,"")),t&&((!r||o)&&""!==a[a.length-1]&&a.push(""),a.push(iO(n(t),"")))}return a.join("\n")+"\n"};class sg{constructor(e,t,a){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,ih,{value:id});let i=null;"function"==typeof t||Array.isArray(t)?i=t:void 0===a&&t&&(a=t,t=void 0);let s=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,uniqueKeys:!0,version:"1.2"},a);this.options=s;let{version:n}=s;a?._directives?(this.directives=a._directives.atDocument(),this.directives.yaml.explicit&&(n=this.directives.yaml.version)):this.directives=new iR({version:n}),this.setSchema(n,a),this.contents=void 0===e?null:this.createNode(e,i,a)}clone(){let e=Object.create(sg.prototype,{[ih]:{value:id}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=F(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){sh(this.contents)&&this.contents.add(e)}addIn(e,t){sh(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){let a=iZ(this);e.anchor=!t||a.has(t)?iN(t||"a",a):t}return new D(e.anchor)}createNode(e,t,a){let i;if("function"==typeof t)e=t.call({"":e},"",e),i=t;else if(Array.isArray(t)){let e=t.filter(e=>"number"==typeof e||e instanceof String||e instanceof Number).map(String);e.length>0&&(t=t.concat(e)),i=t}else void 0===a&&t&&(a=t,t=void 0);let{aliasDuplicateObjects:s,anchorPrefix:n,flow:r,keepUndefined:o,onTagObj:l,tag:p}=a??{},{onAnchor:d,setAnchors:c,sourceObjects:u}=X(this,n||"a"),m={aliasDuplicateObjects:s??!0,keepUndefined:o??!1,onAnchor:d,onTagObj:l,replacer:i,schema:this.schema,sourceObjects:u},g=J(e,p,m);return r&&iv(g)&&(g.flow=!0),c(),g}createPair(e,t,a={}){return new iJ(this.createNode(e,null,a),this.createNode(t,null,a))}delete(e){return!!sh(this.contents)&&this.contents.delete(e)}deleteIn(e){return iW(e)?null!=this.contents&&(this.contents=null,!0):!!sh(this.contents)&&this.contents.deleteIn(e)}get(e,t){return iv(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return iW(e)?!t&&ib(this.contents)?this.contents.value:this.contents:iv(this.contents)?this.contents.getIn(e,t):void 0}has(e){return!!iv(this.contents)&&this.contents.has(e)}hasIn(e){return iW(e)?void 0!==this.contents:!!iv(this.contents)&&this.contents.hasIn(e)}set(e,t){null==this.contents?this.contents=iV(this.schema,[e],t):sh(this.contents)&&this.contents.set(e,t)}setIn(e,t){iW(e)?this.contents=t:null==this.contents?this.contents=iV(this.schema,Array.from(e),t):sh(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){let a;switch("number"==typeof e&&(e=String(e)),e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new iR({version:"1.1"}),a={merge:!0,resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new iR({version:e}),a={merge:!1,resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,a=null;break;default:{let t=JSON.stringify(e);throw Error(`Expected '1.1', '1.2' or null as first argument, but found: ${t}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(a)this.schema=new sm(Object.assign(a,t));else throw Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:t,mapAsMap:a,maxAliasCount:i,onAnchor:s,reviver:n}={}){let r={anchors:new Map,doc:this,keep:!e,mapAsMap:!0===a,mapKeyWarned:!1,maxAliasCount:"number"==typeof i?i:100},o=P(this.contents,t??"",r);if("function"==typeof s)for(let{count:e,res:t}of r.anchors.values())s(t,e);return"function"==typeof n?K(n,{"":o},"",o):o}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||0>=Number(e.indent))){let t=JSON.stringify(e.indent);throw Error(`"indent" option must be a positive integer, not ${t}`)}return eH(this,e)}}function sh(e){if(iv(e))return!0;throw Error("Expected a YAML collection as document contents")}class sf extends Error{constructor(e,t,a,i){super(),this.name=e,this.code=a,this.message=i,this.pos=t}}eF=class extends sf{constructor(e,t,a){super("YAMLParseError",e,t,a)}},eU=class extends sf{constructor(e,t,a){super("YAMLWarning",e,t,a)}},eL=(e,t)=>a=>{if(-1===a.pos[0])return;a.linePos=a.pos.map(e=>t.linePos(e));let{line:i,col:s}=a.linePos[0];a.message+=` at line ${i}, column ${s}`;let n=s-1,r=e.substring(t.lineStarts[i-1],t.lineStarts[i]).replace(/[\n\r]+$/,"");if(n>=60&&r.length>80){let e=Math.min(n-39,r.length-79);r="…"+r.substring(e),n-=e-1}if(r.length>80&&(r=r.substring(0,79)+"…"),i>1&&/^ *$/.test(r.substring(0,n))){let a=e.substring(t.lineStarts[i-2],t.lineStarts[i-1]);a.length>80&&(a=a.substring(0,79)+"…\n"),r=a+r}if(/[^ ]/.test(r)){let e=1,t=a.linePos[1];t&&t.line===i&&t.col>s&&(e=Math.max(1,Math.min(t.col-s,80-n)));let o=" ".repeat(n)+"^".repeat(e);a.message+=`:
+
+${r}
+${o}
+`}},eP=function(e,{flow:t,indicator:a,next:i,offset:s,onError:n,parentIndent:r,startOnNewline:o}){let l=!1,p=o,d=o,c="",u="",m=!1,g=!1,h=null,f=null,b=null,v=null,y=null,I=null,C=null;for(let s of e)switch(g&&("space"!==s.type&&"newline"!==s.type&&"comma"!==s.type&&n(s.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),g=!1),h&&(p&&"comment"!==s.type&&"newline"!==s.type&&n(h,"TAB_AS_INDENT","Tabs are not allowed as indentation"),h=null),s.type){case"space":!t&&("doc-start"!==a||i?.type!=="flow-collection")&&s.source.includes(" ")&&(h=s),d=!0;break;case"comment":{d||n(s,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let e=s.source.substring(1)||" ";c?c+=u+e:c=e,u="",p=!1;break}case"newline":p?c?c+=s.source:l=!0:u+=s.source,p=!0,m=!0,(f||b)&&(v=s),d=!0;break;case"anchor":f&&n(s,"MULTIPLE_ANCHORS","A node can have at most one anchor"),s.source.endsWith(":")&&n(s.offset+s.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),f=s,null===C&&(C=s.offset),p=!1,d=!1,g=!0;break;case"tag":b&&n(s,"MULTIPLE_TAGS","A node can have at most one tag"),b=s,null===C&&(C=s.offset),p=!1,d=!1,g=!0;break;case a:(f||b)&&n(s,"BAD_PROP_ORDER",`Anchors and tags must be after the ${s.source} indicator`),I&&n(s,"UNEXPECTED_TOKEN",`Unexpected ${s.source} in ${t??"collection"}`),I=s,p="seq-item-ind"===a||"explicit-key-ind"===a,d=!1;break;case"comma":if(t){y&&n(s,"UNEXPECTED_TOKEN",`Unexpected , in ${t}`),y=s,p=!1,d=!1;break}default:n(s,"UNEXPECTED_TOKEN",`Unexpected ${s.type} token`),p=!1,d=!1}let x=e[e.length-1],w=x?x.offset+x.source.length:s;return g&&i&&"space"!==i.type&&"newline"!==i.type&&"comma"!==i.type&&("scalar"!==i.type||""!==i.source)&&n(i.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),h&&(p&&h.indent<=r||i?.type==="block-map"||i?.type==="block-seq")&&n(h,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:y,found:I,spaceBefore:l,comment:c,hasNewline:m,anchor:f,tag:b,newlineAfterProp:v,end:w,start:C??w}},eM=function e(t){if(!t)return null;switch(t.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(t.source.includes("\n"))return!0;if(t.end){for(let e of t.end)if("newline"===e.type)return!0}return!1;case"flow-collection":for(let a of t.items){for(let e of a.start)if("newline"===e.type)return!0;if(a.sep){for(let e of a.sep)if("newline"===e.type)return!0}if(e(a.key)||e(a.value))return!0}return!1;default:return!0}},eJ=function(e,t,a){if(t?.type==="flow-collection"){let i=t.end[0];i.indent===e&&("]"===i.source||"}"===i.source)&&eM(t)&&a(i,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}},ez=function(e,t,a){let{uniqueKeys:i}=e.options;if(!1===i)return!1;let s="function"==typeof i?i:(t,a)=>t===a||ib(t)&&ib(a)&&t.value===a.value&&!("<<"===t.value&&e.schema.merge);return t.some(e=>s(e.key,a))};const sb="All mapping items must start at the same column";eK=function({composeNode:e,composeEmptyNode:t},a,i,s,n){let r=new(n?.nodeClass??ep)(a.schema);a.atRoot&&(a.atRoot=!1);let o=i.offset,l=null;for(let n of i.items){let{start:p,key:d,sep:c,value:u}=n,m=eP(p,{indicator:"explicit-key-ind",next:d??c?.[0],offset:o,onError:s,parentIndent:i.indent,startOnNewline:!0}),g=!m.found;if(g){if(d&&("block-seq"===d.type?s(o,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in d&&d.indent!==i.indent&&s(o,"BAD_INDENT",sb)),!m.anchor&&!m.tag&&!c){l=m.end,m.comment&&(r.comment?r.comment+="\n"+m.comment:r.comment=m.comment);continue}(m.newlineAfterProp||eM(d))&&s(d??p[p.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else m.found?.indent!==i.indent&&s(o,"BAD_INDENT",sb);let h=m.end,f=d?e(a,d,m,s):t(a,h,p,null,m,s);a.schema.compat&&eJ(i.indent,d,s),ez(a,r.items,f)&&s(h,"DUPLICATE_KEY","Map keys must be unique");let b=eP(c??[],{indicator:"map-value-ind",next:u,offset:f.range[2],onError:s,parentIndent:i.indent,startOnNewline:!d||"block-scalar"===d.type});if(o=b.end,b.found){g&&(u?.type!=="block-map"||b.hasNewline||s(o,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),a.options.strict&&m.starte&&("block-map"===e.type||"block-seq"===e.type);function sI(e,t,a,i,s,n){let r="block-map"===a.type?eK(e,t,a,i,n):"block-seq"===a.type?e$(e,t,a,i,n):eq(e,t,a,i,n),o=r.constructor;return"!"===s||s===o.tagName?r.tag=o.tagName:s&&(r.tag=s),r}function sC(e){let t,a;try{t=RegExp("(.*?)(?0){let e=eQ(m,g,a.options.strict,s);e.comment&&(l.comment?l.comment+="\n"+e.comment:l.comment=e.comment),l.range=[i.offset,g,e.offset]}else l.range=[i.offset,g,g];return l},ej=function(e,t,a,i,s){let n=i.tag,r=n?t.directives.tagName(n.source,e=>s(n,"TAG_RESOLVE_FAILED",e)):null;if("block-seq"===a.type){let{anchor:e,newlineAfterProp:t}=i,a=e&&n?e.offset>n.offset?e:n:e??n;a&&(!t||t.offsete.tag===r&&e.collection===o);if(!l){let i=t.schema.knownTags[r];if(!i||i.collection!==o)return i?.collection?s(n,"BAD_COLLECTION_TYPE",`${i.tag} used for ${o} collection, but expects ${i.collection}`,!0):s(n,"TAG_RESOLVE_FAILED",`Unresolved tag: ${r}`,!0),sI(e,t,a,s,r);t.schema.tags.push(Object.assign({},i,{default:!1})),l=i}let p=sI(e,t,a,s,r,l),d=l.resolve?.(p,e=>s(n,"TAG_RESOLVE_FAILED",e),t.options)??p,c=F(d)?d:new ik(d);return c.range=p.range,c.tag=r,l?.format&&(c.format=l.format),c},e0=function(e,t,a){let i=t.offset,s=function({offset:e,props:t},a,i){if("block-scalar-header"!==t[0].type)return i(t[0],"IMPOSSIBLE","Block scalar header not found"),null;let{source:s}=t[0],n=s[0],r=0,o="",l=-1;for(let t=1;t=0;--e){let t=r[e][1];if(""===t||"\r"===t)o=e;else break}if(0===o){let e="+"===s.chomp&&r.length>0?"\n".repeat(Math.max(1,r.length-1)):"",a=i+s.length;return t.source&&(a+=t.source.length),{value:e,type:n,comment:s.comment,range:[i,a,a]}}let l=t.indent+s.indent,p=t.offset+s.length,d=0;for(let t=0;tl&&(l=i.length);else{i.length=o;--e)r[e][0].length>l&&(o=e+1);let c="",u="",m=!1;for(let e=0;el||" "===i[0]?(" "===u?u="\n":m||"\n"!==u||(u="\n\n"),c+=u+t.slice(l)+i,u="\n",m=!0):""===i?"\n"===u?c+="\n":u="\n":(c+=u+i,u=" ",m=!1)}switch(s.chomp){case"-":break;case"+":for(let e=o;ea(n+e,t,i);switch(r){case"scalar":i=ik.PLAIN,s=function(e,t){let a="";switch(e[0]){case" ":a="a tab character";break;case",":a="flow indicator character ,";break;case"%":a="directive indicator character %";break;case"|":case">":a=`block scalar indicator ${e[0]}`;break;case"@":case"`":a=`reserved character ${e[0]}`}return a&&t(0,"BAD_SCALAR_START",`Plain value cannot start with ${a}`),sC(e)}(o,p);break;case"single-quoted-scalar":i=ik.QUOTE_SINGLE,("'"!==o[o.length-1]||1===o.length)&&p(o.length,"MISSING_CHAR","Missing closing 'quote"),s=sC(o.slice(1,-1)).replace(/''/g,"'");break;case"double-quoted-scalar":i=ik.QUOTE_DOUBLE,s=function(e,t){let a="";for(let i=1;it?e.slice(t,i+1):s)}else a+=s}}return('"'!==e[e.length-1]||1===e.length)&&t(e.length,"MISSING_CHAR",'Missing closing "quote'),a}(o,p);break;default:return a(e,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${r}`),{value:"",type:null,comment:"",range:[n,n+o.length,n+o.length]}}let d=n+o.length,c=eQ(l,d,t,a);return{value:s,type:i,comment:c.comment,range:[n,d,c.offset]}},e1=function(e,t,a,i){let s;let{value:n,type:r,comment:o,range:l}="block-scalar"===t.type?e0(e,t,i):e2(t,e.options.strict,i),p=a?e.directives.tagName(a.source,e=>i(a,"TAG_RESOLVE_FAILED",e)):null,d=a&&p?function(e,t,a,i,s){if("!"===a)return e[im];let n=[];for(let t of e.tags)if(!t.collection&&t.tag===a){if(!t.default||!t.test)return t;n.push(t)}for(let e of n)if(e.test?.test(t))return e;let r=e.knownTags[a];return r&&!r.collection?(e.tags.push(Object.assign({},r,{default:!1,test:void 0})),r):(s(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${a}`,"tag:yaml.org,2002:str"!==a),e[im])}(e.schema,n,p,a,i):"scalar"===t.type?function({directives:e,schema:t},a,i,s){let n=t.tags.find(e=>e.default&&e.test?.test(a))||t[im];if(t.compat){let r=t.compat.find(e=>e.default&&e.test?.test(a))??t[im];if(n.tag!==r.tag){let t=e.tagString(n.tag),a=e.tagString(r.tag);s(i,"TAG_RESOLVE_FAILED",`Value may be parsed as either ${t} or ${a}`,!0)}}return n}(e,n,t,i):e.schema[im];try{let r=d.resolve(n,e=>i(a??t,"TAG_RESOLVE_FAILED",e),e.options);s=ib(r)?r:new ik(r)}catch(e){i(a??t,"TAG_RESOLVE_FAILED",e instanceof Error?e.message:String(e)),s=new ik(n)}return s.range=l,s.source=n,r&&(s.type=r),p&&(s.tag=p),d.format&&(s.format=d.format),o&&(s.comment=o),s},e4=function(e,t,a){if(t){null===a&&(a=t.length);for(let i=a-1;i>=0;--i){let a=t[i];switch(a.type){case"space":case"comment":case"newline":e-=a.source.length;continue}for(a=t[++i];a?.type==="space";)e+=a.source.length,a=t[++i];break}}return e};const sw={composeNode:s_,composeEmptyNode:sA};function s_(e,t,a,i){let s;let{spaceBefore:n,comment:r,anchor:o,tag:l}=a,p=!0;switch(t.type){case"alias":s=function({options:e},{offset:t,source:a,end:i},s){let n=new D(a.substring(1));""===n.source&&s(t,"BAD_ALIAS","Alias cannot be an empty string"),n.source.endsWith(":")&&s(t+a.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let r=t+a.length,o=eQ(i,r,e.strict,s);return n.range=[t,r,o.offset],o.comment&&(n.comment=o.comment),n}(e,t,i),(o||l)&&i(t,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":s=e1(e,t,l,i),o&&(s.anchor=o.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":s=ej(sw,e,t,a,i),o&&(s.anchor=o.source.substring(1));break;default:{let n="error"===t.type?t.message:`Unsupported token (type: ${t.type})`;i(t,"UNEXPECTED_TOKEN",n),s=sA(e,t.offset,void 0,null,a,i),p=!1}}return o&&""===s.anchor&&i(o,"BAD_ALIAS","Anchor cannot be an empty string"),n&&(s.spaceBefore=!0),r&&("scalar"===t.type&&""===t.source?s.comment=r:s.commentBefore=r),e.options.keepSourceTokens&&p&&(s.srcToken=t),s}function sA(e,t,a,i,{spaceBefore:s,comment:n,anchor:r,tag:o,end:l},p){let d=e1(e,{type:"scalar",offset:e4(t,a,i),indent:-1,source:""},o,p);return r&&(d.anchor=r.source.substring(1),""===d.anchor&&p(r,"BAD_ALIAS","Anchor cannot be an empty string")),s&&(d.spaceBefore=!0),n&&(d.comment=n,d.range[2]=l),d}function sS(e){if("number"==typeof e)return[e,e+1];if(Array.isArray(e))return 2===e.length?e:[e[0],e[1]];let{offset:t,source:a}=e;return[t,t+("string"==typeof a?a.length:1)]}function sE(e){let t="",a=!1,i=!1;for(let s=0;s{let s=sS(e);i?this.warnings.push(new eU(s,t,a)):this.errors.push(new eF(s,t,a))},this.directives=new iR({version:e.version||"1.2"}),this.options=e}decorate(e,t){let{comment:a,afterEmptyLine:i}=sE(this.prelude);if(a){let s=e.contents;if(t)e.comment=e.comment?`${e.comment}
+${a}`:a;else if(i||e.directives.docStart||!s)e.commentBefore=a;else if(iv(s)&&!s.flow&&s.items.length>0){let e=s.items[0];U(e)&&(e=e.key);let t=e.commentBefore;e.commentBefore=t?`${a}
+${t}`:a}else{let e=s.commentBefore;s.commentBefore=e?`${a}
+${e}`:a}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:sE(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,a=-1){for(let t of e)yield*this.next(t);yield*this.end(t,a)}*next(e){switch(process.env.LOG_STREAM&&console.dir(e,{depth:null}),e.type){case"directive":this.directives.add(e.source,(t,a,i)=>{let s=sS(e);s[0]+=t,this.onError(s,"BAD_DIRECTIVE",a,i)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let t=eD(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,a=new eF(sS(e),"UNEXPECTED_TOKEN",t);this.atDirectives||!this.doc?this.errors.push(a):this.doc.errors.push(a);break}case"doc-end":{if(!this.doc){this.errors.push(new eF(sS(e),"UNEXPECTED_TOKEN","Unexpected doc-end without preceding document"));break}this.doc.directives.docEnd=!0;let t=eQ(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){let e=this.doc.comment;this.doc.comment=e?`${e}
+${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new eF(sS(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let e=new sg(void 0,Object.assign({_directives:this.directives},this.options));this.atDirectives&&this.onError(t,"MISSING_CHAR","Missing directives-end indicator line"),e.range=[0,t,t],this.decorate(e,!1),yield e}}};var sG={};function sB(e,t){if(t)for(let a of t)switch(a.type){case"space":case"comment":e.push(a);break;case"newline":return e.push(a),!0}return!1}function sT(e,t,a){switch(e.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":e.type=a,e.source=t;break;case"block-scalar":{let i=e.props.slice(1),s=t.length;for(let t of("block-scalar-header"===e.props[0].type&&(s-=e.props[0].source.length),i))t.offset+=s;delete e.props,Object.assign(e,{type:a,source:t,end:i});break}case"block-map":case"block-seq":{let i={type:"newline",offset:e.offset+t.length,indent:e.indent,source:"\n"};delete e.items,Object.assign(e,{type:a,source:t,end:[i]});break}default:{let i="indent"in e?e.indent:-1,s="end"in e&&Array.isArray(e.end)?e.end.filter(e=>"space"===e.type||"comment"===e.type||"newline"===e.type):[];for(let t of Object.keys(e))"type"!==t&&"offset"!==t&&delete e[t];Object.assign(e,{type:a,indent:i,source:t,end:s})}}}function sR(e){switch(e.type){case"block-scalar":{let t="";for(let a of e.props)t+=sR(a);return t+e.source}case"block-map":case"block-seq":{let t="";for(let a of e.items)t+=sZ(a);return t}case"flow-collection":{let t=e.start.source;for(let a of e.items)t+=sZ(a);for(let a of e.end)t+=a.source;return t}case"document":{let t=sZ(e);if(e.end)for(let a of e.end)t+=a.source;return t}default:{let t=e.source;if("end"in e&&e.end)for(let a of e.end)t+=a.source;return t}}}function sZ({start:e,key:t,sep:a,value:i}){let s="";for(let t of e)s+=t.source;if(t&&(s+=sR(t)),a)for(let e of a)s+=e.source;return i&&(s+=sR(i)),s}tF(sG,"createScalarToken",()=>e9,e=>e9=e),tF(sG,"resolveAsScalar",()=>e6,e=>e6=e),tF(sG,"setScalarValue",()=>e3,e=>e3=e),tF(sG,"stringify",()=>e5,e=>e5=e),tF(sG,"visit",()=>e8,e=>e8=e),tF(sG,"BOM",()=>e7,e=>e7=e),tF(sG,"DOCUMENT",()=>te,e=>te=e),tF(sG,"FLOW_END",()=>tt,e=>tt=e),tF(sG,"SCALAR",()=>ta,e=>ta=e),tF(sG,"isCollection",()=>ti,e=>ti=e),tF(sG,"isScalar",()=>ts,e=>ts=e),tF(sG,"prettyToken",()=>tn,e=>tn=e),tF(sG,"tokenType",()=>tr,e=>tr=e),to=function(e,t){let{implicitKey:a=!1,indent:i,inFlow:s=!1,offset:n=-1,type:r="PLAIN"}=t,o=ei({type:r,value:e},{implicitKey:a,indent:i>0?" ".repeat(i):"",inFlow:s,options:{blockQuote:!0,lineWidth:-1}}),l=t.end??[{type:"newline",offset:-1,indent:i,source:"\n"}];switch(o[0]){case"|":case">":{let e=o.indexOf("\n"),t=o.substring(0,e),a=o.substring(e+1)+"\n",s=[{type:"block-scalar-header",offset:n,indent:i,source:t}];return sB(s,l)||s.push({type:"newline",offset:-1,indent:i,source:"\n"}),{type:"block-scalar",offset:n,indent:i,props:s,source:a}}case'"':return{type:"double-quoted-scalar",offset:n,indent:i,source:o,end:l};case"'":return{type:"single-quoted-scalar",offset:n,indent:i,source:o,end:l};default:return{type:"scalar",offset:n,indent:i,source:o,end:l}}},tl=function(e,t=!0,a){if(e){let i=(e,t,i)=>{let s="number"==typeof e?e:Array.isArray(e)?e[0]:e.offset;if(a)a(s,t,i);else throw new eF([s,s+1],t,i)};switch(e.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return e2(e,t,i);case"block-scalar":return e0({options:{strict:t}},e,i)}}return null},tp=function(e,t,a={}){let{afterKey:i=!1,implicitKey:s=!1,inFlow:n=!1,type:r}=a,o="indent"in e?e.indent:null;if(i&&"number"==typeof o&&(o+=2),!r)switch(e.type){case"single-quoted-scalar":r="QUOTE_SINGLE";break;case"double-quoted-scalar":r="QUOTE_DOUBLE";break;case"block-scalar":{let t=e.props[0];if("block-scalar-header"!==t.type)throw Error("Invalid block scalar header");r=">"===t.source[0]?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:r="PLAIN"}let l=ei({type:r,value:t},{implicitKey:s||null===o,indent:null!==o&&o>0?" ".repeat(o):"",inFlow:n,options:{blockQuote:!0,lineWidth:-1}});switch(l[0]){case"|":case">":(function(e,t){let a=t.indexOf("\n"),i=t.substring(0,a),s=t.substring(a+1)+"\n";if("block-scalar"===e.type){let t=e.props[0];if("block-scalar-header"!==t.type)throw Error("Invalid block scalar header");t.source=i,e.source=s}else{let{offset:t}=e,a="indent"in e?e.indent:-1,n=[{type:"block-scalar-header",offset:t,indent:a,source:i}];for(let t of(sB(n,"end"in e?e.end:void 0)||n.push({type:"newline",offset:-1,indent:a,source:"\n"}),Object.keys(e)))"type"!==t&&"offset"!==t&&delete e[t];Object.assign(e,{type:"block-scalar",indent:a,props:n,source:s})}})(e,l);break;case'"':sT(e,l,"double-quoted-scalar");break;case"'":sT(e,l,"single-quoted-scalar");break;default:sT(e,l,"scalar")}},td=e=>"type"in e?sR(e):sZ(e);const sN=Symbol("break visit"),sk=Symbol("skip children"),sV=Symbol("remove item");function sW(e,t){"type"in e&&"document"===e.type&&(e={start:e.start,value:e.value}),function e(t,a,i){let s=i(a,t);if("symbol"==typeof s)return s;for(let n of["key","value"]){let r=a[n];if(r&&"items"in r){for(let a=0;a{let a=e;for(let[e,i]of t){let t=a?.[e];if(!t||!("items"in t))return;a=t.items[i]}return a},sW.parentCollection=(e,t)=>{let a=sW.itemAtPath(e,t.slice(0,-1)),i=t[t.length-1][0],s=a?.[i];if(s&&"items"in s)return s;throw Error("Parent collection not found")},e9=to,e6=tl,e3=tp,e5=td,e8=sW,e7="\uFEFF",te="\x02",tt="\x18",ta="\x1f",ti=e=>!!e&&"items"in e,ts=e=>!!e&&("scalar"===e.type||"single-quoted-scalar"===e.type||"double-quoted-scalar"===e.type||"block-scalar"===e.type),tn=function(e){switch(e){case"\uFEFF":return"";case"\x02":return"";case"\x18":return"";case"\x1f":return"";default:return JSON.stringify(e)}},tr=function(e){switch(e){case"\uFEFF":return"byte-order-mark";case"\x02":return"doc-mode";case"\x18":return"flow-error-end";case"\x1f":return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case"\n":case"\r\n":return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(e[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null};const sH=new Set("0123456789ABCDEFabcdef"),sF=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),sU=new Set(",[]{}"),sL=new Set(" ,[]{}\n\r "),sD=e=>!e||sL.has(e);function sY(e,t){for(let a=0;a=0;)switch(e[t].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;e[++t]?.type==="space";);return e.splice(t,e.length)}function sM(e){if("flow-seq-start"===e.start.type)for(let t of e.items)!t.sep||t.value||sY(t.start,"explicit-key-ind")||sY(t.sep,"map-value-ind")||(t.key&&(t.value=t.key),delete t.key,sj(t.value)?t.value.end?Array.prototype.push.apply(t.value.end,t.sep):t.value.end=t.sep:Array.prototype.push.apply(t.start,t.sep),delete t.sep)}function sJ(e){let t=!1!==e.prettyErrors;return{lineCounter:e.lineCounter||t&&new tu||null,prettyErrors:t}}function sz(e,t={}){let{lineCounter:a,prettyErrors:i}=sJ(t),s=new tm(a?.addNewLine),n=new k(t),r=null;for(let t of n.compose(s.parse(e),!0,e.length))if(r){if("silent"!==r.options.logLevel){r.errors.push(new eF(t.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}}else r=t;return i&&a&&(r.errors.forEach(eL(e,a)),r.warnings.forEach(eL(e,a))),r}tc=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){if(e){if("string"!=typeof e)throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!t;let a=this.next??"stream";for(;a&&(t||this.hasChars(1));)a=yield*this.parseNext(a)}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;" "===t||" "===t;)t=this.buffer[++e];return!t||"#"===t||"\n"===t||"\r"===t&&"\n"===this.buffer[e+1]}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let a=0;for(;" "===t;)t=this.buffer[++a+e];if("\r"===t){let t=this.buffer[a+e+1];if("\n"===t||!t&&!this.atEnd)return e+a+1}return"\n"!==t&&!(a>=this.indentNext)&&(t||this.atEnd)?-1:e+a}if("-"===t||"."===t){let t=this.buffer.substr(e,3);if(("---"===t||"..."===t)&&sO(this.buffer[e+3]))return -1}return e}getLine(){let e=this.lineEndPos;return(("number"!=typeof e||-1!==e&ðis.indentValue&&!sO(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext("block-start");if(("-"===e||"?"===e||":"===e)&&sO(t)){let e=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=e,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(null===e)return this.setNext("doc");let t=yield*this.pushIndicators();switch(e[t]){case"#":yield*this.pushCount(e.length-t);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(sD),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return t+=(yield*this.parseBlockScalarHeader())+(yield*this.pushSpaces(!0)),yield*this.pushCount(e.length-t),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,t;let a=-1;do(e=yield*this.pushNewline())>0?(t=yield*this.pushSpaces(!1),this.indentValue=a=t):t=0,t+=yield*this.pushSpaces(!0);while(e+t>0)let i=this.getLine();if(null===i)return this.setNext("flow");if((-1!==a&&a"0"&&t<="9")this.blockScalarIndent=Number(t)-1;else if("-"!==t)break}return yield*this.pushUntil(e=>sO(e)||"#"===e)}*parseBlockScalar(){let e,t=this.pos-1,a=0;e:for(let i=this.pos;e=this.buffer[i];++i)switch(e){case" ":a+=1;break;case"\n":t=i,a=0;break;case"\r":{let e=this.buffer[i+1];if(!e&&!this.atEnd)return this.setNext("block-scalar");if("\n"===e)break}default:break e}if(!e&&!this.atEnd)return this.setNext("block-scalar");if(a>=this.indentNext){-1===this.blockScalarIndent?this.indentNext=a:this.indentNext=this.blockScalarIndent+(0===this.indentNext?1:this.indentNext);do{let e=this.continueScalar(t+1);if(-1===e)break;t=this.buffer.indexOf("\n",e)}while(-1!==t)if(-1===t){if(!this.atEnd)return this.setNext("block-scalar");t=this.buffer.length}}let i=t+1;for(e=this.buffer[i];" "===e;)e=this.buffer[++i];if(" "===e){for(;" "===e||" "===e||"\r"===e||"\n"===e;)e=this.buffer[++i];t=i-1}else if(!this.blockScalarKeep)for(;;){let e=t-1,i=this.buffer[e];"\r"===i&&(i=this.buffer[--e]);let s=e;for(;" "===i;)i=this.buffer[--e];if("\n"===i&&e>=this.pos&&e+1+a>s)t=e;else break}return yield ta,yield*this.pushToIndex(t+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e;let t=this.flowLevel>0,a=this.pos-1,i=this.pos-1;for(;e=this.buffer[++i];)if(":"===e){let e=this.buffer[i+1];if(sO(e)||t&&sU.has(e))break;a=i}else if(sO(e)){let s=this.buffer[i+1];if("\r"===e&&("\n"===s?(i+=1,e="\n",s=this.buffer[i+1]):a=i),"#"===s||t&&sU.has(s))break;if("\n"===e){let e=this.continueScalar(i+1);if(-1===e)break;i=Math.max(i,e-2)}}else{if(t&&sU.has(e))break;a=i}return e||this.atEnd?(yield ta,yield*this.pushToIndex(a+1,!0),t?"flow":"doc"):this.setNext("plain-scalar")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){let a=this.buffer.slice(this.pos,e);return a?(yield a,this.pos+=a.length,a.length):(t&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(sD))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{let e=this.flowLevel>0,t=this.charAt(1);if(sO(t)||e&&sU.has(t))return e?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if("<"===this.charAt(1)){let e=this.pos+2,t=this.buffer[e];for(;!sO(t)&&">"!==t;)t=this.buffer[++e];return yield*this.pushToIndex(">"===t?e+1:e,!1)}{let e=this.pos+1,t=this.buffer[e];for(;t;)if(sF.has(t))t=this.buffer[++e];else if("%"===t&&sH.has(this.buffer[e+1])&&sH.has(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){let e=this.buffer[this.pos];return"\n"===e?yield*this.pushCount(1):"\r"===e&&"\n"===this.charAt(1)?yield*this.pushCount(2):0}*pushSpaces(e){let t,a=this.pos-1;do t=this.buffer[++a];while(" "===t||e&&" "===t)let i=a-this.pos;return i>0&&(yield this.buffer.substr(this.pos,i),this.pos=a),i}*pushUntil(e){let t=this.pos,a=this.buffer[t];for(;!e(a);)a=this.buffer[++t];return yield*this.pushToIndex(t,!1)}},tu=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,a=this.lineStarts.length;for(;t>1;this.lineStarts[i]0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if("doc-end"===this.type&&(!e||"doc-end"!==e.type)){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case"document":return yield*this.document(e);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(e);case"block-scalar":return yield*this.blockScalar(e);case"block-map":return yield*this.blockMap(e);case"block-seq":return yield*this.blockSequence(e);case"flow-collection":return yield*this.flowCollection(e);case"doc-end":return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){let t=e??this.stack.pop();if(t){if(0===this.stack.length)yield t;else{let e=this.peek(1);switch("block-scalar"===t.type?t.indent="indent"in e?e.indent:0:"flow-collection"===t.type&&"document"===e.type&&(t.indent=0),"flow-collection"===t.type&&sM(t),e.type){case"document":e.value=t;break;case"block-scalar":e.props.push(t);break;case"block-map":{let a=e.items[e.items.length-1];if(a.value){e.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}if(a.sep)a.value=t;else{Object.assign(a,{key:t,sep:[]}),this.onKeyLine=!a.explicitKey;return}break}case"block-seq":{let a=e.items[e.items.length-1];a.value?e.items.push({start:[],value:t}):a.value=t;break}case"flow-collection":{let a=e.items[e.items.length-1];!a||a.value?e.items.push({start:[],key:t,sep:[]}):a.sep?a.value=t:Object.assign(a,{key:t,sep:[]});return}default:yield*this.pop(),yield*this.pop(t)}if(("document"===e.type||"block-map"===e.type||"block-seq"===e.type)&&("block-map"===t.type||"block-seq"===t.type)){let a=t.items[t.items.length-1];a&&!a.sep&&!a.value&&a.start.length>0&&-1===sX(a.start)&&(0===t.indent||a.start.every(e=>"comment"!==e.type||e.indent=e.indent){let a=!this.onKeyLine&&this.indent===e.indent,i=a&&(t.sep||t.explicitKey)&&"seq-item-ind"!==this.type,s=[];if(i&&t.sep&&!t.value){let a=[];for(let i=0;ie.indent&&(a.length=0);break;default:a.length=0}}a.length>=2&&(s=t.sep.splice(a[1]))}switch(this.type){case"anchor":case"tag":i||t.value?(s.push(this.sourceToken),e.items.push({start:s}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"explicit-key-ind":t.sep||t.explicitKey?i||t.value?(s.push(this.sourceToken),e.items.push({start:s,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}):(t.start.push(this.sourceToken),t.explicitKey=!0),this.onKeyLine=!0;return;case"map-value-ind":if(t.explicitKey){if(t.sep){if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(sY(t.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]});else if(sj(t.key)&&!sY(t.sep,"newline")){let e=sP(t.start),a=t.key,i=t.sep;i.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:e,key:a,sep:i}]})}else s.length>0?t.sep=t.sep.concat(s,this.sourceToken):t.sep.push(this.sourceToken)}else if(sY(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let e=sP(t.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:e,key:null,sep:[this.sourceToken]}]})}}else t.sep?t.value||i?e.items.push({start:s,key:null,sep:[this.sourceToken]}):sY(t.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let a=this.flowScalar(this.type);i||t.value?(e.items.push({start:s,key:a,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(a):(Object.assign(t,{key:a,sep:[]}),this.onKeyLine=!0);return}default:{let t=this.startBlockValue(e);if(t){a&&"block-seq"!==t.type&&e.items.push({start:s}),this.stack.push(t);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let t=e.items[e.items.length-1];switch(this.type){case"newline":if(t.value){let a="end"in t.value?t.value.end:void 0,i=Array.isArray(a)?a[a.length-1]:void 0;i?.type==="comment"?a?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let a=e.items[e.items.length-2],i=a?.value?.end;if(Array.isArray(i)){Array.prototype.push.apply(i,t.start),i.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case"anchor":case"tag":if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;t.value||sY(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let t=this.startBlockValue(e);if(t){this.stack.push(t);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if("flow-error-end"===this.type){let e;do yield*this.pop(),e=this.peek(1);while(e&&"flow-collection"===e.type)}else if(0===e.end.length){switch(this.type){case"comma":case"explicit-key-ind":!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case"map-value-ind":!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let a=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:a,sep:[]}):t.sep?this.stack.push(a):Object.assign(t,{key:a,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let a=this.startBlockValue(e);a?this.stack.push(a):(yield*this.pop(),yield*this.step())}else{let t=this.peek(2);if("block-map"!==t.type||("map-value-ind"!==this.type||t.indent!==e.indent)&&("newline"!==this.type||t.items[t.items.length-1].sep)){if("map-value-ind"===this.type&&"flow-collection"!==t.type){let a=sP(sK(t));sM(e);let i=e.end.splice(1,e.end.length);i.push(this.sourceToken);let s={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:a,key:e,sep:i}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=s}else yield*this.lineEnd(e)}else yield*this.pop(),yield*this.step()}}flowScalar(e){if(this.onNewLine){let e=this.source.indexOf("\n")+1;for(;0!==e;)this.onNewLine(this.offset+e),e=this.source.indexOf("\n",e)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let t=sP(sK(e));return t.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:t,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let t=sP(sK(e));return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:t,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return"comment"===this.type&&!(this.indent<=t)&&e.every(e=>"newline"===e.type||"space"===e.type)}*documentEnd(e){"doc-mode"!==this.type&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],"newline"===this.type&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],"newline"===this.type&&(yield*this.pop())}}},tg=function(e,t,a){let i;"function"==typeof t?i=t:void 0===a&&t&&"object"==typeof t&&(a=t);let s=sz(e,a);if(!s)return null;if(s.warnings.forEach(e=>eo(s.options.logLevel,e)),s.errors.length>0){if("silent"!==s.options.logLevel)throw s.errors[0];s.errors=[]}return s.toJS(Object.assign({reviver:i},a))},th=function(e,t={}){let{lineCounter:a,prettyErrors:i}=sJ(t),s=new tm(a?.addNewLine),n=new k(t),r=Array.from(n.compose(s.parse(e)));if(i&&a)for(let t of r)t.errors.forEach(eL(e,a)),t.warnings.forEach(eL(e,a));return r.length>0?r:Object.assign([],{empty:!0},n.streamInfo())},tf=function(e,t,a){let i=null;if("function"==typeof t||Array.isArray(t)?i=t:void 0===a&&t&&(a=t),"string"==typeof a&&(a=a.length),"number"==typeof a){let e=Math.round(a);a=e<1?void 0:e>8?{indent:8}:{indent:e}}if(void 0===e){let{keepUndefined:e}=a??t??{};if(!e)return}return new sg(e,i,a).toString(a)},n=k,r=sg,o=sm,l=sf,p=eF,d=eU,c=D,u=W,m=iv,g=O,h=H,f=F,b=U,v=ib,y=L,I=iJ,C=ik,x=ep,w=eu,_=sG,A=tc,S=tu,E=tm,G=tg,B=th,T=sz,R=tf,Z=ix,N=i_;const s$=tU(io).object({"app-url":tU(io).string().required(),"api-token":tU(io).string().required(),skip:tU(io).boolean().default(!1).optional().label("skip")}),sq=tU(io).object().pattern(tU(io).string(),s$),sQ=e=>{let t=tU(il).parse(e),{error:a,value:i}=sq.validate(t,{abortEarly:!1});if(a)throw Error(`Invalid projects-yaml: ${a.message}`);return Object.entries(i).map(([e,t])=>({name:e,apiToken:t["api-token"],appUrl:t["app-url"],skip:t.skip}))},s1=()=>{let e=(0,tP.getInput)("api-token",{required:!1}),t=(0,tP.getInput)("github-token",{required:!0}),a=(0,tP.getInput)("app-url",{required:!1}),i=(0,tP.getInput)("head-sha"),s=(0,tP.getInput)("projects-yaml",{required:!1});if(s){if(e||a)throw Error("Cannot provide both 'projects-yaml' and 'api-token' or 'app-url'");return{githubToken:t,headSha:i,projectTargets:sQ(s)}}if(!e||!a)throw Error("Must provide either 'projects-yaml' or 'api-token' and 'app-url'");return{githubToken:t,headSha:i,projectTargets:[{name:"default",apiToken:e,appUrl:a,skip:!1}]}};var a2=tj("2Evbo"),s0=tj("4aTko"),tQ=tj("3midM"),s2={},s4=s2&&s2.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(s2,"__esModule",{value:!0}),s2.executeRemoteTestRun=void 0;var s0=tj("4aTko"),tQ=tj("3midM"),s9={};Object.defineProperty(s9,"__esModule",{value:!0}),s9.localtunnel=void 0;var s6={};Object.defineProperty(s6,"__esModule",{value:!0}),s6.localtunnel=void 0;var s3={},s5=s3&&s3.__createBinding||(Object.create?function(e,t,a,i){void 0===i&&(i=a);var s=Object.getOwnPropertyDescriptor(t,a);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,i,s)}:function(e,t,a,i){void 0===i&&(i=a),e[i]=t[a]}),s8=s3&&s3.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s7=s3&&s3.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&s5(t,e,a);return s8(t,e),t},ne=s3&&s3.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(s3,"__esModule",{value:!0}),s3.Tunnel=void 0;const nt=ne(tw),na=ne(t_),ni=s7(tj("5mM36")),ns=ne(tj("3oP91"));var nn=tT.Duplex,nr=tT.Writable,no=tA.EventEmitter,nl=tj("04vO9");class np{constructor(e,t){this._client=e,this._server=t}get client(){return this._client}get server(){return this._server}}function nd(e,t,a){function i(){this._finished=!0,this._mux._send_end(this),this._check_remove()}nn.call(this,e),e=Object.assign({max_write_size:0},e),this._mux=t,this.mux=t,this._chan=a,this._max_write_size=e.max_write_size,this._check_read_overflow=!1!==e.check_read_overflow,this._seq=0,this._remote_free=0,this._set_remote_free=!1,this._data=null,this._cb=null,this._index=0,this._finished=!1,this._ended=!1,this._removed=!1,this._handshake_sent=!1,this._handshake_received=!1,this._end_pending=!1,this._error_end=!1,this._error_end_pending=!1,this.once("finish",i),this.once("close",function(){this.removeListener("finish",i),this._finished||(this._finished=!0,this._mux._send_end(this)),this._check_remove()}),t.duplexes.set(a,this),t._max_open>0&&t.duplexes.size===t._max_open&&setImmediate(function(){t.emit("full")})}function nc(e,t){if(no.call(this,t),t=Object.assign({max_open:0,max_header_size:0,keep_alive:3e4},t),this._max_duplexes=2147483648,this._max_open=t.max_open,this.duplexes=new Map,this._chan=0,this._chan_offset=t.high_channels?this._max_duplexes:0,this._parse_handshake_data=t.parse_handshake_data,this.carrier=e,e instanceof np){let a={...(t.http2||{}).headers,[tH.constants.HTTP2_HEADER_STATUS]:200,[tH.constants.HTTP2_HEADER_CONTENT_TYPE]:"application/octet-stream"};e.server.on("stream",(e,t)=>{if(this._max_open>0&&this.duplexes.size===this._max_open)return this.emit("full"),e.respond({[tH.constants.HTTP2_HEADER_STATUS]:503},{endStream:!0});let i=Buffer.from(t["bpmux-channel"],"base64").readUint32BE();if(this.duplexes.has(i))return e.respond({[tH.constants.HTTP2_HEADER_STATUS]:409},{endStream:!0});e.cork(),this._add_http2_duplex(e,i),this.emit("peer_multiplex",e);let s=!1;this._parse_http2_handshake(e,t,()=>{let t;s=!0;let i=e.uncork;return e.uncork=()=>{e.uncork=i,e.destroyed||(e.respond({...a,...this._make_http2_handshake(t)}),e._handshake_sent=!0,this.emit("handshake_sent",e,!0),e.emit("handshake_sent",!0),e.uncork())},a=>{t=a,e.uncork()}}),s?(this.emit("pre_handshake_sent",e,!0),e.emit("pre_handshake_sent",!0)):(e.respond({...a,...this._make_http2_handshake()}),e._handshake_sent=!0,this.emit("handshake_sent",e,!0),e.emit("handshake_sent",!0),e.uncork())});let i=0;for(let t of[e.client,e.server])t.on("close",()=>{2==++i&&(this.emit("finish"),this.emit("end"),this.emit("close"))}),t.on("error",e=>{for(let a of this.duplexes.values())a.session===t&&!a.destroyed&&a.listenerCount("error")>0&&a.emit("error",e);this.emit("error",e)});return}this._max_header_size=t.max_header_size,this._finished=!1,this._ended=!1,this._header_buffers=[],this._header_buffer_len=0,this._reading_duplex=null,this._peer_multiplex_options=t.peer_multiplex_options,this._coalesce_writes=t.coalesce_writes,this._sending=!1,this._send_requested=!1,this._keep_alive_id=null,this._keep_alive_paused=!1,this._out_stream=nl.encode(t),this._coalesce_writes&&(this._out_stream._pushFrameData=function(e){var t;for(t=0;t0&&t.emit("error",e);a.emit("error",e)}if(e.on("finish",s),e.on("close",s),this._in_stream.on("end",n),e.on("close",n),e.on("error",r),this._in_stream.on("error",r),this._out_stream.on("error",r),this._out_stream.on("drain",function(){a._send(),this._writableState.lengths._readableState.highWaterMark?s.emit("error",Error("too much data")):s.push(e))):((a._max_header_size<=0||a._header_buffer_len0&&7===e[0])return this.emit("keep_alive");if(this._check_buffer(e,5)){var t=this,a=e.readUInt8(0,!0),i=e.readUInt32BE(1,!0),s=this.duplexes.get(i);if(3!==a&&!s){if(this._max_open>0&&this.duplexes.size===this._max_open)return this.emit("full");s=new nd(this._peer_multiplex_options,this,i),this.emit("peer_multiplex",s)}if(s&&s._handshake_received){switch(a){case 0:s._ended=!0,s._check_remove(),s.push(null);break;case 6:s._ended=!0,s._check_remove(),s.emit("error",Error("peer error")),s.push(null);break;case 2:case 3:if(!this._check_buffer(e,13))break;n();break;case 4:s._remote_seq=e.slice(5),this._reading_duplex=s;break;default:this.emit("error",Error("unknown type: "+a))}return}switch(a){case 0:s._end_pending=!0;break;case 6:s._error_end_pending=!0;break;case 5:if(!this._check_buffer(e,9))return;n();break;case 1:{if(!this._check_buffer(e,9))return;if(0===s._seq){let t=e.readUInt32BE(5,!0);s._remote_free=s._max_write_size>0?Math.min(t,s._max_write_size):t,s._set_remote_free=!0}s._handshake_received=!0;let t=e.slice(9);if(this._parse_handshake_data)try{t=this._parse_handshake_data(t)}catch(e){s.listenerCount("error")>0&&s.emit("error",e),this.emit("error",e)}let a=!1,i=s._handshake_sent?null:()=>(a=!0,function(e){s._send_handshake(e)});this.emit("handshake",s,t,i),s.emit("handshake",t,i),a?this._send_handshake(s):s._send_handshake(),s._error_end_pending?(s._ended=!0,s._check_remove(),s.emit("error",Error("peer error")),s.push(null)):s._end_pending&&(s._ended=!0,s._check_remove(),s.push(null)),this._send();break}case 3:break;default:this.emit("error",Error("expected handshake, got: "+a))}}function n(){let a=e.readUInt32BE(5,!0),i=13===e.length?e.readUInt32BE(9,!0):0;a=s._max_write_size>0?Math.min(a,s._max_write_size):a,s._remote_free=i+a-s._seq,s._seq0&&this.duplexes.size===this._max_open)throw this.emit("full"),Error("full");if(this.carrier instanceof np){if(this.carrier.client.closed||this.carrier.client.destroyed)throw Error("closed")}else{if(this.carrier.destroyed)throw Error("closed");if(this.carrier._writableState.ending)throw Error("finished");if(this.carrier._readableState.ended)throw Error("ended")}var t,a,i=this;function s(t){if(i.carrier instanceof np){let a=Buffer.alloc(4);a.writeUInt32BE(t);let s=e.http2||{},n=i.carrier.client.request({[tH.constants.HTTP2_HEADER_PATH]:"/",[tH.constants.HTTP2_HEADER_METHOD]:"POST",...s.headers,"bpmux-channel":a.toString("base64"),...i._make_http2_handshake(e.handshake_data)},{...s.options,endStream:!1,waitForTrailers:!0});return i._add_http2_duplex(n,t),setImmediate(()=>{n._handshake_sent=!0,i.emit("handshake_sent",n,!0),n.emit("handshake_sent",!0)}),n.on("response",e=>{let a=e[tH.constants.HTTP2_HEADER_STATUS];if(200!==a){let e=Error(`peer returned status ${a} for channel ${t}`);return e.status=a,e.duplex=n,n.destroy(e),i.emit("error",e)}i._parse_http2_handshake(n,e,null)}),n}var a=new nd(e,i,t);return e._delay_handshake||setImmediate(function(){a._send_handshake(e.handshake_data)}),a}if(void 0!==(e=e||{}).channel)return this.duplexes.get(e.channel)||s(e.channel);t=this._chan;do{if(a=(t+1)%this._max_duplexes,!this.duplexes.has(t+this._chan_offset))return this._chan=a,s(t+this._chan_offset);t=a}while(t!==this._chan)throw this.emit("full"),Error("full")},nc.prototype._add_http2_duplex=function(e,t){e._mux=this,e.mux=this,e._chan=t,e.get_channel=()=>t,e._handshake_sent=!1,e._handshake_received=!1,e._error_end=!1,this.duplexes.set(t,e),this._max_open>0&&this.duplexes.size===this._max_open&&this.emit("full"),e.on("close",()=>{this.duplexes.delete(t),this.emit("removed",e)}),e.peer_error_then_end=function(e,t,a){return this._error_end=!0,this.end(e,t,a)},e.on("wantTrailers",function(){this.sendTrailers({"bpmux-error":this._error_end.toString()})}),e.on("trailers",function(e){"true"===e["bpmux-error"]&&this.emit("error",Error("peer error"))})},nc.prototype._make_http2_handshake=function(e){return{"bpmux-handshake":(e||Buffer.alloc(0)).toString("base64")}},nc.prototype._parse_http2_handshake=function(e,t,a){e._handshake_received=!0;let i=Buffer.alloc(0);try{i=Buffer.from(t["bpmux-handshake"],"base64"),this._parse_handshake_data&&(i=this._parse_handshake_data(i))}catch(t){e.listenerCount("error")>0&&e.emit("error",t),this.emit("error",t)}this.emit("handshake",e,i,a),e.emit("handshake",i,a)};var nu={};Object.defineProperty(nu,"__esModule",{value:!0}),nu.TUNNEL_HIGH_WATER_MARK=void 0,nu.TUNNEL_HIGH_WATER_MARK=10485760;var nm={},ng=nm&&nm.__createBinding||(Object.create?function(e,t,a,i){void 0===i&&(i=a);var s=Object.getOwnPropertyDescriptor(t,a);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,i,s)}:function(e,t,a,i){void 0===i&&(i=a),e[i]=t[a]}),nh=nm&&nm.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),nf=nm&&nm.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&ng(t,e,a);return nh(t,e),t},nb=nm&&nm.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(nm,"__esModule",{value:!0}),nm.TunnelMultiplexingCluster=void 0;const nv=nb(tA),ny=nf(tw),nI=nf(t_);var nC={};Object.defineProperty(nC,"__esModule",{value:!0}),nC.HeaderHostTransformer=void 0;class nx extends tT.Transform{constructor(e){super(e),this.host=`${e.host}:${e.port}`,this.replaced=!1}_transform(e,t,a){a(null,this.replaced?e:e.toString().replace(/(\r\n[Hh]ost: )\S+/,(e,t)=>(this.replaced=!0,t+this.host)))}}nC.HeaderHostTransformer=nx;class nw extends nv.default{constructor(e){super(),this.logger=e.logger,this.opts=e,this.remoteMuxClient=e.remoteMuxClient}startListening(){let e=this.opts,t=e.localHost,a=e.localPort,i=e.localHttps?"https":"http",s=e.allowInvalidCert,n=r=>{let o;if(r.destroyed){this.logger.debug("remote destroyed"),this.emit("dead");return}this.logger.debug("connecting locally to %s://%s:%d",i,t,a);let l=()=>{this.logger.warn("local connection timeout"),c(!0)},p=null;if(e.localHttps){if(s)this.logger.debug("allowing invalid certificates");else{if(!e.localCert)throw Error("local_cert is required for https");if(!e.localKey)throw Error("local_key is required for https")}o=nI.connect({host:t,port:a,...s?{rejectUnauthorized:!1}:{cert:(0,ty.readFileSync)(e.localCert),key:(0,ty.readFileSync)(e.localKey),ca:e.localCa?[(0,ty.readFileSync)(e.localCa)]:void 0}}),p=setTimeout(l,5e3)}else o=ny.connect({host:t,port:a});p=setTimeout(l,5e3);let d=()=>{this.logger.debug("remote close"),this.emit("dead"),o.end()};r.once("close",d);let c=e=>{if(o.end(),r.removeListener("close",d),!e)return r.end();this.logger.warn("retrying connection to local server"),setTimeout(()=>n(r),0)};o.once("error",e=>{p&&clearTimeout(p),this.logger.error("local error %s %s %s",e.message,e.code,e,e.errors),c("ECONNREFUSED"===e.code||"ECONNRESET"===e.code)}),o.once("connect",()=>{p&&clearTimeout(p),this.logger.debug("connected locally"),r.resume();let t=r;e.localHost&&(this.logger.debug("transform Host header to %s",e.localHost),t=r.pipe(new nC.HeaderHostTransformer({host:e.localHost,port:e.localPort}))),t.pipe(o).pipe(r),o.once("close",e=>{this.logger.debug("local connection closed [%s]",e)})})};this.remoteMuxClient.on("handshake",e=>{e.on("data",e=>{let t=e.toString().match(/^(\w+) (\S+)/);t&&this.emit("request",{method:t[1],path:t[2]})}),e.pause(),n(e),this.emit("open",e)})}}nm.TunnelMultiplexingCluster=nw;var n_={},nA=n_&&n_.__createBinding||(Object.create?function(e,t,a,i){void 0===i&&(i=a);var s=Object.getOwnPropertyDescriptor(t,a);(!s||("get"in s?!t.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,i,s)}:function(e,t,a,i){void 0===i&&(i=a),e[i]=t[a]}),nS=n_&&n_.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),nE=n_&&n_.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&nA(t,e,a);return nS(t,e),t},nG=n_&&n_.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n_,"__esModule",{value:!0}),n_.TunnelMultiplexingPoolingCluster=void 0;const nB=nG(tA),nT=nE(tw),nR=nE(t_);class nZ extends nB.default{constructor(e){super(),this.logger=e.logger,this.opts=e,this.remoteMuxClient=e.remoteMuxClient}open(){let e=this.remoteMuxClient.multiplex({highWaterMark:nu.TUNNEL_HIGH_WATER_MARK}),t=this.opts,a=t.localHost,i=t.localPort,s=t.localHttps?"https":"http",n=t.allowInvalidCert,r=()=>{let o;if(e.destroyed){this.logger.debug("remote destroyed"),this.emit("dead");return}if(this.logger.debug("connecting locally to %s://%s:%d",s,a,i),t.localHttps){if(n)this.logger.debug("allowing invalid certificates");else{if(!t.localCert)throw Error("local_cert is required for https");if(!t.localKey)throw Error("local_key is required for https")}o=nR.connect({host:a,port:i,...n?{rejectUnauthorized:!1}:{cert:(0,ty.readFileSync)(t.localCert),key:(0,ty.readFileSync)(t.localKey),ca:t.localCa?[(0,ty.readFileSync)(t.localCa)]:void 0}})}else o=nT.connect({host:a,port:i});let l=()=>{this.logger.debug("remote close"),this.emit("dead"),o.end()};e.once("close",l),o.once("error",t=>{if(this.logger.debug("local error %s",t.message),o.end(),e.removeListener("close",l),"ECONNREFUSED"!==t.code&&"ECONNRESET"!==t.code)return e.end();setTimeout(r,1e3)}),o.once("connect",()=>{this.logger.debug("connected locally"),e.resume();let a=e;t.localHost&&(this.logger.debug("transform Host header to %s",t.localHost),a=e.pipe(new nC.HeaderHostTransformer({host:t.localHost,port:t.localPort}))),a.pipe(o).pipe(e),o.once("close",e=>{this.logger.debug("local connection closed [%s]",e)})})};e.on("data",e=>{let t=e.toString().match(/^(\w+) (\S+)/);t&&this.emit("request",{method:t[1],path:t[2]})}),this.emit("open",e),e.pause(),r()}}n_.TunnelMultiplexingPoolingCluster=nZ;class nN extends tA.EventEmitter{constructor(e){super(),this.clientId=null,this.url=null,this.basicAuthUser=null,this.basicAuthPassword=null,this.logger=e.logger,this.opts=e,this.closed=!1,this.host=e.host||"https://tunnels.meticulous.ai"}_getInfo(e){let{id:t,port:a,multiplexing_port:i,use_no_pool_multiplexing:s,url:n,max_conn_count:r,tunnel_passphrase:o,basic_auth_user:l,basic_auth_password:p}=e,{port:d,localHost:c}=this.opts,{localHttps:u,localCert:m,localKey:g,localCa:h,allowInvalidCert:f}=this.opts,b=new URL(n),v=b.hostname.split(".");return v.shift(),{name:t,url:n,maxConn:r||1,remoteHost:v.join("."),remotePort:a,multiplexingRemotePort:i,useNoPoolMultiplexing:s,useTls:"https:"===b.protocol,tunnelPassphrase:o,basicAuthUser:l,basicAuthPassword:p,localPort:d,localHost:c,localHttps:u,localCert:m,localKey:g,localCa:h,allowInvalidCert:f}}_init(e){let t=this.opts,a=this._getInfo.bind(this),i={responseType:"json",headers:{Authorization:t.apiToken},params:{supportsMultiplexing:!0,supportsNoMultiplexingPool:!0,new:!0}},s=`${this.host}/`+(t.subdomain||""),n=()=>{let t=ni.default.create({timeout:3e4});(0,ns.default)(t,{retries:3,shouldResetTimeout:!0}),t.get(s,i).then(t=>{let i=t.data;if(this.logger.debug("got tunnel information",t.data),200!==t.status)return e(Error(i&&i.error||"localtunnel server returned an error, please try again"));e(null,a(i))}).catch(t=>{var a;return(0,ni.isAxiosError)(t)&&(null===(a=t.response)||void 0===a?void 0:a.status)===401?e(Error("Unauthorized. Please check your API token")):(this.logger.error(`tunnel server offline: ${t.message}, retry 1s`),setTimeout(n,1e3))})};n()}async _establish(e){if(this.setMaxListeners(e.maxConn+(tA.EventEmitter.defaultMaxListeners||10)),!e.multiplexingRemotePort)throw Error("multiplexingRemotePort must be set");this.logger.debug(`using multiplexing ${e.useNoPoolMultiplexing?"no-pooling":"pooling"} agent`);let t=await this._establishMultiplexingCluster({...e,multiplexingRemotePort:e.multiplexingRemotePort,useNoPoolMultiplexing:e.useNoPoolMultiplexing});t.once("open",()=>{this.emit("url",{url:e.url,basicAuthUser:e.basicAuthUser,basicAuthPassword:e.basicAuthPassword})}),t.on("error",e=>{this.logger.debug("got socket error",e.message),this.emit("error",e)});let a=0;if(t.on("open",e=>{a++,this.logger.debug("tunnel open [total: %d]",a);let t=()=>{e.destroy()};if(this.closed)return t();this.once("close",t),e.once("close",()=>{this.removeListener("close",t)})}),t.on("dead",()=>{a--,this.logger.debug("tunnel dead [total: %d]",a),this.closed||!t||t instanceof nm.TunnelMultiplexingCluster||t.open()}),t.on("request",e=>{this.emit("request",e)}),t instanceof n_.TunnelMultiplexingPoolingCluster)for(let a=0;a